aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/css-tree/cjs
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/css-tree/cjs')
-rw-r--r--vanilla/node_modules/css-tree/cjs/convertor/create.cjs32
-rw-r--r--vanilla/node_modules/css-tree/cjs/convertor/index.cjs8
-rw-r--r--vanilla/node_modules/css-tree/cjs/data-patch.cjs7
-rw-r--r--vanilla/node_modules/css-tree/cjs/data.cjs120
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/generate.cjs139
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/index.cjs13
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/parse.cjs556
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/scanner.cjs113
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs59
-rw-r--r--vanilla/node_modules/css-tree/cjs/definition-syntax/walk.cjs57
-rw-r--r--vanilla/node_modules/css-tree/cjs/generator/create.cjs102
-rw-r--r--vanilla/node_modules/css-tree/cjs/generator/index.cjs8
-rw-r--r--vanilla/node_modules/css-tree/cjs/generator/sourceMap.cjs96
-rw-r--r--vanilla/node_modules/css-tree/cjs/generator/token-before.cjs170
-rw-r--r--vanilla/node_modules/css-tree/cjs/index.cjs65
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/Lexer.cjs517
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/error.cjs128
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs235
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/generic-const.cjs12
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/generic-urange.cjs149
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/generic.cjs589
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/index.cjs7
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/match-graph.cjs530
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/match.cjs632
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs54
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/search.cjs65
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/structure.cjs173
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/trace.cjs73
-rw-r--r--vanilla/node_modules/css-tree/cjs/lexer/units.cjs38
-rw-r--r--vanilla/node_modules/css-tree/cjs/parser/SyntaxError.cjs74
-rw-r--r--vanilla/node_modules/css-tree/cjs/parser/create.cjs340
-rw-r--r--vanilla/node_modules/css-tree/cjs/parser/index.cjs8
-rw-r--r--vanilla/node_modules/css-tree/cjs/parser/parse-selector.cjs8
-rw-r--r--vanilla/node_modules/css-tree/cjs/parser/sequence.cjs47
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/container.cjs32
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs12
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/import.cjs101
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/index.cjs27
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/layer.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/media.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/nest.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/page.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/scope.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs12
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/atrule/supports.cjs16
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/config/generator.cjs9
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/config/lexer.cjs14
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/config/mix.cjs127
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs19
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/config/parser.cjs49
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/config/walker.cjs9
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/create.cjs58
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/function/expression.cjs11
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/function/var.cjs43
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/index.cjs14
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs293
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Atrule.cjs103
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs52
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs148
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Block.cjs96
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Brackets.cjs38
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/CDC.cjs26
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/CDO.cjs26
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs31
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Combinator.cjs61
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Comment.cjs40
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Condition.cjs120
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Declaration.cjs166
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs62
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Dimension.cjs30
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Feature.cjs101
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs67
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs133
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Function.cjs45
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs68
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Hash.cjs30
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs33
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Identifier.cjs25
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Layer.cjs35
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/LayerList.cjs43
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/LayerName.cjs34
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/LayerNameList.cjs42
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/MediaCondition.cjs70
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs76
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeatureRange.cjs11
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs100
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs41
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs29
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Nth.cjs54
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Number.cjs25
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Operator.cjs28
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs38
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Percentage.cjs25
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs67
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs69
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Ratio.cjs71
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Raw.cjs48
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Rule.cjs58
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Scope.cjs69
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Selector.cjs38
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs43
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/String.cjs26
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs83
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs38
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/SupportsFeature.cjs69
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs59
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs158
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Url.cjs54
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/Value.cjs26
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs34
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/common/feature-range.cjs112
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/common/feature.cjs76
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/index-generate.cjs103
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs39
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/index-parse.cjs103
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/node/index.cjs103
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/pseudo/index.cjs60
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs37
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs9
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/scope/default.cjs76
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/scope/index.cjs11
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/scope/selector.cjs88
-rw-r--r--vanilla/node_modules/css-tree/cjs/syntax/scope/value.cjs29
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs91
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs308
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs13
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs236
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/index.cjs554
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/names.cjs32
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/types.cjs57
-rw-r--r--vanilla/node_modules/css-tree/cjs/tokenizer/utils.cjs261
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/List.cjs473
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/clone.cjs25
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/create-custom-error.cjs18
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/ident.cjs102
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/index.cjs20
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/names.cjs113
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/string.cjs99
-rw-r--r--vanilla/node_modules/css-tree/cjs/utils/url.cjs108
-rw-r--r--vanilla/node_modules/css-tree/cjs/version.cjs5
-rw-r--r--vanilla/node_modules/css-tree/cjs/walker/create.cjs291
-rw-r--r--vanilla/node_modules/css-tree/cjs/walker/index.cjs8
143 files changed, 0 insertions, 12988 deletions
diff --git a/vanilla/node_modules/css-tree/cjs/convertor/create.cjs b/vanilla/node_modules/css-tree/cjs/convertor/create.cjs
deleted file mode 100644
index 55c655b..0000000
--- a/vanilla/node_modules/css-tree/cjs/convertor/create.cjs
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-const List = require('../utils/List.cjs');
-
-function createConvertor(walk) {
- return {
- fromPlainObject(ast) {
- walk(ast, {
- enter(node) {
- if (node.children && node.children instanceof List.List === false) {
- node.children = new List.List().fromArray(node.children);
- }
- }
- });
-
- return ast;
- },
- toPlainObject(ast) {
- walk(ast, {
- leave(node) {
- if (node.children && node.children instanceof List.List) {
- node.children = node.children.toArray();
- }
- }
- });
-
- return ast;
- }
- };
-}
-
-exports.createConvertor = createConvertor;
diff --git a/vanilla/node_modules/css-tree/cjs/convertor/index.cjs b/vanilla/node_modules/css-tree/cjs/convertor/index.cjs
deleted file mode 100644
index 6654278..0000000
--- a/vanilla/node_modules/css-tree/cjs/convertor/index.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-const create = require('./create.cjs');
-const index$1 = require('../walker/index.cjs');
-
-const index = create.createConvertor(index$1);
-
-module.exports = index;
diff --git a/vanilla/node_modules/css-tree/cjs/data-patch.cjs b/vanilla/node_modules/css-tree/cjs/data-patch.cjs
deleted file mode 100644
index 9103ea4..0000000
--- a/vanilla/node_modules/css-tree/cjs/data-patch.cjs
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-
-const patch = require('../data/patch.json');
-
-const patch$1 = patch;
-
-module.exports = patch$1;
diff --git a/vanilla/node_modules/css-tree/cjs/data.cjs b/vanilla/node_modules/css-tree/cjs/data.cjs
deleted file mode 100644
index 258ac6a..0000000
--- a/vanilla/node_modules/css-tree/cjs/data.cjs
+++ /dev/null
@@ -1,120 +0,0 @@
-'use strict';
-
-const dataPatch = require('./data-patch.cjs');
-
-const mdnAtrules = require('mdn-data/css/at-rules.json');
-const mdnProperties = require('mdn-data/css/properties.json');
-const mdnSyntaxes = require('mdn-data/css/syntaxes.json');
-
-const hasOwn = Object.hasOwn || ((object, property) => Object.prototype.hasOwnProperty.call(object, property));
-const extendSyntax = /^\s*\|\s*/;
-
-function preprocessAtrules(dict) {
- const result = Object.create(null);
-
- for (const [atruleName, atrule] of Object.entries(dict)) {
- let descriptors = null;
-
- if (atrule.descriptors) {
- descriptors = Object.create(null);
-
- for (const [name, descriptor] of Object.entries(atrule.descriptors)) {
- descriptors[name] = descriptor.syntax;
- }
- }
-
- result[atruleName.substr(1)] = {
- prelude: atrule.syntax.trim().replace(/\{(.|\s)+\}/, '').match(/^@\S+\s+([^;\{]*)/)[1].trim() || null,
- descriptors
- };
- }
-
- return result;
-}
-
-function patchDictionary(dict, patchDict) {
- const result = Object.create(null);
-
- // copy all syntaxes for an original dict
- for (const [key, value] of Object.entries(dict)) {
- if (value) {
- result[key] = value.syntax || value;
- }
- }
-
- // apply a patch
- for (const key of Object.keys(patchDict)) {
- if (hasOwn(dict, key)) {
- if (patchDict[key].syntax) {
- result[key] = extendSyntax.test(patchDict[key].syntax)
- ? result[key] + ' ' + patchDict[key].syntax.trim()
- : patchDict[key].syntax;
- } else {
- delete result[key];
- }
- } else {
- if (patchDict[key].syntax) {
- result[key] = patchDict[key].syntax.replace(extendSyntax, '');
- }
- }
- }
-
- return result;
-}
-
-function preprocessPatchAtrulesDescritors(declarations) {
- const result = {};
-
- for (const [key, value] of Object.entries(declarations || {})) {
- result[key] = typeof value === 'string'
- ? { syntax: value }
- : value;
- }
-
- return result;
-}
-
-function patchAtrules(dict, patchDict) {
- const result = {};
-
- // copy all syntaxes for an original dict
- for (const key in dict) {
- if (patchDict[key] === null) {
- continue;
- }
-
- const atrulePatch = patchDict[key] || {};
-
- result[key] = {
- prelude: key in patchDict && 'prelude' in atrulePatch
- ? atrulePatch.prelude
- : dict[key].prelude || null,
- descriptors: patchDictionary(
- dict[key].descriptors || {},
- preprocessPatchAtrulesDescritors(atrulePatch.descriptors)
- )
- };
- }
-
- // apply a patch
- for (const [key, atrulePatch] of Object.entries(patchDict)) {
- if (atrulePatch && !hasOwn(dict, key)) {
- result[key] = {
- prelude: atrulePatch.prelude || null,
- descriptors: atrulePatch.descriptors
- ? patchDictionary({}, preprocessPatchAtrulesDescritors(atrulePatch.descriptors))
- : null
- };
- }
- }
-
- return result;
-}
-
-const definitions = {
- types: patchDictionary(mdnSyntaxes, dataPatch.types),
- atrules: patchAtrules(preprocessAtrules(mdnAtrules), dataPatch.atrules),
- properties: patchDictionary(mdnProperties, dataPatch.properties)
-};
-
-module.exports = definitions;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
deleted file mode 100644
index d24e7ce..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const createCustomError = require('../utils/create-custom-error.cjs');
-
-function SyntaxError(message, input, offset) {
- return Object.assign(createCustomError.createCustomError('SyntaxError', message), {
- input,
- offset,
- rawMessage: message,
- message: message + '\n' +
- ' ' + input + '\n' +
- '--' + new Array((offset || input.length) + 1).join('-') + '^'
- });
-}
-
-exports.SyntaxError = SyntaxError;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/generate.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/generate.cjs
deleted file mode 100644
index ff9f0ad..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/generate.cjs
+++ /dev/null
@@ -1,139 +0,0 @@
-'use strict';
-
-function noop(value) {
- return value;
-}
-
-function generateMultiplier(multiplier) {
- const { min, max, comma } = multiplier;
-
- if (min === 0 && max === 0) {
- return comma ? '#?' : '*';
- }
-
- if (min === 0 && max === 1) {
- return '?';
- }
-
- if (min === 1 && max === 0) {
- return comma ? '#' : '+';
- }
-
- if (min === 1 && max === 1) {
- return '';
- }
-
- return (
- (comma ? '#' : '') +
- (min === max
- ? '{' + min + '}'
- : '{' + min + ',' + (max !== 0 ? max : '') + '}'
- )
- );
-}
-
-function generateTypeOpts(node) {
- switch (node.type) {
- case 'Range':
- return (
- ' [' +
- (node.min === null ? '-∞' : node.min) +
- ',' +
- (node.max === null ? '∞' : node.max) +
- ']'
- );
-
- default:
- throw new Error('Unknown node type `' + node.type + '`');
- }
-}
-
-function generateSequence(node, decorate, forceBraces, compact) {
- const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' ';
- const result = node.terms
- .map(term => internalGenerate(term, decorate, forceBraces, compact))
- .join(combinator);
-
- if (node.explicit || forceBraces) {
- return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]');
- }
-
- return result;
-}
-
-function internalGenerate(node, decorate, forceBraces, compact) {
- let result;
-
- switch (node.type) {
- case 'Group':
- result =
- generateSequence(node, decorate, forceBraces, compact) +
- (node.disallowEmpty ? '!' : '');
- break;
-
- case 'Multiplier':
- // return since node is a composition
- return (
- internalGenerate(node.term, decorate, forceBraces, compact) +
- decorate(generateMultiplier(node), node)
- );
-
- case 'Boolean':
- result = '<boolean-expr[' + internalGenerate(node.term, decorate, forceBraces, compact) + ']>';
- break;
-
- case 'Type':
- result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>';
- break;
-
- case 'Property':
- result = '<\'' + node.name + '\'>';
- break;
-
- case 'Keyword':
- result = node.name;
- break;
-
- case 'AtKeyword':
- result = '@' + node.name;
- break;
-
- case 'Function':
- result = node.name + '(';
- break;
-
- case 'String':
- case 'Token':
- result = node.value;
- break;
-
- case 'Comma':
- result = ',';
- break;
-
- default:
- throw new Error('Unknown node type `' + node.type + '`');
- }
-
- return decorate(result, node);
-}
-
-function generate(node, options) {
- let decorate = noop;
- let forceBraces = false;
- let compact = false;
-
- if (typeof options === 'function') {
- decorate = options;
- } else if (options) {
- forceBraces = Boolean(options.forceBraces);
- compact = Boolean(options.compact);
- if (typeof options.decorate === 'function') {
- decorate = options.decorate;
- }
- }
-
- return internalGenerate(node, decorate, forceBraces, compact);
-}
-
-exports.generate = generate;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/index.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/index.cjs
deleted file mode 100644
index 0afb505..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/index.cjs
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-const SyntaxError = require('./SyntaxError.cjs');
-const generate = require('./generate.cjs');
-const parse = require('./parse.cjs');
-const walk = require('./walk.cjs');
-
-
-
-exports.SyntaxError = SyntaxError.SyntaxError;
-exports.generate = generate.generate;
-exports.parse = parse.parse;
-exports.walk = walk.walk;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/parse.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/parse.cjs
deleted file mode 100644
index b17b267..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/parse.cjs
+++ /dev/null
@@ -1,556 +0,0 @@
-'use strict';
-
-const scanner = require('./scanner.cjs');
-
-const TAB = 9;
-const N = 10;
-const F = 12;
-const R = 13;
-const SPACE = 32;
-const EXCLAMATIONMARK = 33; // !
-const NUMBERSIGN = 35; // #
-const AMPERSAND = 38; // &
-const APOSTROPHE = 39; // '
-const LEFTPARENTHESIS = 40; // (
-const RIGHTPARENTHESIS = 41; // )
-const ASTERISK = 42; // *
-const PLUSSIGN = 43; // +
-const COMMA = 44; // ,
-const HYPERMINUS = 45; // -
-const LESSTHANSIGN = 60; // <
-const GREATERTHANSIGN = 62; // >
-const QUESTIONMARK = 63; // ?
-const COMMERCIALAT = 64; // @
-const LEFTSQUAREBRACKET = 91; // [
-const RIGHTSQUAREBRACKET = 93; // ]
-const LEFTCURLYBRACKET = 123; // {
-const VERTICALLINE = 124; // |
-const RIGHTCURLYBRACKET = 125; // }
-const INFINITY = 8734; // ∞
-const COMBINATOR_PRECEDENCE = {
- ' ': 1,
- '&&': 2,
- '||': 3,
- '|': 4
-};
-
-function readMultiplierRange(scanner) {
- let min = null;
- let max = null;
-
- scanner.eat(LEFTCURLYBRACKET);
- scanner.skipWs();
-
- min = scanner.scanNumber(scanner);
- scanner.skipWs();
-
- if (scanner.charCode() === COMMA) {
- scanner.pos++;
- scanner.skipWs();
-
- if (scanner.charCode() !== RIGHTCURLYBRACKET) {
- max = scanner.scanNumber(scanner);
- scanner.skipWs();
- }
- } else {
- max = min;
- }
-
- scanner.eat(RIGHTCURLYBRACKET);
-
- return {
- min: Number(min),
- max: max ? Number(max) : 0
- };
-}
-
-function readMultiplier(scanner) {
- let range = null;
- let comma = false;
-
- switch (scanner.charCode()) {
- case ASTERISK:
- scanner.pos++;
-
- range = {
- min: 0,
- max: 0
- };
-
- break;
-
- case PLUSSIGN:
- scanner.pos++;
-
- range = {
- min: 1,
- max: 0
- };
-
- break;
-
- case QUESTIONMARK:
- scanner.pos++;
-
- range = {
- min: 0,
- max: 1
- };
-
- break;
-
- case NUMBERSIGN:
- scanner.pos++;
-
- comma = true;
-
- if (scanner.charCode() === LEFTCURLYBRACKET) {
- range = readMultiplierRange(scanner);
- } else if (scanner.charCode() === QUESTIONMARK) {
- // https://www.w3.org/TR/css-values-4/#component-multipliers
- // > the # and ? multipliers may be stacked as #?
- // In this case just treat "#?" as a single multiplier
- // { min: 0, max: 0, comma: true }
- scanner.pos++;
- range = {
- min: 0,
- max: 0
- };
- } else {
- range = {
- min: 1,
- max: 0
- };
- }
-
- break;
-
- case LEFTCURLYBRACKET:
- range = readMultiplierRange(scanner);
- break;
-
- default:
- return null;
- }
-
- return {
- type: 'Multiplier',
- comma,
- min: range.min,
- max: range.max,
- term: null
- };
-}
-
-function maybeMultiplied(scanner, node) {
- const multiplier = readMultiplier(scanner);
-
- if (multiplier !== null) {
- multiplier.term = node;
-
- // https://www.w3.org/TR/css-values-4/#component-multipliers
- // > The + and # multipliers may be stacked as +#;
- // Represent "+#" as nested multipliers:
- // { ...<multiplier #>,
- // term: {
- // ...<multipler +>,
- // term: node
- // }
- // }
- if (scanner.charCode() === NUMBERSIGN &&
- scanner.charCodeAt(scanner.pos - 1) === PLUSSIGN) {
- return maybeMultiplied(scanner, multiplier);
- }
-
- return multiplier;
- }
-
- return node;
-}
-
-function maybeToken(scanner) {
- const ch = scanner.peek();
-
- if (ch === '') {
- return null;
- }
-
- return maybeMultiplied(scanner, {
- type: 'Token',
- value: ch
- });
-}
-
-function readProperty(scanner) {
- let name;
-
- scanner.eat(LESSTHANSIGN);
- scanner.eat(APOSTROPHE);
-
- name = scanner.scanWord();
-
- scanner.eat(APOSTROPHE);
- scanner.eat(GREATERTHANSIGN);
-
- return maybeMultiplied(scanner, {
- type: 'Property',
- name
- });
-}
-
-// https://drafts.csswg.org/css-values-3/#numeric-ranges
-// 4.1. Range Restrictions and Range Definition Notation
-//
-// Range restrictions can be annotated in the numeric type notation using CSS bracketed
-// range notation—[min,max]—within the angle brackets, after the identifying keyword,
-// indicating a closed range between (and including) min and max.
-// For example, <integer [0, 10]> indicates an integer between 0 and 10, inclusive.
-function readTypeRange(scanner) {
- // use null for Infinity to make AST format JSON serializable/deserializable
- let min = null; // -Infinity
- let max = null; // Infinity
- let sign = 1;
-
- scanner.eat(LEFTSQUAREBRACKET);
-
- if (scanner.charCode() === HYPERMINUS) {
- scanner.peek();
- sign = -1;
- }
-
- if (sign == -1 && scanner.charCode() === INFINITY) {
- scanner.peek();
- } else {
- min = sign * Number(scanner.scanNumber(scanner));
-
- if (scanner.isNameCharCode()) {
- min += scanner.scanWord();
- }
- }
-
- scanner.skipWs();
- scanner.eat(COMMA);
- scanner.skipWs();
-
- if (scanner.charCode() === INFINITY) {
- scanner.peek();
- } else {
- sign = 1;
-
- if (scanner.charCode() === HYPERMINUS) {
- scanner.peek();
- sign = -1;
- }
-
- max = sign * Number(scanner.scanNumber(scanner));
-
- if (scanner.isNameCharCode()) {
- max += scanner.scanWord();
- }
- }
-
- scanner.eat(RIGHTSQUAREBRACKET);
-
- return {
- type: 'Range',
- min,
- max
- };
-}
-
-function readType(scanner) {
- let name;
- let opts = null;
-
- scanner.eat(LESSTHANSIGN);
- name = scanner.scanWord();
-
- // https://drafts.csswg.org/css-values-5/#boolean
- if (name === 'boolean-expr') {
- scanner.eat(LEFTSQUAREBRACKET);
-
- const implicitGroup = readImplicitGroup(scanner, RIGHTSQUAREBRACKET);
-
- scanner.eat(RIGHTSQUAREBRACKET);
- scanner.eat(GREATERTHANSIGN);
-
- return maybeMultiplied(scanner, {
- type: 'Boolean',
- term: implicitGroup.terms.length === 1
- ? implicitGroup.terms[0]
- : implicitGroup
- });
- }
-
- if (scanner.charCode() === LEFTPARENTHESIS &&
- scanner.nextCharCode() === RIGHTPARENTHESIS) {
- scanner.pos += 2;
- name += '()';
- }
-
- if (scanner.charCodeAt(scanner.findWsEnd(scanner.pos)) === LEFTSQUAREBRACKET) {
- scanner.skipWs();
- opts = readTypeRange(scanner);
- }
-
- scanner.eat(GREATERTHANSIGN);
-
- return maybeMultiplied(scanner, {
- type: 'Type',
- name,
- opts
- });
-}
-
-function readKeywordOrFunction(scanner) {
- const name = scanner.scanWord();
-
- if (scanner.charCode() === LEFTPARENTHESIS) {
- scanner.pos++;
-
- return {
- type: 'Function',
- name
- };
- }
-
- return maybeMultiplied(scanner, {
- type: 'Keyword',
- name
- });
-}
-
-function regroupTerms(terms, combinators) {
- function createGroup(terms, combinator) {
- return {
- type: 'Group',
- terms,
- combinator,
- disallowEmpty: false,
- explicit: false
- };
- }
-
- let combinator;
-
- combinators = Object.keys(combinators)
- .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);
-
- while (combinators.length > 0) {
- combinator = combinators.shift();
-
- let i = 0;
- let subgroupStart = 0;
-
- for (; i < terms.length; i++) {
- const term = terms[i];
-
- if (term.type === 'Combinator') {
- if (term.value === combinator) {
- if (subgroupStart === -1) {
- subgroupStart = i - 1;
- }
- terms.splice(i, 1);
- i--;
- } else {
- if (subgroupStart !== -1 && i - subgroupStart > 1) {
- terms.splice(
- subgroupStart,
- i - subgroupStart,
- createGroup(terms.slice(subgroupStart, i), combinator)
- );
- i = subgroupStart + 1;
- }
- subgroupStart = -1;
- }
- }
- }
-
- if (subgroupStart !== -1 && combinators.length) {
- terms.splice(
- subgroupStart,
- i - subgroupStart,
- createGroup(terms.slice(subgroupStart, i), combinator)
- );
- }
- }
-
- return combinator;
-}
-
-function readImplicitGroup(scanner, stopCharCode) {
- const combinators = Object.create(null);
- const terms = [];
- let token;
- let prevToken = null;
- let prevTokenPos = scanner.pos;
-
- while (scanner.charCode() !== stopCharCode && (token = peek(scanner, stopCharCode))) {
- if (token.type !== 'Spaces') {
- if (token.type === 'Combinator') {
- // check for combinator in group beginning and double combinator sequence
- if (prevToken === null || prevToken.type === 'Combinator') {
- scanner.pos = prevTokenPos;
- scanner.error('Unexpected combinator');
- }
-
- combinators[token.value] = true;
- } else if (prevToken !== null && prevToken.type !== 'Combinator') {
- combinators[' '] = true; // a b
- terms.push({
- type: 'Combinator',
- value: ' '
- });
- }
-
- terms.push(token);
- prevToken = token;
- prevTokenPos = scanner.pos;
- }
- }
-
- // check for combinator in group ending
- if (prevToken !== null && prevToken.type === 'Combinator') {
- scanner.pos -= prevTokenPos;
- scanner.error('Unexpected combinator');
- }
-
- return {
- type: 'Group',
- terms,
- combinator: regroupTerms(terms, combinators) || ' ',
- disallowEmpty: false,
- explicit: false
- };
-}
-
-function readGroup(scanner, stopCharCode) {
- let result;
-
- scanner.eat(LEFTSQUAREBRACKET);
- result = readImplicitGroup(scanner, stopCharCode);
- scanner.eat(RIGHTSQUAREBRACKET);
-
- result.explicit = true;
-
- if (scanner.charCode() === EXCLAMATIONMARK) {
- scanner.pos++;
- result.disallowEmpty = true;
- }
-
- return result;
-}
-
-function peek(scanner, stopCharCode) {
- let code = scanner.charCode();
-
- switch (code) {
- case RIGHTSQUAREBRACKET:
- // don't eat, stop scan a group
- break;
-
- case LEFTSQUAREBRACKET:
- return maybeMultiplied(scanner, readGroup(scanner, stopCharCode));
-
- case LESSTHANSIGN:
- return scanner.nextCharCode() === APOSTROPHE
- ? readProperty(scanner)
- : readType(scanner);
-
- case VERTICALLINE:
- return {
- type: 'Combinator',
- value: scanner.substringToPos(
- scanner.pos + (scanner.nextCharCode() === VERTICALLINE ? 2 : 1)
- )
- };
-
- case AMPERSAND:
- scanner.pos++;
- scanner.eat(AMPERSAND);
-
- return {
- type: 'Combinator',
- value: '&&'
- };
-
- case COMMA:
- scanner.pos++;
- return {
- type: 'Comma'
- };
-
- case APOSTROPHE:
- return maybeMultiplied(scanner, {
- type: 'String',
- value: scanner.scanString()
- });
-
- case SPACE:
- case TAB:
- case N:
- case R:
- case F:
- return {
- type: 'Spaces',
- value: scanner.scanSpaces()
- };
-
- case COMMERCIALAT:
- code = scanner.nextCharCode();
-
- if (scanner.isNameCharCode(code)) {
- scanner.pos++;
- return {
- type: 'AtKeyword',
- name: scanner.scanWord()
- };
- }
-
- return maybeToken(scanner);
-
- case ASTERISK:
- case PLUSSIGN:
- case QUESTIONMARK:
- case NUMBERSIGN:
- case EXCLAMATIONMARK:
- // prohibited tokens (used as a multiplier start)
- break;
-
- case LEFTCURLYBRACKET:
- // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting
- // check next char isn't a number, because it's likely a disjoined multiplier
- code = scanner.nextCharCode();
-
- if (code < 48 || code > 57) {
- return maybeToken(scanner);
- }
-
- break;
-
- default:
- if (scanner.isNameCharCode(code)) {
- return readKeywordOrFunction(scanner);
- }
-
- return maybeToken(scanner);
- }
-}
-
-function parse(source) {
- const scanner$1 = new scanner.Scanner(source);
- const result = readImplicitGroup(scanner$1);
-
- if (scanner$1.pos !== source.length) {
- scanner$1.error('Unexpected input');
- }
-
- // reduce redundant groups with single group term
- if (result.terms.length === 1 && result.terms[0].type === 'Group') {
- return result.terms[0];
- }
-
- return result;
-}
-
-exports.parse = parse;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/scanner.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/scanner.cjs
deleted file mode 100644
index 0bad36a..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/scanner.cjs
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-const SyntaxError = require('./SyntaxError.cjs');
-
-const TAB = 9;
-const N = 10;
-const F = 12;
-const R = 13;
-const SPACE = 32;
-const NAME_CHAR = new Uint8Array(128).map((_, idx) =>
- /[a-zA-Z0-9\-]/.test(String.fromCharCode(idx)) ? 1 : 0
-);
-
-class Scanner {
- constructor(str) {
- this.str = str;
- this.pos = 0;
- }
-
- charCodeAt(pos) {
- return pos < this.str.length ? this.str.charCodeAt(pos) : 0;
- }
- charCode() {
- return this.charCodeAt(this.pos);
- }
- isNameCharCode(code = this.charCode()) {
- return code < 128 && NAME_CHAR[code] === 1;
- }
- nextCharCode() {
- return this.charCodeAt(this.pos + 1);
- }
- nextNonWsCode(pos) {
- return this.charCodeAt(this.findWsEnd(pos));
- }
- skipWs() {
- this.pos = this.findWsEnd(this.pos);
- }
- findWsEnd(pos) {
- for (; pos < this.str.length; pos++) {
- const code = this.str.charCodeAt(pos);
- if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {
- break;
- }
- }
-
- return pos;
- }
- substringToPos(end) {
- return this.str.substring(this.pos, this.pos = end);
- }
- eat(code) {
- if (this.charCode() !== code) {
- this.error('Expect `' + String.fromCharCode(code) + '`');
- }
-
- this.pos++;
- }
- peek() {
- return this.pos < this.str.length ? this.str.charAt(this.pos++) : '';
- }
- error(message) {
- throw new SyntaxError.SyntaxError(message, this.str, this.pos);
- }
-
- scanSpaces() {
- return this.substringToPos(this.findWsEnd(this.pos));
- }
- scanWord() {
- let end = this.pos;
-
- for (; end < this.str.length; end++) {
- const code = this.str.charCodeAt(end);
- if (code >= 128 || NAME_CHAR[code] === 0) {
- break;
- }
- }
-
- if (this.pos === end) {
- this.error('Expect a keyword');
- }
-
- return this.substringToPos(end);
- }
- scanNumber() {
- let end = this.pos;
-
- for (; end < this.str.length; end++) {
- const code = this.str.charCodeAt(end);
-
- if (code < 48 || code > 57) {
- break;
- }
- }
-
- if (this.pos === end) {
- this.error('Expect a number');
- }
-
- return this.substringToPos(end);
- }
- scanString() {
- const end = this.str.indexOf('\'', this.pos + 1);
-
- if (end === -1) {
- this.pos = this.str.length;
- this.error('Expect an apostrophe');
- }
-
- return this.substringToPos(end + 1);
- }
-}
-
-exports.Scanner = Scanner;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
deleted file mode 100644
index 2b934bd..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-
-const SyntaxError = require('./SyntaxError.cjs');
-
-const TAB = 9;
-const N = 10;
-const F = 12;
-const R = 13;
-const SPACE = 32;
-
-class Tokenizer {
- constructor(str) {
- this.str = str;
- this.pos = 0;
- }
- charCodeAt(pos) {
- return pos < this.str.length ? this.str.charCodeAt(pos) : 0;
- }
- charCode() {
- return this.charCodeAt(this.pos);
- }
- nextCharCode() {
- return this.charCodeAt(this.pos + 1);
- }
- nextNonWsCode(pos) {
- return this.charCodeAt(this.findWsEnd(pos));
- }
- skipWs() {
- this.pos = this.findWsEnd(this.pos);
- }
- findWsEnd(pos) {
- for (; pos < this.str.length; pos++) {
- const code = this.str.charCodeAt(pos);
- if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {
- break;
- }
- }
-
- return pos;
- }
- substringToPos(end) {
- return this.str.substring(this.pos, this.pos = end);
- }
- eat(code) {
- if (this.charCode() !== code) {
- this.error('Expect `' + String.fromCharCode(code) + '`');
- }
-
- this.pos++;
- }
- peek() {
- return this.pos < this.str.length ? this.str.charAt(this.pos++) : '';
- }
- error(message) {
- throw new SyntaxError.SyntaxError(message, this.str, this.pos);
- }
-}
-
-exports.Tokenizer = Tokenizer;
diff --git a/vanilla/node_modules/css-tree/cjs/definition-syntax/walk.cjs b/vanilla/node_modules/css-tree/cjs/definition-syntax/walk.cjs
deleted file mode 100644
index fdba065..0000000
--- a/vanilla/node_modules/css-tree/cjs/definition-syntax/walk.cjs
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-const noop = function() {};
-
-function ensureFunction(value) {
- return typeof value === 'function' ? value : noop;
-}
-
-function walk(node, options, context) {
- function walk(node) {
- enter.call(context, node);
-
- switch (node.type) {
- case 'Group':
- node.terms.forEach(walk);
- break;
-
- case 'Multiplier':
- case 'Boolean':
- walk(node.term);
- break;
-
- case 'Type':
- case 'Property':
- case 'Keyword':
- case 'AtKeyword':
- case 'Function':
- case 'String':
- case 'Token':
- case 'Comma':
- break;
-
- default:
- throw new Error('Unknown type: ' + node.type);
- }
-
- leave.call(context, node);
- }
-
- let enter = noop;
- let leave = noop;
-
- if (typeof options === 'function') {
- enter = options;
- } else if (options) {
- enter = ensureFunction(options.enter);
- leave = ensureFunction(options.leave);
- }
-
- if (enter === noop && leave === noop) {
- throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function');
- }
-
- walk(node);
-}
-
-exports.walk = walk;
diff --git a/vanilla/node_modules/css-tree/cjs/generator/create.cjs b/vanilla/node_modules/css-tree/cjs/generator/create.cjs
deleted file mode 100644
index 87a54b2..0000000
--- a/vanilla/node_modules/css-tree/cjs/generator/create.cjs
+++ /dev/null
@@ -1,102 +0,0 @@
-'use strict';
-
-const index = require('../tokenizer/index.cjs');
-const sourceMap = require('./sourceMap.cjs');
-const tokenBefore = require('./token-before.cjs');
-const types = require('../tokenizer/types.cjs');
-
-const REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\)
-
-function processChildren(node, delimeter) {
- if (typeof delimeter === 'function') {
- let prev = null;
-
- node.children.forEach(node => {
- if (prev !== null) {
- delimeter.call(this, prev);
- }
-
- this.node(node);
- prev = node;
- });
-
- return;
- }
-
- node.children.forEach(this.node, this);
-}
-
-function processChunk(chunk) {
- index.tokenize(chunk, (type, start, end) => {
- this.token(type, chunk.slice(start, end));
- });
-}
-
-function createGenerator(config) {
- const types$1 = new Map();
-
- for (let [name, item] of Object.entries(config.node)) {
- const fn = item.generate || item;
-
- if (typeof fn === 'function') {
- types$1.set(name, item.generate || item);
- }
- }
-
- return function(node, options) {
- let buffer = '';
- let prevCode = 0;
- let handlers = {
- node(node) {
- if (types$1.has(node.type)) {
- types$1.get(node.type).call(publicApi, node);
- } else {
- throw new Error('Unknown node type: ' + node.type);
- }
- },
- tokenBefore: tokenBefore.safe,
- token(type, value) {
- prevCode = this.tokenBefore(prevCode, type, value);
-
- this.emit(value, type, false);
-
- if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) {
- this.emit('\n', types.WhiteSpace, true);
- }
- },
- emit(value) {
- buffer += value;
- },
- result() {
- return buffer;
- }
- };
-
- if (options) {
- if (typeof options.decorator === 'function') {
- handlers = options.decorator(handlers);
- }
-
- if (options.sourceMap) {
- handlers = sourceMap.generateSourceMap(handlers);
- }
-
- if (options.mode in tokenBefore) {
- handlers.tokenBefore = tokenBefore[options.mode];
- }
- }
-
- const publicApi = {
- node: (node) => handlers.node(node),
- children: processChildren,
- token: (type, value) => handlers.token(type, value),
- tokenize: processChunk
- };
-
- handlers.node(node);
-
- return handlers.result();
- };
-}
-
-exports.createGenerator = createGenerator;
diff --git a/vanilla/node_modules/css-tree/cjs/generator/index.cjs b/vanilla/node_modules/css-tree/cjs/generator/index.cjs
deleted file mode 100644
index 5c87cd3..0000000
--- a/vanilla/node_modules/css-tree/cjs/generator/index.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-const create = require('./create.cjs');
-const generator = require('../syntax/config/generator.cjs');
-
-const index = create.createGenerator(generator);
-
-module.exports = index;
diff --git a/vanilla/node_modules/css-tree/cjs/generator/sourceMap.cjs b/vanilla/node_modules/css-tree/cjs/generator/sourceMap.cjs
deleted file mode 100644
index efbc5b9..0000000
--- a/vanilla/node_modules/css-tree/cjs/generator/sourceMap.cjs
+++ /dev/null
@@ -1,96 +0,0 @@
-'use strict';
-
-const sourceMapGenerator_js = require('source-map-js/lib/source-map-generator.js');
-
-const trackNodes = new Set(['Atrule', 'Selector', 'Declaration']);
-
-function generateSourceMap(handlers) {
- const map = new sourceMapGenerator_js.SourceMapGenerator();
- const generated = {
- line: 1,
- column: 0
- };
- const original = {
- line: 0, // should be zero to add first mapping
- column: 0
- };
- const activatedGenerated = {
- line: 1,
- column: 0
- };
- const activatedMapping = {
- generated: activatedGenerated
- };
- let line = 1;
- let column = 0;
- let sourceMappingActive = false;
-
- const origHandlersNode = handlers.node;
- handlers.node = function(node) {
- if (node.loc && node.loc.start && trackNodes.has(node.type)) {
- const nodeLine = node.loc.start.line;
- const nodeColumn = node.loc.start.column - 1;
-
- if (original.line !== nodeLine ||
- original.column !== nodeColumn) {
- original.line = nodeLine;
- original.column = nodeColumn;
-
- generated.line = line;
- generated.column = column;
-
- if (sourceMappingActive) {
- sourceMappingActive = false;
- if (generated.line !== activatedGenerated.line ||
- generated.column !== activatedGenerated.column) {
- map.addMapping(activatedMapping);
- }
- }
-
- sourceMappingActive = true;
- map.addMapping({
- source: node.loc.source,
- original,
- generated
- });
- }
- }
-
- origHandlersNode.call(this, node);
-
- if (sourceMappingActive && trackNodes.has(node.type)) {
- activatedGenerated.line = line;
- activatedGenerated.column = column;
- }
- };
-
- const origHandlersEmit = handlers.emit;
- handlers.emit = function(value, type, auto) {
- for (let i = 0; i < value.length; i++) {
- if (value.charCodeAt(i) === 10) { // \n
- line++;
- column = 0;
- } else {
- column++;
- }
- }
-
- origHandlersEmit(value, type, auto);
- };
-
- const origHandlersResult = handlers.result;
- handlers.result = function() {
- if (sourceMappingActive) {
- map.addMapping(activatedMapping);
- }
-
- return {
- css: origHandlersResult(),
- map
- };
- };
-
- return handlers;
-}
-
-exports.generateSourceMap = generateSourceMap;
diff --git a/vanilla/node_modules/css-tree/cjs/generator/token-before.cjs b/vanilla/node_modules/css-tree/cjs/generator/token-before.cjs
deleted file mode 100644
index 87bf4a3..0000000
--- a/vanilla/node_modules/css-tree/cjs/generator/token-before.cjs
+++ /dev/null
@@ -1,170 +0,0 @@
-'use strict';
-
-const types = require('../tokenizer/types.cjs');
-
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
-
-const code = (type, value) => {
- if (type === types.Delim) {
- type = value;
- }
-
- if (typeof type === 'string') {
- const charCode = type.charCodeAt(0);
- return charCode > 0x7F ? 0x8000 : charCode << 8;
- }
-
- return type;
-};
-
-// https://www.w3.org/TR/css-syntax-3/#serialization
-// The only requirement for serialization is that it must "round-trip" with parsing,
-// that is, parsing the stylesheet must produce the same data structures as parsing,
-// serializing, and parsing again, except for consecutive <whitespace-token>s,
-// which may be collapsed into a single token.
-
-const specPairs = [
- [types.Ident, types.Ident],
- [types.Ident, types.Function],
- [types.Ident, types.Url],
- [types.Ident, types.BadUrl],
- [types.Ident, '-'],
- [types.Ident, types.Number],
- [types.Ident, types.Percentage],
- [types.Ident, types.Dimension],
- [types.Ident, types.CDC],
- [types.Ident, types.LeftParenthesis],
-
- [types.AtKeyword, types.Ident],
- [types.AtKeyword, types.Function],
- [types.AtKeyword, types.Url],
- [types.AtKeyword, types.BadUrl],
- [types.AtKeyword, '-'],
- [types.AtKeyword, types.Number],
- [types.AtKeyword, types.Percentage],
- [types.AtKeyword, types.Dimension],
- [types.AtKeyword, types.CDC],
-
- [types.Hash, types.Ident],
- [types.Hash, types.Function],
- [types.Hash, types.Url],
- [types.Hash, types.BadUrl],
- [types.Hash, '-'],
- [types.Hash, types.Number],
- [types.Hash, types.Percentage],
- [types.Hash, types.Dimension],
- [types.Hash, types.CDC],
-
- [types.Dimension, types.Ident],
- [types.Dimension, types.Function],
- [types.Dimension, types.Url],
- [types.Dimension, types.BadUrl],
- [types.Dimension, '-'],
- [types.Dimension, types.Number],
- [types.Dimension, types.Percentage],
- [types.Dimension, types.Dimension],
- [types.Dimension, types.CDC],
-
- ['#', types.Ident],
- ['#', types.Function],
- ['#', types.Url],
- ['#', types.BadUrl],
- ['#', '-'],
- ['#', types.Number],
- ['#', types.Percentage],
- ['#', types.Dimension],
- ['#', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
-
- ['-', types.Ident],
- ['-', types.Function],
- ['-', types.Url],
- ['-', types.BadUrl],
- ['-', '-'],
- ['-', types.Number],
- ['-', types.Percentage],
- ['-', types.Dimension],
- ['-', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
-
- [types.Number, types.Ident],
- [types.Number, types.Function],
- [types.Number, types.Url],
- [types.Number, types.BadUrl],
- [types.Number, types.Number],
- [types.Number, types.Percentage],
- [types.Number, types.Dimension],
- [types.Number, '%'],
- [types.Number, types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
-
- ['@', types.Ident],
- ['@', types.Function],
- ['@', types.Url],
- ['@', types.BadUrl],
- ['@', '-'],
- ['@', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874
-
- ['.', types.Number],
- ['.', types.Percentage],
- ['.', types.Dimension],
-
- ['+', types.Number],
- ['+', types.Percentage],
- ['+', types.Dimension],
-
- ['/', '*']
-];
-// validate with scripts/generate-safe
-const safePairs = specPairs.concat([
- [types.Ident, types.Hash],
-
- [types.Dimension, types.Hash],
-
- [types.Hash, types.Hash],
-
- [types.AtKeyword, types.LeftParenthesis],
- [types.AtKeyword, types.String],
- [types.AtKeyword, types.Colon],
-
- [types.Percentage, types.Percentage],
- [types.Percentage, types.Dimension],
- [types.Percentage, types.Function],
- [types.Percentage, '-'],
-
- [types.RightParenthesis, types.Ident],
- [types.RightParenthesis, types.Function],
- [types.RightParenthesis, types.Percentage],
- [types.RightParenthesis, types.Dimension],
- [types.RightParenthesis, types.Hash],
- [types.RightParenthesis, '-']
-]);
-
-function createMap(pairs) {
- const isWhiteSpaceRequired = new Set(
- pairs.map(([prev, next]) => (code(prev) << 16 | code(next)))
- );
-
- return function(prevCode, type, value) {
- const nextCode = code(type, value);
- const nextCharCode = value.charCodeAt(0);
- const emitWs =
- (nextCharCode === HYPHENMINUS &&
- type !== types.Ident &&
- type !== types.Function &&
- type !== types.CDC) ||
- (nextCharCode === PLUSSIGN)
- ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8)
- : isWhiteSpaceRequired.has(prevCode << 16 | nextCode);
-
- if (emitWs) {
- this.emit(' ', types.WhiteSpace, true);
- }
-
- return nextCode;
- };
-}
-
-const spec = createMap(specPairs);
-const safe = createMap(safePairs);
-
-exports.safe = safe;
-exports.spec = spec;
diff --git a/vanilla/node_modules/css-tree/cjs/index.cjs b/vanilla/node_modules/css-tree/cjs/index.cjs
deleted file mode 100644
index cc61137..0000000
--- a/vanilla/node_modules/css-tree/cjs/index.cjs
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const index$1 = require('./syntax/index.cjs');
-const version = require('./version.cjs');
-const create = require('./syntax/create.cjs');
-const List = require('./utils/List.cjs');
-const Lexer = require('./lexer/Lexer.cjs');
-const index = require('./definition-syntax/index.cjs');
-const clone = require('./utils/clone.cjs');
-const names$1 = require('./utils/names.cjs');
-const ident = require('./utils/ident.cjs');
-const string = require('./utils/string.cjs');
-const url = require('./utils/url.cjs');
-const types = require('./tokenizer/types.cjs');
-const names = require('./tokenizer/names.cjs');
-const TokenStream = require('./tokenizer/TokenStream.cjs');
-const OffsetToLocation = require('./tokenizer/OffsetToLocation.cjs');
-
-const {
- tokenize,
- parse,
- generate,
- lexer,
- createLexer,
-
- walk,
- find,
- findLast,
- findAll,
-
- toPlainObject,
- fromPlainObject,
-
- fork
-} = index$1;
-
-exports.version = version.version;
-exports.createSyntax = create;
-exports.List = List.List;
-exports.Lexer = Lexer.Lexer;
-exports.definitionSyntax = index;
-exports.clone = clone.clone;
-exports.isCustomProperty = names$1.isCustomProperty;
-exports.keyword = names$1.keyword;
-exports.property = names$1.property;
-exports.vendorPrefix = names$1.vendorPrefix;
-exports.ident = ident;
-exports.string = string;
-exports.url = url;
-exports.tokenTypes = types;
-exports.tokenNames = names;
-exports.TokenStream = TokenStream.TokenStream;
-exports.OffsetToLocation = OffsetToLocation.OffsetToLocation;
-exports.createLexer = createLexer;
-exports.find = find;
-exports.findAll = findAll;
-exports.findLast = findLast;
-exports.fork = fork;
-exports.fromPlainObject = fromPlainObject;
-exports.generate = generate;
-exports.lexer = lexer;
-exports.parse = parse;
-exports.toPlainObject = toPlainObject;
-exports.tokenize = tokenize;
-exports.walk = walk;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/Lexer.cjs b/vanilla/node_modules/css-tree/cjs/lexer/Lexer.cjs
deleted file mode 100644
index a6d1fcb..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/Lexer.cjs
+++ /dev/null
@@ -1,517 +0,0 @@
-'use strict';
-
-const error = require('./error.cjs');
-const names = require('../utils/names.cjs');
-const genericConst = require('./generic-const.cjs');
-const generic = require('./generic.cjs');
-const units = require('./units.cjs');
-const prepareTokens = require('./prepare-tokens.cjs');
-const matchGraph = require('./match-graph.cjs');
-const match = require('./match.cjs');
-const trace = require('./trace.cjs');
-const search = require('./search.cjs');
-const structure = require('./structure.cjs');
-const parse = require('../definition-syntax/parse.cjs');
-const generate = require('../definition-syntax/generate.cjs');
-const walk = require('../definition-syntax/walk.cjs');
-
-function dumpMapSyntax(map, compact, syntaxAsAst) {
- const result = {};
-
- for (const name in map) {
- if (map[name].syntax) {
- result[name] = syntaxAsAst
- ? map[name].syntax
- : generate.generate(map[name].syntax, { compact });
- }
- }
-
- return result;
-}
-
-function dumpAtruleMapSyntax(map, compact, syntaxAsAst) {
- const result = {};
-
- for (const [name, atrule] of Object.entries(map)) {
- result[name] = {
- prelude: atrule.prelude && (
- syntaxAsAst
- ? atrule.prelude.syntax
- : generate.generate(atrule.prelude.syntax, { compact })
- ),
- descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)
- };
- }
-
- return result;
-}
-
-function valueHasVar(tokens) {
- for (let i = 0; i < tokens.length; i++) {
- if (tokens[i].value.toLowerCase() === 'var(') {
- return true;
- }
- }
-
- return false;
-}
-
-function syntaxHasTopLevelCommaMultiplier(syntax) {
- const singleTerm = syntax.terms[0];
-
- return (
- syntax.explicit === false &&
- syntax.terms.length === 1 &&
- singleTerm.type === 'Multiplier' &&
- singleTerm.comma === true
- );
-}
-
-function buildMatchResult(matched, error, iterations) {
- return {
- matched,
- iterations,
- error,
- ...trace
- };
-}
-
-function matchSyntax(lexer, syntax, value, useCssWideKeywords) {
- const tokens = prepareTokens(value, lexer.syntax);
- let result;
-
- if (valueHasVar(tokens)) {
- return buildMatchResult(null, new Error('Matching for a tree with var() is not supported'));
- }
-
- if (useCssWideKeywords) {
- result = match.matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer);
- }
-
- if (!useCssWideKeywords || !result.match) {
- result = match.matchAsTree(tokens, syntax.match, lexer);
- if (!result.match) {
- return buildMatchResult(
- null,
- new error.SyntaxMatchError(result.reason, syntax.syntax, value, result),
- result.iterations
- );
- }
- }
-
- return buildMatchResult(result.match, null, result.iterations);
-}
-
-class Lexer {
- constructor(config, syntax, structure$1) {
- this.cssWideKeywords = genericConst.cssWideKeywords;
- this.syntax = syntax;
- this.generic = false;
- this.units = { ...units };
- this.atrules = Object.create(null);
- this.properties = Object.create(null);
- this.types = Object.create(null);
- this.structure = structure$1 || structure.getStructureFromConfig(config);
-
- if (config) {
- if (config.cssWideKeywords) {
- this.cssWideKeywords = config.cssWideKeywords;
- }
-
- if (config.units) {
- for (const group of Object.keys(units)) {
- if (Array.isArray(config.units[group])) {
- this.units[group] = config.units[group];
- }
- }
- }
-
- if (config.types) {
- for (const [name, type] of Object.entries(config.types)) {
- this.addType_(name, type);
- }
- }
-
- if (config.generic) {
- this.generic = true;
- for (const [name, value] of Object.entries(generic.createGenericTypes(this.units))) {
- this.addType_(name, value);
- }
- }
-
- if (config.atrules) {
- for (const [name, atrule] of Object.entries(config.atrules)) {
- this.addAtrule_(name, atrule);
- }
- }
-
- if (config.properties) {
- for (const [name, property] of Object.entries(config.properties)) {
- this.addProperty_(name, property);
- }
- }
- }
-
- this.cssWideKeywordsSyntax = matchGraph.buildMatchGraph(this.cssWideKeywords.join(' | '));
- }
-
- checkStructure(ast) {
- function collectWarning(node, message) {
- warns.push({ node, message });
- }
-
- const structure = this.structure;
- const warns = [];
-
- this.syntax.walk(ast, function(node) {
- if (structure.hasOwnProperty(node.type)) {
- structure[node.type].check(node, collectWarning);
- } else {
- collectWarning(node, 'Unknown node type `' + node.type + '`');
- }
- });
-
- return warns.length ? warns : false;
- }
-
- createDescriptor(syntax, type, name, parent = null) {
- const ref = {
- type,
- name
- };
- const descriptor = {
- type,
- name,
- parent,
- serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'),
- syntax: null,
- match: null,
- matchRef: null // used for properties when a syntax referenced as <'property'> in other syntax definitions
- };
-
- if (typeof syntax === 'function') {
- descriptor.match = matchGraph.buildMatchGraph(syntax, ref);
- } else {
- if (typeof syntax === 'string') {
- // lazy parsing on first access
- Object.defineProperty(descriptor, 'syntax', {
- get() {
- Object.defineProperty(descriptor, 'syntax', {
- value: parse.parse(syntax)
- });
-
- return descriptor.syntax;
- }
- });
- } else {
- descriptor.syntax = syntax;
- }
-
- // lazy graph build on first access
- Object.defineProperty(descriptor, 'match', {
- get() {
- Object.defineProperty(descriptor, 'match', {
- value: matchGraph.buildMatchGraph(descriptor.syntax, ref)
- });
-
- return descriptor.match;
- }
- });
-
- if (type === 'Property') {
- Object.defineProperty(descriptor, 'matchRef', {
- get() {
- const syntax = descriptor.syntax;
- const value = syntaxHasTopLevelCommaMultiplier(syntax)
- ? matchGraph.buildMatchGraph({
- ...syntax,
- terms: [syntax.terms[0].term]
- }, ref)
- : null;
-
- Object.defineProperty(descriptor, 'matchRef', {
- value
- });
-
- return value;
- }
- });
- }
- }
-
- return descriptor;
- }
- addAtrule_(name, syntax) {
- if (!syntax) {
- return;
- }
-
- this.atrules[name] = {
- type: 'Atrule',
- name: name,
- prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null,
- descriptors: syntax.descriptors
- ? Object.keys(syntax.descriptors).reduce(
- (map, descName) => {
- map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name);
- return map;
- },
- Object.create(null)
- )
- : null
- };
- }
- addProperty_(name, syntax) {
- if (!syntax) {
- return;
- }
-
- this.properties[name] = this.createDescriptor(syntax, 'Property', name);
- }
- addType_(name, syntax) {
- if (!syntax) {
- return;
- }
-
- this.types[name] = this.createDescriptor(syntax, 'Type', name);
- }
-
- checkAtruleName(atruleName) {
- if (!this.getAtrule(atruleName)) {
- return new error.SyntaxReferenceError('Unknown at-rule', '@' + atruleName);
- }
- }
- checkAtrulePrelude(atruleName, prelude) {
- const error = this.checkAtruleName(atruleName);
-
- if (error) {
- return error;
- }
-
- const atrule = this.getAtrule(atruleName);
-
- if (!atrule.prelude && prelude) {
- return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude');
- }
-
- if (atrule.prelude && !prelude) {
- if (!matchSyntax(this, atrule.prelude, '', false).matched) {
- return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude');
- }
- }
- }
- checkAtruleDescriptorName(atruleName, descriptorName) {
- const error$1 = this.checkAtruleName(atruleName);
-
- if (error$1) {
- return error$1;
- }
-
- const atrule = this.getAtrule(atruleName);
- const descriptor = names.keyword(descriptorName);
-
- if (!atrule.descriptors) {
- return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors');
- }
-
- if (!atrule.descriptors[descriptor.name] &&
- !atrule.descriptors[descriptor.basename]) {
- return new error.SyntaxReferenceError('Unknown at-rule descriptor', descriptorName);
- }
- }
- checkPropertyName(propertyName) {
- if (!this.getProperty(propertyName)) {
- return new error.SyntaxReferenceError('Unknown property', propertyName);
- }
- }
-
- matchAtrulePrelude(atruleName, prelude) {
- const error = this.checkAtrulePrelude(atruleName, prelude);
-
- if (error) {
- return buildMatchResult(null, error);
- }
-
- const atrule = this.getAtrule(atruleName);
-
- if (!atrule.prelude) {
- return buildMatchResult(null, null);
- }
-
- return matchSyntax(this, atrule.prelude, prelude || '', false);
- }
- matchAtruleDescriptor(atruleName, descriptorName, value) {
- const error = this.checkAtruleDescriptorName(atruleName, descriptorName);
-
- if (error) {
- return buildMatchResult(null, error);
- }
-
- const atrule = this.getAtrule(atruleName);
- const descriptor = names.keyword(descriptorName);
-
- return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);
- }
- matchDeclaration(node) {
- if (node.type !== 'Declaration') {
- return buildMatchResult(null, new Error('Not a Declaration node'));
- }
-
- return this.matchProperty(node.property, node.value);
- }
- matchProperty(propertyName, value) {
- // don't match syntax for a custom property at the moment
- if (names.property(propertyName).custom) {
- return buildMatchResult(null, new Error('Lexer matching doesn\'t applicable for custom properties'));
- }
-
- const error = this.checkPropertyName(propertyName);
-
- if (error) {
- return buildMatchResult(null, error);
- }
-
- return matchSyntax(this, this.getProperty(propertyName), value, true);
- }
- matchType(typeName, value) {
- const typeSyntax = this.getType(typeName);
-
- if (!typeSyntax) {
- return buildMatchResult(null, new error.SyntaxReferenceError('Unknown type', typeName));
- }
-
- return matchSyntax(this, typeSyntax, value, false);
- }
- match(syntax, value) {
- if (typeof syntax !== 'string' && (!syntax || !syntax.type)) {
- return buildMatchResult(null, new error.SyntaxReferenceError('Bad syntax'));
- }
-
- if (typeof syntax === 'string' || !syntax.match) {
- syntax = this.createDescriptor(syntax, 'Type', 'anonymous');
- }
-
- return matchSyntax(this, syntax, value, false);
- }
-
- findValueFragments(propertyName, value, type, name) {
- return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name);
- }
- findDeclarationValueFragments(declaration, type, name) {
- return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);
- }
- findAllFragments(ast, type, name) {
- const result = [];
-
- this.syntax.walk(ast, {
- visit: 'Declaration',
- enter: (declaration) => {
- result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));
- }
- });
-
- return result;
- }
-
- getAtrule(atruleName, fallbackBasename = true) {
- const atrule = names.keyword(atruleName);
- const atruleEntry = atrule.vendor && fallbackBasename
- ? this.atrules[atrule.name] || this.atrules[atrule.basename]
- : this.atrules[atrule.name];
-
- return atruleEntry || null;
- }
- getAtrulePrelude(atruleName, fallbackBasename = true) {
- const atrule = this.getAtrule(atruleName, fallbackBasename);
-
- return atrule && atrule.prelude || null;
- }
- getAtruleDescriptor(atruleName, name) {
- return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators
- ? this.atrules[atruleName].declarators[name] || null
- : null;
- }
- getProperty(propertyName, fallbackBasename = true) {
- const property = names.property(propertyName);
- const propertyEntry = property.vendor && fallbackBasename
- ? this.properties[property.name] || this.properties[property.basename]
- : this.properties[property.name];
-
- return propertyEntry || null;
- }
- getType(name) {
- return hasOwnProperty.call(this.types, name) ? this.types[name] : null;
- }
-
- validate() {
- function syntaxRef(name, isType) {
- return isType ? `<${name}>` : `<'${name}'>`;
- }
-
- function validate(syntax, name, broken, descriptor) {
- if (broken.has(name)) {
- return broken.get(name);
- }
-
- broken.set(name, false);
- if (descriptor.syntax !== null) {
- walk.walk(descriptor.syntax, function(node) {
- if (node.type !== 'Type' && node.type !== 'Property') {
- return;
- }
-
- const map = node.type === 'Type' ? syntax.types : syntax.properties;
- const brokenMap = node.type === 'Type' ? brokenTypes : brokenProperties;
-
- if (!hasOwnProperty.call(map, node.name)) {
- errors.push(`${syntaxRef(name, broken === brokenTypes)} used missed syntax definition ${syntaxRef(node.name, node.type === 'Type')}`);
- broken.set(name, true);
- } else if (validate(syntax, node.name, brokenMap, map[node.name])) {
- errors.push(`${syntaxRef(name, broken === brokenTypes)} used broken syntax definition ${syntaxRef(node.name, node.type === 'Type')}`);
- broken.set(name, true);
- }
- }, this);
- }
- }
-
- const errors = [];
- let brokenTypes = new Map();
- let brokenProperties = new Map();
-
- for (const key in this.types) {
- validate(this, key, brokenTypes, this.types[key]);
- }
-
- for (const key in this.properties) {
- validate(this, key, brokenProperties, this.properties[key]);
- }
-
- const brokenTypesArray = [...brokenTypes.keys()].filter(name => brokenTypes.get(name));
- const brokenPropertiesArray = [...brokenProperties.keys()].filter(name => brokenProperties.get(name));
-
- if (brokenTypesArray.length || brokenPropertiesArray.length) {
- return {
- errors,
- types: brokenTypesArray,
- properties: brokenPropertiesArray
- };
- }
-
- return null;
- }
- dump(syntaxAsAst, pretty) {
- return {
- generic: this.generic,
- cssWideKeywords: this.cssWideKeywords,
- units: this.units,
- types: dumpMapSyntax(this.types, !pretty, syntaxAsAst),
- properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst),
- atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst)
- };
- }
- toString() {
- return JSON.stringify(this.dump());
- }
-}
-
-exports.Lexer = Lexer;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/error.cjs b/vanilla/node_modules/css-tree/cjs/lexer/error.cjs
deleted file mode 100644
index 8d252ee..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/error.cjs
+++ /dev/null
@@ -1,128 +0,0 @@
-'use strict';
-
-const createCustomError = require('../utils/create-custom-error.cjs');
-const generate = require('../definition-syntax/generate.cjs');
-
-const defaultLoc = { offset: 0, line: 1, column: 1 };
-
-function locateMismatch(matchResult, node) {
- const tokens = matchResult.tokens;
- const longestMatch = matchResult.longestMatch;
- const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null;
- const badNode = mismatchNode !== node ? mismatchNode : null;
- let mismatchOffset = 0;
- let mismatchLength = 0;
- let entries = 0;
- let css = '';
- let start;
- let end;
-
- for (let i = 0; i < tokens.length; i++) {
- const token = tokens[i].value;
-
- if (i === longestMatch) {
- mismatchLength = token.length;
- mismatchOffset = css.length;
- }
-
- if (badNode !== null && tokens[i].node === badNode) {
- if (i <= longestMatch) {
- entries++;
- } else {
- entries = 0;
- }
- }
-
- css += token;
- }
-
- if (longestMatch === tokens.length || entries > 1) { // last
- start = fromLoc(badNode || node, 'end') || buildLoc(defaultLoc, css);
- end = buildLoc(start);
- } else {
- start = fromLoc(badNode, 'start') ||
- buildLoc(fromLoc(node, 'start') || defaultLoc, css.slice(0, mismatchOffset));
- end = fromLoc(badNode, 'end') ||
- buildLoc(start, css.substr(mismatchOffset, mismatchLength));
- }
-
- return {
- css,
- mismatchOffset,
- mismatchLength,
- start,
- end
- };
-}
-
-function fromLoc(node, point) {
- const value = node && node.loc && node.loc[point];
-
- if (value) {
- return 'line' in value ? buildLoc(value) : value;
- }
-
- return null;
-}
-
-function buildLoc({ offset, line, column }, extra) {
- const loc = {
- offset,
- line,
- column
- };
-
- if (extra) {
- const lines = extra.split(/\n|\r\n?|\f/);
-
- loc.offset += extra.length;
- loc.line += lines.length - 1;
- loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1;
- }
-
- return loc;
-}
-
-const SyntaxReferenceError = function(type, referenceName) {
- const error = createCustomError.createCustomError(
- 'SyntaxReferenceError',
- type + (referenceName ? ' `' + referenceName + '`' : '')
- );
-
- error.reference = referenceName;
-
- return error;
-};
-
-const SyntaxMatchError = function(message, syntax, node, matchResult) {
- const error = createCustomError.createCustomError('SyntaxMatchError', message);
- const {
- css,
- mismatchOffset,
- mismatchLength,
- start,
- end
- } = locateMismatch(matchResult, node);
-
- error.rawMessage = message;
- error.syntax = syntax ? generate.generate(syntax) : '<generic>';
- error.css = css;
- error.mismatchOffset = mismatchOffset;
- error.mismatchLength = mismatchLength;
- error.message = message + '\n' +
- ' syntax: ' + error.syntax + '\n' +
- ' value: ' + (css || '<empty string>') + '\n' +
- ' --------' + new Array(error.mismatchOffset + 1).join('-') + '^';
-
- Object.assign(error, start);
- error.loc = {
- source: (node && node.loc && node.loc.source) || '<unknown>',
- start,
- end
- };
-
- return error;
-};
-
-exports.SyntaxMatchError = SyntaxMatchError;
-exports.SyntaxReferenceError = SyntaxReferenceError;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs b/vanilla/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs
deleted file mode 100644
index a5dfba3..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs
+++ /dev/null
@@ -1,235 +0,0 @@
-'use strict';
-
-const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
-const types = require('../tokenizer/types.cjs');
-const utils = require('../tokenizer/utils.cjs');
-
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
-const N = 0x006E; // U+006E LATIN SMALL LETTER N (n)
-const DISALLOW_SIGN = true;
-const ALLOW_SIGN = false;
-
-function isDelim(token, code) {
- return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
-}
-
-function skipSC(token, offset, getNextToken) {
- while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)) {
- token = getNextToken(++offset);
- }
-
- return offset;
-}
-
-function checkInteger(token, valueOffset, disallowSign, offset) {
- if (!token) {
- return 0;
- }
-
- const code = token.value.charCodeAt(valueOffset);
-
- if (code === PLUSSIGN || code === HYPHENMINUS) {
- if (disallowSign) {
- // Number sign is not allowed
- return 0;
- }
- valueOffset++;
- }
-
- for (; valueOffset < token.value.length; valueOffset++) {
- if (!charCodeDefinitions.isDigit(token.value.charCodeAt(valueOffset))) {
- // Integer is expected
- return 0;
- }
- }
-
- return offset + 1;
-}
-
-// ... <signed-integer>
-// ... ['+' | '-'] <signless-integer>
-function consumeB(token, offset_, getNextToken) {
- let sign = false;
- let offset = skipSC(token, offset_, getNextToken);
-
- token = getNextToken(offset);
-
- if (token === null) {
- return offset_;
- }
-
- if (token.type !== types.Number) {
- if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) {
- sign = true;
- offset = skipSC(getNextToken(++offset), offset, getNextToken);
- token = getNextToken(offset);
-
- if (token === null || token.type !== types.Number) {
- return 0;
- }
- } else {
- return offset_;
- }
- }
-
- if (!sign) {
- const code = token.value.charCodeAt(0);
- if (code !== PLUSSIGN && code !== HYPHENMINUS) {
- // Number sign is expected
- return 0;
- }
- }
-
- return checkInteger(token, sign ? 0 : 1, sign, offset);
-}
-
-// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb
-function anPlusB(token, getNextToken) {
- /* eslint-disable brace-style*/
- let offset = 0;
-
- if (!token) {
- return 0;
- }
-
- // <integer>
- if (token.type === types.Number) {
- return checkInteger(token, 0, ALLOW_SIGN, offset); // b
- }
-
- // -n
- // -n <signed-integer>
- // -n ['+' | '-'] <signless-integer>
- // -n- <signless-integer>
- // <dashndashdigit-ident>
- else if (token.type === types.Ident && token.value.charCodeAt(0) === HYPHENMINUS) {
- // expect 1st char is N
- if (!utils.cmpChar(token.value, 1, N)) {
- return 0;
- }
-
- switch (token.value.length) {
- // -n
- // -n <signed-integer>
- // -n ['+' | '-'] <signless-integer>
- case 2:
- return consumeB(getNextToken(++offset), offset, getNextToken);
-
- // -n- <signless-integer>
- case 3:
- if (token.value.charCodeAt(2) !== HYPHENMINUS) {
- return 0;
- }
-
- offset = skipSC(getNextToken(++offset), offset, getNextToken);
- token = getNextToken(offset);
-
- return checkInteger(token, 0, DISALLOW_SIGN, offset);
-
- // <dashndashdigit-ident>
- default:
- if (token.value.charCodeAt(2) !== HYPHENMINUS) {
- return 0;
- }
-
- return checkInteger(token, 3, DISALLOW_SIGN, offset);
- }
- }
-
- // '+'? n
- // '+'? n <signed-integer>
- // '+'? n ['+' | '-'] <signless-integer>
- // '+'? n- <signless-integer>
- // '+'? <ndashdigit-ident>
- else if (token.type === types.Ident || (isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === types.Ident)) {
- // just ignore a plus
- if (token.type !== types.Ident) {
- token = getNextToken(++offset);
- }
-
- if (token === null || !utils.cmpChar(token.value, 0, N)) {
- return 0;
- }
-
- switch (token.value.length) {
- // '+'? n
- // '+'? n <signed-integer>
- // '+'? n ['+' | '-'] <signless-integer>
- case 1:
- return consumeB(getNextToken(++offset), offset, getNextToken);
-
- // '+'? n- <signless-integer>
- case 2:
- if (token.value.charCodeAt(1) !== HYPHENMINUS) {
- return 0;
- }
-
- offset = skipSC(getNextToken(++offset), offset, getNextToken);
- token = getNextToken(offset);
-
- return checkInteger(token, 0, DISALLOW_SIGN, offset);
-
- // '+'? <ndashdigit-ident>
- default:
- if (token.value.charCodeAt(1) !== HYPHENMINUS) {
- return 0;
- }
-
- return checkInteger(token, 2, DISALLOW_SIGN, offset);
- }
- }
-
- // <ndashdigit-dimension>
- // <ndash-dimension> <signless-integer>
- // <n-dimension>
- // <n-dimension> <signed-integer>
- // <n-dimension> ['+' | '-'] <signless-integer>
- else if (token.type === types.Dimension) {
- let code = token.value.charCodeAt(0);
- let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0;
- let i = sign;
-
- for (; i < token.value.length; i++) {
- if (!charCodeDefinitions.isDigit(token.value.charCodeAt(i))) {
- break;
- }
- }
-
- if (i === sign) {
- // Integer is expected
- return 0;
- }
-
- if (!utils.cmpChar(token.value, i, N)) {
- return 0;
- }
-
- // <n-dimension>
- // <n-dimension> <signed-integer>
- // <n-dimension> ['+' | '-'] <signless-integer>
- if (i + 1 === token.value.length) {
- return consumeB(getNextToken(++offset), offset, getNextToken);
- } else {
- if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) {
- return 0;
- }
-
- // <ndash-dimension> <signless-integer>
- if (i + 2 === token.value.length) {
- offset = skipSC(getNextToken(++offset), offset, getNextToken);
- token = getNextToken(offset);
-
- return checkInteger(token, 0, DISALLOW_SIGN, offset);
- }
- // <ndashdigit-dimension>
- else {
- return checkInteger(token, i + 2, DISALLOW_SIGN, offset);
- }
- }
- }
-
- return 0;
-}
-
-module.exports = anPlusB;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/generic-const.cjs b/vanilla/node_modules/css-tree/cjs/lexer/generic-const.cjs
deleted file mode 100644
index 9b9f615..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/generic-const.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict';
-
-// https://drafts.csswg.org/css-cascade-5/
-const cssWideKeywords = [
- 'initial',
- 'inherit',
- 'unset',
- 'revert',
- 'revert-layer'
-];
-
-exports.cssWideKeywords = cssWideKeywords;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/generic-urange.cjs b/vanilla/node_modules/css-tree/cjs/lexer/generic-urange.cjs
deleted file mode 100644
index ce167bb..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/generic-urange.cjs
+++ /dev/null
@@ -1,149 +0,0 @@
-'use strict';
-
-const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
-const types = require('../tokenizer/types.cjs');
-const utils = require('../tokenizer/utils.cjs');
-
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
-const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)
-const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u)
-
-function isDelim(token, code) {
- return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
-}
-
-function startsWith(token, code) {
- return token.value.charCodeAt(0) === code;
-}
-
-function hexSequence(token, offset, allowDash) {
- let hexlen = 0;
-
- for (let pos = offset; pos < token.value.length; pos++) {
- const code = token.value.charCodeAt(pos);
-
- if (code === HYPHENMINUS && allowDash && hexlen !== 0) {
- hexSequence(token, offset + hexlen + 1, false);
- return 6; // dissallow following question marks
- }
-
- if (!charCodeDefinitions.isHexDigit(code)) {
- return 0; // not a hex digit
- }
-
- if (++hexlen > 6) {
- return 0; // too many hex digits
- } }
-
- return hexlen;
-}
-
-function withQuestionMarkSequence(consumed, length, getNextToken) {
- if (!consumed) {
- return 0; // nothing consumed
- }
-
- while (isDelim(getNextToken(length), QUESTIONMARK)) {
- if (++consumed > 6) {
- return 0; // too many question marks
- }
-
- length++;
- }
-
- return length;
-}
-
-// https://drafts.csswg.org/css-syntax/#urange
-// Informally, the <urange> production has three forms:
-// U+0001
-// Defines a range consisting of a single code point, in this case the code point "1".
-// U+0001-00ff
-// Defines a range of codepoints between the first and the second value, in this case
-// the range between "1" and "ff" (255 in decimal) inclusive.
-// U+00??
-// Defines a range of codepoints where the "?" characters range over all hex digits,
-// in this case defining the same as the value U+0000-00ff.
-// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit).
-//
-// <urange> =
-// u '+' <ident-token> '?'* |
-// u <dimension-token> '?'* |
-// u <number-token> '?'* |
-// u <number-token> <dimension-token> |
-// u <number-token> <number-token> |
-// u '+' '?'+
-function urange(token, getNextToken) {
- let length = 0;
-
- // should start with `u` or `U`
- if (token === null || token.type !== types.Ident || !utils.cmpChar(token.value, 0, U)) {
- return 0;
- }
-
- token = getNextToken(++length);
- if (token === null) {
- return 0;
- }
-
- // u '+' <ident-token> '?'*
- // u '+' '?'+
- if (isDelim(token, PLUSSIGN)) {
- token = getNextToken(++length);
- if (token === null) {
- return 0;
- }
-
- if (token.type === types.Ident) {
- // u '+' <ident-token> '?'*
- return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken);
- }
-
- if (isDelim(token, QUESTIONMARK)) {
- // u '+' '?'+
- return withQuestionMarkSequence(1, ++length, getNextToken);
- }
-
- // Hex digit or question mark is expected
- return 0;
- }
-
- // u <number-token> '?'*
- // u <number-token> <dimension-token>
- // u <number-token> <number-token>
- if (token.type === types.Number) {
- const consumedHexLength = hexSequence(token, 1, true);
- if (consumedHexLength === 0) {
- return 0;
- }
-
- token = getNextToken(++length);
- if (token === null) {
- // u <number-token> <eof>
- return length;
- }
-
- if (token.type === types.Dimension || token.type === types.Number) {
- // u <number-token> <dimension-token>
- // u <number-token> <number-token>
- if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) {
- return 0;
- }
-
- return length + 1;
- }
-
- // u <number-token> '?'*
- return withQuestionMarkSequence(consumedHexLength, length, getNextToken);
- }
-
- // u <dimension-token> '?'*
- if (token.type === types.Dimension) {
- return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken);
- }
-
- return 0;
-}
-
-module.exports = urange;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/generic.cjs b/vanilla/node_modules/css-tree/cjs/lexer/generic.cjs
deleted file mode 100644
index 8489911..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/generic.cjs
+++ /dev/null
@@ -1,589 +0,0 @@
-'use strict';
-
-const genericConst = require('./generic-const.cjs');
-const genericAnPlusB = require('./generic-an-plus-b.cjs');
-const genericUrange = require('./generic-urange.cjs');
-const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
-const types = require('../tokenizer/types.cjs');
-const utils = require('../tokenizer/utils.cjs');
-
-const calcFunctionNames = ['calc(', '-moz-calc(', '-webkit-calc('];
-const balancePair = new Map([
- [types.Function, types.RightParenthesis],
- [types.LeftParenthesis, types.RightParenthesis],
- [types.LeftSquareBracket, types.RightSquareBracket],
- [types.LeftCurlyBracket, types.RightCurlyBracket]
-]);
-
-// safe char code getter
-function charCodeAt(str, index) {
- return index < str.length ? str.charCodeAt(index) : 0;
-}
-
-function eqStr(actual, expected) {
- return utils.cmpStr(actual, 0, actual.length, expected);
-}
-
-function eqStrAny(actual, expected) {
- for (let i = 0; i < expected.length; i++) {
- if (eqStr(actual, expected[i])) {
- return true;
- }
- }
-
- return false;
-}
-
-// IE postfix hack, i.e. 123\0 or 123px\9
-function isPostfixIeHack(str, offset) {
- if (offset !== str.length - 2) {
- return false;
- }
-
- return (
- charCodeAt(str, offset) === 0x005C && // U+005C REVERSE SOLIDUS (\)
- charCodeDefinitions.isDigit(charCodeAt(str, offset + 1))
- );
-}
-
-function outOfRange(opts, value, numEnd) {
- if (opts && opts.type === 'Range') {
- const num = Number(
- numEnd !== undefined && numEnd !== value.length
- ? value.substr(0, numEnd)
- : value
- );
-
- if (isNaN(num)) {
- return true;
- }
-
- // FIXME: when opts.min is a string it's a dimension, skip a range validation
- // for now since it requires a type covertation which is not implmented yet
- if (opts.min !== null && num < opts.min && typeof opts.min !== 'string') {
- return true;
- }
-
- // FIXME: when opts.max is a string it's a dimension, skip a range validation
- // for now since it requires a type covertation which is not implmented yet
- if (opts.max !== null && num > opts.max && typeof opts.max !== 'string') {
- return true;
- }
- }
-
- return false;
-}
-
-function consumeFunction(token, getNextToken) {
- let balanceCloseType = 0;
- let balanceStash = [];
- let length = 0;
-
- // balanced token consuming
- scan:
- do {
- switch (token.type) {
- case types.RightCurlyBracket:
- case types.RightParenthesis:
- case types.RightSquareBracket:
- if (token.type !== balanceCloseType) {
- break scan;
- }
-
- balanceCloseType = balanceStash.pop();
-
- if (balanceStash.length === 0) {
- length++;
- break scan;
- }
-
- break;
-
- case types.Function:
- case types.LeftParenthesis:
- case types.LeftSquareBracket:
- case types.LeftCurlyBracket:
- balanceStash.push(balanceCloseType);
- balanceCloseType = balancePair.get(token.type);
- break;
- }
-
- length++;
- } while (token = getNextToken(length));
-
- return length;
-}
-
-// TODO: implement
-// can be used wherever <length>, <frequency>, <angle>, <time>, <percentage>, <number>, or <integer> values are allowed
-// https://drafts.csswg.org/css-values/#calc-notation
-function calc(next) {
- return function(token, getNextToken, opts) {
- if (token === null) {
- return 0;
- }
-
- if (token.type === types.Function && eqStrAny(token.value, calcFunctionNames)) {
- return consumeFunction(token, getNextToken);
- }
-
- return next(token, getNextToken, opts);
- };
-}
-
-function tokenType(expectedTokenType) {
- return function(token) {
- if (token === null || token.type !== expectedTokenType) {
- return 0;
- }
-
- return 1;
- };
-}
-
-// =========================
-// Complex types
-//
-
-// https://drafts.csswg.org/css-values-4/#custom-idents
-// 4.2. Author-defined Identifiers: the <custom-ident> type
-// Some properties accept arbitrary author-defined identifiers as a component value.
-// This generic data type is denoted by <custom-ident>, and represents any valid CSS identifier
-// that would not be misinterpreted as a pre-defined keyword in that property’s value definition.
-//
-// See also: https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident
-function customIdent(token) {
- if (token === null || token.type !== types.Ident) {
- return 0;
- }
-
- const name = token.value.toLowerCase();
-
- // The CSS-wide keywords are not valid <custom-ident>s
- if (eqStrAny(name, genericConst.cssWideKeywords)) {
- return 0;
- }
-
- // The default keyword is reserved and is also not a valid <custom-ident>
- if (eqStr(name, 'default')) {
- return 0;
- }
-
- // TODO: ignore property specific keywords (as described https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident)
- // Specifications using <custom-ident> must specify clearly what other keywords
- // are excluded from <custom-ident>, if any—for example by saying that any pre-defined keywords
- // in that property’s value definition are excluded. Excluded keywords are excluded
- // in all ASCII case permutations.
-
- return 1;
-}
-
-// https://drafts.csswg.org/css-values-4/#dashed-idents
-// The <dashed-ident> production is a <custom-ident>, with all the case-sensitivity that implies,
-// with the additional restriction that it must start with two dashes (U+002D HYPHEN-MINUS).
-function dashedIdent(token) {
- if (token === null || token.type !== types.Ident) {
- return 0;
- }
-
- // ... must start with two dashes (U+002D HYPHEN-MINUS)
- if (charCodeAt(token.value, 0) !== 0x002D || charCodeAt(token.value, 1) !== 0x002D) {
- return 0;
- }
-
- return 1;
-}
-
-// https://drafts.csswg.org/css-variables/#typedef-custom-property-name
-// A custom property is any property whose name starts with two dashes (U+002D HYPHEN-MINUS), like --foo.
-// The <custom-property-name> production corresponds to this: it’s defined as any <dashed-ident>
-// (a valid identifier that starts with two dashes), except -- itself, which is reserved for future use by CSS.
-function customPropertyName(token) {
- // ... it’s defined as any <dashed-ident>
- if (!dashedIdent(token)) {
- return 0;
- }
-
- // ... except -- itself, which is reserved for future use by CSS
- if (token.value === '--') {
- return 0;
- }
-
- return 1;
-}
-
-// https://drafts.csswg.org/css-color-4/#hex-notation
-// The syntax of a <hex-color> is a <hash-token> token whose value consists of 3, 4, 6, or 8 hexadecimal digits.
-// In other words, a hex color is written as a hash character, "#", followed by some number of digits 0-9 or
-// letters a-f (the case of the letters doesn’t matter - #00ff00 is identical to #00FF00).
-function hexColor(token) {
- if (token === null || token.type !== types.Hash) {
- return 0;
- }
-
- const length = token.value.length;
-
- // valid values (length): #rgb (4), #rgba (5), #rrggbb (7), #rrggbbaa (9)
- if (length !== 4 && length !== 5 && length !== 7 && length !== 9) {
- return 0;
- }
-
- for (let i = 1; i < length; i++) {
- if (!charCodeDefinitions.isHexDigit(charCodeAt(token.value, i))) {
- return 0;
- }
- }
-
- return 1;
-}
-
-function idSelector(token) {
- if (token === null || token.type !== types.Hash) {
- return 0;
- }
-
- if (!charCodeDefinitions.isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) {
- return 0;
- }
-
- return 1;
-}
-
-// https://drafts.csswg.org/css-syntax/#any-value
-// It represents the entirety of what a valid declaration can have as its value.
-function declarationValue(token, getNextToken) {
- if (!token) {
- return 0;
- }
-
- let balanceCloseType = 0;
- let balanceStash = [];
- let length = 0;
-
- // The <declaration-value> production matches any sequence of one or more tokens,
- // so long as the sequence does not contain ...
- scan:
- do {
- switch (token.type) {
- // ... <bad-string-token>, <bad-url-token>,
- case types.BadString:
- case types.BadUrl:
- break scan;
-
- // ... unmatched <)-token>, <]-token>, or <}-token>,
- case types.RightCurlyBracket:
- case types.RightParenthesis:
- case types.RightSquareBracket:
- if (token.type !== balanceCloseType) {
- break scan;
- }
-
- balanceCloseType = balanceStash.pop();
- break;
-
- // ... or top-level <semicolon-token> tokens
- case types.Semicolon:
- if (balanceCloseType === 0) {
- break scan;
- }
-
- break;
-
- // ... or <delim-token> tokens with a value of "!"
- case types.Delim:
- if (balanceCloseType === 0 && token.value === '!') {
- break scan;
- }
-
- break;
-
- case types.Function:
- case types.LeftParenthesis:
- case types.LeftSquareBracket:
- case types.LeftCurlyBracket:
- balanceStash.push(balanceCloseType);
- balanceCloseType = balancePair.get(token.type);
- break;
- }
-
- length++;
- } while (token = getNextToken(length));
-
- return length;
-}
-
-// https://drafts.csswg.org/css-syntax/#any-value
-// The <any-value> production is identical to <declaration-value>, but also
-// allows top-level <semicolon-token> tokens and <delim-token> tokens
-// with a value of "!". It represents the entirety of what valid CSS can be in any context.
-function anyValue(token, getNextToken) {
- if (!token) {
- return 0;
- }
-
- let balanceCloseType = 0;
- let balanceStash = [];
- let length = 0;
-
- // The <any-value> production matches any sequence of one or more tokens,
- // so long as the sequence ...
- scan:
- do {
- switch (token.type) {
- // ... does not contain <bad-string-token>, <bad-url-token>,
- case types.BadString:
- case types.BadUrl:
- break scan;
-
- // ... unmatched <)-token>, <]-token>, or <}-token>,
- case types.RightCurlyBracket:
- case types.RightParenthesis:
- case types.RightSquareBracket:
- if (token.type !== balanceCloseType) {
- break scan;
- }
-
- balanceCloseType = balanceStash.pop();
- break;
-
- case types.Function:
- case types.LeftParenthesis:
- case types.LeftSquareBracket:
- case types.LeftCurlyBracket:
- balanceStash.push(balanceCloseType);
- balanceCloseType = balancePair.get(token.type);
- break;
- }
-
- length++;
- } while (token = getNextToken(length));
-
- return length;
-}
-
-// =========================
-// Dimensions
-//
-
-function dimension(type) {
- if (type) {
- type = new Set(type);
- }
-
- return function(token, getNextToken, opts) {
- if (token === null || token.type !== types.Dimension) {
- return 0;
- }
-
- const numberEnd = utils.consumeNumber(token.value, 0);
-
- // check unit
- if (type !== null) {
- // check for IE postfix hack, i.e. 123px\0 or 123px\9
- const reverseSolidusOffset = token.value.indexOf('\\', numberEnd);
- const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset)
- ? token.value.substr(numberEnd)
- : token.value.substring(numberEnd, reverseSolidusOffset);
-
- if (type.has(unit.toLowerCase()) === false) {
- return 0;
- }
- }
-
- // check range if specified
- if (outOfRange(opts, token.value, numberEnd)) {
- return 0;
- }
-
- return 1;
- };
-}
-
-// =========================
-// Percentage
-//
-
-// §5.5. Percentages: the <percentage> type
-// https://drafts.csswg.org/css-values-4/#percentages
-function percentage(token, getNextToken, opts) {
- // ... corresponds to the <percentage-token> production
- if (token === null || token.type !== types.Percentage) {
- return 0;
- }
-
- // check range if specified
- if (outOfRange(opts, token.value, token.value.length - 1)) {
- return 0;
- }
-
- return 1;
-}
-
-// =========================
-// Numeric
-//
-
-// https://drafts.csswg.org/css-values-4/#numbers
-// The value <zero> represents a literal number with the value 0. Expressions that merely
-// evaluate to a <number> with the value 0 (for example, calc(0)) do not match <zero>;
-// only literal <number-token>s do.
-function zero(next) {
- if (typeof next !== 'function') {
- next = function() {
- return 0;
- };
- }
-
- return function(token, getNextToken, opts) {
- if (token !== null && token.type === types.Number) {
- if (Number(token.value) === 0) {
- return 1;
- }
- }
-
- return next(token, getNextToken, opts);
- };
-}
-
-// § 5.3. Real Numbers: the <number> type
-// https://drafts.csswg.org/css-values-4/#numbers
-// Number values are denoted by <number>, and represent real numbers, possibly with a fractional component.
-// ... It corresponds to the <number-token> production
-function number(token, getNextToken, opts) {
- if (token === null) {
- return 0;
- }
-
- const numberEnd = utils.consumeNumber(token.value, 0);
- const isNumber = numberEnd === token.value.length;
- if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) {
- return 0;
- }
-
- // check range if specified
- if (outOfRange(opts, token.value, numberEnd)) {
- return 0;
- }
-
- return 1;
-}
-
-// §5.2. Integers: the <integer> type
-// https://drafts.csswg.org/css-values-4/#integers
-function integer(token, getNextToken, opts) {
- // ... corresponds to a subset of the <number-token> production
- if (token === null || token.type !== types.Number) {
- return 0;
- }
-
- // The first digit of an integer may be immediately preceded by `-` or `+` to indicate the integer’s sign.
- let i = charCodeAt(token.value, 0) === 0x002B || // U+002B PLUS SIGN (+)
- charCodeAt(token.value, 0) === 0x002D ? 1 : 0; // U+002D HYPHEN-MINUS (-)
-
- // When written literally, an integer is one or more decimal digits 0 through 9 ...
- for (; i < token.value.length; i++) {
- if (!charCodeDefinitions.isDigit(charCodeAt(token.value, i))) {
- return 0;
- }
- }
-
- // check range if specified
- if (outOfRange(opts, token.value, i)) {
- return 0;
- }
-
- return 1;
-}
-
-// token types
-const tokenTypes = {
- 'ident-token': tokenType(types.Ident),
- 'function-token': tokenType(types.Function),
- 'at-keyword-token': tokenType(types.AtKeyword),
- 'hash-token': tokenType(types.Hash),
- 'string-token': tokenType(types.String),
- 'bad-string-token': tokenType(types.BadString),
- 'url-token': tokenType(types.Url),
- 'bad-url-token': tokenType(types.BadUrl),
- 'delim-token': tokenType(types.Delim),
- 'number-token': tokenType(types.Number),
- 'percentage-token': tokenType(types.Percentage),
- 'dimension-token': tokenType(types.Dimension),
- 'whitespace-token': tokenType(types.WhiteSpace),
- 'CDO-token': tokenType(types.CDO),
- 'CDC-token': tokenType(types.CDC),
- 'colon-token': tokenType(types.Colon),
- 'semicolon-token': tokenType(types.Semicolon),
- 'comma-token': tokenType(types.Comma),
- '[-token': tokenType(types.LeftSquareBracket),
- ']-token': tokenType(types.RightSquareBracket),
- '(-token': tokenType(types.LeftParenthesis),
- ')-token': tokenType(types.RightParenthesis),
- '{-token': tokenType(types.LeftCurlyBracket),
- '}-token': tokenType(types.RightCurlyBracket)
-};
-
-// token production types
-const productionTypes = {
- // token type aliases
- 'string': tokenType(types.String),
- 'ident': tokenType(types.Ident),
-
- // percentage
- 'percentage': calc(percentage),
-
- // numeric
- 'zero': zero(),
- 'number': calc(number),
- 'integer': calc(integer),
-
- // complex types
- 'custom-ident': customIdent,
- 'dashed-ident': dashedIdent,
- 'custom-property-name': customPropertyName,
- 'hex-color': hexColor,
- 'id-selector': idSelector, // element( <id-selector> )
- 'an-plus-b': genericAnPlusB,
- 'urange': genericUrange,
- 'declaration-value': declarationValue,
- 'any-value': anyValue
-};
-
-// dimensions types depend on units set
-function createDemensionTypes(units) {
- const {
- angle,
- decibel,
- frequency,
- flex,
- length,
- resolution,
- semitones,
- time
- } = units || {};
-
- return {
- 'dimension': calc(dimension(null)),
- 'angle': calc(dimension(angle)),
- 'decibel': calc(dimension(decibel)),
- 'frequency': calc(dimension(frequency)),
- 'flex': calc(dimension(flex)),
- 'length': calc(zero(dimension(length))),
- 'resolution': calc(dimension(resolution)),
- 'semitones': calc(dimension(semitones)),
- 'time': calc(dimension(time))
- };
-}
-
-function createGenericTypes(units) {
- return {
- ...tokenTypes,
- ...productionTypes,
- ...createDemensionTypes(units)
- };
-}
-
-exports.createDemensionTypes = createDemensionTypes;
-exports.createGenericTypes = createGenericTypes;
-exports.productionTypes = productionTypes;
-exports.tokenTypes = tokenTypes;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/index.cjs b/vanilla/node_modules/css-tree/cjs/lexer/index.cjs
deleted file mode 100644
index 2e3633e..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/index.cjs
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-
-const Lexer = require('./Lexer.cjs');
-
-
-
-exports.Lexer = Lexer.Lexer;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/match-graph.cjs b/vanilla/node_modules/css-tree/cjs/lexer/match-graph.cjs
deleted file mode 100644
index 9f9675e..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/match-graph.cjs
+++ /dev/null
@@ -1,530 +0,0 @@
-'use strict';
-
-const parse = require('../definition-syntax/parse.cjs');
-
-const MATCH = { type: 'Match' };
-const MISMATCH = { type: 'Mismatch' };
-const DISALLOW_EMPTY = { type: 'DisallowEmpty' };
-
-const LEFTPARENTHESIS = 40; // (
-const RIGHTPARENTHESIS = 41; // )
-
-function createCondition(match, thenBranch, elseBranch) {
- // reduce node count
- if (thenBranch === MATCH && elseBranch === MISMATCH) {
- return match;
- }
-
- if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) {
- return match;
- }
-
- if (match.type === 'If' && match.else === MISMATCH && thenBranch === MATCH) {
- thenBranch = match.then;
- match = match.match;
- }
-
- return {
- type: 'If',
- match,
- then: thenBranch,
- else: elseBranch
- };
-}
-
-function isFunctionType(name) {
- return (
- name.length > 2 &&
- name.charCodeAt(name.length - 2) === LEFTPARENTHESIS &&
- name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS
- );
-}
-
-function isEnumCapatible(term) {
- return (
- term.type === 'Keyword' ||
- term.type === 'AtKeyword' ||
- term.type === 'Function' ||
- term.type === 'Type' && isFunctionType(term.name)
- );
-}
-
-function groupNode(terms, combinator = ' ', explicit = false) {
- return {
- type: 'Group',
- terms,
- combinator,
- disallowEmpty: false,
- explicit
- };
-}
-
-function replaceTypeInGraph(node, replacements, visited = new Set()) {
- if (!visited.has(node)) {
- visited.add(node);
-
- switch (node.type) {
- case 'If':
- node.match = replaceTypeInGraph(node.match, replacements, visited);
- node.then = replaceTypeInGraph(node.then, replacements, visited);
- node.else = replaceTypeInGraph(node.else, replacements, visited);
- break;
-
- case 'Type':
- return replacements[node.name] || node;
- }
- }
-
- return node;
-}
-
-function buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) {
- switch (combinator) {
- case ' ': {
- // Juxtaposing components means that all of them must occur, in the given order.
- //
- // a b c
- // =
- // match a
- // then match b
- // then match c
- // then MATCH
- // else MISMATCH
- // else MISMATCH
- // else MISMATCH
- let result = MATCH;
-
- for (let i = terms.length - 1; i >= 0; i--) {
- const term = terms[i];
-
- result = createCondition(
- term,
- result,
- MISMATCH
- );
- }
- return result;
- }
-
- case '|': {
- // A bar (|) separates two or more alternatives: exactly one of them must occur.
- //
- // a | b | c
- // =
- // match a
- // then MATCH
- // else match b
- // then MATCH
- // else match c
- // then MATCH
- // else MISMATCH
-
- let result = MISMATCH;
- let map = null;
-
- for (let i = terms.length - 1; i >= 0; i--) {
- let term = terms[i];
-
- // reduce sequence of keywords into a Enum
- if (isEnumCapatible(term)) {
- if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) {
- map = Object.create(null);
- result = createCondition(
- {
- type: 'Enum',
- map
- },
- MATCH,
- result
- );
- }
-
- if (map !== null) {
- const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase();
- if (key in map === false) {
- map[key] = term;
- continue;
- }
- }
- }
-
- map = null;
-
- // create a new conditonal node
- result = createCondition(
- term,
- MATCH,
- result
- );
- }
- return result;
- }
-
- case '&&': {
- // A double ampersand (&&) separates two or more components,
- // all of which must occur, in any order.
-
- // Use MatchOnce for groups with a large number of terms,
- // since &&-groups produces at least N!-node trees
- if (terms.length > 5) {
- return {
- type: 'MatchOnce',
- terms,
- all: true
- };
- }
-
- // Use a combination tree for groups with small number of terms
- //
- // a && b && c
- // =
- // match a
- // then [b && c]
- // else match b
- // then [a && c]
- // else match c
- // then [a && b]
- // else MISMATCH
- //
- // a && b
- // =
- // match a
- // then match b
- // then MATCH
- // else MISMATCH
- // else match b
- // then match a
- // then MATCH
- // else MISMATCH
- // else MISMATCH
- let result = MISMATCH;
-
- for (let i = terms.length - 1; i >= 0; i--) {
- const term = terms[i];
- let thenClause;
-
- if (terms.length > 1) {
- thenClause = buildGroupMatchGraph(
- combinator,
- terms.filter(function(newGroupTerm) {
- return newGroupTerm !== term;
- }),
- false
- );
- } else {
- thenClause = MATCH;
- }
-
- result = createCondition(
- term,
- thenClause,
- result
- );
- }
- return result;
- }
-
- case '||': {
- // A double bar (||) separates two or more options:
- // one or more of them must occur, in any order.
-
- // Use MatchOnce for groups with a large number of terms,
- // since ||-groups produces at least N!-node trees
- if (terms.length > 5) {
- return {
- type: 'MatchOnce',
- terms,
- all: false
- };
- }
-
- // Use a combination tree for groups with small number of terms
- //
- // a || b || c
- // =
- // match a
- // then [b || c]
- // else match b
- // then [a || c]
- // else match c
- // then [a || b]
- // else MISMATCH
- //
- // a || b
- // =
- // match a
- // then match b
- // then MATCH
- // else MATCH
- // else match b
- // then match a
- // then MATCH
- // else MATCH
- // else MISMATCH
- let result = atLeastOneTermMatched ? MATCH : MISMATCH;
-
- for (let i = terms.length - 1; i >= 0; i--) {
- const term = terms[i];
- let thenClause;
-
- if (terms.length > 1) {
- thenClause = buildGroupMatchGraph(
- combinator,
- terms.filter(function(newGroupTerm) {
- return newGroupTerm !== term;
- }),
- true
- );
- } else {
- thenClause = MATCH;
- }
-
- result = createCondition(
- term,
- thenClause,
- result
- );
- }
- return result;
- }
- }
-}
-
-function buildMultiplierMatchGraph(node) {
- let result = MATCH;
- let matchTerm = buildMatchGraphInternal(node.term);
-
- if (node.max === 0) {
- // disable repeating of empty match to prevent infinite loop
- matchTerm = createCondition(
- matchTerm,
- DISALLOW_EMPTY,
- MISMATCH
- );
-
- // an occurrence count is not limited, make a cycle;
- // to collect more terms on each following matching mismatch
- result = createCondition(
- matchTerm,
- null, // will be a loop
- MISMATCH
- );
-
- result.then = createCondition(
- MATCH,
- MATCH,
- result // make a loop
- );
-
- if (node.comma) {
- result.then.else = createCondition(
- { type: 'Comma', syntax: node },
- result,
- MISMATCH
- );
- }
- } else {
- // create a match node chain for [min .. max] interval with optional matches
- for (let i = node.min || 1; i <= node.max; i++) {
- if (node.comma && result !== MATCH) {
- result = createCondition(
- { type: 'Comma', syntax: node },
- result,
- MISMATCH
- );
- }
-
- result = createCondition(
- matchTerm,
- createCondition(
- MATCH,
- MATCH,
- result
- ),
- MISMATCH
- );
- }
- }
-
- if (node.min === 0) {
- // allow zero match
- result = createCondition(
- MATCH,
- MATCH,
- result
- );
- } else {
- // create a match node chain to collect [0 ... min - 1] required matches
- for (let i = 0; i < node.min - 1; i++) {
- if (node.comma && result !== MATCH) {
- result = createCondition(
- { type: 'Comma', syntax: node },
- result,
- MISMATCH
- );
- }
-
- result = createCondition(
- matchTerm,
- result,
- MISMATCH
- );
- }
- }
-
- return result;
-}
-
-function buildMatchGraphInternal(node) {
- if (typeof node === 'function') {
- return {
- type: 'Generic',
- fn: node
- };
- }
-
- switch (node.type) {
- case 'Group': {
- let result = buildGroupMatchGraph(
- node.combinator,
- node.terms.map(buildMatchGraphInternal),
- false
- );
-
- if (node.disallowEmpty) {
- result = createCondition(
- result,
- DISALLOW_EMPTY,
- MISMATCH
- );
- }
-
- return result;
- }
-
- case 'Multiplier':
- return buildMultiplierMatchGraph(node);
-
- // https://drafts.csswg.org/css-values-5/#boolean
- case 'Boolean': {
- const term = buildMatchGraphInternal(node.term);
- // <boolean-expr[ <test> ]> = not <boolean-expr-group> | <boolean-expr-group> [ [ and <boolean-expr-group> ]* | [ or <boolean-expr-group> ]* ]
- const matchNode = buildMatchGraphInternal(groupNode([
- groupNode([
- { type: 'Keyword', name: 'not' },
- { type: 'Type', name: '!boolean-group' }
- ]),
- groupNode([
- { type: 'Type', name: '!boolean-group' },
- groupNode([
- { type: 'Multiplier', comma: false, min: 0, max: 0, term: groupNode([
- { type: 'Keyword', name: 'and' },
- { type: 'Type', name: '!boolean-group' }
- ]) },
- { type: 'Multiplier', comma: false, min: 0, max: 0, term: groupNode([
- { type: 'Keyword', name: 'or' },
- { type: 'Type', name: '!boolean-group' }
- ]) }
- ], '|')
- ])
- ], '|'));
- // <boolean-expr-group> = <test> | ( <boolean-expr[ <test> ]> ) | <general-enclosed>
- const booleanGroup = buildMatchGraphInternal(
- groupNode([
- { type: 'Type', name: '!term' },
- groupNode([
- { type: 'Token', value: '(' },
- { type: 'Type', name: '!self' },
- { type: 'Token', value: ')' }
- ]),
- { type: 'Type', name: 'general-enclosed' }
- ], '|')
- );
-
- replaceTypeInGraph(booleanGroup, { '!term': term, '!self': matchNode });
- replaceTypeInGraph(matchNode, { '!boolean-group': booleanGroup });
-
- return matchNode;
- }
-
- case 'Type':
- case 'Property':
- return {
- type: node.type,
- name: node.name,
- syntax: node
- };
-
- case 'Keyword':
- return {
- type: node.type,
- name: node.name.toLowerCase(),
- syntax: node
- };
-
- case 'AtKeyword':
- return {
- type: node.type,
- name: '@' + node.name.toLowerCase(),
- syntax: node
- };
-
- case 'Function':
- return {
- type: node.type,
- name: node.name.toLowerCase() + '(',
- syntax: node
- };
-
- case 'String':
- // convert a one char length String to a Token
- if (node.value.length === 3) {
- return {
- type: 'Token',
- value: node.value.charAt(1),
- syntax: node
- };
- }
-
- // otherwise use it as is
- return {
- type: node.type,
- value: node.value.substr(1, node.value.length - 2).replace(/\\'/g, '\''),
- syntax: node
- };
-
- case 'Token':
- return {
- type: node.type,
- value: node.value,
- syntax: node
- };
-
- case 'Comma':
- return {
- type: node.type,
- syntax: node
- };
-
- default:
- throw new Error('Unknown node type:', node.type);
- }
-}
-
-function buildMatchGraph(syntaxTree, ref) {
- if (typeof syntaxTree === 'string') {
- syntaxTree = parse.parse(syntaxTree);
- }
-
- return {
- type: 'MatchGraph',
- match: buildMatchGraphInternal(syntaxTree),
- syntax: ref || null,
- source: syntaxTree
- };
-}
-
-exports.DISALLOW_EMPTY = DISALLOW_EMPTY;
-exports.MATCH = MATCH;
-exports.MISMATCH = MISMATCH;
-exports.buildMatchGraph = buildMatchGraph;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/match.cjs b/vanilla/node_modules/css-tree/cjs/lexer/match.cjs
deleted file mode 100644
index 86f44ae..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/match.cjs
+++ /dev/null
@@ -1,632 +0,0 @@
-'use strict';
-
-const matchGraph = require('./match-graph.cjs');
-const types = require('../tokenizer/types.cjs');
-
-const { hasOwnProperty } = Object.prototype;
-const STUB = 0;
-const TOKEN = 1;
-const OPEN_SYNTAX = 2;
-const CLOSE_SYNTAX = 3;
-
-const EXIT_REASON_MATCH = 'Match';
-const EXIT_REASON_MISMATCH = 'Mismatch';
-const EXIT_REASON_ITERATION_LIMIT = 'Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)';
-
-const ITERATION_LIMIT = 15000;
-
-function reverseList(list) {
- let prev = null;
- let next = null;
- let item = list;
-
- while (item !== null) {
- next = item.prev;
- item.prev = prev;
- prev = item;
- item = next;
- }
-
- return prev;
-}
-
-function areStringsEqualCaseInsensitive(testStr, referenceStr) {
- if (testStr.length !== referenceStr.length) {
- return false;
- }
-
- for (let i = 0; i < testStr.length; i++) {
- const referenceCode = referenceStr.charCodeAt(i);
- let testCode = testStr.charCodeAt(i);
-
- // testCode.toLowerCase() for U+0041 LATIN CAPITAL LETTER A (A) .. U+005A LATIN CAPITAL LETTER Z (Z).
- if (testCode >= 0x0041 && testCode <= 0x005A) {
- testCode = testCode | 32;
- }
-
- if (testCode !== referenceCode) {
- return false;
- }
- }
-
- return true;
-}
-
-function isContextEdgeDelim(token) {
- if (token.type !== types.Delim) {
- return false;
- }
-
- // Fix matching for unicode-range: U+30??, U+FF00-FF9F
- // Probably we need to check out previous match instead
- return token.value !== '?';
-}
-
-function isCommaContextStart(token) {
- if (token === null) {
- return true;
- }
-
- return (
- token.type === types.Comma ||
- token.type === types.Function ||
- token.type === types.LeftParenthesis ||
- token.type === types.LeftSquareBracket ||
- token.type === types.LeftCurlyBracket ||
- isContextEdgeDelim(token)
- );
-}
-
-function isCommaContextEnd(token) {
- if (token === null) {
- return true;
- }
-
- return (
- token.type === types.RightParenthesis ||
- token.type === types.RightSquareBracket ||
- token.type === types.RightCurlyBracket ||
- (token.type === types.Delim && token.value === '/')
- );
-}
-
-function internalMatch(tokens, state, syntaxes) {
- function moveToNextToken() {
- do {
- tokenIndex++;
- token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;
- } while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment));
- }
-
- function getNextToken(offset) {
- const nextIndex = tokenIndex + offset;
-
- return nextIndex < tokens.length ? tokens[nextIndex] : null;
- }
-
- function stateSnapshotFromSyntax(nextState, prev) {
- return {
- nextState,
- matchStack,
- syntaxStack,
- thenStack,
- tokenIndex,
- prev
- };
- }
-
- function pushThenStack(nextState) {
- thenStack = {
- nextState,
- matchStack,
- syntaxStack,
- prev: thenStack
- };
- }
-
- function pushElseStack(nextState) {
- elseStack = stateSnapshotFromSyntax(nextState, elseStack);
- }
-
- function addTokenToMatch() {
- matchStack = {
- type: TOKEN,
- syntax: state.syntax,
- token,
- prev: matchStack
- };
-
- moveToNextToken();
- syntaxStash = null;
-
- if (tokenIndex > longestMatch) {
- longestMatch = tokenIndex;
- }
- }
-
- function openSyntax() {
- syntaxStack = {
- syntax: state.syntax,
- opts: state.syntax.opts || (syntaxStack !== null && syntaxStack.opts) || null,
- prev: syntaxStack
- };
-
- matchStack = {
- type: OPEN_SYNTAX,
- syntax: state.syntax,
- token: matchStack.token,
- prev: matchStack
- };
- }
-
- function closeSyntax() {
- if (matchStack.type === OPEN_SYNTAX) {
- matchStack = matchStack.prev;
- } else {
- matchStack = {
- type: CLOSE_SYNTAX,
- syntax: syntaxStack.syntax,
- token: matchStack.token,
- prev: matchStack
- };
- }
-
- syntaxStack = syntaxStack.prev;
- }
-
- let syntaxStack = null;
- let thenStack = null;
- let elseStack = null;
-
- // null – stashing allowed, nothing stashed
- // false – stashing disabled, nothing stashed
- // anithing else – fail stashable syntaxes, some syntax stashed
- let syntaxStash = null;
-
- let iterationCount = 0; // count iterations and prevent infinite loop
- let exitReason = null;
-
- let token = null;
- let tokenIndex = -1;
- let longestMatch = 0;
- let matchStack = {
- type: STUB,
- syntax: null,
- token: null,
- prev: null
- };
-
- moveToNextToken();
-
- while (exitReason === null && ++iterationCount < ITERATION_LIMIT) {
- // function mapList(list, fn) {
- // const result = [];
- // while (list) {
- // result.unshift(fn(list));
- // list = list.prev;
- // }
- // return result;
- // }
- // console.log('--\n',
- // '#' + iterationCount,
- // require('util').inspect({
- // match: mapList(matchStack, x => x.type === TOKEN ? x.token && x.token.value : x.syntax ? ({ [OPEN_SYNTAX]: '<', [CLOSE_SYNTAX]: '</' }[x.type] || x.type) + '!' + x.syntax.name : null),
- // token: token && token.value,
- // tokenIndex,
- // syntax: syntax.type + (syntax.id ? ' #' + syntax.id : '')
- // }, { depth: null })
- // );
- switch (state.type) {
- case 'Match':
- if (thenStack === null) {
- // turn to MISMATCH when some tokens left unmatched
- if (token !== null) {
- // doesn't mismatch if just one token left and it's an IE hack
- if (tokenIndex !== tokens.length - 1 || (token.value !== '\\0' && token.value !== '\\9')) {
- state = matchGraph.MISMATCH;
- break;
- }
- }
-
- // break the main loop, return a result - MATCH
- exitReason = EXIT_REASON_MATCH;
- break;
- }
-
- // go to next syntax (`then` branch)
- state = thenStack.nextState;
-
- // check match is not empty
- if (state === matchGraph.DISALLOW_EMPTY) {
- if (thenStack.matchStack === matchStack) {
- state = matchGraph.MISMATCH;
- break;
- } else {
- state = matchGraph.MATCH;
- }
- }
-
- // close syntax if needed
- while (thenStack.syntaxStack !== syntaxStack) {
- closeSyntax();
- }
-
- // pop stack
- thenStack = thenStack.prev;
- break;
-
- case 'Mismatch':
- // when some syntax is stashed
- if (syntaxStash !== null && syntaxStash !== false) {
- // there is no else branches or a branch reduce match stack
- if (elseStack === null || tokenIndex > elseStack.tokenIndex) {
- // restore state from the stash
- elseStack = syntaxStash;
- syntaxStash = false; // disable stashing
- }
- } else if (elseStack === null) {
- // no else branches -> break the main loop
- // return a result - MISMATCH
- exitReason = EXIT_REASON_MISMATCH;
- break;
- }
-
- // go to next syntax (`else` branch)
- state = elseStack.nextState;
-
- // restore all the rest stack states
- thenStack = elseStack.thenStack;
- syntaxStack = elseStack.syntaxStack;
- matchStack = elseStack.matchStack;
- tokenIndex = elseStack.tokenIndex;
- token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;
-
- // pop stack
- elseStack = elseStack.prev;
- break;
-
- case 'MatchGraph':
- state = state.match;
- break;
-
- case 'If':
- // IMPORTANT: else stack push must go first,
- // since it stores the state of thenStack before changes
- if (state.else !== matchGraph.MISMATCH) {
- pushElseStack(state.else);
- }
-
- if (state.then !== matchGraph.MATCH) {
- pushThenStack(state.then);
- }
-
- state = state.match;
- break;
-
- case 'MatchOnce':
- state = {
- type: 'MatchOnceBuffer',
- syntax: state,
- index: 0,
- mask: 0
- };
- break;
-
- case 'MatchOnceBuffer': {
- const terms = state.syntax.terms;
-
- if (state.index === terms.length) {
- // no matches at all or it's required all terms to be matched
- if (state.mask === 0 || state.syntax.all) {
- state = matchGraph.MISMATCH;
- break;
- }
-
- // a partial match is ok
- state = matchGraph.MATCH;
- break;
- }
-
- // all terms are matched
- if (state.mask === (1 << terms.length) - 1) {
- state = matchGraph.MATCH;
- break;
- }
-
- for (; state.index < terms.length; state.index++) {
- const matchFlag = 1 << state.index;
-
- if ((state.mask & matchFlag) === 0) {
- // IMPORTANT: else stack push must go first,
- // since it stores the state of thenStack before changes
- pushElseStack(state);
- pushThenStack({
- type: 'AddMatchOnce',
- syntax: state.syntax,
- mask: state.mask | matchFlag
- });
-
- // match
- state = terms[state.index++];
- break;
- }
- }
- break;
- }
-
- case 'AddMatchOnce':
- state = {
- type: 'MatchOnceBuffer',
- syntax: state.syntax,
- index: 0,
- mask: state.mask
- };
- break;
-
- case 'Enum':
- if (token !== null) {
- let name = token.value.toLowerCase();
-
- // drop \0 and \9 hack from keyword name
- if (name.indexOf('\\') !== -1) {
- name = name.replace(/\\[09].*$/, '');
- }
-
- if (hasOwnProperty.call(state.map, name)) {
- state = state.map[name];
- break;
- }
- }
-
- state = matchGraph.MISMATCH;
- break;
-
- case 'Generic': {
- const opts = syntaxStack !== null ? syntaxStack.opts : null;
- const lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts));
-
- if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) {
- while (tokenIndex < lastTokenIndex) {
- addTokenToMatch();
- }
-
- state = matchGraph.MATCH;
- } else {
- state = matchGraph.MISMATCH;
- }
-
- break;
- }
-
- case 'Type':
- case 'Property': {
- const syntaxDict = state.type === 'Type' ? 'types' : 'properties';
- const dictSyntax = hasOwnProperty.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null;
-
- if (!dictSyntax || !dictSyntax.match) {
- throw new Error(
- 'Bad syntax reference: ' +
- (state.type === 'Type'
- ? '<' + state.name + '>'
- : '<\'' + state.name + '\'>')
- );
- }
-
- // stash a syntax for types with low priority
- if (syntaxStash !== false && token !== null && state.type === 'Type') {
- const lowPriorityMatching =
- // https://drafts.csswg.org/css-values-4/#custom-idents
- // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production
- // can only claim the keyword if no other unfulfilled production can claim it.
- (state.name === 'custom-ident' && token.type === types.Ident) ||
-
- // https://drafts.csswg.org/css-values-4/#lengths
- // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height),
- // it must parse as a <number>
- (state.name === 'length' && token.value === '0');
-
- if (lowPriorityMatching) {
- if (syntaxStash === null) {
- syntaxStash = stateSnapshotFromSyntax(state, elseStack);
- }
-
- state = matchGraph.MISMATCH;
- break;
- }
- }
-
- openSyntax();
- state = dictSyntax.matchRef || dictSyntax.match;
- break;
- }
-
- case 'Keyword': {
- const name = state.name;
-
- if (token !== null) {
- let keywordName = token.value;
-
- // drop \0 and \9 hack from keyword name
- if (keywordName.indexOf('\\') !== -1) {
- keywordName = keywordName.replace(/\\[09].*$/, '');
- }
-
- if (areStringsEqualCaseInsensitive(keywordName, name)) {
- addTokenToMatch();
- state = matchGraph.MATCH;
- break;
- }
- }
-
- state = matchGraph.MISMATCH;
- break;
- }
-
- case 'AtKeyword':
- case 'Function':
- if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) {
- addTokenToMatch();
- state = matchGraph.MATCH;
- break;
- }
-
- state = matchGraph.MISMATCH;
- break;
-
- case 'Token':
- if (token !== null && token.value === state.value) {
- addTokenToMatch();
- state = matchGraph.MATCH;
- break;
- }
-
- state = matchGraph.MISMATCH;
- break;
-
- case 'Comma':
- if (token !== null && token.type === types.Comma) {
- if (isCommaContextStart(matchStack.token)) {
- state = matchGraph.MISMATCH;
- } else {
- addTokenToMatch();
- state = isCommaContextEnd(token) ? matchGraph.MISMATCH : matchGraph.MATCH;
- }
- } else {
- state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? matchGraph.MATCH : matchGraph.MISMATCH;
- }
-
- break;
-
- case 'String':
- let string = '';
- let lastTokenIndex = tokenIndex;
-
- for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) {
- string += tokens[lastTokenIndex].value;
- }
-
- if (areStringsEqualCaseInsensitive(string, state.value)) {
- while (tokenIndex < lastTokenIndex) {
- addTokenToMatch();
- }
-
- state = matchGraph.MATCH;
- } else {
- state = matchGraph.MISMATCH;
- }
-
- break;
-
- default:
- throw new Error('Unknown node type: ' + state.type);
- }
- }
-
- switch (exitReason) {
- case null:
- console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations');
- exitReason = EXIT_REASON_ITERATION_LIMIT;
- matchStack = null;
- break;
-
- case EXIT_REASON_MATCH:
- while (syntaxStack !== null) {
- closeSyntax();
- }
- break;
-
- default:
- matchStack = null;
- }
-
- return {
- tokens,
- reason: exitReason,
- iterations: iterationCount,
- match: matchStack,
- longestMatch
- };
-}
-
-function matchAsList(tokens, matchGraph, syntaxes) {
- const matchResult = internalMatch(tokens, matchGraph, syntaxes || {});
-
- if (matchResult.match !== null) {
- let item = reverseList(matchResult.match).prev;
-
- matchResult.match = [];
-
- while (item !== null) {
- switch (item.type) {
- case OPEN_SYNTAX:
- case CLOSE_SYNTAX:
- matchResult.match.push({
- type: item.type,
- syntax: item.syntax
- });
- break;
-
- default:
- matchResult.match.push({
- token: item.token.value,
- node: item.token.node
- });
- break;
- }
-
- item = item.prev;
- }
- }
-
- return matchResult;
-}
-
-function matchAsTree(tokens, matchGraph, syntaxes) {
- const matchResult = internalMatch(tokens, matchGraph, syntaxes || {});
-
- if (matchResult.match === null) {
- return matchResult;
- }
-
- let item = matchResult.match;
- let host = matchResult.match = {
- syntax: matchGraph.syntax || null,
- match: []
- };
- const hostStack = [host];
-
- // revert a list and start with 2nd item since 1st is a stub item
- item = reverseList(item).prev;
-
- // build a tree
- while (item !== null) {
- switch (item.type) {
- case OPEN_SYNTAX:
- host.match.push(host = {
- syntax: item.syntax,
- match: []
- });
- hostStack.push(host);
- break;
-
- case CLOSE_SYNTAX:
- hostStack.pop();
- host = hostStack[hostStack.length - 1];
- break;
-
- default:
- host.match.push({
- syntax: item.syntax || null,
- token: item.token.value,
- node: item.token.node
- });
- }
-
- item = item.prev;
- }
-
- return matchResult;
-}
-
-exports.matchAsList = matchAsList;
-exports.matchAsTree = matchAsTree;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs b/vanilla/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs
deleted file mode 100644
index 24647a5..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const index = require('../tokenizer/index.cjs');
-
-const astToTokens = {
- decorator(handlers) {
- const tokens = [];
- let curNode = null;
-
- return {
- ...handlers,
- node(node) {
- const tmp = curNode;
- curNode = node;
- handlers.node.call(this, node);
- curNode = tmp;
- },
- emit(value, type, auto) {
- tokens.push({
- type,
- value,
- node: auto ? null : curNode
- });
- },
- result() {
- return tokens;
- }
- };
- }
-};
-
-function stringToTokens(str) {
- const tokens = [];
-
- index.tokenize(str, (type, start, end) =>
- tokens.push({
- type,
- value: str.slice(start, end),
- node: null
- })
- );
-
- return tokens;
-}
-
-function prepareTokens(value, syntax) {
- if (typeof value === 'string') {
- return stringToTokens(value);
- }
-
- return syntax.generate(value, astToTokens);
-}
-
-module.exports = prepareTokens;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/search.cjs b/vanilla/node_modules/css-tree/cjs/lexer/search.cjs
deleted file mode 100644
index 2b1e12c..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/search.cjs
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-const List = require('../utils/List.cjs');
-
-function getFirstMatchNode(matchNode) {
- if ('node' in matchNode) {
- return matchNode.node;
- }
-
- return getFirstMatchNode(matchNode.match[0]);
-}
-
-function getLastMatchNode(matchNode) {
- if ('node' in matchNode) {
- return matchNode.node;
- }
-
- return getLastMatchNode(matchNode.match[matchNode.match.length - 1]);
-}
-
-function matchFragments(lexer, ast, match, type, name) {
- function findFragments(matchNode) {
- if (matchNode.syntax !== null &&
- matchNode.syntax.type === type &&
- matchNode.syntax.name === name) {
- const start = getFirstMatchNode(matchNode);
- const end = getLastMatchNode(matchNode);
-
- lexer.syntax.walk(ast, function(node, item, list) {
- if (node === start) {
- const nodes = new List.List();
-
- do {
- nodes.appendData(item.data);
-
- if (item.data === end) {
- break;
- }
-
- item = item.next;
- } while (item !== null);
-
- fragments.push({
- parent: list,
- nodes
- });
- }
- });
- }
-
- if (Array.isArray(matchNode.match)) {
- matchNode.match.forEach(findFragments);
- }
- }
-
- const fragments = [];
-
- if (match.matched !== null) {
- findFragments(match.matched);
- }
-
- return fragments;
-}
-
-exports.matchFragments = matchFragments;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/structure.cjs b/vanilla/node_modules/css-tree/cjs/lexer/structure.cjs
deleted file mode 100644
index 473b209..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/structure.cjs
+++ /dev/null
@@ -1,173 +0,0 @@
-'use strict';
-
-const List = require('../utils/List.cjs');
-
-const { hasOwnProperty } = Object.prototype;
-
-function isValidNumber(value) {
- // Number.isInteger(value) && value >= 0
- return (
- typeof value === 'number' &&
- isFinite(value) &&
- Math.floor(value) === value &&
- value >= 0
- );
-}
-
-function isValidLocation(loc) {
- return (
- Boolean(loc) &&
- isValidNumber(loc.offset) &&
- isValidNumber(loc.line) &&
- isValidNumber(loc.column)
- );
-}
-
-function createNodeStructureChecker(type, fields) {
- return function checkNode(node, warn) {
- if (!node || node.constructor !== Object) {
- return warn(node, 'Type of node should be an Object');
- }
-
- for (let key in node) {
- let valid = true;
-
- if (hasOwnProperty.call(node, key) === false) {
- continue;
- }
-
- if (key === 'type') {
- if (node.type !== type) {
- warn(node, 'Wrong node type `' + node.type + '`, expected `' + type + '`');
- }
- } else if (key === 'loc') {
- if (node.loc === null) {
- continue;
- } else if (node.loc && node.loc.constructor === Object) {
- if (typeof node.loc.source !== 'string') {
- key += '.source';
- } else if (!isValidLocation(node.loc.start)) {
- key += '.start';
- } else if (!isValidLocation(node.loc.end)) {
- key += '.end';
- } else {
- continue;
- }
- }
-
- valid = false;
- } else if (fields.hasOwnProperty(key)) {
- valid = false;
-
- for (let i = 0; !valid && i < fields[key].length; i++) {
- const fieldType = fields[key][i];
-
- switch (fieldType) {
- case String:
- valid = typeof node[key] === 'string';
- break;
-
- case Boolean:
- valid = typeof node[key] === 'boolean';
- break;
-
- case null:
- valid = node[key] === null;
- break;
-
- default:
- if (typeof fieldType === 'string') {
- valid = node[key] && node[key].type === fieldType;
- } else if (Array.isArray(fieldType)) {
- valid = node[key] instanceof List.List;
- }
- }
- }
- } else {
- warn(node, 'Unknown field `' + key + '` for ' + type + ' node type');
- }
-
- if (!valid) {
- warn(node, 'Bad value for `' + type + '.' + key + '`');
- }
- }
-
- for (const key in fields) {
- if (hasOwnProperty.call(fields, key) &&
- hasOwnProperty.call(node, key) === false) {
- warn(node, 'Field `' + type + '.' + key + '` is missed');
- }
- }
- };
-}
-
-function genTypesList(fieldTypes, path) {
- const docsTypes = [];
-
- for (let i = 0; i < fieldTypes.length; i++) {
- const fieldType = fieldTypes[i];
- if (fieldType === String || fieldType === Boolean) {
- docsTypes.push(fieldType.name.toLowerCase());
- } else if (fieldType === null) {
- docsTypes.push('null');
- } else if (typeof fieldType === 'string') {
- docsTypes.push(fieldType);
- } else if (Array.isArray(fieldType)) {
- docsTypes.push('List<' + (genTypesList(fieldType, path) || 'any') + '>'); // TODO: use type enum
- } else {
- throw new Error('Wrong value `' + fieldType + '` in `' + path + '` structure definition');
- }
- }
-
- return docsTypes.join(' | ');
-}
-
-function processStructure(name, nodeType) {
- const structure = nodeType.structure;
- const fields = {
- type: String,
- loc: true
- };
- const docs = {
- type: '"' + name + '"'
- };
-
- for (const key in structure) {
- if (hasOwnProperty.call(structure, key) === false) {
- continue;
- }
-
- const fieldTypes = fields[key] = Array.isArray(structure[key])
- ? structure[key].slice()
- : [structure[key]];
-
- docs[key] = genTypesList(fieldTypes, name + '.' + key);
- }
-
- return {
- docs,
- check: createNodeStructureChecker(name, fields)
- };
-}
-
-function getStructureFromConfig(config) {
- const structure = {};
-
- if (config.node) {
- for (const name in config.node) {
- if (hasOwnProperty.call(config.node, name)) {
- const nodeType = config.node[name];
-
- if (nodeType.structure) {
- structure[name] = processStructure(name, nodeType);
- } else {
- throw new Error('Missed `structure` field in `' + name + '` node type definition');
- }
- }
- }
- }
-
- return structure;
-}
-
-exports.getStructureFromConfig = getStructureFromConfig;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/trace.cjs b/vanilla/node_modules/css-tree/cjs/lexer/trace.cjs
deleted file mode 100644
index 13753f2..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/trace.cjs
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict';
-
-function getTrace(node) {
- function shouldPutToTrace(syntax) {
- if (syntax === null) {
- return false;
- }
-
- return (
- syntax.type === 'Type' ||
- syntax.type === 'Property' ||
- syntax.type === 'Keyword'
- );
- }
-
- function hasMatch(matchNode) {
- if (Array.isArray(matchNode.match)) {
- // use for-loop for better perfomance
- for (let i = 0; i < matchNode.match.length; i++) {
- if (hasMatch(matchNode.match[i])) {
- if (shouldPutToTrace(matchNode.syntax)) {
- result.unshift(matchNode.syntax);
- }
-
- return true;
- }
- }
- } else if (matchNode.node === node) {
- result = shouldPutToTrace(matchNode.syntax)
- ? [matchNode.syntax]
- : [];
-
- return true;
- }
-
- return false;
- }
-
- let result = null;
-
- if (this.matched !== null) {
- hasMatch(this.matched);
- }
-
- return result;
-}
-
-function isType(node, type) {
- return testNode(this, node, match => match.type === 'Type' && match.name === type);
-}
-
-function isProperty(node, property) {
- return testNode(this, node, match => match.type === 'Property' && match.name === property);
-}
-
-function isKeyword(node) {
- return testNode(this, node, match => match.type === 'Keyword');
-}
-
-function testNode(match, node, fn) {
- const trace = getTrace.call(match, node);
-
- if (trace === null) {
- return false;
- }
-
- return trace.some(fn);
-}
-
-exports.getTrace = getTrace;
-exports.isKeyword = isKeyword;
-exports.isProperty = isProperty;
-exports.isType = isType;
diff --git a/vanilla/node_modules/css-tree/cjs/lexer/units.cjs b/vanilla/node_modules/css-tree/cjs/lexer/units.cjs
deleted file mode 100644
index 13f4e97..0000000
--- a/vanilla/node_modules/css-tree/cjs/lexer/units.cjs
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const length = [
- // absolute length units https://www.w3.org/TR/css-values-3/#lengths
- 'cm', 'mm', 'q', 'in', 'pt', 'pc', 'px',
- // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths
- 'em', 'rem',
- 'ex', 'rex',
- 'cap', 'rcap',
- 'ch', 'rch',
- 'ic', 'ric',
- 'lh', 'rlh',
- // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths
- 'vw', 'svw', 'lvw', 'dvw',
- 'vh', 'svh', 'lvh', 'dvh',
- 'vi', 'svi', 'lvi', 'dvi',
- 'vb', 'svb', 'lvb', 'dvb',
- 'vmin', 'svmin', 'lvmin', 'dvmin',
- 'vmax', 'svmax', 'lvmax', 'dvmax',
- // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths
- 'cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax'
-];
-const angle = ['deg', 'grad', 'rad', 'turn']; // https://www.w3.org/TR/css-values-3/#angles
-const time = ['s', 'ms']; // https://www.w3.org/TR/css-values-3/#time
-const frequency = ['hz', 'khz']; // https://www.w3.org/TR/css-values-3/#frequency
-const resolution = ['dpi', 'dpcm', 'dppx', 'x']; // https://www.w3.org/TR/css-values-3/#resolution
-const flex = ['fr']; // https://drafts.csswg.org/css-grid/#fr-unit
-const decibel = ['db']; // https://www.w3.org/TR/css3-speech/#mixing-props-voice-volume
-const semitones = ['st']; // https://www.w3.org/TR/css3-speech/#voice-props-voice-pitch
-
-exports.angle = angle;
-exports.decibel = decibel;
-exports.flex = flex;
-exports.frequency = frequency;
-exports.length = length;
-exports.resolution = resolution;
-exports.semitones = semitones;
-exports.time = time;
diff --git a/vanilla/node_modules/css-tree/cjs/parser/SyntaxError.cjs b/vanilla/node_modules/css-tree/cjs/parser/SyntaxError.cjs
deleted file mode 100644
index 4de5ab3..0000000
--- a/vanilla/node_modules/css-tree/cjs/parser/SyntaxError.cjs
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict';
-
-const createCustomError = require('../utils/create-custom-error.cjs');
-
-const MAX_LINE_LENGTH = 100;
-const OFFSET_CORRECTION = 60;
-const TAB_REPLACEMENT = ' ';
-
-function sourceFragment({ source, line, column, baseLine, baseColumn }, extraLines) {
- function processLines(start, end) {
- return lines
- .slice(start, end)
- .map((line, idx) =>
- String(start + idx + 1).padStart(maxNumLength) + ' |' + line
- ).join('\n');
- }
-
- const prelines = '\n'.repeat(Math.max(baseLine - 1, 0));
- const precolumns = ' '.repeat(Math.max(baseColumn - 1, 0));
- const lines = (prelines + precolumns + source).split(/\r\n?|\n|\f/);
- const startLine = Math.max(1, line - extraLines) - 1;
- const endLine = Math.min(line + extraLines, lines.length + 1);
- const maxNumLength = Math.max(4, String(endLine).length) + 1;
- let cutLeft = 0;
-
- // column correction according to replaced tab before column
- column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length;
-
- if (column > MAX_LINE_LENGTH) {
- cutLeft = column - OFFSET_CORRECTION + 3;
- column = OFFSET_CORRECTION - 2;
- }
-
- for (let i = startLine; i <= endLine; i++) {
- if (i >= 0 && i < lines.length) {
- lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT);
- lines[i] =
- (cutLeft > 0 && lines[i].length > cutLeft ? '\u2026' : '') +
- lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) +
- (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\u2026' : '');
- }
- }
-
- return [
- processLines(startLine, line),
- new Array(column + maxNumLength + 2).join('-') + '^',
- processLines(line, endLine)
- ].filter(Boolean)
- .join('\n')
- .replace(/^(\s+\d+\s+\|\n)+/, '')
- .replace(/\n(\s+\d+\s+\|)+$/, '');
-}
-
-function SyntaxError(message, source, offset, line, column, baseLine = 1, baseColumn = 1) {
- const error = Object.assign(createCustomError.createCustomError('SyntaxError', message), {
- source,
- offset,
- line,
- column,
- sourceFragment(extraLines) {
- return sourceFragment({ source, line, column, baseLine, baseColumn }, isNaN(extraLines) ? 0 : extraLines);
- },
- get formattedMessage() {
- return (
- `Parse error: ${message}\n` +
- sourceFragment({ source, line, column, baseLine, baseColumn }, 2)
- );
- }
- });
-
- return error;
-}
-
-exports.SyntaxError = SyntaxError;
diff --git a/vanilla/node_modules/css-tree/cjs/parser/create.cjs b/vanilla/node_modules/css-tree/cjs/parser/create.cjs
deleted file mode 100644
index 0a59c4e..0000000
--- a/vanilla/node_modules/css-tree/cjs/parser/create.cjs
+++ /dev/null
@@ -1,340 +0,0 @@
-'use strict';
-
-const List = require('../utils/List.cjs');
-const SyntaxError = require('./SyntaxError.cjs');
-const index = require('../tokenizer/index.cjs');
-const sequence = require('./sequence.cjs');
-const OffsetToLocation = require('../tokenizer/OffsetToLocation.cjs');
-const TokenStream = require('../tokenizer/TokenStream.cjs');
-const utils = require('../tokenizer/utils.cjs');
-const types = require('../tokenizer/types.cjs');
-const names = require('../tokenizer/names.cjs');
-
-const NOOP = () => {};
-const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)
-const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)
-const SEMICOLON = 0x003B; // U+003B SEMICOLON (;)
-const LEFTCURLYBRACKET = 0x007B; // U+007B LEFT CURLY BRACKET ({)
-const NULL = 0;
-
-function createParseContext(name) {
- return function() {
- return this[name]();
- };
-}
-
-function fetchParseValues(dict) {
- const result = Object.create(null);
-
- for (const name of Object.keys(dict)) {
- const item = dict[name];
- const fn = item.parse || item;
-
- if (fn) {
- result[name] = fn;
- }
- }
-
- return result;
-}
-
-function processConfig(config) {
- const parseConfig = {
- context: Object.create(null),
- features: Object.assign(Object.create(null), config.features),
- scope: Object.assign(Object.create(null), config.scope),
- atrule: fetchParseValues(config.atrule),
- pseudo: fetchParseValues(config.pseudo),
- node: fetchParseValues(config.node)
- };
-
- for (const [name, context] of Object.entries(config.parseContext)) {
- switch (typeof context) {
- case 'function':
- parseConfig.context[name] = context;
- break;
-
- case 'string':
- parseConfig.context[name] = createParseContext(context);
- break;
- }
- }
-
- return {
- config: parseConfig,
- ...parseConfig,
- ...parseConfig.node
- };
-}
-
-function createParser(config) {
- let source = '';
- let filename = '<unknown>';
- let needPositions = false;
- let onParseError = NOOP;
- let onParseErrorThrow = false;
-
- const locationMap = new OffsetToLocation.OffsetToLocation();
- const parser = Object.assign(new TokenStream.TokenStream(), processConfig(config || {}), {
- parseAtrulePrelude: true,
- parseRulePrelude: true,
- parseValue: true,
- parseCustomProperty: false,
-
- readSequence: sequence.readSequence,
-
- consumeUntilBalanceEnd: () => 0,
- consumeUntilLeftCurlyBracket(code) {
- return code === LEFTCURLYBRACKET ? 1 : 0;
- },
- consumeUntilLeftCurlyBracketOrSemicolon(code) {
- return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0;
- },
- consumeUntilExclamationMarkOrSemicolon(code) {
- return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0;
- },
- consumeUntilSemicolonIncluded(code) {
- return code === SEMICOLON ? 2 : 0;
- },
-
- createList() {
- return new List.List();
- },
- createSingleNodeList(node) {
- return new List.List().appendData(node);
- },
- getFirstListNode(list) {
- return list && list.first;
- },
- getLastListNode(list) {
- return list && list.last;
- },
-
- parseWithFallback(consumer, fallback) {
- const startIndex = this.tokenIndex;
-
- try {
- return consumer.call(this);
- } catch (e) {
- if (onParseErrorThrow) {
- throw e;
- }
-
- this.skip(startIndex - this.tokenIndex);
- const fallbackNode = fallback.call(this);
-
- onParseErrorThrow = true;
- onParseError(e, fallbackNode);
- onParseErrorThrow = false;
-
- return fallbackNode;
- }
- },
-
- lookupNonWSType(offset) {
- let type;
-
- do {
- type = this.lookupType(offset++);
- if (type !== types.WhiteSpace && type !== types.Comment) {
- return type;
- }
- } while (type !== NULL);
-
- return NULL;
- },
-
- charCodeAt(offset) {
- return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0;
- },
- substring(offsetStart, offsetEnd) {
- return source.substring(offsetStart, offsetEnd);
- },
- substrToCursor(start) {
- return this.source.substring(start, this.tokenStart);
- },
-
- cmpChar(offset, charCode) {
- return utils.cmpChar(source, offset, charCode);
- },
- cmpStr(offsetStart, offsetEnd, str) {
- return utils.cmpStr(source, offsetStart, offsetEnd, str);
- },
-
- consume(tokenType) {
- const start = this.tokenStart;
-
- this.eat(tokenType);
-
- return this.substrToCursor(start);
- },
- consumeFunctionName() {
- const name = source.substring(this.tokenStart, this.tokenEnd - 1);
-
- this.eat(types.Function);
-
- return name;
- },
- consumeNumber(type) {
- const number = source.substring(this.tokenStart, utils.consumeNumber(source, this.tokenStart));
-
- this.eat(type);
-
- return number;
- },
-
- eat(tokenType) {
- if (this.tokenType !== tokenType) {
- const tokenName = names[tokenType].slice(0, -6).replace(/-/g, ' ').replace(/^./, m => m.toUpperCase());
- let message = `${/[[\](){}]/.test(tokenName) ? `"${tokenName}"` : tokenName} is expected`;
- let offset = this.tokenStart;
-
- // tweak message and offset
- switch (tokenType) {
- case types.Ident:
- // when identifier is expected but there is a function or url
- if (this.tokenType === types.Function || this.tokenType === types.Url) {
- offset = this.tokenEnd - 1;
- message = 'Identifier is expected but function found';
- } else {
- message = 'Identifier is expected';
- }
- break;
-
- case types.Hash:
- if (this.isDelim(NUMBERSIGN)) {
- this.next();
- offset++;
- message = 'Name is expected';
- }
- break;
-
- case types.Percentage:
- if (this.tokenType === types.Number) {
- offset = this.tokenEnd;
- message = 'Percent sign is expected';
- }
- break;
- }
-
- this.error(message, offset);
- }
-
- this.next();
- },
- eatIdent(name) {
- if (this.tokenType !== types.Ident || this.lookupValue(0, name) === false) {
- this.error(`Identifier "${name}" is expected`);
- }
-
- this.next();
- },
- eatDelim(code) {
- if (!this.isDelim(code)) {
- this.error(`Delim "${String.fromCharCode(code)}" is expected`);
- }
-
- this.next();
- },
-
- getLocation(start, end) {
- if (needPositions) {
- return locationMap.getLocationRange(
- start,
- end,
- filename
- );
- }
-
- return null;
- },
- getLocationFromList(list) {
- if (needPositions) {
- const head = this.getFirstListNode(list);
- const tail = this.getLastListNode(list);
- return locationMap.getLocationRange(
- head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart,
- tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart,
- filename
- );
- }
-
- return null;
- },
-
- error(message, offset) {
- const location = typeof offset !== 'undefined' && offset < source.length
- ? locationMap.getLocation(offset)
- : this.eof
- ? locationMap.getLocation(utils.findWhiteSpaceStart(source, source.length - 1))
- : locationMap.getLocation(this.tokenStart);
-
- throw new SyntaxError.SyntaxError(
- message || 'Unexpected input',
- source,
- location.offset,
- location.line,
- location.column,
- locationMap.startLine,
- locationMap.startColumn
- );
- }
- });
-
- const parse = function(source_, options) {
- source = source_;
- options = options || {};
-
- parser.setSource(source, index.tokenize);
- locationMap.setSource(
- source,
- options.offset,
- options.line,
- options.column
- );
-
- filename = options.filename || '<unknown>';
- needPositions = Boolean(options.positions);
- onParseError = typeof options.onParseError === 'function' ? options.onParseError : NOOP;
- onParseErrorThrow = false;
-
- parser.parseAtrulePrelude = 'parseAtrulePrelude' in options ? Boolean(options.parseAtrulePrelude) : true;
- parser.parseRulePrelude = 'parseRulePrelude' in options ? Boolean(options.parseRulePrelude) : true;
- parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true;
- parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false;
-
- const { context = 'default', onComment } = options;
-
- if (context in parser.context === false) {
- throw new Error('Unknown context `' + context + '`');
- }
-
- if (typeof onComment === 'function') {
- parser.forEachToken((type, start, end) => {
- if (type === types.Comment) {
- const loc = parser.getLocation(start, end);
- const value = utils.cmpStr(source, end - 2, end, '*/')
- ? source.slice(start + 2, end - 2)
- : source.slice(start + 2, end);
-
- onComment(value, loc);
- }
- });
- }
-
- const ast = parser.context[context].call(parser, options);
-
- if (!parser.eof) {
- parser.error();
- }
-
- return ast;
- };
-
- return Object.assign(parse, {
- SyntaxError: SyntaxError.SyntaxError,
- config: parser.config
- });
-}
-
-exports.createParser = createParser;
diff --git a/vanilla/node_modules/css-tree/cjs/parser/index.cjs b/vanilla/node_modules/css-tree/cjs/parser/index.cjs
deleted file mode 100644
index 9450cb0..0000000
--- a/vanilla/node_modules/css-tree/cjs/parser/index.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-const create = require('./create.cjs');
-const parser = require('../syntax/config/parser.cjs');
-
-const index = create.createParser(parser);
-
-module.exports = index;
diff --git a/vanilla/node_modules/css-tree/cjs/parser/parse-selector.cjs b/vanilla/node_modules/css-tree/cjs/parser/parse-selector.cjs
deleted file mode 100644
index 8ea8d0d..0000000
--- a/vanilla/node_modules/css-tree/cjs/parser/parse-selector.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-const create = require('./create.cjs');
-const parserSelector = require('../syntax/config/parser-selector.cjs');
-
-const parseSelector = create.createParser(parserSelector);
-
-module.exports = parseSelector;
diff --git a/vanilla/node_modules/css-tree/cjs/parser/sequence.cjs b/vanilla/node_modules/css-tree/cjs/parser/sequence.cjs
deleted file mode 100644
index b7d7d29..0000000
--- a/vanilla/node_modules/css-tree/cjs/parser/sequence.cjs
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-
-const types = require('../tokenizer/types.cjs');
-
-function readSequence(recognizer) {
- const children = this.createList();
- let space = false;
- const context = {
- recognizer
- };
-
- while (!this.eof) {
- switch (this.tokenType) {
- case types.Comment:
- this.next();
- continue;
-
- case types.WhiteSpace:
- space = true;
- this.next();
- continue;
- }
-
- let child = recognizer.getNode.call(this, context);
-
- if (child === undefined) {
- break;
- }
-
- if (space) {
- if (recognizer.onWhiteSpace) {
- recognizer.onWhiteSpace.call(this, child, children, context);
- }
- space = false;
- }
-
- children.push(child);
- }
-
- if (space && recognizer.onWhiteSpace) {
- recognizer.onWhiteSpace.call(this, null, children, context);
- }
-
- return children;
-}
-
-exports.readSequence = readSequence;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/container.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/container.cjs
deleted file mode 100644
index 7413f45..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/container.cjs
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-// https://drafts.csswg.org/css-contain-3/#container-rule
-// The keywords `none`, `and`, `not`, and `or` are excluded from the <custom-ident> above.
-const nonContainerNameKeywords = new Set(['none', 'and', 'not', 'or']);
-
-const container = {
- parse: {
- prelude() {
- const children = this.createList();
-
- if (this.tokenType === types.Ident) {
- const name = this.substring(this.tokenStart, this.tokenEnd);
-
- if (!nonContainerNameKeywords.has(name.toLowerCase())) {
- children.push(this.Identifier());
- }
- }
-
- children.push(this.Condition('container'));
-
- return children;
- },
- block(nested = false) {
- return this.Block(nested);
- }
- }
-};
-
-module.exports = container;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs
deleted file mode 100644
index fc7f64a..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict';
-
-const fontFace = {
- parse: {
- prelude: null,
- block() {
- return this.Block(true);
- }
- }
-};
-
-module.exports = fontFace;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/import.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/import.cjs
deleted file mode 100644
index 09fc11c..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/import.cjs
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-function parseWithFallback(parse, fallback) {
- return this.parseWithFallback(
- () => {
- try {
- return parse.call(this);
- } finally {
- this.skipSC();
- if (this.lookupNonWSType(0) !== types.RightParenthesis) {
- this.error();
- }
- }
- },
- fallback || (() => this.Raw(null, true))
- );
-}
-
-const parseFunctions = {
- layer() {
- this.skipSC();
-
- const children = this.createList();
- const node = parseWithFallback.call(this, this.Layer);
-
- if (node.type !== 'Raw' || node.value !== '') {
- children.push(node);
- }
-
- return children;
- },
- supports() {
- this.skipSC();
-
- const children = this.createList();
- const node = parseWithFallback.call(
- this,
- this.Declaration,
- () => parseWithFallback.call(this, () => this.Condition('supports'))
- );
-
- if (node.type !== 'Raw' || node.value !== '') {
- children.push(node);
- }
-
- return children;
- }
-};
-
-const importAtrule = {
- parse: {
- prelude() {
- const children = this.createList();
-
- switch (this.tokenType) {
- case types.String:
- children.push(this.String());
- break;
-
- case types.Url:
- case types.Function:
- children.push(this.Url());
- break;
-
- default:
- this.error('String or url() is expected');
- }
-
- this.skipSC();
-
- if (this.tokenType === types.Ident &&
- this.cmpStr(this.tokenStart, this.tokenEnd, 'layer')) {
- children.push(this.Identifier());
- } else if (
- this.tokenType === types.Function &&
- this.cmpStr(this.tokenStart, this.tokenEnd, 'layer(')
- ) {
- children.push(this.Function(null, parseFunctions));
- }
-
- this.skipSC();
-
- if (this.tokenType === types.Function &&
- this.cmpStr(this.tokenStart, this.tokenEnd, 'supports(')) {
- children.push(this.Function(null, parseFunctions));
- }
-
- if (this.lookupNonWSType(0) === types.Ident ||
- this.lookupNonWSType(0) === types.LeftParenthesis) {
- children.push(this.MediaQueryList());
- }
-
- return children;
- },
- block: null
- }
-};
-
-module.exports = importAtrule;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/index.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/index.cjs
deleted file mode 100644
index 143f21f..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/index.cjs
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-
-const container = require('./container.cjs');
-const fontFace = require('./font-face.cjs');
-const _import = require('./import.cjs');
-const layer = require('./layer.cjs');
-const media = require('./media.cjs');
-const nest = require('./nest.cjs');
-const page = require('./page.cjs');
-const scope = require('./scope.cjs');
-const startingStyle = require('./starting-style.cjs');
-const supports = require('./supports.cjs');
-
-const atrule = {
- container,
- 'font-face': fontFace,
- import: _import,
- layer,
- media,
- nest,
- page,
- scope,
- 'starting-style': startingStyle,
- supports
-};
-
-module.exports = atrule;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/layer.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/layer.cjs
deleted file mode 100644
index 5a9ac26..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/layer.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const layer = {
- parse: {
- prelude() {
- return this.createSingleNodeList(
- this.LayerList()
- );
- },
- block() {
- return this.Block(false);
- }
- }
-};
-
-module.exports = layer;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/media.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/media.cjs
deleted file mode 100644
index 5db3439..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/media.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const media = {
- parse: {
- prelude() {
- return this.createSingleNodeList(
- this.MediaQueryList()
- );
- },
- block(nested = false) {
- return this.Block(nested);
- }
- }
-};
-
-module.exports = media;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/nest.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/nest.cjs
deleted file mode 100644
index 5cd6672..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/nest.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const nest = {
- parse: {
- prelude() {
- return this.createSingleNodeList(
- this.SelectorList()
- );
- },
- block() {
- return this.Block(true);
- }
- }
-};
-
-module.exports = nest;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/page.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/page.cjs
deleted file mode 100644
index ffef0d1..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/page.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const page = {
- parse: {
- prelude() {
- return this.createSingleNodeList(
- this.SelectorList()
- );
- },
- block() {
- return this.Block(true);
- }
- }
-};
-
-module.exports = page;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/scope.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/scope.cjs
deleted file mode 100644
index e5ffba2..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/scope.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const scope = {
- parse: {
- prelude() {
- return this.createSingleNodeList(
- this.Scope()
- );
- },
- block(nested = false) {
- return this.Block(nested);
- }
- }
-};
-
-module.exports = scope;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs
deleted file mode 100644
index 8c9814d..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict';
-
-const startingStyle = {
- parse: {
- prelude: null,
- block(nested = false) {
- return this.Block(nested);
- }
- }
-};
-
-module.exports = startingStyle;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/atrule/supports.cjs b/vanilla/node_modules/css-tree/cjs/syntax/atrule/supports.cjs
deleted file mode 100644
index b03d864..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/atrule/supports.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict';
-
-const supports = {
- parse: {
- prelude() {
- return this.createSingleNodeList(
- this.Condition('supports')
- );
- },
- block(nested = false) {
- return this.Block(nested);
- }
- }
-};
-
-module.exports = supports;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/config/generator.cjs b/vanilla/node_modules/css-tree/cjs/syntax/config/generator.cjs
deleted file mode 100644
index c092458..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/config/generator.cjs
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-const indexGenerate = require('../node/index-generate.cjs');
-
-const config = {
- node: indexGenerate
-};
-
-module.exports = config;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/config/lexer.cjs b/vanilla/node_modules/css-tree/cjs/syntax/config/lexer.cjs
deleted file mode 100644
index 9889262..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/config/lexer.cjs
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-const genericConst = require('../../lexer/generic-const.cjs');
-const data = require('../../data.cjs');
-const index = require('../node/index.cjs');
-
-const lexerConfig = {
- generic: true,
- cssWideKeywords: genericConst.cssWideKeywords,
- ...data,
- node: index
-};
-
-module.exports = lexerConfig;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/config/mix.cjs b/vanilla/node_modules/css-tree/cjs/syntax/config/mix.cjs
deleted file mode 100644
index 5ecf1bb..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/config/mix.cjs
+++ /dev/null
@@ -1,127 +0,0 @@
-'use strict';
-
-function appendOrSet(a, b) {
- if (typeof b === 'string' && /^\s*\|/.test(b)) {
- return typeof a === 'string'
- ? a + b
- : b.replace(/^\s*\|\s*/, '');
- }
-
- return b || null;
-}
-
-function sliceProps(obj, props) {
- const result = Object.create(null);
-
- for (const [key, value] of Object.entries(obj)) {
- if (value) {
- result[key] = {};
- for (const prop of Object.keys(value)) {
- if (props.includes(prop)) {
- result[key][prop] = value[prop];
- }
- }
- }
- }
-
- return result;
-}
-
-function mix(dest, src) {
- const result = { ...dest };
-
- for (const [prop, value] of Object.entries(src)) {
- switch (prop) {
- case 'generic':
- result[prop] = Boolean(value);
- break;
-
- case 'cssWideKeywords':
- result[prop] = dest[prop]
- ? [...dest[prop], ...value]
- : value || [];
- break;
-
- case 'units':
- result[prop] = { ...dest[prop] };
- for (const [name, patch] of Object.entries(value)) {
- result[prop][name] = Array.isArray(patch) ? patch : [];
- }
- break;
-
- case 'atrules':
- result[prop] = { ...dest[prop] };
-
- for (const [name, atrule] of Object.entries(value)) {
- const exists = result[prop][name] || {};
- const current = result[prop][name] = {
- prelude: exists.prelude || null,
- descriptors: {
- ...exists.descriptors
- }
- };
-
- if (!atrule) {
- continue;
- }
-
- current.prelude = atrule.prelude
- ? appendOrSet(current.prelude, atrule.prelude)
- : current.prelude || null;
-
- for (const [descriptorName, descriptorValue] of Object.entries(atrule.descriptors || {})) {
- current.descriptors[descriptorName] = descriptorValue
- ? appendOrSet(current.descriptors[descriptorName], descriptorValue)
- : null;
- }
-
- if (!Object.keys(current.descriptors).length) {
- current.descriptors = null;
- }
- }
- break;
-
- case 'types':
- case 'properties':
- result[prop] = { ...dest[prop] };
- for (const [name, syntax] of Object.entries(value)) {
- result[prop][name] = appendOrSet(result[prop][name], syntax);
- }
- break;
-
- case 'scope':
- case 'features':
- result[prop] = { ...dest[prop] };
- for (const [name, props] of Object.entries(value)) {
- result[prop][name] = { ...result[prop][name], ...props };
- }
- break;
-
- case 'parseContext':
- result[prop] = {
- ...dest[prop],
- ...value
- };
- break;
-
- case 'atrule':
- case 'pseudo':
- result[prop] = {
- ...dest[prop],
- ...sliceProps(value, ['parse'])
- };
- break;
-
- case 'node':
- result[prop] = {
- ...dest[prop],
- ...sliceProps(value, ['name', 'structure', 'parse', 'generate', 'walkContext'])
- };
- break;
- }
- }
-
- return result;
-}
-
-module.exports = mix;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs
deleted file mode 100644
index 03b1683..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-const index = require('../pseudo/index.cjs');
-const indexParseSelector = require('../node/index-parse-selector.cjs');
-const selector = require('../scope/selector.cjs');
-
-const config = {
- parseContext: {
- default: 'SelectorList',
- selectorList: 'SelectorList',
- selector: 'Selector'
- },
- scope: { Selector: selector },
- atrule: {},
- pseudo: index,
- node: indexParseSelector
-};
-
-module.exports = config;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/config/parser.cjs b/vanilla/node_modules/css-tree/cjs/syntax/config/parser.cjs
deleted file mode 100644
index cd7114a..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/config/parser.cjs
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict';
-
-const index = require('../scope/index.cjs');
-const index$1 = require('../atrule/index.cjs');
-const index$2 = require('../pseudo/index.cjs');
-const indexParse = require('../node/index-parse.cjs');
-
-const config = {
- parseContext: {
- default: 'StyleSheet',
- stylesheet: 'StyleSheet',
- atrule: 'Atrule',
- atrulePrelude(options) {
- return this.AtrulePrelude(options.atrule ? String(options.atrule) : null);
- },
- mediaQueryList: 'MediaQueryList',
- mediaQuery: 'MediaQuery',
- condition(options) {
- return this.Condition(options.kind);
- },
- rule: 'Rule',
- selectorList: 'SelectorList',
- selector: 'Selector',
- block() {
- return this.Block(true);
- },
- declarationList: 'DeclarationList',
- declaration: 'Declaration',
- value: 'Value'
- },
- features: {
- supports: {
- selector() {
- return this.Selector();
- }
- },
- container: {
- style() {
- return this.Declaration();
- }
- }
- },
- scope: index,
- atrule: index$1,
- pseudo: index$2,
- node: indexParse
-};
-
-module.exports = config;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/config/walker.cjs b/vanilla/node_modules/css-tree/cjs/syntax/config/walker.cjs
deleted file mode 100644
index 95c8f7d..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/config/walker.cjs
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-const index = require('../node/index.cjs');
-
-const config = {
- node: index
-};
-
-module.exports = config;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/create.cjs b/vanilla/node_modules/css-tree/cjs/syntax/create.cjs
deleted file mode 100644
index 6ed51ea..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/create.cjs
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict';
-
-const index = require('../tokenizer/index.cjs');
-const create = require('../parser/create.cjs');
-const create$2 = require('../generator/create.cjs');
-const create$3 = require('../convertor/create.cjs');
-const create$1 = require('../walker/create.cjs');
-const Lexer = require('../lexer/Lexer.cjs');
-const mix = require('./config/mix.cjs');
-
-function createSyntax(config) {
- const parse = create.createParser(config);
- const walk = create$1.createWalker(config);
- const generate = create$2.createGenerator(config);
- const { fromPlainObject, toPlainObject } = create$3.createConvertor(walk);
-
- const syntax = {
- lexer: null,
- createLexer: config => new Lexer.Lexer(config, syntax, syntax.lexer.structure),
-
- tokenize: index.tokenize,
- parse,
- generate,
-
- walk,
- find: walk.find,
- findLast: walk.findLast,
- findAll: walk.findAll,
-
- fromPlainObject,
- toPlainObject,
-
- fork(extension) {
- const base = mix({}, config); // copy of config
-
- return createSyntax(
- typeof extension === 'function'
- ? extension(base) // TODO: remove Object.assign as second parameter
- : mix(base, extension)
- );
- }
- };
-
- syntax.lexer = new Lexer.Lexer({
- generic: config.generic,
- cssWideKeywords: config.cssWideKeywords,
- units: config.units,
- types: config.types,
- atrules: config.atrules,
- properties: config.properties,
- node: config.node
- }, syntax);
-
- return syntax;
-}
-const createSyntax$1 = config => createSyntax(mix({}, config));
-
-module.exports = createSyntax$1;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/function/expression.cjs b/vanilla/node_modules/css-tree/cjs/syntax/function/expression.cjs
deleted file mode 100644
index 5a8967c..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/function/expression.cjs
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-// legacy IE function
-// expression( <any-value> )
-function expressionFn() {
- return this.createSingleNodeList(
- this.Raw(null, false)
- );
-}
-
-module.exports = expressionFn;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/function/var.cjs b/vanilla/node_modules/css-tree/cjs/syntax/function/var.cjs
deleted file mode 100644
index f688eab..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/function/var.cjs
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-// var( <ident> , <value>? )
-function varFn() {
- const children = this.createList();
-
- this.skipSC();
-
- // NOTE: Don't check more than a first argument is an ident, rest checks are for lexer
- children.push(this.Identifier());
-
- this.skipSC();
-
- if (this.tokenType === types.Comma) {
- children.push(this.Operator());
-
- const startIndex = this.tokenIndex;
- const value = this.parseCustomProperty
- ? this.Value(null)
- : this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);
-
- if (value.type === 'Value' && value.children.isEmpty) {
- for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) {
- if (this.lookupType(offset) === types.WhiteSpace) {
- value.children.appendData({
- type: 'WhiteSpace',
- loc: null,
- value: ' '
- });
- break;
- }
- }
- }
-
- children.push(value);
- }
-
- return children;
-}
-
-module.exports = varFn;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/index.cjs b/vanilla/node_modules/css-tree/cjs/syntax/index.cjs
deleted file mode 100644
index 24de495..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/index.cjs
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-const create = require('./create.cjs');
-const lexer = require('./config/lexer.cjs');
-const parser = require('./config/parser.cjs');
-const walker = require('./config/walker.cjs');
-
-const syntax = create({
- ...lexer,
- ...parser,
- ...walker
-});
-
-module.exports = syntax;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs
deleted file mode 100644
index cd59927..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs
+++ /dev/null
@@ -1,293 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-const charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs');
-
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
-const N = 0x006E; // U+006E LATIN SMALL LETTER N (n)
-const DISALLOW_SIGN = true;
-const ALLOW_SIGN = false;
-
-function checkInteger(offset, disallowSign) {
- let pos = this.tokenStart + offset;
- const code = this.charCodeAt(pos);
-
- if (code === PLUSSIGN || code === HYPHENMINUS) {
- if (disallowSign) {
- this.error('Number sign is not allowed');
- }
- pos++;
- }
-
- for (; pos < this.tokenEnd; pos++) {
- if (!charCodeDefinitions.isDigit(this.charCodeAt(pos))) {
- this.error('Integer is expected', pos);
- }
- }
-}
-
-function checkTokenIsInteger(disallowSign) {
- return checkInteger.call(this, 0, disallowSign);
-}
-
-function expectCharCode(offset, code) {
- if (!this.cmpChar(this.tokenStart + offset, code)) {
- let msg = '';
-
- switch (code) {
- case N:
- msg = 'N is expected';
- break;
- case HYPHENMINUS:
- msg = 'HyphenMinus is expected';
- break;
- }
-
- this.error(msg, this.tokenStart + offset);
- }
-}
-
-// ... <signed-integer>
-// ... ['+' | '-'] <signless-integer>
-function consumeB() {
- let offset = 0;
- let sign = 0;
- let type = this.tokenType;
-
- while (type === types.WhiteSpace || type === types.Comment) {
- type = this.lookupType(++offset);
- }
-
- if (type !== types.Number) {
- if (this.isDelim(PLUSSIGN, offset) ||
- this.isDelim(HYPHENMINUS, offset)) {
- sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS;
-
- do {
- type = this.lookupType(++offset);
- } while (type === types.WhiteSpace || type === types.Comment);
-
- if (type !== types.Number) {
- this.skip(offset);
- checkTokenIsInteger.call(this, DISALLOW_SIGN);
- }
- } else {
- return null;
- }
- }
-
- if (offset > 0) {
- this.skip(offset);
- }
-
- if (sign === 0) {
- type = this.charCodeAt(this.tokenStart);
- if (type !== PLUSSIGN && type !== HYPHENMINUS) {
- this.error('Number sign is expected');
- }
- }
-
- checkTokenIsInteger.call(this, sign !== 0);
- return sign === HYPHENMINUS ? '-' + this.consume(types.Number) : this.consume(types.Number);
-}
-
-// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb
-const name = 'AnPlusB';
-const structure = {
- a: [String, null],
- b: [String, null]
-};
-
-function parse() {
- /* eslint-disable brace-style*/
- const start = this.tokenStart;
- let a = null;
- let b = null;
-
- // <integer>
- if (this.tokenType === types.Number) {
- checkTokenIsInteger.call(this, ALLOW_SIGN);
- b = this.consume(types.Number);
- }
-
- // -n
- // -n <signed-integer>
- // -n ['+' | '-'] <signless-integer>
- // -n- <signless-integer>
- // <dashndashdigit-ident>
- else if (this.tokenType === types.Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) {
- a = '-1';
-
- expectCharCode.call(this, 1, N);
-
- switch (this.tokenEnd - this.tokenStart) {
- // -n
- // -n <signed-integer>
- // -n ['+' | '-'] <signless-integer>
- case 2:
- this.next();
- b = consumeB.call(this);
- break;
-
- // -n- <signless-integer>
- case 3:
- expectCharCode.call(this, 2, HYPHENMINUS);
-
- this.next();
- this.skipSC();
-
- checkTokenIsInteger.call(this, DISALLOW_SIGN);
-
- b = '-' + this.consume(types.Number);
- break;
-
- // <dashndashdigit-ident>
- default:
- expectCharCode.call(this, 2, HYPHENMINUS);
- checkInteger.call(this, 3, DISALLOW_SIGN);
- this.next();
-
- b = this.substrToCursor(start + 2);
- }
- }
-
- // '+'? n
- // '+'? n <signed-integer>
- // '+'? n ['+' | '-'] <signless-integer>
- // '+'? n- <signless-integer>
- // '+'? <ndashdigit-ident>
- else if (this.tokenType === types.Ident || (this.isDelim(PLUSSIGN) && this.lookupType(1) === types.Ident)) {
- let sign = 0;
- a = '1';
-
- // just ignore a plus
- if (this.isDelim(PLUSSIGN)) {
- sign = 1;
- this.next();
- }
-
- expectCharCode.call(this, 0, N);
-
- switch (this.tokenEnd - this.tokenStart) {
- // '+'? n
- // '+'? n <signed-integer>
- // '+'? n ['+' | '-'] <signless-integer>
- case 1:
- this.next();
- b = consumeB.call(this);
- break;
-
- // '+'? n- <signless-integer>
- case 2:
- expectCharCode.call(this, 1, HYPHENMINUS);
-
- this.next();
- this.skipSC();
-
- checkTokenIsInteger.call(this, DISALLOW_SIGN);
-
- b = '-' + this.consume(types.Number);
- break;
-
- // '+'? <ndashdigit-ident>
- default:
- expectCharCode.call(this, 1, HYPHENMINUS);
- checkInteger.call(this, 2, DISALLOW_SIGN);
- this.next();
-
- b = this.substrToCursor(start + sign + 1);
- }
- }
-
- // <ndashdigit-dimension>
- // <ndash-dimension> <signless-integer>
- // <n-dimension>
- // <n-dimension> <signed-integer>
- // <n-dimension> ['+' | '-'] <signless-integer>
- else if (this.tokenType === types.Dimension) {
- const code = this.charCodeAt(this.tokenStart);
- const sign = code === PLUSSIGN || code === HYPHENMINUS;
- let i = this.tokenStart + sign;
-
- for (; i < this.tokenEnd; i++) {
- if (!charCodeDefinitions.isDigit(this.charCodeAt(i))) {
- break;
- }
- }
-
- if (i === this.tokenStart + sign) {
- this.error('Integer is expected', this.tokenStart + sign);
- }
-
- expectCharCode.call(this, i - this.tokenStart, N);
- a = this.substring(start, i);
-
- // <n-dimension>
- // <n-dimension> <signed-integer>
- // <n-dimension> ['+' | '-'] <signless-integer>
- if (i + 1 === this.tokenEnd) {
- this.next();
- b = consumeB.call(this);
- } else {
- expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS);
-
- // <ndash-dimension> <signless-integer>
- if (i + 2 === this.tokenEnd) {
- this.next();
- this.skipSC();
- checkTokenIsInteger.call(this, DISALLOW_SIGN);
- b = '-' + this.consume(types.Number);
- }
- // <ndashdigit-dimension>
- else {
- checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN);
- this.next();
- b = this.substrToCursor(i + 1);
- }
- }
- } else {
- this.error();
- }
-
- if (a !== null && a.charCodeAt(0) === PLUSSIGN) {
- a = a.substr(1);
- }
-
- if (b !== null && b.charCodeAt(0) === PLUSSIGN) {
- b = b.substr(1);
- }
-
- return {
- type: 'AnPlusB',
- loc: this.getLocation(start, this.tokenStart),
- a,
- b
- };
-}
-
-function generate(node) {
- if (node.a) {
- const a =
- node.a === '+1' && 'n' ||
- node.a === '1' && 'n' ||
- node.a === '-1' && '-n' ||
- node.a + 'n';
-
- if (node.b) {
- const b = node.b[0] === '-' || node.b[0] === '+'
- ? node.b
- : '+' + node.b;
- this.tokenize(a + b);
- } else {
- this.tokenize(a);
- }
- } else {
- this.tokenize(node.b);
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Atrule.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Atrule.cjs
deleted file mode 100644
index b2e0598..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Atrule.cjs
+++ /dev/null
@@ -1,103 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-function consumeRaw() {
- return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon, true);
-}
-
-function isDeclarationBlockAtrule() {
- for (let offset = 1, type; type = this.lookupType(offset); offset++) {
- if (type === types.RightCurlyBracket) {
- return true;
- }
-
- if (type === types.LeftCurlyBracket ||
- type === types.AtKeyword) {
- return false;
- }
- }
-
- return false;
-}
-
-
-const name = 'Atrule';
-const walkContext = 'atrule';
-const structure = {
- name: String,
- prelude: ['AtrulePrelude', 'Raw', null],
- block: ['Block', null]
-};
-
-function parse(isDeclaration = false) {
- const start = this.tokenStart;
- let name;
- let nameLowerCase;
- let prelude = null;
- let block = null;
-
- this.eat(types.AtKeyword);
-
- name = this.substrToCursor(start + 1);
- nameLowerCase = name.toLowerCase();
- this.skipSC();
-
- // parse prelude
- if (this.eof === false &&
- this.tokenType !== types.LeftCurlyBracket &&
- this.tokenType !== types.Semicolon) {
- if (this.parseAtrulePrelude) {
- prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name, isDeclaration), consumeRaw);
- } else {
- prelude = consumeRaw.call(this, this.tokenIndex);
- }
-
- this.skipSC();
- }
-
- switch (this.tokenType) {
- case types.Semicolon:
- this.next();
- break;
-
- case types.LeftCurlyBracket:
- if (hasOwnProperty.call(this.atrule, nameLowerCase) &&
- typeof this.atrule[nameLowerCase].block === 'function') {
- block = this.atrule[nameLowerCase].block.call(this, isDeclaration);
- } else {
- // TODO: should consume block content as Raw?
- block = this.Block(isDeclarationBlockAtrule.call(this));
- }
-
- break;
- }
-
- return {
- type: 'Atrule',
- loc: this.getLocation(start, this.tokenStart),
- name,
- prelude,
- block
- };
-}
-
-function generate(node) {
- this.token(types.AtKeyword, '@' + node.name);
-
- if (node.prelude !== null) {
- this.node(node.prelude);
- }
-
- if (node.block) {
- this.node(node.block);
- } else {
- this.token(types.Semicolon, ';');
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs
deleted file mode 100644
index 0db69b6..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'AtrulePrelude';
-const walkContext = 'atrulePrelude';
-const structure = {
- children: [[]]
-};
-
-function parse(name) {
- let children = null;
-
- if (name !== null) {
- name = name.toLowerCase();
- }
-
- this.skipSC();
-
- if (hasOwnProperty.call(this.atrule, name) &&
- typeof this.atrule[name].prelude === 'function') {
- // custom consumer
- children = this.atrule[name].prelude.call(this);
- } else {
- // default consumer
- children = this.readSequence(this.scope.AtrulePrelude);
- }
-
- this.skipSC();
-
- if (this.eof !== true &&
- this.tokenType !== types.LeftCurlyBracket &&
- this.tokenType !== types.Semicolon) {
- this.error('Semicolon or block is expected');
- }
-
- return {
- type: 'AtrulePrelude',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs
deleted file mode 100644
index 757d4eb..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs
+++ /dev/null
@@ -1,148 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($)
-const ASTERISK = 0x002A; // U+002A ASTERISK (*)
-const EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=)
-const CIRCUMFLEXACCENT = 0x005E; // U+005E (^)
-const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)
-const TILDE = 0x007E; // U+007E TILDE (~)
-
-function getAttributeName() {
- if (this.eof) {
- this.error('Unexpected end of input');
- }
-
- const start = this.tokenStart;
- let expectIdent = false;
-
- if (this.isDelim(ASTERISK)) {
- expectIdent = true;
- this.next();
- } else if (!this.isDelim(VERTICALLINE)) {
- this.eat(types.Ident);
- }
-
- if (this.isDelim(VERTICALLINE)) {
- if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) {
- this.next();
- this.eat(types.Ident);
- } else if (expectIdent) {
- this.error('Identifier is expected', this.tokenEnd);
- }
- } else if (expectIdent) {
- this.error('Vertical line is expected');
- }
-
- return {
- type: 'Identifier',
- loc: this.getLocation(start, this.tokenStart),
- name: this.substrToCursor(start)
- };
-}
-
-function getOperator() {
- const start = this.tokenStart;
- const code = this.charCodeAt(start);
-
- if (code !== EQUALSSIGN && // =
- code !== TILDE && // ~=
- code !== CIRCUMFLEXACCENT && // ^=
- code !== DOLLARSIGN && // $=
- code !== ASTERISK && // *=
- code !== VERTICALLINE // |=
- ) {
- this.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected');
- }
-
- this.next();
-
- if (code !== EQUALSSIGN) {
- if (!this.isDelim(EQUALSSIGN)) {
- this.error('Equal sign is expected');
- }
-
- this.next();
- }
-
- return this.substrToCursor(start);
-}
-
-// '[' <wq-name> ']'
-// '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'
-const name = 'AttributeSelector';
-const structure = {
- name: 'Identifier',
- matcher: [String, null],
- value: ['String', 'Identifier', null],
- flags: [String, null]
-};
-
-function parse() {
- const start = this.tokenStart;
- let name;
- let matcher = null;
- let value = null;
- let flags = null;
-
- this.eat(types.LeftSquareBracket);
- this.skipSC();
-
- name = getAttributeName.call(this);
- this.skipSC();
-
- if (this.tokenType !== types.RightSquareBracket) {
- // avoid case `[name i]`
- if (this.tokenType !== types.Ident) {
- matcher = getOperator.call(this);
-
- this.skipSC();
-
- value = this.tokenType === types.String
- ? this.String()
- : this.Identifier();
-
- this.skipSC();
- }
-
- // attribute flags
- if (this.tokenType === types.Ident) {
- flags = this.consume(types.Ident);
-
- this.skipSC();
- }
- }
-
- this.eat(types.RightSquareBracket);
-
- return {
- type: 'AttributeSelector',
- loc: this.getLocation(start, this.tokenStart),
- name,
- matcher,
- value,
- flags
- };
-}
-
-function generate(node) {
- this.token(types.Delim, '[');
- this.node(node.name);
-
- if (node.matcher !== null) {
- this.tokenize(node.matcher);
- this.node(node.value);
- }
-
- if (node.flags !== null) {
- this.token(types.Ident, node.flags);
- }
-
- this.token(types.Delim, ']');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Block.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Block.cjs
deleted file mode 100644
index 0e334f6..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Block.cjs
+++ /dev/null
@@ -1,96 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)
-
-function consumeRaw() {
- return this.Raw(null, true);
-}
-function consumeRule() {
- return this.parseWithFallback(this.Rule, consumeRaw);
-}
-function consumeRawDeclaration() {
- return this.Raw(this.consumeUntilSemicolonIncluded, true);
-}
-function consumeDeclaration() {
- if (this.tokenType === types.Semicolon) {
- return consumeRawDeclaration.call(this, this.tokenIndex);
- }
-
- const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration);
-
- if (this.tokenType === types.Semicolon) {
- this.next();
- }
-
- return node;
-}
-
-const name = 'Block';
-const walkContext = 'block';
-const structure = {
- children: [[
- 'Atrule',
- 'Rule',
- 'Declaration'
- ]]
-};
-
-function parse(isStyleBlock) {
- const consumer = isStyleBlock ? consumeDeclaration : consumeRule;
- const start = this.tokenStart;
- let children = this.createList();
-
- this.eat(types.LeftCurlyBracket);
-
- scan:
- while (!this.eof) {
- switch (this.tokenType) {
- case types.RightCurlyBracket:
- break scan;
-
- case types.WhiteSpace:
- case types.Comment:
- this.next();
- break;
-
- case types.AtKeyword:
- children.push(this.parseWithFallback(this.Atrule.bind(this, isStyleBlock), consumeRaw));
- break;
-
- default:
- if (isStyleBlock && this.isDelim(AMPERSAND)) {
- children.push(consumeRule.call(this));
- } else {
- children.push(consumer.call(this));
- }
- }
- }
-
- if (!this.eof) {
- this.eat(types.RightCurlyBracket);
- }
-
- return {
- type: 'Block',
- loc: this.getLocation(start, this.tokenStart),
- children
- };
-}
-
-function generate(node) {
- this.token(types.LeftCurlyBracket, '{');
- this.children(node, prev => {
- if (prev.type === 'Declaration') {
- this.token(types.Semicolon, ';');
- }
- });
- this.token(types.RightCurlyBracket, '}');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Brackets.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Brackets.cjs
deleted file mode 100644
index eb18131..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Brackets.cjs
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Brackets';
-const structure = {
- children: [[]]
-};
-
-function parse(readSequence, recognizer) {
- const start = this.tokenStart;
- let children = null;
-
- this.eat(types.LeftSquareBracket);
-
- children = readSequence.call(this, recognizer);
-
- if (!this.eof) {
- this.eat(types.RightSquareBracket);
- }
-
- return {
- type: 'Brackets',
- loc: this.getLocation(start, this.tokenStart),
- children
- };
-}
-
-function generate(node) {
- this.token(types.Delim, '[');
- this.children(node);
- this.token(types.Delim, ']');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/CDC.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/CDC.cjs
deleted file mode 100644
index aadf3ad..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/CDC.cjs
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'CDC';
-const structure = [];
-
-function parse() {
- const start = this.tokenStart;
-
- this.eat(types.CDC); // -->
-
- return {
- type: 'CDC',
- loc: this.getLocation(start, this.tokenStart)
- };
-}
-
-function generate() {
- this.token(types.CDC, '-->');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/CDO.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/CDO.cjs
deleted file mode 100644
index 0e98217..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/CDO.cjs
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'CDO';
-const structure = [];
-
-function parse() {
- const start = this.tokenStart;
-
- this.eat(types.CDO); // <!--
-
- return {
- type: 'CDO',
- loc: this.getLocation(start, this.tokenStart)
- };
-}
-
-function generate() {
- this.token(types.CDO, '<!--');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs
deleted file mode 100644
index ff3de5c..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const FULLSTOP = 0x002E; // U+002E FULL STOP (.)
-
-// '.' ident
-const name = 'ClassSelector';
-const structure = {
- name: String
-};
-
-function parse() {
- this.eatDelim(FULLSTOP);
-
- return {
- type: 'ClassSelector',
- loc: this.getLocation(this.tokenStart - 1, this.tokenEnd),
- name: this.consume(types.Ident)
- };
-}
-
-function generate(node) {
- this.token(types.Delim, '.');
- this.token(types.Ident, node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Combinator.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Combinator.cjs
deleted file mode 100644
index 1a24278..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Combinator.cjs
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)
-const TILDE = 0x007E; // U+007E TILDE (~)
-
-const name = 'Combinator';
-const structure = {
- name: String
-};
-
-// + | > | ~ | /deep/
-function parse() {
- const start = this.tokenStart;
- let name;
-
- switch (this.tokenType) {
- case types.WhiteSpace:
- name = ' ';
- break;
-
- case types.Delim:
- switch (this.charCodeAt(this.tokenStart)) {
- case GREATERTHANSIGN:
- case PLUSSIGN:
- case TILDE:
- this.next();
- break;
-
- case SOLIDUS:
- this.next();
- this.eatIdent('deep');
- this.eatDelim(SOLIDUS);
- break;
-
- default:
- this.error('Combinator is expected');
- }
-
- name = this.substrToCursor(start);
- break;
- }
-
- return {
- type: 'Combinator',
- loc: this.getLocation(start, this.tokenStart),
- name
- };
-}
-
-function generate(node) {
- this.tokenize(node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Comment.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Comment.cjs
deleted file mode 100644
index 083e950..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Comment.cjs
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const ASTERISK = 0x002A; // U+002A ASTERISK (*)
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-
-
-const name = 'Comment';
-const structure = {
- value: String
-};
-
-function parse() {
- const start = this.tokenStart;
- let end = this.tokenEnd;
-
- this.eat(types.Comment);
-
- if ((end - start + 2) >= 2 &&
- this.charCodeAt(end - 2) === ASTERISK &&
- this.charCodeAt(end - 1) === SOLIDUS) {
- end -= 2;
- }
-
- return {
- type: 'Comment',
- loc: this.getLocation(start, this.tokenStart),
- value: this.substring(start + 2, end)
- };
-}
-
-function generate(node) {
- this.token(types.Comment, '/*' + node.value + '*/');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Condition.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Condition.cjs
deleted file mode 100644
index af6a2ec..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Condition.cjs
+++ /dev/null
@@ -1,120 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const likelyFeatureToken = new Set([types.Colon, types.RightParenthesis, types.EOF]);
-
-const name = 'Condition';
-const structure = {
- kind: String,
- children: [[
- 'Identifier',
- 'Feature',
- 'FeatureFunction',
- 'FeatureRange',
- 'SupportsDeclaration'
- ]]
-};
-
-function featureOrRange(kind) {
- if (this.lookupTypeNonSC(1) === types.Ident &&
- likelyFeatureToken.has(this.lookupTypeNonSC(2))) {
- return this.Feature(kind);
- }
-
- return this.FeatureRange(kind);
-}
-
-const parentheses = {
- media: featureOrRange,
- container: featureOrRange,
- supports() {
- return this.SupportsDeclaration();
- }
-};
-
-function parse(kind = 'media') {
- const children = this.createList();
-
- scan: while (!this.eof) {
- switch (this.tokenType) {
- case types.Comment:
- case types.WhiteSpace:
- this.next();
- continue;
-
- case types.Ident:
- children.push(this.Identifier());
- break;
-
- case types.LeftParenthesis: {
- let term = this.parseWithFallback(
- () => parentheses[kind].call(this, kind),
- () => null
- );
-
- if (!term) {
- term = this.parseWithFallback(
- () => {
- this.eat(types.LeftParenthesis);
- const res = this.Condition(kind);
- this.eat(types.RightParenthesis);
- return res;
- },
- () => {
- return this.GeneralEnclosed(kind);
- }
- );
- }
-
- children.push(term);
- break;
- }
-
- case types.Function: {
- let term = this.parseWithFallback(
- () => this.FeatureFunction(kind),
- () => null
- );
-
- if (!term) {
- term = this.GeneralEnclosed(kind);
- }
-
- children.push(term);
- break;
- }
-
- default:
- break scan;
- }
- }
-
- if (children.isEmpty) {
- this.error('Condition is expected');
- }
-
- return {
- type: 'Condition',
- loc: this.getLocationFromList(children),
- kind,
- children
- };
-}
-
-function generate(node) {
- node.children.forEach(child => {
- if (child.type === 'Condition') {
- this.token(types.LeftParenthesis, '(');
- this.node(child);
- this.token(types.RightParenthesis, ')');
- } else {
- this.node(child);
- }
- });
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Declaration.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Declaration.cjs
deleted file mode 100644
index 7cf13b1..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Declaration.cjs
+++ /dev/null
@@ -1,166 +0,0 @@
-'use strict';
-
-const names = require('../../utils/names.cjs');
-const types = require('../../tokenizer/types.cjs');
-
-const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)
-const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)
-const DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($)
-const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)
-const ASTERISK = 0x002A; // U+002A ASTERISK (*)
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-
-function consumeValueRaw() {
- return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, true);
-}
-
-function consumeCustomPropertyRaw() {
- return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);
-}
-
-function consumeValue() {
- const startValueToken = this.tokenIndex;
- const value = this.Value();
-
- if (value.type !== 'Raw' &&
- this.eof === false &&
- this.tokenType !== types.Semicolon &&
- this.isDelim(EXCLAMATIONMARK) === false &&
- this.isBalanceEdge(startValueToken) === false) {
- this.error();
- }
-
- return value;
-}
-
-const name = 'Declaration';
-const walkContext = 'declaration';
-const structure = {
- important: [Boolean, String],
- property: String,
- value: ['Value', 'Raw']
-};
-
-function parse() {
- const start = this.tokenStart;
- const startToken = this.tokenIndex;
- const property = readProperty.call(this);
- const customProperty = names.isCustomProperty(property);
- const parseValue = customProperty ? this.parseCustomProperty : this.parseValue;
- const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw;
- let important = false;
- let value;
-
- this.skipSC();
- this.eat(types.Colon);
-
- const valueStart = this.tokenIndex;
-
- if (!customProperty) {
- this.skipSC();
- }
-
- if (parseValue) {
- value = this.parseWithFallback(consumeValue, consumeRaw);
- } else {
- value = consumeRaw.call(this, this.tokenIndex);
- }
-
- if (customProperty && value.type === 'Value' && value.children.isEmpty) {
- for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) {
- if (this.lookupType(offset) === types.WhiteSpace) {
- value.children.appendData({
- type: 'WhiteSpace',
- loc: null,
- value: ' '
- });
- break;
- }
- }
- }
-
- if (this.isDelim(EXCLAMATIONMARK)) {
- important = getImportant.call(this);
- this.skipSC();
- }
-
- // Do not include semicolon to range per spec
- // https://drafts.csswg.org/css-syntax/#declaration-diagram
-
- if (this.eof === false &&
- this.tokenType !== types.Semicolon &&
- this.isBalanceEdge(startToken) === false) {
- this.error();
- }
-
- return {
- type: 'Declaration',
- loc: this.getLocation(start, this.tokenStart),
- important,
- property,
- value
- };
-}
-
-function generate(node) {
- this.token(types.Ident, node.property);
- this.token(types.Colon, ':');
- this.node(node.value);
-
- if (node.important) {
- this.token(types.Delim, '!');
- this.token(types.Ident, node.important === true ? 'important' : node.important);
- }
-}
-
-function readProperty() {
- const start = this.tokenStart;
-
- // hacks
- if (this.tokenType === types.Delim) {
- switch (this.charCodeAt(this.tokenStart)) {
- case ASTERISK:
- case DOLLARSIGN:
- case PLUSSIGN:
- case NUMBERSIGN:
- case AMPERSAND:
- this.next();
- break;
-
- // TODO: not sure we should support this hack
- case SOLIDUS:
- this.next();
- if (this.isDelim(SOLIDUS)) {
- this.next();
- }
- break;
- }
- }
-
- if (this.tokenType === types.Hash) {
- this.eat(types.Hash);
- } else {
- this.eat(types.Ident);
- }
-
- return this.substrToCursor(start);
-}
-
-// ! ws* important
-function getImportant() {
- this.eat(types.Delim);
- this.skipSC();
-
- const important = this.consume(types.Ident);
-
- // store original value in case it differ from `important`
- // for better original source restoring and hacks like `!ie` support
- return important === 'important' ? true : important;
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs
deleted file mode 100644
index d3cffad..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs
+++ /dev/null
@@ -1,62 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)
-
-function consumeRaw() {
- return this.Raw(this.consumeUntilSemicolonIncluded, true);
-}
-
-const name = 'DeclarationList';
-const structure = {
- children: [[
- 'Declaration',
- 'Atrule',
- 'Rule'
- ]]
-};
-
-function parse() {
- const children = this.createList();
-
- while (!this.eof) {
- switch (this.tokenType) {
- case types.WhiteSpace:
- case types.Comment:
- case types.Semicolon:
- this.next();
- break;
-
- case types.AtKeyword:
- children.push(this.parseWithFallback(this.Atrule.bind(this, true), consumeRaw));
- break;
-
- default:
- if (this.isDelim(AMPERSAND)) {
- children.push(this.parseWithFallback(this.Rule, consumeRaw));
- } else {
- children.push(this.parseWithFallback(this.Declaration, consumeRaw));
- }
- }
- }
-
- return {
- type: 'DeclarationList',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node, prev => {
- if (prev.type === 'Declaration') {
- this.token(types.Semicolon, ';');
- }
- });
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Dimension.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Dimension.cjs
deleted file mode 100644
index 227184c..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Dimension.cjs
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Dimension';
-const structure = {
- value: String,
- unit: String
-};
-
-function parse() {
- const start = this.tokenStart;
- const value = this.consumeNumber(types.Dimension);
-
- return {
- type: 'Dimension',
- loc: this.getLocation(start, this.tokenStart),
- value,
- unit: this.substring(start + value.length, this.tokenStart)
- };
-}
-
-function generate(node) {
- this.token(types.Dimension, node.value + node.unit);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Feature.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Feature.cjs
deleted file mode 100644
index a55019b..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Feature.cjs
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-
-const name = 'Feature';
-const structure = {
- kind: String,
- name: String,
- value: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function', null]
-};
-
-function parse(kind) {
- const start = this.tokenStart;
- let name;
- let value = null;
-
- this.eat(types.LeftParenthesis);
- this.skipSC();
-
- name = this.consume(types.Ident);
- this.skipSC();
-
- if (this.tokenType !== types.RightParenthesis) {
- this.eat(types.Colon);
- this.skipSC();
-
- switch (this.tokenType) {
- case types.Number:
- if (this.lookupNonWSType(1) === types.Delim) {
- value = this.Ratio();
- } else {
- value = this.Number();
- }
-
- break;
-
- case types.Dimension:
- value = this.Dimension();
- break;
-
- case types.Ident:
- value = this.Identifier();
- break;
-
- case types.Function:
- value = this.parseWithFallback(
- () => {
- const res = this.Function(this.readSequence, this.scope.Value);
-
- this.skipSC();
-
- if (this.isDelim(SOLIDUS)) {
- this.error();
- }
-
- return res;
- },
- () => {
- return this.Ratio();
- }
- );
- break;
-
- default:
- this.error('Number, dimension, ratio or identifier is expected');
- }
-
- this.skipSC();
- }
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'Feature',
- loc: this.getLocation(start, this.tokenStart),
- kind,
- name,
- value
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.token(types.Ident, node.name);
-
- if (node.value !== null) {
- this.token(types.Colon, ':');
- this.node(node.value);
- }
-
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs
deleted file mode 100644
index 1986947..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'FeatureFunction';
-const structure = {
- kind: String,
- feature: String,
- value: ['Declaration', 'Selector']
-};
-
-function getFeatureParser(kind, name) {
- const featuresOfKind = this.features[kind] || {};
- const parser = featuresOfKind[name];
-
- if (typeof parser !== 'function') {
- this.error(`Unknown feature ${name}()`);
- }
-
- return parser;
-}
-
-function parse(kind = 'unknown') {
- const start = this.tokenStart;
- const functionName = this.consumeFunctionName();
- const valueParser = getFeatureParser.call(this, kind, functionName.toLowerCase());
-
- this.skipSC();
-
- const value = this.parseWithFallback(
- () => {
- const startValueToken = this.tokenIndex;
- const value = valueParser.call(this);
-
- if (this.eof === false &&
- this.isBalanceEdge(startValueToken) === false) {
- this.error();
- }
-
- return value;
- },
- () => this.Raw(null, false)
- );
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'FeatureFunction',
- loc: this.getLocation(start, this.tokenStart),
- kind,
- feature: functionName,
- value
- };
-}
-
-function generate(node) {
- this.token(types.Function, node.feature + '(');
- this.node(node.value);
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs
deleted file mode 100644
index f6730c2..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs
+++ /dev/null
@@ -1,133 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-const LESSTHANSIGN = 0x003C; // U+003C LESS-THAN SIGN (<)
-const EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=)
-const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)
-
-const name = 'FeatureRange';
-const structure = {
- kind: String,
- left: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function'],
- leftComparison: String,
- middle: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function'],
- rightComparison: [String, null],
- right: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function', null]
-};
-
-function readTerm() {
- this.skipSC();
-
- switch (this.tokenType) {
- case types.Number:
- if (this.isDelim(SOLIDUS, this.lookupOffsetNonSC(1))) {
- return this.Ratio();
- } else {
- return this.Number();
- }
-
- case types.Dimension:
- return this.Dimension();
-
- case types.Ident:
- return this.Identifier();
-
- case types.Function:
- return this.parseWithFallback(
- () => {
- const res = this.Function(this.readSequence, this.scope.Value);
-
- this.skipSC();
-
- if (this.isDelim(SOLIDUS)) {
- this.error();
- }
-
- return res;
- },
- () => {
- return this.Ratio();
- }
- );
-
- default:
- this.error('Number, dimension, ratio or identifier is expected');
- }
-}
-
-function readComparison(expectColon) {
- this.skipSC();
-
- if (this.isDelim(LESSTHANSIGN) ||
- this.isDelim(GREATERTHANSIGN)) {
- const value = this.source[this.tokenStart];
-
- this.next();
-
- if (this.isDelim(EQUALSSIGN)) {
- this.next();
- return value + '=';
- }
-
- return value;
- }
-
- if (this.isDelim(EQUALSSIGN)) {
- return '=';
- }
-
- this.error(`Expected ${expectColon ? '":", ' : ''}"<", ">", "=" or ")"`);
-}
-
-function parse(kind = 'unknown') {
- const start = this.tokenStart;
-
- this.skipSC();
- this.eat(types.LeftParenthesis);
-
- const left = readTerm.call(this);
- const leftComparison = readComparison.call(this, left.type === 'Identifier');
- const middle = readTerm.call(this);
- let rightComparison = null;
- let right = null;
-
- if (this.lookupNonWSType(0) !== types.RightParenthesis) {
- rightComparison = readComparison.call(this);
- right = readTerm.call(this);
- }
-
- this.skipSC();
- this.eat(types.RightParenthesis);
-
- return {
- type: 'FeatureRange',
- loc: this.getLocation(start, this.tokenStart),
- kind,
- left,
- leftComparison,
- middle,
- rightComparison,
- right
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.node(node.left);
- this.tokenize(node.leftComparison);
- this.node(node.middle);
-
- if (node.right) {
- this.tokenize(node.rightComparison);
- this.node(node.right);
- }
-
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Function.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Function.cjs
deleted file mode 100644
index b5e3b57..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Function.cjs
+++ /dev/null
@@ -1,45 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Function';
-const walkContext = 'function';
-const structure = {
- name: String,
- children: [[]]
-};
-
-// <function-token> <sequence> )
-function parse(readSequence, recognizer) {
- const start = this.tokenStart;
- const name = this.consumeFunctionName();
- const nameLowerCase = name.toLowerCase();
- let children;
-
- children = recognizer.hasOwnProperty(nameLowerCase)
- ? recognizer[nameLowerCase].call(this, recognizer)
- : readSequence.call(this, recognizer);
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'Function',
- loc: this.getLocation(start, this.tokenStart),
- name,
- children
- };
-}
-
-function generate(node) {
- this.token(types.Function, node.name + '(');
- this.children(node);
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs
deleted file mode 100644
index 2a442d0..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'GeneralEnclosed';
-const structure = {
- kind: String,
- function: [String, null],
- children: [[]]
-};
-
-// <function-token> <any-value> )
-// ( <any-value> )
-function parse(kind) {
- const start = this.tokenStart;
- let functionName = null;
-
- if (this.tokenType === types.Function) {
- functionName = this.consumeFunctionName();
- } else {
- this.eat(types.LeftParenthesis);
- }
-
- const children = this.parseWithFallback(
- () => {
- const startValueToken = this.tokenIndex;
- const children = this.readSequence(this.scope.Value);
-
- if (this.eof === false &&
- this.isBalanceEdge(startValueToken) === false) {
- this.error();
- }
-
- return children;
- },
- () => this.createSingleNodeList(
- this.Raw(null, false)
- )
- );
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'GeneralEnclosed',
- loc: this.getLocation(start, this.tokenStart),
- kind,
- function: functionName,
- children
- };
-}
-
-function generate(node) {
- if (node.function) {
- this.token(types.Function, node.function + '(');
- } else {
- this.token(types.LeftParenthesis, '(');
- }
-
- this.children(node);
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Hash.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Hash.cjs
deleted file mode 100644
index 8b5f375..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Hash.cjs
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-// '#' ident
-const xxx = 'XXX';
-const name = 'Hash';
-const structure = {
- value: String
-};
-function parse() {
- const start = this.tokenStart;
-
- this.eat(types.Hash);
-
- return {
- type: 'Hash',
- loc: this.getLocation(start, this.tokenStart),
- value: this.substrToCursor(start + 1)
- };
-}
-function generate(node) {
- this.token(types.Hash, '#' + node.value);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.xxx = xxx;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs
deleted file mode 100644
index 264525d..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'IdSelector';
-const structure = {
- name: String
-};
-
-function parse() {
- const start = this.tokenStart;
-
- // TODO: check value is an ident
- this.eat(types.Hash);
-
- return {
- type: 'IdSelector',
- loc: this.getLocation(start, this.tokenStart),
- name: this.substrToCursor(start + 1)
- };
-}
-
-function generate(node) {
- // Using Delim instead of Hash is a hack to avoid for a whitespace between ident and id-selector
- // in safe mode (e.g. "a#id"), because IE11 doesn't allow a sequence <ident-token> <hash-token>
- // without a whitespace in values (e.g. "1px solid#000")
- this.token(types.Delim, '#' + node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Identifier.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Identifier.cjs
deleted file mode 100644
index 8928cf8..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Identifier.cjs
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Identifier';
-const structure = {
- name: String
-};
-
-function parse() {
- return {
- type: 'Identifier',
- loc: this.getLocation(this.tokenStart, this.tokenEnd),
- name: this.consume(types.Ident)
- };
-}
-
-function generate(node) {
- this.token(types.Ident, node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Layer.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Layer.cjs
deleted file mode 100644
index a748046..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Layer.cjs
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const FULLSTOP = 0x002E; // U+002E FULL STOP (.)
-
-const name = 'Layer';
-const structure = {
- name: String
-};
-
-function parse() {
- let tokenStart = this.tokenStart;
- let name = this.consume(types.Ident);
-
- while (this.isDelim(FULLSTOP)) {
- this.eat(types.Delim);
- name += '.' + this.consume(types.Ident);
- }
-
- return {
- type: 'Layer',
- loc: this.getLocation(tokenStart, this.tokenStart),
- name
- };
-}
-
-function generate(node) {
- this.tokenize(node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/LayerList.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/LayerList.cjs
deleted file mode 100644
index 0ce29f5..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/LayerList.cjs
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'LayerList';
-const structure = {
- children: [[
- 'Layer'
- ]]
-};
-
-function parse() {
- const children = this.createList();
-
- this.skipSC();
-
- while (!this.eof) {
- children.push(this.Layer());
-
- if (this.lookupTypeNonSC(0) !== types.Comma) {
- break;
- }
-
- this.skipSC();
- this.next();
- this.skipSC();
- }
-
- return {
- type: 'LayerList',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node, () => this.token(types.Comma, ','));
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/LayerName.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/LayerName.cjs
deleted file mode 100644
index 97ac9b7..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/LayerName.cjs
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const FULLSTOP = 0x002E; // U+002E FULL STOP (.)
-
-const name = 'LayerName';
-const structure = {
- name: String
-};
-
-function parse() {
- let name = this.consume(types.Ident);
-
- while (this.isDelim(FULLSTOP)) {
- this.eat(types.Delim);
- name += '.' + this.consume(types.Ident);
- }
-
- return {
- type: 'LayerName',
- loc: this.getLocation(this.tokenStart, this.tokenEnd),
- name
- };
-}
-
-function generate(node) {
- this.tokenize(node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/LayerNameList.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/LayerNameList.cjs
deleted file mode 100644
index e35140d..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/LayerNameList.cjs
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'LayerNameList';
-const structure = {
- children: [[
- 'MediaQuery'
- ]]
-};
-
-function parse() {
- const children = this.createList();
-
- this.skipSC();
-
- while (!this.eof) {
- children.push(this.LayerName());
-
- if (this.tokenType !== types.Comma) {
- break;
- }
-
- this.next();
- this.skipSC();
- }
-
- return {
- type: 'LayerNameList',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node, () => this.token(types.Comma, ','));
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaCondition.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/MediaCondition.cjs
deleted file mode 100644
index c98fdc8..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaCondition.cjs
+++ /dev/null
@@ -1,70 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const MediaFeatureToken = new Set([types.Colon, types.RightParenthesis, types.EOF]);
-
-const name = 'MediaCondition';
-const structure = {
- children: [[
- 'Identifier',
- 'MediaFeature',
- 'MediaFeatureRange'
- ]]
-};
-
-function parse() {
- const children = this.createList();
-
- scan: while (!this.eof) {
- switch (this.tokenType) {
- case types.Comment:
- case types.WhiteSpace:
- this.next();
- continue;
-
- case types.Ident:
- children.push(this.Identifier());
- break;
-
- case types.LeftParenthesis:
- if (this.lookupTypeNonSC(1) === types.Ident && MediaFeatureToken.has(this.lookupTypeNonSC(2))) {
- children.push(this.MediaFeature());
- } else if (this.lookupTypeNonSC(1) === types.LeftParenthesis || this.lookupTypeNonSC(2) === types.LeftParenthesis) {
- this.next();
- children.push(this.MediaCondition());
- this.eat(types.RightParenthesis);
- } else {
- children.push(this.MediaFeatureRange());
- }
-
- break;
-
- default:
- break scan;
- }
- }
-
- return {
- type: 'MediaCondition',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- node.children.forEach(child => {
- if (child.type === 'MediaCondition') {
- this.token(types.LeftParenthesis, '(');
- this.node(child);
- this.token(types.RightParenthesis, ')');
- } else {
- this.node(child);
- }
- });
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs
deleted file mode 100644
index 90e8d5a..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs
+++ /dev/null
@@ -1,76 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'MediaFeature';
-const structure = {
- name: String,
- value: ['Identifier', 'Number', 'Dimension', 'Ratio', null]
-};
-
-function parse() {
- const start = this.tokenStart;
- let name;
- let value = null;
-
- this.eat(types.LeftParenthesis);
- this.skipSC();
-
- name = this.consume(types.Ident);
- this.skipSC();
-
- if (this.tokenType !== types.RightParenthesis) {
- this.eat(types.Colon);
- this.skipSC();
-
- switch (this.tokenType) {
- case types.Number:
- if (this.lookupNonWSType(1) === types.Delim) {
- value = this.Ratio();
- } else {
- value = this.Number();
- }
-
- break;
-
- case types.Dimension:
- value = this.Dimension();
- break;
-
- case types.Ident:
- value = this.Identifier();
- break;
-
- default:
- this.error('Number, dimension, ratio or identifier is expected');
- }
-
- this.skipSC();
- }
-
- this.eat(types.RightParenthesis);
-
- return {
- type: 'MediaFeature',
- loc: this.getLocation(start, this.tokenStart),
- name,
- value
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.token(types.Ident, node.name);
-
- if (node.value !== null) {
- this.token(types.Colon, ':');
- this.node(node.value);
- }
-
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeatureRange.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeatureRange.cjs
deleted file mode 100644
index 8be899f..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaFeatureRange.cjs
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-const featureRange = require('./common/feature-range.cjs');
-
-const name = 'MediaFeatureRange';
-const parse = featureRange.createParse(name);
-
-exports.generate = featureRange.generate;
-exports.structure = featureRange.structure;
-exports.name = name;
-exports.parse = parse;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs
deleted file mode 100644
index 776efdd..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs
+++ /dev/null
@@ -1,100 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'MediaQuery';
-const structure = {
- modifier: [String, null],
- mediaType: [String, null],
- condition: ['Condition', null]
-};
-
-function parse() {
- const start = this.tokenStart;
- let modifier = null;
- let mediaType = null;
- let condition = null;
-
- this.skipSC();
-
- if (this.tokenType === types.Ident && this.lookupTypeNonSC(1) !== types.LeftParenthesis) {
- // [ not | only ]? <media-type>
- const ident = this.consume(types.Ident);
- const identLowerCase = ident.toLowerCase();
-
- if (identLowerCase === 'not' || identLowerCase === 'only') {
- this.skipSC();
- modifier = identLowerCase;
- mediaType = this.consume(types.Ident);
- } else {
- mediaType = ident;
- }
-
- switch (this.lookupTypeNonSC(0)) {
- case types.Ident: {
- // and <media-condition-without-or>
- this.skipSC();
- this.eatIdent('and');
- condition = this.Condition('media');
- break;
- }
-
- case types.LeftCurlyBracket:
- case types.Semicolon:
- case types.Comma:
- case types.EOF:
- break;
-
- default:
- this.error('Identifier or parenthesis is expected');
- }
- } else {
- switch (this.tokenType) {
- case types.Ident:
- case types.LeftParenthesis:
- case types.Function: {
- // <media-condition>
- condition = this.Condition('media');
- break;
- }
-
- case types.LeftCurlyBracket:
- case types.Semicolon:
- case types.EOF:
- break;
-
- default:
- this.error('Identifier or parenthesis is expected');
- }
- }
-
- return {
- type: 'MediaQuery',
- loc: this.getLocation(start, this.tokenStart),
- modifier,
- mediaType,
- condition
- };
-}
-
-function generate(node) {
- if (node.mediaType) {
- if (node.modifier) {
- this.token(types.Ident, node.modifier);
- }
-
- this.token(types.Ident, node.mediaType);
-
- if (node.condition) {
- this.token(types.Ident, 'and');
- this.node(node.condition);
- }
- } else if (node.condition) {
- this.node(node.condition);
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs
deleted file mode 100644
index 3877947..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'MediaQueryList';
-const structure = {
- children: [[
- 'MediaQuery'
- ]]
-};
-
-function parse() {
- const children = this.createList();
-
- this.skipSC();
-
- while (!this.eof) {
- children.push(this.MediaQuery());
-
- if (this.tokenType !== types.Comma) {
- break;
- }
-
- this.next();
- }
-
- return {
- type: 'MediaQueryList',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node, () => this.token(types.Comma, ','));
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs
deleted file mode 100644
index 9850a9c..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)
-
-const name = 'NestingSelector';
-const structure = {
-};
-
-function parse() {
- const start = this.tokenStart;
-
- this.eatDelim(AMPERSAND);
-
- return {
- type: 'NestingSelector',
- loc: this.getLocation(start, this.tokenStart)
- };
-}
-
-function generate() {
- this.token(types.Delim, '&');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Nth.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Nth.cjs
deleted file mode 100644
index 709312f..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Nth.cjs
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Nth';
-const structure = {
- nth: ['AnPlusB', 'Identifier'],
- selector: ['SelectorList', null]
-};
-
-function parse() {
- this.skipSC();
-
- const start = this.tokenStart;
- let end = start;
- let selector = null;
- let nth;
-
- if (this.lookupValue(0, 'odd') || this.lookupValue(0, 'even')) {
- nth = this.Identifier();
- } else {
- nth = this.AnPlusB();
- }
-
- end = this.tokenStart;
- this.skipSC();
-
- if (this.lookupValue(0, 'of')) {
- this.next();
-
- selector = this.SelectorList();
- end = this.tokenStart;
- }
-
- return {
- type: 'Nth',
- loc: this.getLocation(start, end),
- nth,
- selector
- };
-}
-
-function generate(node) {
- this.node(node.nth);
- if (node.selector !== null) {
- this.token(types.Ident, 'of');
- this.node(node.selector);
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Number.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Number.cjs
deleted file mode 100644
index 8abd9ae..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Number.cjs
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Number';
-const structure = {
- value: String
-};
-
-function parse() {
- return {
- type: 'Number',
- loc: this.getLocation(this.tokenStart, this.tokenEnd),
- value: this.consume(types.Number)
- };
-}
-
-function generate(node) {
- this.token(types.Number, node.value);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Operator.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Operator.cjs
deleted file mode 100644
index c5a513b..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Operator.cjs
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict';
-
-// '/' | '*' | ',' | ':' | '+' | '-'
-const name = 'Operator';
-const structure = {
- value: String
-};
-
-function parse() {
- const start = this.tokenStart;
-
- this.next();
-
- return {
- type: 'Operator',
- loc: this.getLocation(start, this.tokenStart),
- value: this.substrToCursor(start)
- };
-}
-
-function generate(node) {
- this.tokenize(node.value);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs
deleted file mode 100644
index 7c14bc6..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Parentheses';
-const structure = {
- children: [[]]
-};
-
-function parse(readSequence, recognizer) {
- const start = this.tokenStart;
- let children = null;
-
- this.eat(types.LeftParenthesis);
-
- children = readSequence.call(this, recognizer);
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'Parentheses',
- loc: this.getLocation(start, this.tokenStart),
- children
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.children(node);
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Percentage.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Percentage.cjs
deleted file mode 100644
index 38cc1d5..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Percentage.cjs
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Percentage';
-const structure = {
- value: String
-};
-
-function parse() {
- return {
- type: 'Percentage',
- loc: this.getLocation(this.tokenStart, this.tokenEnd),
- value: this.consumeNumber(types.Percentage)
- };
-}
-
-function generate(node) {
- this.token(types.Percentage, node.value + '%');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs
deleted file mode 100644
index f5fa0da..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'PseudoClassSelector';
-const walkContext = 'function';
-const structure = {
- name: String,
- children: [['Raw'], null]
-};
-
-// : [ <ident> | <function-token> <any-value>? ) ]
-function parse() {
- const start = this.tokenStart;
- let children = null;
- let name;
- let nameLowerCase;
-
- this.eat(types.Colon);
-
- if (this.tokenType === types.Function) {
- name = this.consumeFunctionName();
- nameLowerCase = name.toLowerCase();
-
- if (this.lookupNonWSType(0) == types.RightParenthesis) {
- children = this.createList();
- } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {
- this.skipSC();
- children = this.pseudo[nameLowerCase].call(this);
- this.skipSC();
- } else {
- children = this.createList();
- children.push(
- this.Raw(null, false)
- );
- }
-
- this.eat(types.RightParenthesis);
- } else {
- name = this.consume(types.Ident);
- }
-
- return {
- type: 'PseudoClassSelector',
- loc: this.getLocation(start, this.tokenStart),
- name,
- children
- };
-}
-
-function generate(node) {
- this.token(types.Colon, ':');
-
- if (node.children === null) {
- this.token(types.Ident, node.name);
- } else {
- this.token(types.Function, node.name + '(');
- this.children(node);
- this.token(types.RightParenthesis, ')');
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs
deleted file mode 100644
index f998968..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs
+++ /dev/null
@@ -1,69 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'PseudoElementSelector';
-const walkContext = 'function';
-const structure = {
- name: String,
- children: [['Raw'], null]
-};
-
-// :: [ <ident> | <function-token> <any-value>? ) ]
-function parse() {
- const start = this.tokenStart;
- let children = null;
- let name;
- let nameLowerCase;
-
- this.eat(types.Colon);
- this.eat(types.Colon);
-
- if (this.tokenType === types.Function) {
- name = this.consumeFunctionName();
- nameLowerCase = name.toLowerCase();
-
- if (this.lookupNonWSType(0) == types.RightParenthesis) {
- children = this.createList();
- } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {
- this.skipSC();
- children = this.pseudo[nameLowerCase].call(this);
- this.skipSC();
- } else {
- children = this.createList();
- children.push(
- this.Raw(null, false)
- );
- }
-
- this.eat(types.RightParenthesis);
- } else {
- name = this.consume(types.Ident);
- }
-
- return {
- type: 'PseudoElementSelector',
- loc: this.getLocation(start, this.tokenStart),
- name,
- children
- };
-}
-
-function generate(node) {
- this.token(types.Colon, ':');
- this.token(types.Colon, ':');
-
- if (node.children === null) {
- this.token(types.Ident, node.name);
- } else {
- this.token(types.Function, node.name + '(');
- this.children(node);
- this.token(types.RightParenthesis, ')');
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Ratio.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Ratio.cjs
deleted file mode 100644
index 69b71ea..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Ratio.cjs
+++ /dev/null
@@ -1,71 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-
-// Media Queries Level 3 defines terms of <ratio> as a positive (not zero or negative)
-// integers (see https://drafts.csswg.org/mediaqueries-3/#values)
-// However, Media Queries Level 4 removes any definition of values
-// (see https://drafts.csswg.org/mediaqueries-4/#values) and refers to
-// CSS Values and Units for detail. In CSS Values and Units Level 4 a <ratio>
-// definition was added (see https://drafts.csswg.org/css-values-4/#ratios) which
-// defines ratio as "<number [0,∞]> [ / <number [0,∞]> ]?" and based on it
-// any constrains on terms were removed. Parser also doesn't test numbers
-// in any way to make possible for linting and fixing them by the tools using CSSTree.
-// An additional syntax examination may be applied by a lexer.
-function consumeTerm() {
- this.skipSC();
-
- switch (this.tokenType) {
- case types.Number:
- return this.Number();
-
- case types.Function:
- return this.Function(this.readSequence, this.scope.Value);
-
- default:
- this.error('Number of function is expected');
- }
-}
-
-const name = 'Ratio';
-const structure = {
- left: ['Number', 'Function'],
- right: ['Number', 'Function', null]
-};
-
-// <number [0,∞]> [ / <number [0,∞]> ]?
-function parse() {
- const start = this.tokenStart;
- const left = consumeTerm.call(this);
- let right = null;
-
- this.skipSC();
- if (this.isDelim(SOLIDUS)) {
- this.eatDelim(SOLIDUS);
- right = consumeTerm.call(this);
- }
-
- return {
- type: 'Ratio',
- loc: this.getLocation(start, this.tokenStart),
- left,
- right
- };
-}
-
-function generate(node) {
- this.node(node.left);
- this.token(types.Delim, '/');
- if (node.right) {
- this.node(node.right);
- } else {
- this.node(types.Number, 1);
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Raw.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Raw.cjs
deleted file mode 100644
index 5b92f74..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Raw.cjs
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-function getOffsetExcludeWS() {
- if (this.tokenIndex > 0) {
- if (this.lookupType(-1) === types.WhiteSpace) {
- return this.tokenIndex > 1
- ? this.getTokenStart(this.tokenIndex - 1)
- : this.firstCharOffset;
- }
- }
-
- return this.tokenStart;
-}
-
-const name = 'Raw';
-const structure = {
- value: String
-};
-
-function parse(consumeUntil, excludeWhiteSpace) {
- const startOffset = this.getTokenStart(this.tokenIndex);
- let endOffset;
-
- this.skipUntilBalanced(this.tokenIndex, consumeUntil || this.consumeUntilBalanceEnd);
-
- if (excludeWhiteSpace && this.tokenStart > startOffset) {
- endOffset = getOffsetExcludeWS.call(this);
- } else {
- endOffset = this.tokenStart;
- }
-
- return {
- type: 'Raw',
- loc: this.getLocation(startOffset, endOffset),
- value: this.substring(startOffset, endOffset)
- };
-}
-
-function generate(node) {
- this.tokenize(node.value);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Rule.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Rule.cjs
deleted file mode 100644
index e03dbe0..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Rule.cjs
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-function consumeRaw() {
- return this.Raw(this.consumeUntilLeftCurlyBracket, true);
-}
-
-function consumePrelude() {
- const prelude = this.SelectorList();
-
- if (prelude.type !== 'Raw' &&
- this.eof === false &&
- this.tokenType !== types.LeftCurlyBracket) {
- this.error();
- }
-
- return prelude;
-}
-
-const name = 'Rule';
-const walkContext = 'rule';
-const structure = {
- prelude: ['SelectorList', 'Raw'],
- block: ['Block']
-};
-
-function parse() {
- const startToken = this.tokenIndex;
- const startOffset = this.tokenStart;
- let prelude;
- let block;
-
- if (this.parseRulePrelude) {
- prelude = this.parseWithFallback(consumePrelude, consumeRaw);
- } else {
- prelude = consumeRaw.call(this, startToken);
- }
-
- block = this.Block(true);
-
- return {
- type: 'Rule',
- loc: this.getLocation(startOffset, this.tokenStart),
- prelude,
- block
- };
-}
-function generate(node) {
- this.node(node.prelude);
- this.node(node.block);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Scope.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Scope.cjs
deleted file mode 100644
index 1320b04..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Scope.cjs
+++ /dev/null
@@ -1,69 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Scope';
-const structure = {
- root: ['SelectorList', 'Raw', null],
- limit: ['SelectorList', 'Raw', null]
-};
-
-function parse() {
- let root = null;
- let limit = null;
-
- this.skipSC();
-
- const startOffset = this.tokenStart;
- if (this.tokenType === types.LeftParenthesis) {
- this.next();
- this.skipSC();
- root = this.parseWithFallback(
- this.SelectorList,
- () => this.Raw(false, true)
- );
- this.skipSC();
- this.eat(types.RightParenthesis);
- }
-
- if (this.lookupNonWSType(0) === types.Ident) {
- this.skipSC();
- this.eatIdent('to');
- this.skipSC();
- this.eat(types.LeftParenthesis);
- this.skipSC();
- limit = this.parseWithFallback(
- this.SelectorList,
- () => this.Raw(false, true)
- );
- this.skipSC();
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'Scope',
- loc: this.getLocation(startOffset, this.tokenStart),
- root,
- limit
- };
-}
-
-function generate(node) {
- if (node.root) {
- this.token(types.LeftParenthesis, '(');
- this.node(node.root);
- this.token(types.RightParenthesis, ')');
- }
-
- if (node.limit) {
- this.token(types.Ident, 'to');
- this.token(types.LeftParenthesis, '(');
- this.node(node.limit);
- this.token(types.RightParenthesis, ')');
- }
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Selector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Selector.cjs
deleted file mode 100644
index f836975..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Selector.cjs
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const name = 'Selector';
-const structure = {
- children: [[
- 'TypeSelector',
- 'IdSelector',
- 'ClassSelector',
- 'AttributeSelector',
- 'PseudoClassSelector',
- 'PseudoElementSelector',
- 'Combinator'
- ]]
-};
-
-function parse() {
- const children = this.readSequence(this.scope.Selector);
-
- // nothing were consumed
- if (this.getFirstListNode(children) === null) {
- this.error('Selector is expected');
- }
-
- return {
- type: 'Selector',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs
deleted file mode 100644
index 7ecf09b..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'SelectorList';
-const walkContext = 'selector';
-const structure = {
- children: [[
- 'Selector',
- 'Raw'
- ]]
-};
-
-function parse() {
- const children = this.createList();
-
- while (!this.eof) {
- children.push(this.Selector());
-
- if (this.tokenType === types.Comma) {
- this.next();
- continue;
- }
-
- break;
- }
-
- return {
- type: 'SelectorList',
- loc: this.getLocationFromList(children),
- children
- };
-}
-
-function generate(node) {
- this.children(node, () => this.token(types.Comma, ','));
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/String.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/String.cjs
deleted file mode 100644
index 8a7801e..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/String.cjs
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const string = require('../../utils/string.cjs');
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'String';
-const structure = {
- value: String
-};
-
-function parse() {
- return {
- type: 'String',
- loc: this.getLocation(this.tokenStart, this.tokenEnd),
- value: string.decode(this.consume(types.String))
- };
-}
-
-function generate(node) {
- this.token(types.String, string.encode(node.value));
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs
deleted file mode 100644
index 6e48f05..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)
-
-function consumeRaw() {
- return this.Raw(null, false);
-}
-
-const name = 'StyleSheet';
-const walkContext = 'stylesheet';
-const structure = {
- children: [[
- 'Comment',
- 'CDO',
- 'CDC',
- 'Atrule',
- 'Rule',
- 'Raw'
- ]]
-};
-
-function parse() {
- const start = this.tokenStart;
- const children = this.createList();
- let child;
-
- while (!this.eof) {
- switch (this.tokenType) {
- case types.WhiteSpace:
- this.next();
- continue;
-
- case types.Comment:
- // ignore comments except exclamation comments (i.e. /*! .. */) on top level
- if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) {
- this.next();
- continue;
- }
-
- child = this.Comment();
- break;
-
- case types.CDO: // <!--
- child = this.CDO();
- break;
-
- case types.CDC: // -->
- child = this.CDC();
- break;
-
- // CSS Syntax Module Level 3
- // §2.2 Error handling
- // At the "top level" of a stylesheet, an <at-keyword-token> starts an at-rule.
- case types.AtKeyword:
- child = this.parseWithFallback(this.Atrule, consumeRaw);
- break;
-
- // Anything else starts a qualified rule ...
- default:
- child = this.parseWithFallback(this.Rule, consumeRaw);
- }
-
- children.push(child);
- }
-
- return {
- type: 'StyleSheet',
- loc: this.getLocation(start, this.tokenStart),
- children
- };
-}
-
-function generate(node) {
- this.children(node);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
-exports.walkContext = walkContext;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs
deleted file mode 100644
index fcac089..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'SupportsDeclaration';
-const structure = {
- declaration: 'Declaration'
-};
-
-function parse() {
- const start = this.tokenStart;
-
- this.eat(types.LeftParenthesis);
- this.skipSC();
-
- const declaration = this.Declaration();
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'SupportsDeclaration',
- loc: this.getLocation(start, this.tokenStart),
- declaration
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.node(node.declaration);
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/SupportsFeature.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/SupportsFeature.cjs
deleted file mode 100644
index e569a5c..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/SupportsFeature.cjs
+++ /dev/null
@@ -1,69 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'SupportsDeclaration';
-const structure = {
- feature: String,
- value: 'Declaration'
-};
-
-function parse() {
- const start = this.tokenStart;
- let featureName = 'declaration';
- let valueParser = this.Declaration;
-
- if (this.tokenType === types.Function) {
- featureName = this.consumeFunctionName();
- valueParser = this.supportsFeature[featureName.toLowerCase()];
- if (!valueParser) {
- this.error(`Unknown supports feature ${featureName.toLowerCase()}()`);
- }
- } else {
- this.eat(types.LeftParenthesis);
- }
-
- this.skipSC();
-
- const value = this.parseWithFallback(
- () => {
- const startValueToken = this.tokenIndex;
- const value = valueParser.call(this);
-
- if (this.eof === false &&
- this.isBalanceEdge(startValueToken) === false) {
- this.error();
- }
-
- return value;
- },
- (startToken) => this.Raw(startToken, null, false)
- );
-
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
-
- return {
- type: 'SupportsDeclaration',
- loc: this.getLocation(start, this.tokenStart),
- feature: featureName,
- value
- };
-}
-
-function generate(node) {
- if (node.feature !== 'declaration') {
- this.token(types.Function, node.feature + '(');
- } else {
- this.token(types.LeftParenthesis, '(');
- }
-
- this.node(node.value);
- this.token(types.RightParenthesis, ')');
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs
deleted file mode 100644
index 1d15270..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const ASTERISK = 0x002A; // U+002A ASTERISK (*)
-const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)
-
-function eatIdentifierOrAsterisk() {
- if (this.tokenType !== types.Ident &&
- this.isDelim(ASTERISK) === false) {
- this.error('Identifier or asterisk is expected');
- }
-
- this.next();
-}
-
-const name = 'TypeSelector';
-const structure = {
- name: String
-};
-
-// ident
-// ident|ident
-// ident|*
-// *
-// *|ident
-// *|*
-// |ident
-// |*
-function parse() {
- const start = this.tokenStart;
-
- if (this.isDelim(VERTICALLINE)) {
- this.next();
- eatIdentifierOrAsterisk.call(this);
- } else {
- eatIdentifierOrAsterisk.call(this);
-
- if (this.isDelim(VERTICALLINE)) {
- this.next();
- eatIdentifierOrAsterisk.call(this);
- }
- }
-
- return {
- type: 'TypeSelector',
- loc: this.getLocation(start, this.tokenStart),
- name: this.substrToCursor(start)
- };
-}
-
-function generate(node) {
- this.tokenize(node.name);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs
deleted file mode 100644
index 5585e8f..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs
+++ /dev/null
@@ -1,158 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-const charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs');
-
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
-const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)
-
-function eatHexSequence(offset, allowDash) {
- let len = 0;
-
- for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) {
- const code = this.charCodeAt(pos);
-
- if (code === HYPHENMINUS && allowDash && len !== 0) {
- eatHexSequence.call(this, offset + len + 1, false);
- return -1;
- }
-
- if (!charCodeDefinitions.isHexDigit(code)) {
- this.error(
- allowDash && len !== 0
- ? 'Hyphen minus' + (len < 6 ? ' or hex digit' : '') + ' is expected'
- : (len < 6 ? 'Hex digit is expected' : 'Unexpected input'),
- pos
- );
- }
-
- if (++len > 6) {
- this.error('Too many hex digits', pos);
- } }
-
- this.next();
- return len;
-}
-
-function eatQuestionMarkSequence(max) {
- let count = 0;
-
- while (this.isDelim(QUESTIONMARK)) {
- if (++count > max) {
- this.error('Too many question marks');
- }
-
- this.next();
- }
-}
-
-function startsWith(code) {
- if (this.charCodeAt(this.tokenStart) !== code) {
- this.error((code === PLUSSIGN ? 'Plus sign' : 'Hyphen minus') + ' is expected');
- }
-}
-
-// https://drafts.csswg.org/css-syntax/#urange
-// Informally, the <urange> production has three forms:
-// U+0001
-// Defines a range consisting of a single code point, in this case the code point "1".
-// U+0001-00ff
-// Defines a range of codepoints between the first and the second value, in this case
-// the range between "1" and "ff" (255 in decimal) inclusive.
-// U+00??
-// Defines a range of codepoints where the "?" characters range over all hex digits,
-// in this case defining the same as the value U+0000-00ff.
-// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit).
-//
-// <urange> =
-// u '+' <ident-token> '?'* |
-// u <dimension-token> '?'* |
-// u <number-token> '?'* |
-// u <number-token> <dimension-token> |
-// u <number-token> <number-token> |
-// u '+' '?'+
-function scanUnicodeRange() {
- let hexLength = 0;
-
- switch (this.tokenType) {
- case types.Number:
- // u <number-token> '?'*
- // u <number-token> <dimension-token>
- // u <number-token> <number-token>
- hexLength = eatHexSequence.call(this, 1, true);
-
- if (this.isDelim(QUESTIONMARK)) {
- eatQuestionMarkSequence.call(this, 6 - hexLength);
- break;
- }
-
- if (this.tokenType === types.Dimension ||
- this.tokenType === types.Number) {
- startsWith.call(this, HYPHENMINUS);
- eatHexSequence.call(this, 1, false);
- break;
- }
-
- break;
-
- case types.Dimension:
- // u <dimension-token> '?'*
- hexLength = eatHexSequence.call(this, 1, true);
-
- if (hexLength > 0) {
- eatQuestionMarkSequence.call(this, 6 - hexLength);
- }
-
- break;
-
- default:
- // u '+' <ident-token> '?'*
- // u '+' '?'+
- this.eatDelim(PLUSSIGN);
-
- if (this.tokenType === types.Ident) {
- hexLength = eatHexSequence.call(this, 0, true);
- if (hexLength > 0) {
- eatQuestionMarkSequence.call(this, 6 - hexLength);
- }
- break;
- }
-
- if (this.isDelim(QUESTIONMARK)) {
- this.next();
- eatQuestionMarkSequence.call(this, 5);
- break;
- }
-
- this.error('Hex digit or question mark is expected');
- }
-}
-
-const name = 'UnicodeRange';
-const structure = {
- value: String
-};
-
-function parse() {
- const start = this.tokenStart;
-
- // U or u
- this.eatIdent('u');
- scanUnicodeRange.call(this);
-
- return {
- type: 'UnicodeRange',
- loc: this.getLocation(start, this.tokenStart),
- value: this.substrToCursor(start)
- };
-}
-
-function generate(node) {
- this.tokenize(node.value);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Url.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Url.cjs
deleted file mode 100644
index 6a39457..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Url.cjs
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict';
-
-const url = require('../../utils/url.cjs');
-const string = require('../../utils/string.cjs');
-const types = require('../../tokenizer/types.cjs');
-
-const name = 'Url';
-const structure = {
- value: String
-};
-
-// <url-token> | <function-token> <string> )
-function parse() {
- const start = this.tokenStart;
- let value;
-
- switch (this.tokenType) {
- case types.Url:
- value = url.decode(this.consume(types.Url));
- break;
-
- case types.Function:
- if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) {
- this.error('Function name must be `url`');
- }
-
- this.eat(types.Function);
- this.skipSC();
- value = string.decode(this.consume(types.String));
- this.skipSC();
- if (!this.eof) {
- this.eat(types.RightParenthesis);
- }
- break;
-
- default:
- this.error('Url or Function is expected');
- }
-
- return {
- type: 'Url',
- loc: this.getLocation(start, this.tokenStart),
- value
- };
-}
-
-function generate(node) {
- this.token(types.Url, url.encode(node.value));
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/Value.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/Value.cjs
deleted file mode 100644
index bdb322e..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/Value.cjs
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const name = 'Value';
-const structure = {
- children: [[]]
-};
-
-function parse() {
- const start = this.tokenStart;
- const children = this.readSequence(this.scope.Value);
-
- return {
- type: 'Value',
- loc: this.getLocation(start, this.tokenStart),
- children
- };
-}
-
-function generate(node) {
- this.children(node);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs
deleted file mode 100644
index 50c1982..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const SPACE = Object.freeze({
- type: 'WhiteSpace',
- loc: null,
- value: ' '
-});
-
-const name = 'WhiteSpace';
-const structure = {
- value: String
-};
-
-function parse() {
- this.eat(types.WhiteSpace);
- return SPACE;
-
- // return {
- // type: 'WhiteSpace',
- // loc: this.getLocation(this.tokenStart, this.tokenEnd),
- // value: this.consume(WHITESPACE)
- // };
-}
-
-function generate(node) {
- this.token(types.WhiteSpace, node.value);
-}
-
-exports.generate = generate;
-exports.name = name;
-exports.parse = parse;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/common/feature-range.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/common/feature-range.cjs
deleted file mode 100644
index 7589b56..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/common/feature-range.cjs
+++ /dev/null
@@ -1,112 +0,0 @@
-'use strict';
-
-const types = require('../../../tokenizer/types.cjs');
-
-const LESSTHANSIGN = 60; // <
-const EQUALSIGN = 61; // =
-const GREATERTHANSIGN = 62; // >
-
-const structure = {
- left: ['Identifier', 'Number', 'Dimension', 'Ratio'],
- leftComparison: String,
- middle: ['Identifier', 'Number', 'Dimension', 'Ratio'],
- rightComparison: [String, null],
- right: ['Identifier', 'Number', 'Dimension', 'Ratio', null]
-};
-
-function readTerm() {
- this.skipSC();
-
- switch (this.tokenType) {
- case types.Number:
- if (this.lookupNonWSType(1) === types.Delim) {
- return this.Ratio();
- } else {
- return this.Number();
- }
-
- case types.Dimension:
- return this.Dimension();
-
- case types.Ident:
- return this.Identifier();
-
- default:
- this.error('Number, dimension, ratio or identifier is expected');
- }
-}
-
-function readComparison(expectColon) {
- this.skipSC();
-
- if (this.isDelim(LESSTHANSIGN) ||
- this.isDelim(GREATERTHANSIGN)) {
- const value = this.source[this.tokenStart];
-
- this.next();
-
- if (this.isDelim(EQUALSIGN)) {
- this.next();
- return value + '=';
- }
-
- return value;
- }
-
- if (this.isDelim(EQUALSIGN)) {
- return '=';
- }
-
- this.error(`Expected ${expectColon ? '":", ' : ''}"<", ">", "=" or ")"`);
-}
-
-function createParse(type) {
- return function parse() {
- const start = this.tokenStart;
-
- this.skipSC();
- this.eat(types.LeftParenthesis);
-
- const left = readTerm.call(this);
- const leftComparison = readComparison.call(this, left.type === 'Identifier');
- const middle = readTerm.call(this);
- let rightComparison = null;
- let right = null;
-
- if (this.lookupNonWSType(0) !== types.RightParenthesis) {
- rightComparison = readComparison.call(this);
- right = readTerm.call(this);
- }
-
- this.skipSC();
- this.eat(types.RightParenthesis);
-
- return {
- type,
- loc: this.getLocation(start, this.tokenStart),
- left,
- leftComparison,
- middle,
- rightComparison,
- right
- };
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.node(node.left);
- this.tokenize(node.leftComparison);
- this.node(node.middle);
-
- if (node.right) {
- this.tokenize(node.rightComparison);
- this.node(node.right);
- }
-
- this.token(types.RightParenthesis, ')');
-}
-
-exports.createParse = createParse;
-exports.generate = generate;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/common/feature.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/common/feature.cjs
deleted file mode 100644
index fa5de4e..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/common/feature.cjs
+++ /dev/null
@@ -1,76 +0,0 @@
-'use strict';
-
-const types = require('../../../tokenizer/types.cjs');
-
-const structure = {
- name: String,
- value: ['Identifier', 'Number', 'Dimension', 'Ratio', null]
-};
-
-function createParse(type) {
- return function parse() {
- const start = this.tokenStart;
- let name;
- let value = null;
-
- this.eat(types.LeftParenthesis);
- this.skipSC();
-
- name = this.consume(types.Ident);
- this.skipSC();
-
- if (this.tokenType !== types.RightParenthesis) {
- this.eat(types.Colon);
- this.skipSC();
-
- switch (this.tokenType) {
- case types.Number:
- if (this.lookupNonWSType(1) === types.Delim) {
- value = this.Ratio();
- } else {
- value = this.Number();
- }
-
- break;
-
- case types.Dimension:
- value = this.Dimension();
- break;
-
- case types.Ident:
- value = this.Identifier();
- break;
-
- default:
- this.error('Number, dimension, ratio or identifier is expected');
- }
-
- this.skipSC();
- }
-
- this.eat(types.RightParenthesis);
-
- return {
- type,
- loc: this.getLocation(start, this.tokenStart),
- name,
- value
- };
- };
-}
-
-function generate(node) {
- this.token(types.LeftParenthesis, '(');
- this.token(types.Ident, node.name);
-
- if (node.value !== null) {
- this.token(types.Colon, ':');
- this.node(node.value);
- }
-
- this.token(types.RightParenthesis, ')');
-}
-
-exports.createParse = createParse;
-exports.generate = generate;
-exports.structure = structure;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/index-generate.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/index-generate.cjs
deleted file mode 100644
index 41a4ef1..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/index-generate.cjs
+++ /dev/null
@@ -1,103 +0,0 @@
-'use strict';
-
-const AnPlusB = require('./AnPlusB.cjs');
-const Atrule = require('./Atrule.cjs');
-const AtrulePrelude = require('./AtrulePrelude.cjs');
-const AttributeSelector = require('./AttributeSelector.cjs');
-const Block = require('./Block.cjs');
-const Brackets = require('./Brackets.cjs');
-const CDC = require('./CDC.cjs');
-const CDO = require('./CDO.cjs');
-const ClassSelector = require('./ClassSelector.cjs');
-const Combinator = require('./Combinator.cjs');
-const Comment = require('./Comment.cjs');
-const Condition = require('./Condition.cjs');
-const Declaration = require('./Declaration.cjs');
-const DeclarationList = require('./DeclarationList.cjs');
-const Dimension = require('./Dimension.cjs');
-const Feature = require('./Feature.cjs');
-const FeatureFunction = require('./FeatureFunction.cjs');
-const FeatureRange = require('./FeatureRange.cjs');
-const Function = require('./Function.cjs');
-const GeneralEnclosed = require('./GeneralEnclosed.cjs');
-const Hash = require('./Hash.cjs');
-const Identifier = require('./Identifier.cjs');
-const IdSelector = require('./IdSelector.cjs');
-const Layer = require('./Layer.cjs');
-const LayerList = require('./LayerList.cjs');
-const MediaQuery = require('./MediaQuery.cjs');
-const MediaQueryList = require('./MediaQueryList.cjs');
-const NestingSelector = require('./NestingSelector.cjs');
-const Nth = require('./Nth.cjs');
-const Number = require('./Number.cjs');
-const Operator = require('./Operator.cjs');
-const Parentheses = require('./Parentheses.cjs');
-const Percentage = require('./Percentage.cjs');
-const PseudoClassSelector = require('./PseudoClassSelector.cjs');
-const PseudoElementSelector = require('./PseudoElementSelector.cjs');
-const Ratio = require('./Ratio.cjs');
-const Raw = require('./Raw.cjs');
-const Rule = require('./Rule.cjs');
-const Scope = require('./Scope.cjs');
-const Selector = require('./Selector.cjs');
-const SelectorList = require('./SelectorList.cjs');
-const String = require('./String.cjs');
-const StyleSheet = require('./StyleSheet.cjs');
-const SupportsDeclaration = require('./SupportsDeclaration.cjs');
-const TypeSelector = require('./TypeSelector.cjs');
-const UnicodeRange = require('./UnicodeRange.cjs');
-const Url = require('./Url.cjs');
-const Value = require('./Value.cjs');
-const WhiteSpace = require('./WhiteSpace.cjs');
-
-
-
-exports.AnPlusB = AnPlusB.generate;
-exports.Atrule = Atrule.generate;
-exports.AtrulePrelude = AtrulePrelude.generate;
-exports.AttributeSelector = AttributeSelector.generate;
-exports.Block = Block.generate;
-exports.Brackets = Brackets.generate;
-exports.CDC = CDC.generate;
-exports.CDO = CDO.generate;
-exports.ClassSelector = ClassSelector.generate;
-exports.Combinator = Combinator.generate;
-exports.Comment = Comment.generate;
-exports.Condition = Condition.generate;
-exports.Declaration = Declaration.generate;
-exports.DeclarationList = DeclarationList.generate;
-exports.Dimension = Dimension.generate;
-exports.Feature = Feature.generate;
-exports.FeatureFunction = FeatureFunction.generate;
-exports.FeatureRange = FeatureRange.generate;
-exports.Function = Function.generate;
-exports.GeneralEnclosed = GeneralEnclosed.generate;
-exports.Hash = Hash.generate;
-exports.Identifier = Identifier.generate;
-exports.IdSelector = IdSelector.generate;
-exports.Layer = Layer.generate;
-exports.LayerList = LayerList.generate;
-exports.MediaQuery = MediaQuery.generate;
-exports.MediaQueryList = MediaQueryList.generate;
-exports.NestingSelector = NestingSelector.generate;
-exports.Nth = Nth.generate;
-exports.Number = Number.generate;
-exports.Operator = Operator.generate;
-exports.Parentheses = Parentheses.generate;
-exports.Percentage = Percentage.generate;
-exports.PseudoClassSelector = PseudoClassSelector.generate;
-exports.PseudoElementSelector = PseudoElementSelector.generate;
-exports.Ratio = Ratio.generate;
-exports.Raw = Raw.generate;
-exports.Rule = Rule.generate;
-exports.Scope = Scope.generate;
-exports.Selector = Selector.generate;
-exports.SelectorList = SelectorList.generate;
-exports.String = String.generate;
-exports.StyleSheet = StyleSheet.generate;
-exports.SupportsDeclaration = SupportsDeclaration.generate;
-exports.TypeSelector = TypeSelector.generate;
-exports.UnicodeRange = UnicodeRange.generate;
-exports.Url = Url.generate;
-exports.Value = Value.generate;
-exports.WhiteSpace = WhiteSpace.generate;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs
deleted file mode 100644
index 79caf05..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-const AnPlusB = require('./AnPlusB.cjs');
-const AttributeSelector = require('./AttributeSelector.cjs');
-const ClassSelector = require('./ClassSelector.cjs');
-const Combinator = require('./Combinator.cjs');
-const Identifier = require('./Identifier.cjs');
-const IdSelector = require('./IdSelector.cjs');
-const NestingSelector = require('./NestingSelector.cjs');
-const Nth = require('./Nth.cjs');
-const Operator = require('./Operator.cjs');
-const Percentage = require('./Percentage.cjs');
-const PseudoClassSelector = require('./PseudoClassSelector.cjs');
-const PseudoElementSelector = require('./PseudoElementSelector.cjs');
-const Raw = require('./Raw.cjs');
-const Selector = require('./Selector.cjs');
-const SelectorList = require('./SelectorList.cjs');
-const String = require('./String.cjs');
-const TypeSelector = require('./TypeSelector.cjs');
-
-
-
-exports.AnPlusB = AnPlusB.parse;
-exports.AttributeSelector = AttributeSelector.parse;
-exports.ClassSelector = ClassSelector.parse;
-exports.Combinator = Combinator.parse;
-exports.Identifier = Identifier.parse;
-exports.IdSelector = IdSelector.parse;
-exports.NestingSelector = NestingSelector.parse;
-exports.Nth = Nth.parse;
-exports.Operator = Operator.parse;
-exports.Percentage = Percentage.parse;
-exports.PseudoClassSelector = PseudoClassSelector.parse;
-exports.PseudoElementSelector = PseudoElementSelector.parse;
-exports.Raw = Raw.parse;
-exports.Selector = Selector.parse;
-exports.SelectorList = SelectorList.parse;
-exports.String = String.parse;
-exports.TypeSelector = TypeSelector.parse;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/index-parse.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/index-parse.cjs
deleted file mode 100644
index 050bd17..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/index-parse.cjs
+++ /dev/null
@@ -1,103 +0,0 @@
-'use strict';
-
-const AnPlusB = require('./AnPlusB.cjs');
-const Atrule = require('./Atrule.cjs');
-const AtrulePrelude = require('./AtrulePrelude.cjs');
-const AttributeSelector = require('./AttributeSelector.cjs');
-const Block = require('./Block.cjs');
-const Brackets = require('./Brackets.cjs');
-const CDC = require('./CDC.cjs');
-const CDO = require('./CDO.cjs');
-const ClassSelector = require('./ClassSelector.cjs');
-const Combinator = require('./Combinator.cjs');
-const Comment = require('./Comment.cjs');
-const Condition = require('./Condition.cjs');
-const Declaration = require('./Declaration.cjs');
-const DeclarationList = require('./DeclarationList.cjs');
-const Dimension = require('./Dimension.cjs');
-const Feature = require('./Feature.cjs');
-const FeatureFunction = require('./FeatureFunction.cjs');
-const FeatureRange = require('./FeatureRange.cjs');
-const Function = require('./Function.cjs');
-const GeneralEnclosed = require('./GeneralEnclosed.cjs');
-const Hash = require('./Hash.cjs');
-const Identifier = require('./Identifier.cjs');
-const IdSelector = require('./IdSelector.cjs');
-const Layer = require('./Layer.cjs');
-const LayerList = require('./LayerList.cjs');
-const MediaQuery = require('./MediaQuery.cjs');
-const MediaQueryList = require('./MediaQueryList.cjs');
-const NestingSelector = require('./NestingSelector.cjs');
-const Nth = require('./Nth.cjs');
-const Number = require('./Number.cjs');
-const Operator = require('./Operator.cjs');
-const Parentheses = require('./Parentheses.cjs');
-const Percentage = require('./Percentage.cjs');
-const PseudoClassSelector = require('./PseudoClassSelector.cjs');
-const PseudoElementSelector = require('./PseudoElementSelector.cjs');
-const Ratio = require('./Ratio.cjs');
-const Raw = require('./Raw.cjs');
-const Rule = require('./Rule.cjs');
-const Scope = require('./Scope.cjs');
-const Selector = require('./Selector.cjs');
-const SelectorList = require('./SelectorList.cjs');
-const String = require('./String.cjs');
-const StyleSheet = require('./StyleSheet.cjs');
-const SupportsDeclaration = require('./SupportsDeclaration.cjs');
-const TypeSelector = require('./TypeSelector.cjs');
-const UnicodeRange = require('./UnicodeRange.cjs');
-const Url = require('./Url.cjs');
-const Value = require('./Value.cjs');
-const WhiteSpace = require('./WhiteSpace.cjs');
-
-
-
-exports.AnPlusB = AnPlusB.parse;
-exports.Atrule = Atrule.parse;
-exports.AtrulePrelude = AtrulePrelude.parse;
-exports.AttributeSelector = AttributeSelector.parse;
-exports.Block = Block.parse;
-exports.Brackets = Brackets.parse;
-exports.CDC = CDC.parse;
-exports.CDO = CDO.parse;
-exports.ClassSelector = ClassSelector.parse;
-exports.Combinator = Combinator.parse;
-exports.Comment = Comment.parse;
-exports.Condition = Condition.parse;
-exports.Declaration = Declaration.parse;
-exports.DeclarationList = DeclarationList.parse;
-exports.Dimension = Dimension.parse;
-exports.Feature = Feature.parse;
-exports.FeatureFunction = FeatureFunction.parse;
-exports.FeatureRange = FeatureRange.parse;
-exports.Function = Function.parse;
-exports.GeneralEnclosed = GeneralEnclosed.parse;
-exports.Hash = Hash.parse;
-exports.Identifier = Identifier.parse;
-exports.IdSelector = IdSelector.parse;
-exports.Layer = Layer.parse;
-exports.LayerList = LayerList.parse;
-exports.MediaQuery = MediaQuery.parse;
-exports.MediaQueryList = MediaQueryList.parse;
-exports.NestingSelector = NestingSelector.parse;
-exports.Nth = Nth.parse;
-exports.Number = Number.parse;
-exports.Operator = Operator.parse;
-exports.Parentheses = Parentheses.parse;
-exports.Percentage = Percentage.parse;
-exports.PseudoClassSelector = PseudoClassSelector.parse;
-exports.PseudoElementSelector = PseudoElementSelector.parse;
-exports.Ratio = Ratio.parse;
-exports.Raw = Raw.parse;
-exports.Rule = Rule.parse;
-exports.Scope = Scope.parse;
-exports.Selector = Selector.parse;
-exports.SelectorList = SelectorList.parse;
-exports.String = String.parse;
-exports.StyleSheet = StyleSheet.parse;
-exports.SupportsDeclaration = SupportsDeclaration.parse;
-exports.TypeSelector = TypeSelector.parse;
-exports.UnicodeRange = UnicodeRange.parse;
-exports.Url = Url.parse;
-exports.Value = Value.parse;
-exports.WhiteSpace = WhiteSpace.parse;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/node/index.cjs b/vanilla/node_modules/css-tree/cjs/syntax/node/index.cjs
deleted file mode 100644
index 57451f0..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/node/index.cjs
+++ /dev/null
@@ -1,103 +0,0 @@
-'use strict';
-
-const AnPlusB = require('./AnPlusB.cjs');
-const Atrule = require('./Atrule.cjs');
-const AtrulePrelude = require('./AtrulePrelude.cjs');
-const AttributeSelector = require('./AttributeSelector.cjs');
-const Block = require('./Block.cjs');
-const Brackets = require('./Brackets.cjs');
-const CDC = require('./CDC.cjs');
-const CDO = require('./CDO.cjs');
-const ClassSelector = require('./ClassSelector.cjs');
-const Combinator = require('./Combinator.cjs');
-const Comment = require('./Comment.cjs');
-const Condition = require('./Condition.cjs');
-const Declaration = require('./Declaration.cjs');
-const DeclarationList = require('./DeclarationList.cjs');
-const Dimension = require('./Dimension.cjs');
-const Feature = require('./Feature.cjs');
-const FeatureFunction = require('./FeatureFunction.cjs');
-const FeatureRange = require('./FeatureRange.cjs');
-const Function = require('./Function.cjs');
-const GeneralEnclosed = require('./GeneralEnclosed.cjs');
-const Hash = require('./Hash.cjs');
-const Identifier = require('./Identifier.cjs');
-const IdSelector = require('./IdSelector.cjs');
-const Layer = require('./Layer.cjs');
-const LayerList = require('./LayerList.cjs');
-const MediaQuery = require('./MediaQuery.cjs');
-const MediaQueryList = require('./MediaQueryList.cjs');
-const NestingSelector = require('./NestingSelector.cjs');
-const Nth = require('./Nth.cjs');
-const Number$1 = require('./Number.cjs');
-const Operator = require('./Operator.cjs');
-const Parentheses = require('./Parentheses.cjs');
-const Percentage = require('./Percentage.cjs');
-const PseudoClassSelector = require('./PseudoClassSelector.cjs');
-const PseudoElementSelector = require('./PseudoElementSelector.cjs');
-const Ratio = require('./Ratio.cjs');
-const Raw = require('./Raw.cjs');
-const Rule = require('./Rule.cjs');
-const Scope = require('./Scope.cjs');
-const Selector = require('./Selector.cjs');
-const SelectorList = require('./SelectorList.cjs');
-const String$1 = require('./String.cjs');
-const StyleSheet = require('./StyleSheet.cjs');
-const SupportsDeclaration = require('./SupportsDeclaration.cjs');
-const TypeSelector = require('./TypeSelector.cjs');
-const UnicodeRange = require('./UnicodeRange.cjs');
-const Url = require('./Url.cjs');
-const Value = require('./Value.cjs');
-const WhiteSpace = require('./WhiteSpace.cjs');
-
-
-
-exports.AnPlusB = AnPlusB;
-exports.Atrule = Atrule;
-exports.AtrulePrelude = AtrulePrelude;
-exports.AttributeSelector = AttributeSelector;
-exports.Block = Block;
-exports.Brackets = Brackets;
-exports.CDC = CDC;
-exports.CDO = CDO;
-exports.ClassSelector = ClassSelector;
-exports.Combinator = Combinator;
-exports.Comment = Comment;
-exports.Condition = Condition;
-exports.Declaration = Declaration;
-exports.DeclarationList = DeclarationList;
-exports.Dimension = Dimension;
-exports.Feature = Feature;
-exports.FeatureFunction = FeatureFunction;
-exports.FeatureRange = FeatureRange;
-exports.Function = Function;
-exports.GeneralEnclosed = GeneralEnclosed;
-exports.Hash = Hash;
-exports.Identifier = Identifier;
-exports.IdSelector = IdSelector;
-exports.Layer = Layer;
-exports.LayerList = LayerList;
-exports.MediaQuery = MediaQuery;
-exports.MediaQueryList = MediaQueryList;
-exports.NestingSelector = NestingSelector;
-exports.Nth = Nth;
-exports.Number = Number$1;
-exports.Operator = Operator;
-exports.Parentheses = Parentheses;
-exports.Percentage = Percentage;
-exports.PseudoClassSelector = PseudoClassSelector;
-exports.PseudoElementSelector = PseudoElementSelector;
-exports.Ratio = Ratio;
-exports.Raw = Raw;
-exports.Rule = Rule;
-exports.Scope = Scope;
-exports.Selector = Selector;
-exports.SelectorList = SelectorList;
-exports.String = String$1;
-exports.StyleSheet = StyleSheet;
-exports.SupportsDeclaration = SupportsDeclaration;
-exports.TypeSelector = TypeSelector;
-exports.UnicodeRange = UnicodeRange;
-exports.Url = Url;
-exports.Value = Value;
-exports.WhiteSpace = WhiteSpace;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/pseudo/index.cjs b/vanilla/node_modules/css-tree/cjs/syntax/pseudo/index.cjs
deleted file mode 100644
index 37ad6b8..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/pseudo/index.cjs
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-const lang = require('./lang.cjs');
-
-const selectorList = {
- parse() {
- return this.createSingleNodeList(
- this.SelectorList()
- );
- }
-};
-
-const selector = {
- parse() {
- return this.createSingleNodeList(
- this.Selector()
- );
- }
-};
-
-const identList = {
- parse() {
- return this.createSingleNodeList(
- this.Identifier()
- );
- }
-};
-
-const langList = {
- parse: lang.parseLanguageRangeList
-};
-
-const nth = {
- parse() {
- return this.createSingleNodeList(
- this.Nth()
- );
- }
-};
-
-const pseudo = {
- 'dir': identList,
- 'has': selectorList,
- 'lang': langList,
- 'matches': selectorList,
- 'is': selectorList,
- '-moz-any': selectorList,
- '-webkit-any': selectorList,
- 'where': selectorList,
- 'not': selectorList,
- 'nth-child': nth,
- 'nth-last-child': nth,
- 'nth-last-of-type': nth,
- 'nth-of-type': nth,
- 'slotted': selector,
- 'host': selector,
- 'host-context': selector
-};
-
-module.exports = pseudo;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs b/vanilla/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs
deleted file mode 100644
index 6b80ee1..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-function parseLanguageRangeList() {
- const children = this.createList();
-
- this.skipSC();
-
- loop: while (!this.eof) {
- switch (this.tokenType) {
- case types.Ident:
- children.push(this.Identifier());
- break;
-
- case types.String:
- children.push(this.String());
- break;
-
- case types.Comma:
- children.push(this.Operator());
- break;
-
- case types.RightParenthesis:
- break loop;
-
- default:
- this.error('Identifier, string or comma is expected');
- }
-
- this.skipSC();
- }
-
- return children;
-}
-
-exports.parseLanguageRangeList = parseLanguageRangeList;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs b/vanilla/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs
deleted file mode 100644
index 65a1544..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-const _default = require('./default.cjs');
-
-const atrulePrelude = {
- getNode: _default
-};
-
-module.exports = atrulePrelude;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/scope/default.cjs b/vanilla/node_modules/css-tree/cjs/syntax/scope/default.cjs
deleted file mode 100644
index 43b5c18..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/scope/default.cjs
+++ /dev/null
@@ -1,76 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)
-const ASTERISK = 0x002A; // U+002A ASTERISK (*)
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u)
-
-function defaultRecognizer(context) {
- switch (this.tokenType) {
- case types.Hash:
- return this.Hash();
-
- case types.Comma:
- return this.Operator();
-
- case types.LeftParenthesis:
- return this.Parentheses(this.readSequence, context.recognizer);
-
- case types.LeftSquareBracket:
- return this.Brackets(this.readSequence, context.recognizer);
-
- case types.String:
- return this.String();
-
- case types.Dimension:
- return this.Dimension();
-
- case types.Percentage:
- return this.Percentage();
-
- case types.Number:
- return this.Number();
-
- case types.Function:
- return this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')
- ? this.Url()
- : this.Function(this.readSequence, context.recognizer);
-
- case types.Url:
- return this.Url();
-
- case types.Ident:
- // check for unicode range, it should start with u+ or U+
- if (this.cmpChar(this.tokenStart, U) &&
- this.cmpChar(this.tokenStart + 1, PLUSSIGN)) {
- return this.UnicodeRange();
- } else {
- return this.Identifier();
- }
-
- case types.Delim: {
- const code = this.charCodeAt(this.tokenStart);
-
- if (code === SOLIDUS ||
- code === ASTERISK ||
- code === PLUSSIGN ||
- code === HYPHENMINUS) {
- return this.Operator(); // TODO: replace with Delim
- }
-
- // TODO: produce a node with Delim node type
-
- if (code === NUMBERSIGN) {
- this.error('Hex or identifier is expected', this.tokenStart + 1);
- }
-
- break;
- }
- }
-}
-
-module.exports = defaultRecognizer;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/scope/index.cjs b/vanilla/node_modules/css-tree/cjs/syntax/scope/index.cjs
deleted file mode 100644
index 7839128..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/scope/index.cjs
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict';
-
-const atrulePrelude = require('./atrulePrelude.cjs');
-const selector = require('./selector.cjs');
-const value = require('./value.cjs');
-
-
-
-exports.AtrulePrelude = atrulePrelude;
-exports.Selector = selector;
-exports.Value = value;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/scope/selector.cjs b/vanilla/node_modules/css-tree/cjs/syntax/scope/selector.cjs
deleted file mode 100644
index 6b915ae..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/scope/selector.cjs
+++ /dev/null
@@ -1,88 +0,0 @@
-'use strict';
-
-const types = require('../../tokenizer/types.cjs');
-
-const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)
-const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&)
-const ASTERISK = 0x002A; // U+002A ASTERISK (*)
-const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
-const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
-const FULLSTOP = 0x002E; // U+002E FULL STOP (.)
-const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)
-const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)
-const TILDE = 0x007E; // U+007E TILDE (~)
-
-function onWhiteSpace(next, children) {
- if (children.last !== null && children.last.type !== 'Combinator' &&
- next !== null && next.type !== 'Combinator') {
- children.push({ // FIXME: this.Combinator() should be used instead
- type: 'Combinator',
- loc: null,
- name: ' '
- });
- }
-}
-
-function getNode() {
- switch (this.tokenType) {
- case types.LeftSquareBracket:
- return this.AttributeSelector();
-
- case types.Hash:
- return this.IdSelector();
-
- case types.Colon:
- if (this.lookupType(1) === types.Colon) {
- return this.PseudoElementSelector();
- } else {
- return this.PseudoClassSelector();
- }
-
- case types.Ident:
- return this.TypeSelector();
-
- case types.Number:
- case types.Percentage:
- return this.Percentage();
-
- case types.Dimension:
- // throws when .123ident
- if (this.charCodeAt(this.tokenStart) === FULLSTOP) {
- this.error('Identifier is expected', this.tokenStart + 1);
- }
- break;
-
- case types.Delim: {
- const code = this.charCodeAt(this.tokenStart);
-
- switch (code) {
- case PLUSSIGN:
- case GREATERTHANSIGN:
- case TILDE:
- case SOLIDUS: // /deep/
- return this.Combinator();
-
- case FULLSTOP:
- return this.ClassSelector();
-
- case ASTERISK:
- case VERTICALLINE:
- return this.TypeSelector();
-
- case NUMBERSIGN:
- return this.IdSelector();
-
- case AMPERSAND:
- return this.NestingSelector();
- }
-
- break;
- }
- }
-}
-const Selector = {
- onWhiteSpace,
- getNode
-};
-
-module.exports = Selector;
diff --git a/vanilla/node_modules/css-tree/cjs/syntax/scope/value.cjs b/vanilla/node_modules/css-tree/cjs/syntax/scope/value.cjs
deleted file mode 100644
index a9900a1..0000000
--- a/vanilla/node_modules/css-tree/cjs/syntax/scope/value.cjs
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict';
-
-const _default = require('./default.cjs');
-const expression = require('../function/expression.cjs');
-const _var = require('../function/var.cjs');
-
-function isPlusMinusOperator(node) {
- return (
- node !== null &&
- node.type === 'Operator' &&
- (node.value[node.value.length - 1] === '-' || node.value[node.value.length - 1] === '+')
- );
-}
-
-const value = {
- getNode: _default,
- onWhiteSpace(next, children) {
- if (isPlusMinusOperator(next)) {
- next.value = ' ' + next.value;
- }
- if (isPlusMinusOperator(children.last)) {
- children.last.value += ' ';
- }
- },
- 'expression': expression,
- 'var': _var
-};
-
-module.exports = value;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs
deleted file mode 100644
index 18b7f7c..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs
+++ /dev/null
@@ -1,91 +0,0 @@
-'use strict';
-
-const adoptBuffer = require('./adopt-buffer.cjs');
-const charCodeDefinitions = require('./char-code-definitions.cjs');
-
-const N = 10;
-const F = 12;
-const R = 13;
-
-function computeLinesAndColumns(host) {
- const source = host.source;
- const sourceLength = source.length;
- const startOffset = source.length > 0 ? charCodeDefinitions.isBOM(source.charCodeAt(0)) : 0;
- const lines = adoptBuffer.adoptBuffer(host.lines, sourceLength);
- const columns = adoptBuffer.adoptBuffer(host.columns, sourceLength);
- let line = host.startLine;
- let column = host.startColumn;
-
- for (let i = startOffset; i < sourceLength; i++) {
- const code = source.charCodeAt(i);
-
- lines[i] = line;
- columns[i] = column++;
-
- if (code === N || code === R || code === F) {
- if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {
- i++;
- lines[i] = line;
- columns[i] = column;
- }
-
- line++;
- column = 1;
- }
- }
-
- lines[sourceLength] = line;
- columns[sourceLength] = column;
-
- host.lines = lines;
- host.columns = columns;
- host.computed = true;
-}
-
-class OffsetToLocation {
- constructor(source, startOffset, startLine, startColumn) {
- this.setSource(source, startOffset, startLine, startColumn);
- this.lines = null;
- this.columns = null;
- }
- setSource(source = '', startOffset = 0, startLine = 1, startColumn = 1) {
- this.source = source;
- this.startOffset = startOffset;
- this.startLine = startLine;
- this.startColumn = startColumn;
- this.computed = false;
- }
- getLocation(offset, filename) {
- if (!this.computed) {
- computeLinesAndColumns(this);
- }
-
- return {
- source: filename,
- offset: this.startOffset + offset,
- line: this.lines[offset],
- column: this.columns[offset]
- };
- }
- getLocationRange(start, end, filename) {
- if (!this.computed) {
- computeLinesAndColumns(this);
- }
-
- return {
- source: filename,
- start: {
- offset: this.startOffset + start,
- line: this.lines[start],
- column: this.columns[start]
- },
- end: {
- offset: this.startOffset + end,
- line: this.lines[end],
- column: this.columns[end]
- }
- };
- }
-}
-
-exports.OffsetToLocation = OffsetToLocation;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs
deleted file mode 100644
index 045991f..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs
+++ /dev/null
@@ -1,308 +0,0 @@
-'use strict';
-
-const adoptBuffer = require('./adopt-buffer.cjs');
-const utils = require('./utils.cjs');
-const names = require('./names.cjs');
-const types = require('./types.cjs');
-
-const OFFSET_MASK = 0x00FFFFFF;
-const TYPE_SHIFT = 24;
-const balancePair = new Uint8Array(32); // 32b of memory ought to be enough for anyone (any number of tokens)
-balancePair[types.Function] = types.RightParenthesis;
-balancePair[types.LeftParenthesis] = types.RightParenthesis;
-balancePair[types.LeftSquareBracket] = types.RightSquareBracket;
-balancePair[types.LeftCurlyBracket] = types.RightCurlyBracket;
-
-function isBlockOpenerToken(tokenType) {
- return balancePair[tokenType] !== 0;
-}
-
-class TokenStream {
- constructor(source, tokenize) {
- this.setSource(source, tokenize);
- }
- reset() {
- this.eof = false;
- this.tokenIndex = -1;
- this.tokenType = 0;
- this.tokenStart = this.firstCharOffset;
- this.tokenEnd = this.firstCharOffset;
- }
- setSource(source = '', tokenize = () => {}) {
- source = String(source || '');
-
- const sourceLength = source.length;
- const offsetAndType = adoptBuffer.adoptBuffer(this.offsetAndType, source.length + 1); // +1 because of eof-token
- const balance = adoptBuffer.adoptBuffer(this.balance, source.length + 1);
- let tokenCount = 0;
- let firstCharOffset = -1;
- let balanceCloseType = 0;
- let balanceStart = source.length;
-
- // capture buffers
- this.offsetAndType = null;
- this.balance = null;
- balance.fill(0);
-
- tokenize(source, (type, start, end) => {
- const index = tokenCount++;
-
- // type & offset
- offsetAndType[index] = (type << TYPE_SHIFT) | end;
-
- if (firstCharOffset === -1) {
- firstCharOffset = start;
- }
-
- // balance
- balance[index] = balanceStart;
-
- if (type === balanceCloseType) {
- const prevBalanceStart = balance[balanceStart];
-
- // set reference to balance end for a block opener
- balance[balanceStart] = index;
-
- // pop state
- balanceStart = prevBalanceStart;
- balanceCloseType = balancePair[offsetAndType[prevBalanceStart] >> TYPE_SHIFT];
- } else if (isBlockOpenerToken(type)) { // check for FunctionToken, <(-token>, <[-token> and <{-token>
- // push state
- balanceStart = index;
- balanceCloseType = balancePair[type];
- }
- });
-
- // finalize buffers
- offsetAndType[tokenCount] = (types.EOF << TYPE_SHIFT) | sourceLength; // <EOF-token>
- balance[tokenCount] = tokenCount; // prevents false positive balance match with any token
-
- // reverse references from balance start to end
- // tokens
- // token: a ( [ b c ] d e ) {
- // index: 0 1 2 3 4 5 6 7 8 9
- // before
- // balance: 0 8 5 2 2 2 1 1 1 0
- // - > > < < < < < < -
- // after
- // balance: 9 8 5 5 5 2 8 8 1 9
- // > > > > > < > > < >
- for (let i = 0; i < tokenCount; i++) {
- const balanceStart = balance[i];
-
- if (balanceStart <= i) {
- const balanceEnd = balance[balanceStart];
-
- if (balanceEnd !== i) {
- balance[i] = balanceEnd;
- }
- } else if (balanceStart > tokenCount) {
- balance[i] = tokenCount;
- }
- }
-
- // balance[0] = tokenCount;
-
- this.source = source;
- this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset;
- this.tokenCount = tokenCount;
- this.offsetAndType = offsetAndType;
- this.balance = balance;
-
- this.reset();
- this.next();
- }
-
- lookupType(offset) {
- offset += this.tokenIndex;
-
- if (offset < this.tokenCount) {
- return this.offsetAndType[offset] >> TYPE_SHIFT;
- }
-
- return types.EOF;
- }
- lookupTypeNonSC(idx) {
- for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {
- const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;
-
- if (tokenType !== types.WhiteSpace && tokenType !== types.Comment) {
- if (idx-- === 0) {
- return tokenType;
- }
- }
- }
-
- return types.EOF;
- }
- lookupOffset(offset) {
- offset += this.tokenIndex;
-
- if (offset < this.tokenCount) {
- return this.offsetAndType[offset - 1] & OFFSET_MASK;
- }
-
- return this.source.length;
- }
- lookupOffsetNonSC(idx) {
- for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {
- const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;
-
- if (tokenType !== types.WhiteSpace && tokenType !== types.Comment) {
- if (idx-- === 0) {
- return offset - this.tokenIndex;
- }
- }
- }
-
- return types.EOF;
- }
- lookupValue(offset, referenceStr) {
- offset += this.tokenIndex;
-
- if (offset < this.tokenCount) {
- return utils.cmpStr(
- this.source,
- this.offsetAndType[offset - 1] & OFFSET_MASK,
- this.offsetAndType[offset] & OFFSET_MASK,
- referenceStr
- );
- }
-
- return false;
- }
- getTokenStart(tokenIndex) {
- if (tokenIndex === this.tokenIndex) {
- return this.tokenStart;
- }
-
- if (tokenIndex > 0) {
- return tokenIndex < this.tokenCount
- ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK
- : this.offsetAndType[this.tokenCount] & OFFSET_MASK;
- }
-
- return this.firstCharOffset;
- }
- substrToCursor(start) {
- return this.source.substring(start, this.tokenStart);
- }
-
- isBalanceEdge(pos) {
- return this.balance[this.tokenIndex] < pos;
- // return this.balance[this.balance[pos]] !== this.tokenIndex;
- }
- isDelim(code, offset) {
- if (offset) {
- return (
- this.lookupType(offset) === types.Delim &&
- this.source.charCodeAt(this.lookupOffset(offset)) === code
- );
- }
-
- return (
- this.tokenType === types.Delim &&
- this.source.charCodeAt(this.tokenStart) === code
- );
- }
-
- skip(tokenCount) {
- let next = this.tokenIndex + tokenCount;
-
- if (next < this.tokenCount) {
- this.tokenIndex = next;
- this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;
- next = this.offsetAndType[next];
- this.tokenType = next >> TYPE_SHIFT;
- this.tokenEnd = next & OFFSET_MASK;
- } else {
- this.tokenIndex = this.tokenCount;
- this.next();
- }
- }
- next() {
- let next = this.tokenIndex + 1;
-
- if (next < this.tokenCount) {
- this.tokenIndex = next;
- this.tokenStart = this.tokenEnd;
- next = this.offsetAndType[next];
- this.tokenType = next >> TYPE_SHIFT;
- this.tokenEnd = next & OFFSET_MASK;
- } else {
- this.eof = true;
- this.tokenIndex = this.tokenCount;
- this.tokenType = types.EOF;
- this.tokenStart = this.tokenEnd = this.source.length;
- }
- }
- skipSC() {
- while (this.tokenType === types.WhiteSpace || this.tokenType === types.Comment) {
- this.next();
- }
- }
- skipUntilBalanced(startToken, stopConsume) {
- let cursor = startToken;
- let balanceEnd = 0;
- let offset = 0;
-
- loop:
- for (; cursor < this.tokenCount; cursor++) {
- balanceEnd = this.balance[cursor];
-
- // stop scanning on balance edge that points to offset before start token
- if (balanceEnd < startToken) {
- break loop;
- }
-
- offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset;
-
- // check stop condition
- switch (stopConsume(this.source.charCodeAt(offset))) {
- case 1: // just stop
- break loop;
-
- case 2: // stop & included
- cursor++;
- break loop;
-
- default:
- // fast forward to the end of balanced block for an open block tokens
- if (isBlockOpenerToken(this.offsetAndType[cursor] >> TYPE_SHIFT)) {
- cursor = balanceEnd;
- }
- }
- }
-
- this.skip(cursor - this.tokenIndex);
- }
-
- forEachToken(fn) {
- for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) {
- const start = offset;
- const item = this.offsetAndType[i];
- const end = item & OFFSET_MASK;
- const type = item >> TYPE_SHIFT;
-
- offset = end;
-
- fn(type, start, end, i);
- }
- }
- dump() {
- const tokens = new Array(this.tokenCount);
-
- this.forEachToken((type, start, end, index) => {
- tokens[index] = {
- idx: index,
- type: names[type],
- chunk: this.source.substring(start, end),
- balance: this.balance[index]
- };
- });
-
- return tokens;
- }
-}
-
-exports.TokenStream = TokenStream;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs
deleted file mode 100644
index b2956ce..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-const MIN_SIZE = 16 * 1024;
-
-function adoptBuffer(buffer = null, size) {
- if (buffer === null || buffer.length < size) {
- return new Uint32Array(Math.max(size + 1024, MIN_SIZE));
- }
-
- return buffer;
-}
-
-exports.adoptBuffer = adoptBuffer;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs
deleted file mode 100644
index ebd4b58..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs
+++ /dev/null
@@ -1,236 +0,0 @@
-'use strict';
-
-const EOF = 0;
-
-// https://drafts.csswg.org/css-syntax-3/
-// § 4.2. Definitions
-
-// digit
-// A code point between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9).
-function isDigit(code) {
- return code >= 0x0030 && code <= 0x0039;
-}
-
-// hex digit
-// A digit, or a code point between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F),
-// or a code point between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f).
-function isHexDigit(code) {
- return (
- isDigit(code) || // 0 .. 9
- (code >= 0x0041 && code <= 0x0046) || // A .. F
- (code >= 0x0061 && code <= 0x0066) // a .. f
- );
-}
-
-// uppercase letter
-// A code point between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z).
-function isUppercaseLetter(code) {
- return code >= 0x0041 && code <= 0x005A;
-}
-
-// lowercase letter
-// A code point between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z).
-function isLowercaseLetter(code) {
- return code >= 0x0061 && code <= 0x007A;
-}
-
-// letter
-// An uppercase letter or a lowercase letter.
-function isLetter(code) {
- return isUppercaseLetter(code) || isLowercaseLetter(code);
-}
-
-// non-ASCII code point
-// A code point with a value equal to or greater than U+0080 <control>.
-//
-// 2024-09-02: The latest spec narrows the range for non-ASCII characters (see https://github.com/csstree/csstree/issues/188).
-// However, all modern browsers support a wider range, and strictly following the latest spec could result
-// in some CSS being parsed incorrectly, even though it works in the browser. Therefore, this function adheres
-// to the previous, broader definition of non-ASCII characters.
-function isNonAscii(code) {
- return code >= 0x0080;
-}
-
-// name-start code point
-// A letter, a non-ASCII code point, or U+005F LOW LINE (_).
-function isNameStart(code) {
- return isLetter(code) || isNonAscii(code) || code === 0x005F;
-}
-
-// name code point
-// A name-start code point, a digit, or U+002D HYPHEN-MINUS (-).
-function isName(code) {
- return isNameStart(code) || isDigit(code) || code === 0x002D;
-}
-
-// non-printable code point
-// A code point between U+0000 NULL and U+0008 BACKSPACE, or U+000B LINE TABULATION,
-// or a code point between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, or U+007F DELETE.
-function isNonPrintable(code) {
- return (
- (code >= 0x0000 && code <= 0x0008) ||
- (code === 0x000B) ||
- (code >= 0x000E && code <= 0x001F) ||
- (code === 0x007F)
- );
-}
-
-// newline
-// U+000A LINE FEED. Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are not included in this definition,
-// as they are converted to U+000A LINE FEED during preprocessing.
-// TODO: we doesn't do a preprocessing, so check a code point for U+000D CARRIAGE RETURN and U+000C FORM FEED
-function isNewline(code) {
- return code === 0x000A || code === 0x000D || code === 0x000C;
-}
-
-// whitespace
-// A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE.
-function isWhiteSpace(code) {
- return isNewline(code) || code === 0x0020 || code === 0x0009;
-}
-
-// § 4.3.8. Check if two code points are a valid escape
-function isValidEscape(first, second) {
- // If the first code point is not U+005C REVERSE SOLIDUS (\), return false.
- if (first !== 0x005C) {
- return false;
- }
-
- // Otherwise, if the second code point is a newline or EOF, return false.
- if (isNewline(second) || second === EOF) {
- return false;
- }
-
- // Otherwise, return true.
- return true;
-}
-
-// § 4.3.9. Check if three code points would start an identifier
-function isIdentifierStart(first, second, third) {
- // Look at the first code point:
-
- // U+002D HYPHEN-MINUS
- if (first === 0x002D) {
- // If the second code point is a name-start code point or a U+002D HYPHEN-MINUS,
- // or the second and third code points are a valid escape, return true. Otherwise, return false.
- return (
- isNameStart(second) ||
- second === 0x002D ||
- isValidEscape(second, third)
- );
- }
-
- // name-start code point
- if (isNameStart(first)) {
- // Return true.
- return true;
- }
-
- // U+005C REVERSE SOLIDUS (\)
- if (first === 0x005C) {
- // If the first and second code points are a valid escape, return true. Otherwise, return false.
- return isValidEscape(first, second);
- }
-
- // anything else
- // Return false.
- return false;
-}
-
-// § 4.3.10. Check if three code points would start a number
-function isNumberStart(first, second, third) {
- // Look at the first code point:
-
- // U+002B PLUS SIGN (+)
- // U+002D HYPHEN-MINUS (-)
- if (first === 0x002B || first === 0x002D) {
- // If the second code point is a digit, return true.
- if (isDigit(second)) {
- return 2;
- }
-
- // Otherwise, if the second code point is a U+002E FULL STOP (.)
- // and the third code point is a digit, return true.
- // Otherwise, return false.
- return second === 0x002E && isDigit(third) ? 3 : 0;
- }
-
- // U+002E FULL STOP (.)
- if (first === 0x002E) {
- // If the second code point is a digit, return true. Otherwise, return false.
- return isDigit(second) ? 2 : 0;
- }
-
- // digit
- if (isDigit(first)) {
- // Return true.
- return 1;
- }
-
- // anything else
- // Return false.
- return 0;
-}
-
-//
-// Misc
-//
-
-// detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark)
-function isBOM(code) {
- // UTF-16BE
- if (code === 0xFEFF) {
- return 1;
- }
-
- // UTF-16LE
- if (code === 0xFFFE) {
- return 1;
- }
-
- return 0;
-}
-
-// Fast code category
-// Only ASCII code points has a special meaning, that's why we define a maps for 0..127 codes only
-const CATEGORY = new Array(0x80);
-const EofCategory = 0x80;
-const WhiteSpaceCategory = 0x82;
-const DigitCategory = 0x83;
-const NameStartCategory = 0x84;
-const NonPrintableCategory = 0x85;
-
-for (let i = 0; i < CATEGORY.length; i++) {
- CATEGORY[i] =
- isWhiteSpace(i) && WhiteSpaceCategory ||
- isDigit(i) && DigitCategory ||
- isNameStart(i) && NameStartCategory ||
- isNonPrintable(i) && NonPrintableCategory ||
- i || EofCategory;
-}
-
-function charCodeCategory(code) {
- return code < 0x80 ? CATEGORY[code] : NameStartCategory;
-}
-
-exports.DigitCategory = DigitCategory;
-exports.EofCategory = EofCategory;
-exports.NameStartCategory = NameStartCategory;
-exports.NonPrintableCategory = NonPrintableCategory;
-exports.WhiteSpaceCategory = WhiteSpaceCategory;
-exports.charCodeCategory = charCodeCategory;
-exports.isBOM = isBOM;
-exports.isDigit = isDigit;
-exports.isHexDigit = isHexDigit;
-exports.isIdentifierStart = isIdentifierStart;
-exports.isLetter = isLetter;
-exports.isLowercaseLetter = isLowercaseLetter;
-exports.isName = isName;
-exports.isNameStart = isNameStart;
-exports.isNewline = isNewline;
-exports.isNonAscii = isNonAscii;
-exports.isNonPrintable = isNonPrintable;
-exports.isNumberStart = isNumberStart;
-exports.isUppercaseLetter = isUppercaseLetter;
-exports.isValidEscape = isValidEscape;
-exports.isWhiteSpace = isWhiteSpace;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/index.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/index.cjs
deleted file mode 100644
index bfb73e5..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/index.cjs
+++ /dev/null
@@ -1,554 +0,0 @@
-'use strict';
-
-const types = require('./types.cjs');
-const charCodeDefinitions = require('./char-code-definitions.cjs');
-const utils = require('./utils.cjs');
-const names = require('./names.cjs');
-const OffsetToLocation = require('./OffsetToLocation.cjs');
-const TokenStream = require('./TokenStream.cjs');
-
-function tokenize(source, onToken) {
- function getCharCode(offset) {
- return offset < sourceLength ? source.charCodeAt(offset) : 0;
- }
-
- // § 4.3.3. Consume a numeric token
- function consumeNumericToken() {
- // Consume a number and let number be the result.
- offset = utils.consumeNumber(source, offset);
-
- // If the next 3 input code points would start an identifier, then:
- if (charCodeDefinitions.isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) {
- // Create a <dimension-token> with the same value and type flag as number, and a unit set initially to the empty string.
- // Consume a name. Set the <dimension-token>’s unit to the returned value.
- // Return the <dimension-token>.
- type = types.Dimension;
- offset = utils.consumeName(source, offset);
- return;
- }
-
- // Otherwise, if the next input code point is U+0025 PERCENTAGE SIGN (%), consume it.
- if (getCharCode(offset) === 0x0025) {
- // Create a <percentage-token> with the same value as number, and return it.
- type = types.Percentage;
- offset++;
- return;
- }
-
- // Otherwise, create a <number-token> with the same value and type flag as number, and return it.
- type = types.Number;
- }
-
- // § 4.3.4. Consume an ident-like token
- function consumeIdentLikeToken() {
- const nameStartOffset = offset;
-
- // Consume a name, and let string be the result.
- offset = utils.consumeName(source, offset);
-
- // If string’s value is an ASCII case-insensitive match for "url",
- // and the next input code point is U+0028 LEFT PARENTHESIS ((), consume it.
- if (utils.cmpStr(source, nameStartOffset, offset, 'url') && getCharCode(offset) === 0x0028) {
- // While the next two input code points are whitespace, consume the next input code point.
- offset = utils.findWhiteSpaceEnd(source, offset + 1);
-
- // If the next one or two input code points are U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('),
- // or whitespace followed by U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('),
- // then create a <function-token> with its value set to string and return it.
- if (getCharCode(offset) === 0x0022 ||
- getCharCode(offset) === 0x0027) {
- type = types.Function;
- offset = nameStartOffset + 4;
- return;
- }
-
- // Otherwise, consume a url token, and return it.
- consumeUrlToken();
- return;
- }
-
- // Otherwise, if the next input code point is U+0028 LEFT PARENTHESIS ((), consume it.
- // Create a <function-token> with its value set to string and return it.
- if (getCharCode(offset) === 0x0028) {
- type = types.Function;
- offset++;
- return;
- }
-
- // Otherwise, create an <ident-token> with its value set to string and return it.
- type = types.Ident;
- }
-
- // § 4.3.5. Consume a string token
- function consumeStringToken(endingCodePoint) {
- // This algorithm may be called with an ending code point, which denotes the code point
- // that ends the string. If an ending code point is not specified,
- // the current input code point is used.
- if (!endingCodePoint) {
- endingCodePoint = getCharCode(offset++);
- }
-
- // Initially create a <string-token> with its value set to the empty string.
- type = types.String;
-
- // Repeatedly consume the next input code point from the stream:
- for (; offset < source.length; offset++) {
- const code = source.charCodeAt(offset);
-
- switch (charCodeDefinitions.charCodeCategory(code)) {
- // ending code point
- case endingCodePoint:
- // Return the <string-token>.
- offset++;
- return;
-
- // EOF
- // case EofCategory:
- // This is a parse error. Return the <string-token>.
- // return;
-
- // newline
- case charCodeDefinitions.WhiteSpaceCategory:
- if (charCodeDefinitions.isNewline(code)) {
- // This is a parse error. Reconsume the current input code point,
- // create a <bad-string-token>, and return it.
- offset += utils.getNewlineLength(source, offset, code);
- type = types.BadString;
- return;
- }
- break;
-
- // U+005C REVERSE SOLIDUS (\)
- case 0x005C:
- // If the next input code point is EOF, do nothing.
- if (offset === source.length - 1) {
- break;
- }
-
- const nextCode = getCharCode(offset + 1);
-
- // Otherwise, if the next input code point is a newline, consume it.
- if (charCodeDefinitions.isNewline(nextCode)) {
- offset += utils.getNewlineLength(source, offset + 1, nextCode);
- } else if (charCodeDefinitions.isValidEscape(code, nextCode)) {
- // Otherwise, (the stream starts with a valid escape) consume
- // an escaped code point and append the returned code point to
- // the <string-token>’s value.
- offset = utils.consumeEscaped(source, offset) - 1;
- }
- break;
-
- // anything else
- // Append the current input code point to the <string-token>’s value.
- }
- }
- }
-
- // § 4.3.6. Consume a url token
- // Note: This algorithm assumes that the initial "url(" has already been consumed.
- // This algorithm also assumes that it’s being called to consume an "unquoted" value, like url(foo).
- // A quoted value, like url("foo"), is parsed as a <function-token>. Consume an ident-like token
- // automatically handles this distinction; this algorithm shouldn’t be called directly otherwise.
- function consumeUrlToken() {
- // Initially create a <url-token> with its value set to the empty string.
- type = types.Url;
-
- // Consume as much whitespace as possible.
- offset = utils.findWhiteSpaceEnd(source, offset);
-
- // Repeatedly consume the next input code point from the stream:
- for (; offset < source.length; offset++) {
- const code = source.charCodeAt(offset);
-
- switch (charCodeDefinitions.charCodeCategory(code)) {
- // U+0029 RIGHT PARENTHESIS ())
- case 0x0029:
- // Return the <url-token>.
- offset++;
- return;
-
- // EOF
- // case EofCategory:
- // This is a parse error. Return the <url-token>.
- // return;
-
- // whitespace
- case charCodeDefinitions.WhiteSpaceCategory:
- // Consume as much whitespace as possible.
- offset = utils.findWhiteSpaceEnd(source, offset);
-
- // If the next input code point is U+0029 RIGHT PARENTHESIS ()) or EOF,
- // consume it and return the <url-token>
- // (if EOF was encountered, this is a parse error);
- if (getCharCode(offset) === 0x0029 || offset >= source.length) {
- if (offset < source.length) {
- offset++;
- }
- return;
- }
-
- // otherwise, consume the remnants of a bad url, create a <bad-url-token>,
- // and return it.
- offset = utils.consumeBadUrlRemnants(source, offset);
- type = types.BadUrl;
- return;
-
- // U+0022 QUOTATION MARK (")
- // U+0027 APOSTROPHE (')
- // U+0028 LEFT PARENTHESIS (()
- // non-printable code point
- case 0x0022:
- case 0x0027:
- case 0x0028:
- case charCodeDefinitions.NonPrintableCategory:
- // This is a parse error. Consume the remnants of a bad url,
- // create a <bad-url-token>, and return it.
- offset = utils.consumeBadUrlRemnants(source, offset);
- type = types.BadUrl;
- return;
-
- // U+005C REVERSE SOLIDUS (\)
- case 0x005C:
- // If the stream starts with a valid escape, consume an escaped code point and
- // append the returned code point to the <url-token>’s value.
- if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {
- offset = utils.consumeEscaped(source, offset) - 1;
- break;
- }
-
- // Otherwise, this is a parse error. Consume the remnants of a bad url,
- // create a <bad-url-token>, and return it.
- offset = utils.consumeBadUrlRemnants(source, offset);
- type = types.BadUrl;
- return;
-
- // anything else
- // Append the current input code point to the <url-token>’s value.
- }
- }
- }
-
- // ensure source is a string
- source = String(source || '');
-
- const sourceLength = source.length;
- let start = charCodeDefinitions.isBOM(getCharCode(0));
- let offset = start;
- let type;
-
- // https://drafts.csswg.org/css-syntax-3/#consume-token
- // § 4.3.1. Consume a token
- while (offset < sourceLength) {
- const code = source.charCodeAt(offset);
-
- switch (charCodeDefinitions.charCodeCategory(code)) {
- // whitespace
- case charCodeDefinitions.WhiteSpaceCategory:
- // Consume as much whitespace as possible. Return a <whitespace-token>.
- type = types.WhiteSpace;
- offset = utils.findWhiteSpaceEnd(source, offset + 1);
- break;
-
- // U+0022 QUOTATION MARK (")
- case 0x0022:
- // Consume a string token and return it.
- consumeStringToken();
- break;
-
- // U+0023 NUMBER SIGN (#)
- case 0x0023:
- // If the next input code point is a name code point or the next two input code points are a valid escape, then:
- if (charCodeDefinitions.isName(getCharCode(offset + 1)) || charCodeDefinitions.isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) {
- // Create a <hash-token>.
- type = types.Hash;
-
- // If the next 3 input code points would start an identifier, set the <hash-token>’s type flag to "id".
- // if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {
- // // TODO: set id flag
- // }
-
- // Consume a name, and set the <hash-token>’s value to the returned string.
- offset = utils.consumeName(source, offset + 1);
-
- // Return the <hash-token>.
- } else {
- // Otherwise, return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
-
- break;
-
- // U+0027 APOSTROPHE (')
- case 0x0027:
- // Consume a string token and return it.
- consumeStringToken();
- break;
-
- // U+0028 LEFT PARENTHESIS (()
- case 0x0028:
- // Return a <(-token>.
- type = types.LeftParenthesis;
- offset++;
- break;
-
- // U+0029 RIGHT PARENTHESIS ())
- case 0x0029:
- // Return a <)-token>.
- type = types.RightParenthesis;
- offset++;
- break;
-
- // U+002B PLUS SIGN (+)
- case 0x002B:
- // If the input stream starts with a number, ...
- if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
- // ... reconsume the current input code point, consume a numeric token, and return it.
- consumeNumericToken();
- } else {
- // Otherwise, return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
- break;
-
- // U+002C COMMA (,)
- case 0x002C:
- // Return a <comma-token>.
- type = types.Comma;
- offset++;
- break;
-
- // U+002D HYPHEN-MINUS (-)
- case 0x002D:
- // If the input stream starts with a number, reconsume the current input code point, consume a numeric token, and return it.
- if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
- consumeNumericToken();
- } else {
- // Otherwise, if the next 2 input code points are U+002D HYPHEN-MINUS U+003E GREATER-THAN SIGN (->), consume them and return a <CDC-token>.
- if (getCharCode(offset + 1) === 0x002D &&
- getCharCode(offset + 2) === 0x003E) {
- type = types.CDC;
- offset = offset + 3;
- } else {
- // Otherwise, if the input stream starts with an identifier, ...
- if (charCodeDefinitions.isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
- // ... reconsume the current input code point, consume an ident-like token, and return it.
- consumeIdentLikeToken();
- } else {
- // Otherwise, return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
- }
- }
- break;
-
- // U+002E FULL STOP (.)
- case 0x002E:
- // If the input stream starts with a number, ...
- if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
- // ... reconsume the current input code point, consume a numeric token, and return it.
- consumeNumericToken();
- } else {
- // Otherwise, return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
-
- break;
-
- // U+002F SOLIDUS (/)
- case 0x002F:
- // If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*),
- if (getCharCode(offset + 1) === 0x002A) {
- // ... consume them and all following code points up to and including the first U+002A ASTERISK (*)
- // followed by a U+002F SOLIDUS (/), or up to an EOF code point.
- type = types.Comment;
- offset = source.indexOf('*/', offset + 2);
- offset = offset === -1 ? source.length : offset + 2;
- } else {
- type = types.Delim;
- offset++;
- }
- break;
-
- // U+003A COLON (:)
- case 0x003A:
- // Return a <colon-token>.
- type = types.Colon;
- offset++;
- break;
-
- // U+003B SEMICOLON (;)
- case 0x003B:
- // Return a <semicolon-token>.
- type = types.Semicolon;
- offset++;
- break;
-
- // U+003C LESS-THAN SIGN (<)
- case 0x003C:
- // If the next 3 input code points are U+0021 EXCLAMATION MARK U+002D HYPHEN-MINUS U+002D HYPHEN-MINUS (!--), ...
- if (getCharCode(offset + 1) === 0x0021 &&
- getCharCode(offset + 2) === 0x002D &&
- getCharCode(offset + 3) === 0x002D) {
- // ... consume them and return a <CDO-token>.
- type = types.CDO;
- offset = offset + 4;
- } else {
- // Otherwise, return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
-
- break;
-
- // U+0040 COMMERCIAL AT (@)
- case 0x0040:
- // If the next 3 input code points would start an identifier, ...
- if (charCodeDefinitions.isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {
- // ... consume a name, create an <at-keyword-token> with its value set to the returned value, and return it.
- type = types.AtKeyword;
- offset = utils.consumeName(source, offset + 1);
- } else {
- // Otherwise, return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
-
- break;
-
- // U+005B LEFT SQUARE BRACKET ([)
- case 0x005B:
- // Return a <[-token>.
- type = types.LeftSquareBracket;
- offset++;
- break;
-
- // U+005C REVERSE SOLIDUS (\)
- case 0x005C:
- // If the input stream starts with a valid escape, ...
- if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {
- // ... reconsume the current input code point, consume an ident-like token, and return it.
- consumeIdentLikeToken();
- } else {
- // Otherwise, this is a parse error. Return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
- break;
-
- // U+005D RIGHT SQUARE BRACKET (])
- case 0x005D:
- // Return a <]-token>.
- type = types.RightSquareBracket;
- offset++;
- break;
-
- // U+007B LEFT CURLY BRACKET ({)
- case 0x007B:
- // Return a <{-token>.
- type = types.LeftCurlyBracket;
- offset++;
- break;
-
- // U+007D RIGHT CURLY BRACKET (})
- case 0x007D:
- // Return a <}-token>.
- type = types.RightCurlyBracket;
- offset++;
- break;
-
- // digit
- case charCodeDefinitions.DigitCategory:
- // Reconsume the current input code point, consume a numeric token, and return it.
- consumeNumericToken();
- break;
-
- // name-start code point
- case charCodeDefinitions.NameStartCategory:
- // Reconsume the current input code point, consume an ident-like token, and return it.
- consumeIdentLikeToken();
- break;
-
- // EOF
- // case EofCategory:
- // Return an <EOF-token>.
- // break;
-
- // anything else
- default:
- // Return a <delim-token> with its value set to the current input code point.
- type = types.Delim;
- offset++;
- }
-
- // put token to stream
- onToken(type, start, start = offset);
- }
-}
-
-exports.AtKeyword = types.AtKeyword;
-exports.BadString = types.BadString;
-exports.BadUrl = types.BadUrl;
-exports.CDC = types.CDC;
-exports.CDO = types.CDO;
-exports.Colon = types.Colon;
-exports.Comma = types.Comma;
-exports.Comment = types.Comment;
-exports.Delim = types.Delim;
-exports.Dimension = types.Dimension;
-exports.EOF = types.EOF;
-exports.Function = types.Function;
-exports.Hash = types.Hash;
-exports.Ident = types.Ident;
-exports.LeftCurlyBracket = types.LeftCurlyBracket;
-exports.LeftParenthesis = types.LeftParenthesis;
-exports.LeftSquareBracket = types.LeftSquareBracket;
-exports.Number = types.Number;
-exports.Percentage = types.Percentage;
-exports.RightCurlyBracket = types.RightCurlyBracket;
-exports.RightParenthesis = types.RightParenthesis;
-exports.RightSquareBracket = types.RightSquareBracket;
-exports.Semicolon = types.Semicolon;
-exports.String = types.String;
-exports.Url = types.Url;
-exports.WhiteSpace = types.WhiteSpace;
-exports.tokenTypes = types;
-exports.DigitCategory = charCodeDefinitions.DigitCategory;
-exports.EofCategory = charCodeDefinitions.EofCategory;
-exports.NameStartCategory = charCodeDefinitions.NameStartCategory;
-exports.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory;
-exports.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory;
-exports.charCodeCategory = charCodeDefinitions.charCodeCategory;
-exports.isBOM = charCodeDefinitions.isBOM;
-exports.isDigit = charCodeDefinitions.isDigit;
-exports.isHexDigit = charCodeDefinitions.isHexDigit;
-exports.isIdentifierStart = charCodeDefinitions.isIdentifierStart;
-exports.isLetter = charCodeDefinitions.isLetter;
-exports.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter;
-exports.isName = charCodeDefinitions.isName;
-exports.isNameStart = charCodeDefinitions.isNameStart;
-exports.isNewline = charCodeDefinitions.isNewline;
-exports.isNonAscii = charCodeDefinitions.isNonAscii;
-exports.isNonPrintable = charCodeDefinitions.isNonPrintable;
-exports.isNumberStart = charCodeDefinitions.isNumberStart;
-exports.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter;
-exports.isValidEscape = charCodeDefinitions.isValidEscape;
-exports.isWhiteSpace = charCodeDefinitions.isWhiteSpace;
-exports.cmpChar = utils.cmpChar;
-exports.cmpStr = utils.cmpStr;
-exports.consumeBadUrlRemnants = utils.consumeBadUrlRemnants;
-exports.consumeEscaped = utils.consumeEscaped;
-exports.consumeName = utils.consumeName;
-exports.consumeNumber = utils.consumeNumber;
-exports.decodeEscaped = utils.decodeEscaped;
-exports.findDecimalNumberEnd = utils.findDecimalNumberEnd;
-exports.findWhiteSpaceEnd = utils.findWhiteSpaceEnd;
-exports.findWhiteSpaceStart = utils.findWhiteSpaceStart;
-exports.getNewlineLength = utils.getNewlineLength;
-exports.tokenNames = names;
-exports.OffsetToLocation = OffsetToLocation.OffsetToLocation;
-exports.TokenStream = TokenStream.TokenStream;
-exports.tokenize = tokenize;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/names.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/names.cjs
deleted file mode 100644
index 6900f98..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/names.cjs
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-const tokenNames = [
- 'EOF-token',
- 'ident-token',
- 'function-token',
- 'at-keyword-token',
- 'hash-token',
- 'string-token',
- 'bad-string-token',
- 'url-token',
- 'bad-url-token',
- 'delim-token',
- 'number-token',
- 'percentage-token',
- 'dimension-token',
- 'whitespace-token',
- 'CDO-token',
- 'CDC-token',
- 'colon-token',
- 'semicolon-token',
- 'comma-token',
- '[-token',
- ']-token',
- '(-token',
- ')-token',
- '{-token',
- '}-token',
- 'comment-token'
-];
-
-module.exports = tokenNames;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/types.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/types.cjs
deleted file mode 100644
index a89b810..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/types.cjs
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-// CSS Syntax Module Level 3
-// https://www.w3.org/TR/css-syntax-3/
-const EOF = 0; // <EOF-token>
-const Ident = 1; // <ident-token>
-const Function = 2; // <function-token>
-const AtKeyword = 3; // <at-keyword-token>
-const Hash = 4; // <hash-token>
-const String = 5; // <string-token>
-const BadString = 6; // <bad-string-token>
-const Url = 7; // <url-token>
-const BadUrl = 8; // <bad-url-token>
-const Delim = 9; // <delim-token>
-const Number = 10; // <number-token>
-const Percentage = 11; // <percentage-token>
-const Dimension = 12; // <dimension-token>
-const WhiteSpace = 13; // <whitespace-token>
-const CDO = 14; // <CDO-token>
-const CDC = 15; // <CDC-token>
-const Colon = 16; // <colon-token> :
-const Semicolon = 17; // <semicolon-token> ;
-const Comma = 18; // <comma-token> ,
-const LeftSquareBracket = 19; // <[-token>
-const RightSquareBracket = 20; // <]-token>
-const LeftParenthesis = 21; // <(-token>
-const RightParenthesis = 22; // <)-token>
-const LeftCurlyBracket = 23; // <{-token>
-const RightCurlyBracket = 24; // <}-token>
-const Comment = 25;
-
-exports.AtKeyword = AtKeyword;
-exports.BadString = BadString;
-exports.BadUrl = BadUrl;
-exports.CDC = CDC;
-exports.CDO = CDO;
-exports.Colon = Colon;
-exports.Comma = Comma;
-exports.Comment = Comment;
-exports.Delim = Delim;
-exports.Dimension = Dimension;
-exports.EOF = EOF;
-exports.Function = Function;
-exports.Hash = Hash;
-exports.Ident = Ident;
-exports.LeftCurlyBracket = LeftCurlyBracket;
-exports.LeftParenthesis = LeftParenthesis;
-exports.LeftSquareBracket = LeftSquareBracket;
-exports.Number = Number;
-exports.Percentage = Percentage;
-exports.RightCurlyBracket = RightCurlyBracket;
-exports.RightParenthesis = RightParenthesis;
-exports.RightSquareBracket = RightSquareBracket;
-exports.Semicolon = Semicolon;
-exports.String = String;
-exports.Url = Url;
-exports.WhiteSpace = WhiteSpace;
diff --git a/vanilla/node_modules/css-tree/cjs/tokenizer/utils.cjs b/vanilla/node_modules/css-tree/cjs/tokenizer/utils.cjs
deleted file mode 100644
index c3798e3..0000000
--- a/vanilla/node_modules/css-tree/cjs/tokenizer/utils.cjs
+++ /dev/null
@@ -1,261 +0,0 @@
-'use strict';
-
-const charCodeDefinitions = require('./char-code-definitions.cjs');
-
-function getCharCode(source, offset) {
- return offset < source.length ? source.charCodeAt(offset) : 0;
-}
-
-function getNewlineLength(source, offset, code) {
- if (code === 13 /* \r */ && getCharCode(source, offset + 1) === 10 /* \n */) {
- return 2;
- }
-
- return 1;
-}
-
-function cmpChar(testStr, offset, referenceCode) {
- let code = testStr.charCodeAt(offset);
-
- // code.toLowerCase() for A..Z
- if (charCodeDefinitions.isUppercaseLetter(code)) {
- code = code | 32;
- }
-
- return code === referenceCode;
-}
-
-function cmpStr(testStr, start, end, referenceStr) {
- if (end - start !== referenceStr.length) {
- return false;
- }
-
- if (start < 0 || end > testStr.length) {
- return false;
- }
-
- for (let i = start; i < end; i++) {
- const referenceCode = referenceStr.charCodeAt(i - start);
- let testCode = testStr.charCodeAt(i);
-
- // testCode.toLowerCase() for A..Z
- if (charCodeDefinitions.isUppercaseLetter(testCode)) {
- testCode = testCode | 32;
- }
-
- if (testCode !== referenceCode) {
- return false;
- }
- }
-
- return true;
-}
-
-function findWhiteSpaceStart(source, offset) {
- for (; offset >= 0; offset--) {
- if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {
- break;
- }
- }
-
- return offset + 1;
-}
-
-function findWhiteSpaceEnd(source, offset) {
- for (; offset < source.length; offset++) {
- if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {
- break;
- }
- }
-
- return offset;
-}
-
-function findDecimalNumberEnd(source, offset) {
- for (; offset < source.length; offset++) {
- if (!charCodeDefinitions.isDigit(source.charCodeAt(offset))) {
- break;
- }
- }
-
- return offset;
-}
-
-// § 4.3.7. Consume an escaped code point
-function consumeEscaped(source, offset) {
- // It assumes that the U+005C REVERSE SOLIDUS (\) has already been consumed and
- // that the next input code point has already been verified to be part of a valid escape.
- offset += 2;
-
- // hex digit
- if (charCodeDefinitions.isHexDigit(getCharCode(source, offset - 1))) {
- // Consume as many hex digits as possible, but no more than 5.
- // Note that this means 1-6 hex digits have been consumed in total.
- for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) {
- if (!charCodeDefinitions.isHexDigit(getCharCode(source, offset))) {
- break;
- }
- }
-
- // If the next input code point is whitespace, consume it as well.
- const code = getCharCode(source, offset);
- if (charCodeDefinitions.isWhiteSpace(code)) {
- offset += getNewlineLength(source, offset, code);
- }
- }
-
- return offset;
-}
-
-// §4.3.11. Consume a name
-// Note: This algorithm does not do the verification of the first few code points that are necessary
-// to ensure the returned code points would constitute an <ident-token>. If that is the intended use,
-// ensure that the stream starts with an identifier before calling this algorithm.
-function consumeName(source, offset) {
- // Let result initially be an empty string.
- // Repeatedly consume the next input code point from the stream:
- for (; offset < source.length; offset++) {
- const code = source.charCodeAt(offset);
-
- // name code point
- if (charCodeDefinitions.isName(code)) {
- // Append the code point to result.
- continue;
- }
-
- // the stream starts with a valid escape
- if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {
- // Consume an escaped code point. Append the returned code point to result.
- offset = consumeEscaped(source, offset) - 1;
- continue;
- }
-
- // anything else
- // Reconsume the current input code point. Return result.
- break;
- }
-
- return offset;
-}
-
-// §4.3.12. Consume a number
-function consumeNumber(source, offset) {
- let code = source.charCodeAt(offset);
-
- // 2. If the next input code point is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-),
- // consume it and append it to repr.
- if (code === 0x002B || code === 0x002D) {
- code = source.charCodeAt(offset += 1);
- }
-
- // 3. While the next input code point is a digit, consume it and append it to repr.
- if (charCodeDefinitions.isDigit(code)) {
- offset = findDecimalNumberEnd(source, offset + 1);
- code = source.charCodeAt(offset);
- }
-
- // 4. If the next 2 input code points are U+002E FULL STOP (.) followed by a digit, then:
- if (code === 0x002E && charCodeDefinitions.isDigit(source.charCodeAt(offset + 1))) {
- // 4.1 Consume them.
- // 4.2 Append them to repr.
- offset += 2;
-
- // 4.3 Set type to "number".
- // TODO
-
- // 4.4 While the next input code point is a digit, consume it and append it to repr.
-
- offset = findDecimalNumberEnd(source, offset);
- }
-
- // 5. If the next 2 or 3 input code points are U+0045 LATIN CAPITAL LETTER E (E)
- // or U+0065 LATIN SMALL LETTER E (e), ... , followed by a digit, then:
- if (cmpChar(source, offset, 101 /* e */)) {
- let sign = 0;
- code = source.charCodeAt(offset + 1);
-
- // ... optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+) ...
- if (code === 0x002D || code === 0x002B) {
- sign = 1;
- code = source.charCodeAt(offset + 2);
- }
-
- // ... followed by a digit
- if (charCodeDefinitions.isDigit(code)) {
- // 5.1 Consume them.
- // 5.2 Append them to repr.
-
- // 5.3 Set type to "number".
- // TODO
-
- // 5.4 While the next input code point is a digit, consume it and append it to repr.
- offset = findDecimalNumberEnd(source, offset + 1 + sign + 1);
- }
- }
-
- return offset;
-}
-
-// § 4.3.14. Consume the remnants of a bad url
-// ... its sole use is to consume enough of the input stream to reach a recovery point
-// where normal tokenizing can resume.
-function consumeBadUrlRemnants(source, offset) {
- // Repeatedly consume the next input code point from the stream:
- for (; offset < source.length; offset++) {
- const code = source.charCodeAt(offset);
-
- // U+0029 RIGHT PARENTHESIS ())
- // EOF
- if (code === 0x0029) {
- // Return.
- offset++;
- break;
- }
-
- if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {
- // Consume an escaped code point.
- // Note: This allows an escaped right parenthesis ("\)") to be encountered
- // without ending the <bad-url-token>. This is otherwise identical to
- // the "anything else" clause.
- offset = consumeEscaped(source, offset);
- }
- }
-
- return offset;
-}
-
-// § 4.3.7. Consume an escaped code point
-// Note: This algorithm assumes that escaped is valid without leading U+005C REVERSE SOLIDUS (\)
-function decodeEscaped(escaped) {
- // Single char escaped that's not a hex digit
- if (escaped.length === 1 && !charCodeDefinitions.isHexDigit(escaped.charCodeAt(0))) {
- return escaped[0];
- }
-
- // Interpret the hex digits as a hexadecimal number.
- let code = parseInt(escaped, 16);
-
- if (
- (code === 0) || // If this number is zero,
- (code >= 0xD800 && code <= 0xDFFF) || // or is for a surrogate,
- (code > 0x10FFFF) // or is greater than the maximum allowed code point
- ) {
- // ... return U+FFFD REPLACEMENT CHARACTER
- code = 0xFFFD;
- }
-
- // Otherwise, return the code point with that value.
- return String.fromCodePoint(code);
-}
-
-exports.cmpChar = cmpChar;
-exports.cmpStr = cmpStr;
-exports.consumeBadUrlRemnants = consumeBadUrlRemnants;
-exports.consumeEscaped = consumeEscaped;
-exports.consumeName = consumeName;
-exports.consumeNumber = consumeNumber;
-exports.decodeEscaped = decodeEscaped;
-exports.findDecimalNumberEnd = findDecimalNumberEnd;
-exports.findWhiteSpaceEnd = findWhiteSpaceEnd;
-exports.findWhiteSpaceStart = findWhiteSpaceStart;
-exports.getNewlineLength = getNewlineLength;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/List.cjs b/vanilla/node_modules/css-tree/cjs/utils/List.cjs
deleted file mode 100644
index ec25f46..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/List.cjs
+++ /dev/null
@@ -1,473 +0,0 @@
-'use strict';
-
-//
-// list
-// ┌──────┐
-// ┌──────────────┼─head │
-// │ │ tail─┼──────────────┐
-// │ └──────┘ │
-// ▼ ▼
-// item item item item
-// ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
-// null ◀──┼─prev │◀───┼─prev │◀───┼─prev │◀───┼─prev │
-// │ next─┼───▶│ next─┼───▶│ next─┼───▶│ next─┼──▶ null
-// ├──────┤ ├──────┤ ├──────┤ ├──────┤
-// │ data │ │ data │ │ data │ │ data │
-// └──────┘ └──────┘ └──────┘ └──────┘
-//
-
-let releasedCursors = null;
-
-class List {
- static createItem(data) {
- return {
- prev: null,
- next: null,
- data
- };
- }
-
- constructor() {
- this.head = null;
- this.tail = null;
- this.cursor = null;
- }
- createItem(data) {
- return List.createItem(data);
- }
-
- // cursor helpers
- allocateCursor(prev, next) {
- let cursor;
-
- if (releasedCursors !== null) {
- cursor = releasedCursors;
- releasedCursors = releasedCursors.cursor;
- cursor.prev = prev;
- cursor.next = next;
- cursor.cursor = this.cursor;
- } else {
- cursor = {
- prev,
- next,
- cursor: this.cursor
- };
- }
-
- this.cursor = cursor;
-
- return cursor;
- }
- releaseCursor() {
- const { cursor } = this;
-
- this.cursor = cursor.cursor;
- cursor.prev = null;
- cursor.next = null;
- cursor.cursor = releasedCursors;
- releasedCursors = cursor;
- }
- updateCursors(prevOld, prevNew, nextOld, nextNew) {
- let { cursor } = this;
-
- while (cursor !== null) {
- if (cursor.prev === prevOld) {
- cursor.prev = prevNew;
- }
-
- if (cursor.next === nextOld) {
- cursor.next = nextNew;
- }
-
- cursor = cursor.cursor;
- }
- }
- *[Symbol.iterator]() {
- for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
- yield cursor.data;
- }
- }
-
- // getters
- get size() {
- let size = 0;
-
- for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
- size++;
- }
-
- return size;
- }
- get isEmpty() {
- return this.head === null;
- }
- get first() {
- return this.head && this.head.data;
- }
- get last() {
- return this.tail && this.tail.data;
- }
-
- // convertors
- fromArray(array) {
- let cursor = null;
- this.head = null;
-
- for (let data of array) {
- const item = List.createItem(data);
-
- if (cursor !== null) {
- cursor.next = item;
- } else {
- this.head = item;
- }
-
- item.prev = cursor;
- cursor = item;
- }
-
- this.tail = cursor;
- return this;
- }
- toArray() {
- return [...this];
- }
- toJSON() {
- return [...this];
- }
-
- // array-like methods
- forEach(fn, thisArg = this) {
- // push cursor
- const cursor = this.allocateCursor(null, this.head);
-
- while (cursor.next !== null) {
- const item = cursor.next;
- cursor.next = item.next;
- fn.call(thisArg, item.data, item, this);
- }
-
- // pop cursor
- this.releaseCursor();
- }
- forEachRight(fn, thisArg = this) {
- // push cursor
- const cursor = this.allocateCursor(this.tail, null);
-
- while (cursor.prev !== null) {
- const item = cursor.prev;
- cursor.prev = item.prev;
- fn.call(thisArg, item.data, item, this);
- }
-
- // pop cursor
- this.releaseCursor();
- }
- reduce(fn, initialValue, thisArg = this) {
- // push cursor
- let cursor = this.allocateCursor(null, this.head);
- let acc = initialValue;
- let item;
-
- while (cursor.next !== null) {
- item = cursor.next;
- cursor.next = item.next;
-
- acc = fn.call(thisArg, acc, item.data, item, this);
- }
-
- // pop cursor
- this.releaseCursor();
-
- return acc;
- }
- reduceRight(fn, initialValue, thisArg = this) {
- // push cursor
- let cursor = this.allocateCursor(this.tail, null);
- let acc = initialValue;
- let item;
-
- while (cursor.prev !== null) {
- item = cursor.prev;
- cursor.prev = item.prev;
-
- acc = fn.call(thisArg, acc, item.data, item, this);
- }
-
- // pop cursor
- this.releaseCursor();
-
- return acc;
- }
- some(fn, thisArg = this) {
- for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
- if (fn.call(thisArg, cursor.data, cursor, this)) {
- return true;
- }
- }
-
- return false;
- }
- map(fn, thisArg = this) {
- const result = new List();
-
- for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
- result.appendData(fn.call(thisArg, cursor.data, cursor, this));
- }
-
- return result;
- }
- filter(fn, thisArg = this) {
- const result = new List();
-
- for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
- if (fn.call(thisArg, cursor.data, cursor, this)) {
- result.appendData(cursor.data);
- }
- }
-
- return result;
- }
-
- nextUntil(start, fn, thisArg = this) {
- if (start === null) {
- return;
- }
-
- // push cursor
- const cursor = this.allocateCursor(null, start);
-
- while (cursor.next !== null) {
- const item = cursor.next;
- cursor.next = item.next;
- if (fn.call(thisArg, item.data, item, this)) {
- break;
- }
- }
-
- // pop cursor
- this.releaseCursor();
- }
- prevUntil(start, fn, thisArg = this) {
- if (start === null) {
- return;
- }
-
- // push cursor
- const cursor = this.allocateCursor(start, null);
-
- while (cursor.prev !== null) {
- const item = cursor.prev;
- cursor.prev = item.prev;
- if (fn.call(thisArg, item.data, item, this)) {
- break;
- }
- }
-
- // pop cursor
- this.releaseCursor();
- }
-
- // mutation
- clear() {
- this.head = null;
- this.tail = null;
- }
- copy() {
- const result = new List();
-
- for (let data of this) {
- result.appendData(data);
- }
-
- return result;
- }
- prepend(item) {
- // head
- // ^
- // item
- this.updateCursors(null, item, this.head, item);
-
- // insert to the beginning of the list
- if (this.head !== null) {
- // new item <- first item
- this.head.prev = item;
- // new item -> first item
- item.next = this.head;
- } else {
- // if list has no head, then it also has no tail
- // in this case tail points to the new item
- this.tail = item;
- }
-
- // head always points to new item
- this.head = item;
- return this;
- }
- prependData(data) {
- return this.prepend(List.createItem(data));
- }
- append(item) {
- return this.insert(item);
- }
- appendData(data) {
- return this.insert(List.createItem(data));
- }
- insert(item, before = null) {
- if (before !== null) {
- // prev before
- // ^
- // item
- this.updateCursors(before.prev, item, before, item);
-
- if (before.prev === null) {
- // insert to the beginning of list
- if (this.head !== before) {
- throw new Error('before doesn\'t belong to list');
- }
- // since head points to before therefore list doesn't empty
- // no need to check tail
- this.head = item;
- before.prev = item;
- item.next = before;
- this.updateCursors(null, item);
- } else {
- // insert between two items
- before.prev.next = item;
- item.prev = before.prev;
- before.prev = item;
- item.next = before;
- }
- } else {
- // tail
- // ^
- // item
- this.updateCursors(this.tail, item, null, item);
-
- // insert to the ending of the list
- if (this.tail !== null) {
- // last item -> new item
- this.tail.next = item;
- // last item <- new item
- item.prev = this.tail;
- } else {
- // if list has no tail, then it also has no head
- // in this case head points to new item
- this.head = item;
- }
-
- // tail always points to new item
- this.tail = item;
- }
-
- return this;
- }
- insertData(data, before) {
- return this.insert(List.createItem(data), before);
- }
- remove(item) {
- // item
- // ^
- // prev next
- this.updateCursors(item, item.prev, item, item.next);
-
- if (item.prev !== null) {
- item.prev.next = item.next;
- } else {
- if (this.head !== item) {
- throw new Error('item doesn\'t belong to list');
- }
-
- this.head = item.next;
- }
-
- if (item.next !== null) {
- item.next.prev = item.prev;
- } else {
- if (this.tail !== item) {
- throw new Error('item doesn\'t belong to list');
- }
-
- this.tail = item.prev;
- }
-
- item.prev = null;
- item.next = null;
-
- return item;
- }
- push(data) {
- this.insert(List.createItem(data));
- }
- pop() {
- return this.tail !== null ? this.remove(this.tail) : null;
- }
- unshift(data) {
- this.prepend(List.createItem(data));
- }
- shift() {
- return this.head !== null ? this.remove(this.head) : null;
- }
- prependList(list) {
- return this.insertList(list, this.head);
- }
- appendList(list) {
- return this.insertList(list);
- }
- insertList(list, before) {
- // ignore empty lists
- if (list.head === null) {
- return this;
- }
-
- if (before !== undefined && before !== null) {
- this.updateCursors(before.prev, list.tail, before, list.head);
-
- // insert in the middle of dist list
- if (before.prev !== null) {
- // before.prev <-> list.head
- before.prev.next = list.head;
- list.head.prev = before.prev;
- } else {
- this.head = list.head;
- }
-
- before.prev = list.tail;
- list.tail.next = before;
- } else {
- this.updateCursors(this.tail, list.tail, null, list.head);
-
- // insert to end of the list
- if (this.tail !== null) {
- // if destination list has a tail, then it also has a head,
- // but head doesn't change
- // dest tail -> source head
- this.tail.next = list.head;
- // dest tail <- source head
- list.head.prev = this.tail;
- } else {
- // if list has no a tail, then it also has no a head
- // in this case points head to new item
- this.head = list.head;
- }
-
- // tail always start point to new item
- this.tail = list.tail;
- }
-
- list.head = null;
- list.tail = null;
- return this;
- }
- replace(oldItem, newItemOrList) {
- if ('head' in newItemOrList) {
- this.insertList(newItemOrList, oldItem);
- } else {
- this.insert(newItemOrList, oldItem);
- }
-
- this.remove(oldItem);
- }
-}
-
-exports.List = List;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/clone.cjs b/vanilla/node_modules/css-tree/cjs/utils/clone.cjs
deleted file mode 100644
index 41d5edb..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/clone.cjs
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict';
-
-const List = require('./List.cjs');
-
-function clone(node) {
- const result = {};
-
- for (const key of Object.keys(node)) {
- let value = node[key];
-
- if (value) {
- if (Array.isArray(value) || value instanceof List.List) {
- value = value.map(clone);
- } else if (value.constructor === Object) {
- value = clone(value);
- }
- }
-
- result[key] = value;
- }
-
- return result;
-}
-
-exports.clone = clone;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/create-custom-error.cjs b/vanilla/node_modules/css-tree/cjs/utils/create-custom-error.cjs
deleted file mode 100644
index d1d3e53..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/create-custom-error.cjs
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-function createCustomError(name, message) {
- // use Object.create(), because some VMs prevent setting line/column otherwise
- // (iOS Safari 10 even throws an exception)
- const error = Object.create(SyntaxError.prototype);
- const errorStack = new Error();
-
- return Object.assign(error, {
- name,
- message,
- get stack() {
- return (errorStack.stack || '').replace(/^(.+\n){1,3}/, `${name}: ${message}\n`);
- }
- });
-}
-
-exports.createCustomError = createCustomError;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/ident.cjs b/vanilla/node_modules/css-tree/cjs/utils/ident.cjs
deleted file mode 100644
index cd70911..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/ident.cjs
+++ /dev/null
@@ -1,102 +0,0 @@
-'use strict';
-
-const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
-const utils = require('../tokenizer/utils.cjs');
-
-const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\)
-
-function decode(str) {
- const end = str.length - 1;
- let decoded = '';
-
- for (let i = 0; i < str.length; i++) {
- let code = str.charCodeAt(i);
-
- if (code === REVERSE_SOLIDUS) {
- // special case at the ending
- if (i === end) {
- // if the next input code point is EOF, do nothing
- break;
- }
-
- code = str.charCodeAt(++i);
-
- // consume escaped
- if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
- const escapeStart = i - 1;
- const escapeEnd = utils.consumeEscaped(str, escapeStart);
-
- i = escapeEnd - 1;
- decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
- } else {
- // \r\n
- if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {
- i++;
- }
- }
- } else {
- decoded += str[i];
- }
- }
-
- return decoded;
-}
-
-// https://drafts.csswg.org/cssom/#serialize-an-identifier
-// § 2.1. Common Serializing Idioms
-function encode(str) {
- let encoded = '';
-
- // If the character is the first character and is a "-" (U+002D),
- // and there is no second character, then the escaped character.
- // Note: That's means a single dash string "-" return as escaped dash,
- // so move the condition out of the main loop
- if (str.length === 1 && str.charCodeAt(0) === 0x002D) {
- return '\\-';
- }
-
- // To serialize an identifier means to create a string represented
- // by the concatenation of, for each character of the identifier:
- for (let i = 0; i < str.length; i++) {
- const code = str.charCodeAt(i);
-
- // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).
- if (code === 0x0000) {
- encoded += '\uFFFD';
- continue;
- }
-
- if (
- // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F ...
- // Note: Do not compare with 0x0001 since 0x0000 is precessed before
- code <= 0x001F || code === 0x007F ||
- // [or] ... is in the range [0-9] (U+0030 to U+0039),
- (code >= 0x0030 && code <= 0x0039 && (
- // If the character is the first character ...
- i === 0 ||
- // If the character is the second character ... and the first character is a "-" (U+002D)
- i === 1 && str.charCodeAt(0) === 0x002D
- ))
- ) {
- // ... then the character escaped as code point.
- encoded += '\\' + code.toString(16) + ' ';
- continue;
- }
-
- // If the character is not handled by one of the above rules and is greater
- // than or equal to U+0080, is "-" (U+002D) or "_" (U+005F), or is in one
- // of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to U+005A),
- // or \[a-z] (U+0061 to U+007A), then the character itself.
- if (charCodeDefinitions.isName(code)) {
- encoded += str.charAt(i);
- } else {
- // Otherwise, the escaped character.
- encoded += '\\' + str.charAt(i);
- }
- }
-
- return encoded;
-}
-
-exports.decode = decode;
-exports.encode = encode;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/index.cjs b/vanilla/node_modules/css-tree/cjs/utils/index.cjs
deleted file mode 100644
index cdae621..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/index.cjs
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-const clone = require('./clone.cjs');
-const ident = require('./ident.cjs');
-const List = require('./List.cjs');
-const names = require('./names.cjs');
-const string = require('./string.cjs');
-const url = require('./url.cjs');
-
-
-
-exports.clone = clone.clone;
-exports.ident = ident;
-exports.List = List.List;
-exports.isCustomProperty = names.isCustomProperty;
-exports.keyword = names.keyword;
-exports.property = names.property;
-exports.vendorPrefix = names.vendorPrefix;
-exports.string = string;
-exports.url = url;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/names.cjs b/vanilla/node_modules/css-tree/cjs/utils/names.cjs
deleted file mode 100644
index 92c73c7..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/names.cjs
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-const keywords = new Map();
-const properties = new Map();
-const HYPHENMINUS = 45; // '-'.charCodeAt()
-
-const keyword = getKeywordDescriptor;
-const property = getPropertyDescriptor;
-const vendorPrefix = getVendorPrefix;
-function isCustomProperty(str, offset) {
- offset = offset || 0;
-
- return str.length - offset >= 2 &&
- str.charCodeAt(offset) === HYPHENMINUS &&
- str.charCodeAt(offset + 1) === HYPHENMINUS;
-}
-
-function getVendorPrefix(str, offset) {
- offset = offset || 0;
-
- // verdor prefix should be at least 3 chars length
- if (str.length - offset >= 3) {
- // vendor prefix starts with hyper minus following non-hyper minus
- if (str.charCodeAt(offset) === HYPHENMINUS &&
- str.charCodeAt(offset + 1) !== HYPHENMINUS) {
- // vendor prefix should contain a hyper minus at the ending
- const secondDashIndex = str.indexOf('-', offset + 2);
-
- if (secondDashIndex !== -1) {
- return str.substring(offset, secondDashIndex + 1);
- }
- }
- }
-
- return '';
-}
-
-function getKeywordDescriptor(keyword) {
- if (keywords.has(keyword)) {
- return keywords.get(keyword);
- }
-
- const name = keyword.toLowerCase();
- let descriptor = keywords.get(name);
-
- if (descriptor === undefined) {
- const custom = isCustomProperty(name, 0);
- const vendor = !custom ? getVendorPrefix(name, 0) : '';
- descriptor = Object.freeze({
- basename: name.substr(vendor.length),
- name,
- prefix: vendor,
- vendor,
- custom
- });
- }
-
- keywords.set(keyword, descriptor);
-
- return descriptor;
-}
-
-function getPropertyDescriptor(property) {
- if (properties.has(property)) {
- return properties.get(property);
- }
-
- let name = property;
- let hack = property[0];
-
- if (hack === '/') {
- hack = property[1] === '/' ? '//' : '/';
- } else if (hack !== '_' &&
- hack !== '*' &&
- hack !== '$' &&
- hack !== '#' &&
- hack !== '+' &&
- hack !== '&') {
- hack = '';
- }
-
- const custom = isCustomProperty(name, hack.length);
-
- // re-use result when possible (the same as for lower case)
- if (!custom) {
- name = name.toLowerCase();
- if (properties.has(name)) {
- const descriptor = properties.get(name);
- properties.set(property, descriptor);
- return descriptor;
- }
- }
-
- const vendor = !custom ? getVendorPrefix(name, hack.length) : '';
- const prefix = name.substr(0, hack.length + vendor.length);
- const descriptor = Object.freeze({
- basename: name.substr(prefix.length),
- name: name.substr(hack.length),
- hack,
- vendor,
- prefix,
- custom
- });
-
- properties.set(property, descriptor);
-
- return descriptor;
-}
-
-exports.isCustomProperty = isCustomProperty;
-exports.keyword = keyword;
-exports.property = property;
-exports.vendorPrefix = vendorPrefix;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/string.cjs b/vanilla/node_modules/css-tree/cjs/utils/string.cjs
deleted file mode 100644
index d9c5d01..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/string.cjs
+++ /dev/null
@@ -1,99 +0,0 @@
-'use strict';
-
-const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
-const utils = require('../tokenizer/utils.cjs');
-
-const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\)
-const QUOTATION_MARK = 0x0022; // "
-const APOSTROPHE = 0x0027; // '
-
-function decode(str) {
- const len = str.length;
- const firstChar = str.charCodeAt(0);
- const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0;
- const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1;
- let decoded = '';
-
- for (let i = start; i <= end; i++) {
- let code = str.charCodeAt(i);
-
- if (code === REVERSE_SOLIDUS) {
- // special case at the ending
- if (i === end) {
- // if the next input code point is EOF, do nothing
- // otherwise include last quote as escaped
- if (i !== len - 1) {
- decoded = str.substr(i + 1);
- }
- break;
- }
-
- code = str.charCodeAt(++i);
-
- // consume escaped
- if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
- const escapeStart = i - 1;
- const escapeEnd = utils.consumeEscaped(str, escapeStart);
-
- i = escapeEnd - 1;
- decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
- } else {
- // \r\n
- if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {
- i++;
- }
- }
- } else {
- decoded += str[i];
- }
- }
-
- return decoded;
-}
-
-// https://drafts.csswg.org/cssom/#serialize-a-string
-// § 2.1. Common Serializing Idioms
-function encode(str, apostrophe) {
- const quote = apostrophe ? '\'' : '"';
- const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK;
- let encoded = '';
- let wsBeforeHexIsNeeded = false;
-
- for (let i = 0; i < str.length; i++) {
- const code = str.charCodeAt(i);
-
- // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).
- if (code === 0x0000) {
- encoded += '\uFFFD';
- continue;
- }
-
- // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F,
- // the character escaped as code point.
- // Note: Do not compare with 0x0001 since 0x0000 is precessed before
- if (code <= 0x001f || code === 0x007F) {
- encoded += '\\' + code.toString(16);
- wsBeforeHexIsNeeded = true;
- continue;
- }
-
- // If the character is '"' (U+0022) or "\" (U+005C), the escaped character.
- if (code === quoteCode || code === REVERSE_SOLIDUS) {
- encoded += '\\' + str.charAt(i);
- wsBeforeHexIsNeeded = false;
- } else {
- if (wsBeforeHexIsNeeded && (charCodeDefinitions.isHexDigit(code) || charCodeDefinitions.isWhiteSpace(code))) {
- encoded += ' ';
- }
-
- // Otherwise, the character itself.
- encoded += str.charAt(i);
- wsBeforeHexIsNeeded = false;
- }
- }
-
- return quote + encoded + quote;
-}
-
-exports.decode = decode;
-exports.encode = encode;
diff --git a/vanilla/node_modules/css-tree/cjs/utils/url.cjs b/vanilla/node_modules/css-tree/cjs/utils/url.cjs
deleted file mode 100644
index e0e5c22..0000000
--- a/vanilla/node_modules/css-tree/cjs/utils/url.cjs
+++ /dev/null
@@ -1,108 +0,0 @@
-'use strict';
-
-const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');
-const utils = require('../tokenizer/utils.cjs');
-
-const SPACE = 0x0020; // U+0020 SPACE
-const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\)
-const QUOTATION_MARK = 0x0022; // "
-const APOSTROPHE = 0x0027; // '
-const LEFTPARENTHESIS = 0x0028; // U+0028 LEFT PARENTHESIS (()
-const RIGHTPARENTHESIS = 0x0029; // U+0029 RIGHT PARENTHESIS ())
-
-function decode(str) {
- const len = str.length;
- let start = 4; // length of "url("
- let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1;
- let decoded = '';
-
- while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(start))) {
- start++;
- }
-
- while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(end))) {
- end--;
- }
-
- for (let i = start; i <= end; i++) {
- let code = str.charCodeAt(i);
-
- if (code === REVERSE_SOLIDUS) {
- // special case at the ending
- if (i === end) {
- // if the next input code point is EOF, do nothing
- // otherwise include last left parenthesis as escaped
- if (i !== len - 1) {
- decoded = str.substr(i + 1);
- }
- break;
- }
-
- code = str.charCodeAt(++i);
-
- // consume escaped
- if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
- const escapeStart = i - 1;
- const escapeEnd = utils.consumeEscaped(str, escapeStart);
-
- i = escapeEnd - 1;
- decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
- } else {
- // \r\n
- if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {
- i++;
- }
- }
- } else {
- decoded += str[i];
- }
- }
-
- return decoded;
-}
-
-function encode(str) {
- let encoded = '';
- let wsBeforeHexIsNeeded = false;
-
- for (let i = 0; i < str.length; i++) {
- const code = str.charCodeAt(i);
-
- // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).
- if (code === 0x0000) {
- encoded += '\uFFFD';
- continue;
- }
-
- // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F,
- // the character escaped as code point.
- // Note: Do not compare with 0x0001 since 0x0000 is precessed before
- if (code <= 0x001f || code === 0x007F) {
- encoded += '\\' + code.toString(16);
- wsBeforeHexIsNeeded = true;
- continue;
- }
-
- if (code === SPACE ||
- code === REVERSE_SOLIDUS ||
- code === QUOTATION_MARK ||
- code === APOSTROPHE ||
- code === LEFTPARENTHESIS ||
- code === RIGHTPARENTHESIS) {
- encoded += '\\' + str.charAt(i);
- wsBeforeHexIsNeeded = false;
- } else {
- if (wsBeforeHexIsNeeded && charCodeDefinitions.isHexDigit(code)) {
- encoded += ' ';
- }
-
- encoded += str.charAt(i);
- wsBeforeHexIsNeeded = false;
- }
- }
-
- return 'url(' + encoded + ')';
-}
-
-exports.decode = decode;
-exports.encode = encode;
diff --git a/vanilla/node_modules/css-tree/cjs/version.cjs b/vanilla/node_modules/css-tree/cjs/version.cjs
deleted file mode 100644
index eaa2fef..0000000
--- a/vanilla/node_modules/css-tree/cjs/version.cjs
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-
-const { version } = require('../package.json');
-
-exports.version = version;
diff --git a/vanilla/node_modules/css-tree/cjs/walker/create.cjs b/vanilla/node_modules/css-tree/cjs/walker/create.cjs
deleted file mode 100644
index 3938a9f..0000000
--- a/vanilla/node_modules/css-tree/cjs/walker/create.cjs
+++ /dev/null
@@ -1,291 +0,0 @@
-'use strict';
-
-const { hasOwnProperty } = Object.prototype;
-const noop = function() {};
-
-function ensureFunction(value) {
- return typeof value === 'function' ? value : noop;
-}
-
-function invokeForType(fn, type) {
- return function(node, item, list) {
- if (node.type === type) {
- fn.call(this, node, item, list);
- }
- };
-}
-
-function getWalkersFromStructure(name, nodeType) {
- const structure = nodeType.structure;
- const walkers = [];
-
- for (const key in structure) {
- if (hasOwnProperty.call(structure, key) === false) {
- continue;
- }
-
- let fieldTypes = structure[key];
- const walker = {
- name: key,
- type: false,
- nullable: false
- };
-
- if (!Array.isArray(fieldTypes)) {
- fieldTypes = [fieldTypes];
- }
-
- for (const fieldType of fieldTypes) {
- if (fieldType === null) {
- walker.nullable = true;
- } else if (typeof fieldType === 'string') {
- walker.type = 'node';
- } else if (Array.isArray(fieldType)) {
- walker.type = 'list';
- }
- }
-
- if (walker.type) {
- walkers.push(walker);
- }
- }
-
- if (walkers.length) {
- return {
- context: nodeType.walkContext,
- fields: walkers
- };
- }
-
- return null;
-}
-
-function getTypesFromConfig(config) {
- const types = {};
-
- for (const name in config.node) {
- if (hasOwnProperty.call(config.node, name)) {
- const nodeType = config.node[name];
-
- if (!nodeType.structure) {
- throw new Error('Missed `structure` field in `' + name + '` node type definition');
- }
-
- types[name] = getWalkersFromStructure(name, nodeType);
- }
- }
-
- return types;
-}
-
-function createTypeIterator(config, reverse) {
- const fields = config.fields.slice();
- const contextName = config.context;
- const useContext = typeof contextName === 'string';
-
- if (reverse) {
- fields.reverse();
- }
-
- return function(node, context, walk, walkReducer) {
- let prevContextValue;
-
- if (useContext) {
- prevContextValue = context[contextName];
- context[contextName] = node;
- }
-
- for (const field of fields) {
- const ref = node[field.name];
-
- if (!field.nullable || ref) {
- if (field.type === 'list') {
- const breakWalk = reverse
- ? ref.reduceRight(walkReducer, false)
- : ref.reduce(walkReducer, false);
-
- if (breakWalk) {
- return true;
- }
- } else if (walk(ref)) {
- return true;
- }
- }
- }
-
- if (useContext) {
- context[contextName] = prevContextValue;
- }
- };
-}
-
-function createFastTraveralMap({
- StyleSheet,
- Atrule,
- Rule,
- Block,
- DeclarationList
-}) {
- return {
- Atrule: {
- StyleSheet,
- Atrule,
- Rule,
- Block
- },
- Rule: {
- StyleSheet,
- Atrule,
- Rule,
- Block
- },
- Declaration: {
- StyleSheet,
- Atrule,
- Rule,
- Block,
- DeclarationList
- }
- };
-}
-
-function createWalker(config) {
- const types = getTypesFromConfig(config);
- const iteratorsNatural = {};
- const iteratorsReverse = {};
- const breakWalk = Symbol('break-walk');
- const skipNode = Symbol('skip-node');
-
- for (const name in types) {
- if (hasOwnProperty.call(types, name) && types[name] !== null) {
- iteratorsNatural[name] = createTypeIterator(types[name], false);
- iteratorsReverse[name] = createTypeIterator(types[name], true);
- }
- }
-
- const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural);
- const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse);
-
- const walk = function(root, options) {
- function walkNode(node, item, list) {
- const enterRet = enter.call(context, node, item, list);
-
- if (enterRet === breakWalk) {
- return true;
- }
-
- if (enterRet === skipNode) {
- return false;
- }
-
- if (iterators.hasOwnProperty(node.type)) {
- if (iterators[node.type](node, context, walkNode, walkReducer)) {
- return true;
- }
- }
-
- if (leave.call(context, node, item, list) === breakWalk) {
- return true;
- }
-
- return false;
- }
-
- let enter = noop;
- let leave = noop;
- let iterators = iteratorsNatural;
- let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list);
- const context = {
- break: breakWalk,
- skip: skipNode,
-
- root,
- stylesheet: null,
- atrule: null,
- atrulePrelude: null,
- rule: null,
- selector: null,
- block: null,
- declaration: null,
- function: null
- };
-
- if (typeof options === 'function') {
- enter = options;
- } else if (options) {
- enter = ensureFunction(options.enter);
- leave = ensureFunction(options.leave);
-
- if (options.reverse) {
- iterators = iteratorsReverse;
- }
-
- if (options.visit) {
- if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) {
- iterators = options.reverse
- ? fastTraversalIteratorsReverse[options.visit]
- : fastTraversalIteratorsNatural[options.visit];
- } else if (!types.hasOwnProperty(options.visit)) {
- throw new Error('Bad value `' + options.visit + '` for `visit` option (should be: ' + Object.keys(types).sort().join(', ') + ')');
- }
-
- enter = invokeForType(enter, options.visit);
- leave = invokeForType(leave, options.visit);
- }
- }
-
- if (enter === noop && leave === noop) {
- throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function');
- }
-
- walkNode(root);
- };
-
- walk.break = breakWalk;
- walk.skip = skipNode;
-
- walk.find = function(ast, fn) {
- let found = null;
-
- walk(ast, function(node, item, list) {
- if (fn.call(this, node, item, list)) {
- found = node;
- return breakWalk;
- }
- });
-
- return found;
- };
-
- walk.findLast = function(ast, fn) {
- let found = null;
-
- walk(ast, {
- reverse: true,
- enter(node, item, list) {
- if (fn.call(this, node, item, list)) {
- found = node;
- return breakWalk;
- }
- }
- });
-
- return found;
- };
-
- walk.findAll = function(ast, fn) {
- const found = [];
-
- walk(ast, function(node, item, list) {
- if (fn.call(this, node, item, list)) {
- found.push(node);
- }
- });
-
- return found;
- };
-
- return walk;
-}
-
-exports.createWalker = createWalker;
diff --git a/vanilla/node_modules/css-tree/cjs/walker/index.cjs b/vanilla/node_modules/css-tree/cjs/walker/index.cjs
deleted file mode 100644
index e923c61..0000000
--- a/vanilla/node_modules/css-tree/cjs/walker/index.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-const create = require('./create.cjs');
-const walker$1 = require('../syntax/config/walker.cjs');
-
-const walker = create.createWalker(walker$1);
-
-module.exports = walker;