diff options
Diffstat (limited to 'node_modules/css-tree/lib/syntax/node')
45 files changed, 0 insertions, 2445 deletions
diff --git a/node_modules/css-tree/lib/syntax/node/AnPlusB.js b/node_modules/css-tree/lib/syntax/node/AnPlusB.js deleted file mode 100644 index 05c7e44f..00000000 --- a/node_modules/css-tree/lib/syntax/node/AnPlusB.js +++ /dev/null @@ -1,292 +0,0 @@ -import { - isDigit, - WhiteSpace, - Comment, - Ident, - Number, - Dimension -} from '../../tokenizer/index.js'; - -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 (!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 === WhiteSpace || type === Comment) { - type = this.lookupType(++offset); - } - - if (type !== Number) { - if (this.isDelim(PLUSSIGN, offset) || - this.isDelim(HYPHENMINUS, offset)) { - sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS; - - do { - type = this.lookupType(++offset); - } while (type === WhiteSpace || type === Comment); - - if (type !== 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(Number) : this.consume(Number); -} - -// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb -export const name = 'AnPlusB'; -export const structure = { - a: [String, null], - b: [String, null] -}; - -export function parse() { - /* eslint-disable brace-style*/ - const start = this.tokenStart; - let a = null; - let b = null; - - // <integer> - if (this.tokenType === Number) { - checkTokenIsInteger.call(this, ALLOW_SIGN); - b = this.consume(Number); - } - - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - // -n- <signless-integer> - // <dashndashdigit-ident> - else if (this.tokenType === 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(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 === Ident || (this.isDelim(PLUSSIGN) && this.lookupType(1) === 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(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 === Dimension) { - const code = this.charCodeAt(this.tokenStart); - const sign = code === PLUSSIGN || code === HYPHENMINUS; - let i = this.tokenStart + sign; - - for (; i < this.tokenEnd; i++) { - if (!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(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 - }; -} - -export 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); - } -} diff --git a/node_modules/css-tree/lib/syntax/node/Atrule.js b/node_modules/css-tree/lib/syntax/node/Atrule.js deleted file mode 100644 index c289b6eb..00000000 --- a/node_modules/css-tree/lib/syntax/node/Atrule.js +++ /dev/null @@ -1,100 +0,0 @@ -import { - AtKeyword, - Semicolon, - LeftCurlyBracket, - RightCurlyBracket -} from '../../tokenizer/index.js'; - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilLeftCurlyBracketOrSemicolon, true); -} - -function isDeclarationBlockAtrule() { - for (let offset = 1, type; type = this.lookupType(offset); offset++) { - if (type === RightCurlyBracket) { - return true; - } - - if (type === LeftCurlyBracket || - type === AtKeyword) { - return false; - } - } - - return false; -} - - -export const name = 'Atrule'; -export const walkContext = 'atrule'; -export const structure = { - name: String, - prelude: ['AtrulePrelude', 'Raw', null], - block: ['Block', null] -}; - -export function parse(isDeclaration = false) { - const start = this.tokenStart; - let name; - let nameLowerCase; - let prelude = null; - let block = null; - - this.eat(AtKeyword); - - name = this.substrToCursor(start + 1); - nameLowerCase = name.toLowerCase(); - this.skipSC(); - - // parse prelude - if (this.eof === false && - this.tokenType !== LeftCurlyBracket && - this.tokenType !== 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 Semicolon: - this.next(); - break; - - case 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 - }; -} - -export function generate(node) { - this.token(AtKeyword, '@' + node.name); - - if (node.prelude !== null) { - this.node(node.prelude); - } - - if (node.block) { - this.node(node.block); - } else { - this.token(Semicolon, ';'); - } -} diff --git a/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js b/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js deleted file mode 100644 index 5b5645a0..00000000 --- a/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js +++ /dev/null @@ -1,47 +0,0 @@ -import { - Semicolon, - LeftCurlyBracket -} from '../../tokenizer/index.js'; - -export const name = 'AtrulePrelude'; -export const walkContext = 'atrulePrelude'; -export const structure = { - children: [[]] -}; - -export 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 !== LeftCurlyBracket && - this.tokenType !== Semicolon) { - this.error('Semicolon or block is expected'); - } - - return { - type: 'AtrulePrelude', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/css-tree/lib/syntax/node/AttributeSelector.js b/node_modules/css-tree/lib/syntax/node/AttributeSelector.js deleted file mode 100644 index 8578dada..00000000 --- a/node_modules/css-tree/lib/syntax/node/AttributeSelector.js +++ /dev/null @@ -1,147 +0,0 @@ -import { - Ident, - String as StringToken, - Delim, - LeftSquareBracket, - RightSquareBracket -} from '../../tokenizer/index.js'; - -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(Ident); - } - - if (this.isDelim(VERTICALLINE)) { - if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) { - this.next(); - this.eat(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>? ']' -export const name = 'AttributeSelector'; -export const structure = { - name: 'Identifier', - matcher: [String, null], - value: ['String', 'Identifier', null], - flags: [String, null] -}; - -export function parse() { - const start = this.tokenStart; - let name; - let matcher = null; - let value = null; - let flags = null; - - this.eat(LeftSquareBracket); - this.skipSC(); - - name = getAttributeName.call(this); - this.skipSC(); - - if (this.tokenType !== RightSquareBracket) { - // avoid case `[name i]` - if (this.tokenType !== Ident) { - matcher = getOperator.call(this); - - this.skipSC(); - - value = this.tokenType === StringToken - ? this.String() - : this.Identifier(); - - this.skipSC(); - } - - // attribute flags - if (this.tokenType === Ident) { - flags = this.consume(Ident); - - this.skipSC(); - } - } - - this.eat(RightSquareBracket); - - return { - type: 'AttributeSelector', - loc: this.getLocation(start, this.tokenStart), - name, - matcher, - value, - flags - }; -} - -export function generate(node) { - this.token(Delim, '['); - this.node(node.name); - - if (node.matcher !== null) { - this.tokenize(node.matcher); - this.node(node.value); - } - - if (node.flags !== null) { - this.token(Ident, node.flags); - } - - this.token(Delim, ']'); -} diff --git a/node_modules/css-tree/lib/syntax/node/Block.js b/node_modules/css-tree/lib/syntax/node/Block.js deleted file mode 100644 index d0b1a2f5..00000000 --- a/node_modules/css-tree/lib/syntax/node/Block.js +++ /dev/null @@ -1,95 +0,0 @@ -import { - WhiteSpace, - Comment, - Semicolon, - AtKeyword, - LeftCurlyBracket, - RightCurlyBracket -} from '../../tokenizer/index.js'; - -const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&) - -function consumeRaw(startToken) { - return this.Raw(startToken, null, true); -} -function consumeRule() { - return this.parseWithFallback(this.Rule, consumeRaw); -} -function consumeRawDeclaration(startToken) { - return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true); -} -function consumeDeclaration() { - if (this.tokenType === Semicolon) { - return consumeRawDeclaration.call(this, this.tokenIndex); - } - - const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration); - - if (this.tokenType === Semicolon) { - this.next(); - } - - return node; -} - -export const name = 'Block'; -export const walkContext = 'block'; -export const structure = { - children: [[ - 'Atrule', - 'Rule', - 'Declaration' - ]] -}; - -export function parse(isStyleBlock) { - const consumer = isStyleBlock ? consumeDeclaration : consumeRule; - const start = this.tokenStart; - let children = this.createList(); - - this.eat(LeftCurlyBracket); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case RightCurlyBracket: - break scan; - - case WhiteSpace: - case Comment: - this.next(); - break; - - case 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(RightCurlyBracket); - } - - return { - type: 'Block', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.token(LeftCurlyBracket, '{'); - this.children(node, prev => { - if (prev.type === 'Declaration') { - this.token(Semicolon, ';'); - } - }); - this.token(RightCurlyBracket, '}'); -} diff --git a/node_modules/css-tree/lib/syntax/node/Brackets.js b/node_modules/css-tree/lib/syntax/node/Brackets.js deleted file mode 100644 index 1d97a4c0..00000000 --- a/node_modules/css-tree/lib/syntax/node/Brackets.js +++ /dev/null @@ -1,35 +0,0 @@ -import { - Delim, - LeftSquareBracket, - RightSquareBracket -} from '../../tokenizer/index.js'; - -export const name = 'Brackets'; -export const structure = { - children: [[]] -}; - -export function parse(readSequence, recognizer) { - const start = this.tokenStart; - let children = null; - - this.eat(LeftSquareBracket); - - children = readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(RightSquareBracket); - } - - return { - type: 'Brackets', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.token(Delim, '['); - this.children(node); - this.token(Delim, ']'); -} diff --git a/node_modules/css-tree/lib/syntax/node/CDC.js b/node_modules/css-tree/lib/syntax/node/CDC.js deleted file mode 100644 index efed4a66..00000000 --- a/node_modules/css-tree/lib/syntax/node/CDC.js +++ /dev/null @@ -1,19 +0,0 @@ -import { CDC } from '../../tokenizer/index.js'; - -export const name = 'CDC'; -export const structure = []; - -export function parse() { - const start = this.tokenStart; - - this.eat(CDC); // --> - - return { - type: 'CDC', - loc: this.getLocation(start, this.tokenStart) - }; -} - -export function generate() { - this.token(CDC, '-->'); -} diff --git a/node_modules/css-tree/lib/syntax/node/CDO.js b/node_modules/css-tree/lib/syntax/node/CDO.js deleted file mode 100644 index 3a9de89f..00000000 --- a/node_modules/css-tree/lib/syntax/node/CDO.js +++ /dev/null @@ -1,19 +0,0 @@ -import { CDO } from '../../tokenizer/index.js'; - -export const name = 'CDO'; -export const structure = []; - -export function parse() { - const start = this.tokenStart; - - this.eat(CDO); // <!-- - - return { - type: 'CDO', - loc: this.getLocation(start, this.tokenStart) - }; -} - -export function generate() { - this.token(CDO, '<!--'); -} diff --git a/node_modules/css-tree/lib/syntax/node/ClassSelector.js b/node_modules/css-tree/lib/syntax/node/ClassSelector.js deleted file mode 100644 index febb0d96..00000000 --- a/node_modules/css-tree/lib/syntax/node/ClassSelector.js +++ /dev/null @@ -1,24 +0,0 @@ -import { Delim, Ident } from '../../tokenizer/index.js'; - -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) - -// '.' ident -export const name = 'ClassSelector'; -export const structure = { - name: String -}; - -export function parse() { - this.eatDelim(FULLSTOP); - - return { - type: 'ClassSelector', - loc: this.getLocation(this.tokenStart - 1, this.tokenEnd), - name: this.consume(Ident) - }; -} - -export function generate(node) { - this.token(Delim, '.'); - this.token(Ident, node.name); -} diff --git a/node_modules/css-tree/lib/syntax/node/Combinator.js b/node_modules/css-tree/lib/syntax/node/Combinator.js deleted file mode 100644 index 2e5bb1fe..00000000 --- a/node_modules/css-tree/lib/syntax/node/Combinator.js +++ /dev/null @@ -1,54 +0,0 @@ -import { WhiteSpace, Delim } from '../../tokenizer/index.js'; - -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 (~) - -export const name = 'Combinator'; -export const structure = { - name: String -}; - -// + | > | ~ | /deep/ -export function parse() { - const start = this.tokenStart; - let name; - - switch (this.tokenType) { - case WhiteSpace: - name = ' '; - break; - - case 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 - }; -} - -export function generate(node) { - this.tokenize(node.name); -} diff --git a/node_modules/css-tree/lib/syntax/node/Comment.js b/node_modules/css-tree/lib/syntax/node/Comment.js deleted file mode 100644 index 8a9d291c..00000000 --- a/node_modules/css-tree/lib/syntax/node/Comment.js +++ /dev/null @@ -1,33 +0,0 @@ -import { Comment } from '../../tokenizer/index.js'; - -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) - - -export const name = 'Comment'; -export const structure = { - value: String -}; - -export function parse() { - const start = this.tokenStart; - let end = this.tokenEnd; - - this.eat(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) - }; -} - -export function generate(node) { - this.token(Comment, '/*' + node.value + '*/'); -} diff --git a/node_modules/css-tree/lib/syntax/node/Declaration.js b/node_modules/css-tree/lib/syntax/node/Declaration.js deleted file mode 100644 index 49326d58..00000000 --- a/node_modules/css-tree/lib/syntax/node/Declaration.js +++ /dev/null @@ -1,165 +0,0 @@ -import { isCustomProperty } from '../../utils/names.js'; -import { - Ident, - Hash, - Colon, - Semicolon, - Delim, - WhiteSpace -} from '../../tokenizer/index.js'; - -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(startToken) { - return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, true); -} - -function consumeCustomPropertyRaw(startToken) { - return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, false); -} - -function consumeValue() { - const startValueToken = this.tokenIndex; - const value = this.Value(); - - if (value.type !== 'Raw' && - this.eof === false && - this.tokenType !== Semicolon && - this.isDelim(EXCLAMATIONMARK) === false && - this.isBalanceEdge(startValueToken) === false) { - this.error(); - } - - return value; -} - -export const name = 'Declaration'; -export const walkContext = 'declaration'; -export const structure = { - important: [Boolean, String], - property: String, - value: ['Value', 'Raw'] -}; - -export function parse() { - const start = this.tokenStart; - const startToken = this.tokenIndex; - const property = readProperty.call(this); - const customProperty = isCustomProperty(property); - const parseValue = customProperty ? this.parseCustomProperty : this.parseValue; - const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw; - let important = false; - let value; - - this.skipSC(); - this.eat(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) === 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 !== Semicolon && - this.isBalanceEdge(startToken) === false) { - this.error(); - } - - return { - type: 'Declaration', - loc: this.getLocation(start, this.tokenStart), - important, - property, - value - }; -} - -export function generate(node) { - this.token(Ident, node.property); - this.token(Colon, ':'); - this.node(node.value); - - if (node.important) { - this.token(Delim, '!'); - this.token(Ident, node.important === true ? 'important' : node.important); - } -} - -function readProperty() { - const start = this.tokenStart; - - // hacks - if (this.tokenType === 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 === Hash) { - this.eat(Hash); - } else { - this.eat(Ident); - } - - return this.substrToCursor(start); -} - -// ! ws* important -function getImportant() { - this.eat(Delim); - this.skipSC(); - - const important = this.consume(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; -} diff --git a/node_modules/css-tree/lib/syntax/node/DeclarationList.js b/node_modules/css-tree/lib/syntax/node/DeclarationList.js deleted file mode 100644 index 132a9cc7..00000000 --- a/node_modules/css-tree/lib/syntax/node/DeclarationList.js +++ /dev/null @@ -1,62 +0,0 @@ -import { - WhiteSpace, - Comment, - Semicolon, - AtKeyword -} from '../../tokenizer/index.js'; - -const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&) - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true); -} - -export const name = 'DeclarationList'; -export const structure = { - children: [[ - 'Declaration', - 'Atrule', - 'Rule' - ]] -}; - -export function parse() { - const children = this.createList(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case WhiteSpace: - case Comment: - case Semicolon: - this.next(); - break; - - case 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 - }; -} - -export function generate(node) { - this.children(node, prev => { - if (prev.type === 'Declaration') { - this.token(Semicolon, ';'); - } - }); -} - diff --git a/node_modules/css-tree/lib/syntax/node/Dimension.js b/node_modules/css-tree/lib/syntax/node/Dimension.js deleted file mode 100644 index 4b9bffc7..00000000 --- a/node_modules/css-tree/lib/syntax/node/Dimension.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Dimension } from '../../tokenizer/index.js'; - -export const name = 'Dimension'; -export const structure = { - value: String, - unit: String -}; - -export function parse() { - const start = this.tokenStart; - const value = this.consumeNumber(Dimension); - - return { - type: 'Dimension', - loc: this.getLocation(start, this.tokenStart), - value, - unit: this.substring(start + value.length, this.tokenStart) - }; -} - -export function generate(node) { - this.token(Dimension, node.value + node.unit); -} diff --git a/node_modules/css-tree/lib/syntax/node/Function.js b/node_modules/css-tree/lib/syntax/node/Function.js deleted file mode 100644 index 1fdc4140..00000000 --- a/node_modules/css-tree/lib/syntax/node/Function.js +++ /dev/null @@ -1,41 +0,0 @@ -import { - Function as FunctionToken, - RightParenthesis -} from '../../tokenizer/index.js'; - - -export const name = 'Function'; -export const walkContext = 'function'; -export const structure = { - name: String, - children: [[]] -}; - -// <function-token> <sequence> ) -export 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(RightParenthesis); - } - - return { - type: 'Function', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -export function generate(node) { - this.token(FunctionToken, node.name + '('); - this.children(node); - this.token(RightParenthesis, ')'); -} diff --git a/node_modules/css-tree/lib/syntax/node/Hash.js b/node_modules/css-tree/lib/syntax/node/Hash.js deleted file mode 100644 index b752752c..00000000 --- a/node_modules/css-tree/lib/syntax/node/Hash.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Hash } from '../../tokenizer/index.js'; - -// '#' ident -export const xxx = 'XXX'; -export const name = 'Hash'; -export const structure = { - value: String -}; -export function parse() { - const start = this.tokenStart; - - this.eat(Hash); - - return { - type: 'Hash', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start + 1) - }; -} -export function generate(node) { - this.token(Hash, '#' + node.value); -} - diff --git a/node_modules/css-tree/lib/syntax/node/IdSelector.js b/node_modules/css-tree/lib/syntax/node/IdSelector.js deleted file mode 100644 index c85c1b2f..00000000 --- a/node_modules/css-tree/lib/syntax/node/IdSelector.js +++ /dev/null @@ -1,26 +0,0 @@ -import { Hash, Delim } from '../../tokenizer/index.js'; - -export const name = 'IdSelector'; -export const structure = { - name: String -}; - -export function parse() { - const start = this.tokenStart; - - // TODO: check value is an ident - this.eat(Hash); - - return { - type: 'IdSelector', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start + 1) - }; -} - -export 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(Delim, '#' + node.name); -} diff --git a/node_modules/css-tree/lib/syntax/node/Identifier.js b/node_modules/css-tree/lib/syntax/node/Identifier.js deleted file mode 100644 index 067c2d02..00000000 --- a/node_modules/css-tree/lib/syntax/node/Identifier.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Ident } from '../../tokenizer/index.js'; - -export const name = 'Identifier'; -export const structure = { - name: String -}; - -export function parse() { - return { - type: 'Identifier', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - name: this.consume(Ident) - }; -} - -export function generate(node) { - this.token(Ident, node.name); -} diff --git a/node_modules/css-tree/lib/syntax/node/MediaFeature.js b/node_modules/css-tree/lib/syntax/node/MediaFeature.js deleted file mode 100644 index 6776daab..00000000 --- a/node_modules/css-tree/lib/syntax/node/MediaFeature.js +++ /dev/null @@ -1,77 +0,0 @@ -import { - Ident, - Number, - Dimension, - LeftParenthesis, - RightParenthesis, - Colon, - Delim -} from '../../tokenizer/index.js'; - -export const name = 'MediaFeature'; -export const structure = { - name: String, - value: ['Identifier', 'Number', 'Dimension', 'Ratio', null] -}; - -export function parse() { - const start = this.tokenStart; - let name; - let value = null; - - this.eat(LeftParenthesis); - this.skipSC(); - - name = this.consume(Ident); - this.skipSC(); - - if (this.tokenType !== RightParenthesis) { - this.eat(Colon); - this.skipSC(); - - switch (this.tokenType) { - case Number: - if (this.lookupNonWSType(1) === Delim) { - value = this.Ratio(); - } else { - value = this.Number(); - } - - break; - - case Dimension: - value = this.Dimension(); - break; - - case Ident: - value = this.Identifier(); - break; - - default: - this.error('Number, dimension, ratio or identifier is expected'); - } - - this.skipSC(); - } - - this.eat(RightParenthesis); - - return { - type: 'MediaFeature', - loc: this.getLocation(start, this.tokenStart), - name, - value - }; -} - -export function generate(node) { - this.token(LeftParenthesis, '('); - this.token(Ident, node.name); - - if (node.value !== null) { - this.token(Colon, ':'); - this.node(node.value); - } - - this.token(RightParenthesis, ')'); -} diff --git a/node_modules/css-tree/lib/syntax/node/MediaQuery.js b/node_modules/css-tree/lib/syntax/node/MediaQuery.js deleted file mode 100644 index 6817b49f..00000000 --- a/node_modules/css-tree/lib/syntax/node/MediaQuery.js +++ /dev/null @@ -1,60 +0,0 @@ -import { - WhiteSpace, - Comment, - Ident, - LeftParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'MediaQuery'; -export const structure = { - children: [[ - 'Identifier', - 'MediaFeature', - 'WhiteSpace' - ]] -}; - -export function parse() { - const children = this.createList(); - let child = null; - - this.skipSC(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case Comment: - case WhiteSpace: - this.next(); - continue; - - case Ident: - child = this.Identifier(); - break; - - case LeftParenthesis: - child = this.MediaFeature(); - break; - - default: - break scan; - } - - children.push(child); - } - - if (child === null) { - this.error('Identifier or parenthesis is expected'); - } - - return { - type: 'MediaQuery', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node); -} - diff --git a/node_modules/css-tree/lib/syntax/node/MediaQueryList.js b/node_modules/css-tree/lib/syntax/node/MediaQueryList.js deleted file mode 100644 index 1c16bcd2..00000000 --- a/node_modules/css-tree/lib/syntax/node/MediaQueryList.js +++ /dev/null @@ -1,34 +0,0 @@ -import { Comma } from '../../tokenizer/index.js'; - -export const name = 'MediaQueryList'; -export const structure = { - children: [[ - 'MediaQuery' - ]] -}; - -export function parse() { - const children = this.createList(); - - this.skipSC(); - - while (!this.eof) { - children.push(this.MediaQuery()); - - if (this.tokenType !== Comma) { - break; - } - - this.next(); - } - - return { - type: 'MediaQueryList', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node, () => this.token(Comma, ',')); -} diff --git a/node_modules/css-tree/lib/syntax/node/NestingSelector.js b/node_modules/css-tree/lib/syntax/node/NestingSelector.js deleted file mode 100644 index 33c8b6a9..00000000 --- a/node_modules/css-tree/lib/syntax/node/NestingSelector.js +++ /dev/null @@ -1,22 +0,0 @@ -import { Delim } from '../../tokenizer/index.js'; - -const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&) - -export const name = 'NestingSelector'; -export const structure = { -}; - -export function parse() { - const start = this.tokenStart; - - this.eatDelim(AMPERSAND); - - return { - type: 'NestingSelector', - loc: this.getLocation(start, this.tokenStart) - }; -} - -export function generate() { - this.token(Delim, '&'); -} diff --git a/node_modules/css-tree/lib/syntax/node/Nth.js b/node_modules/css-tree/lib/syntax/node/Nth.js deleted file mode 100644 index bfd74a15..00000000 --- a/node_modules/css-tree/lib/syntax/node/Nth.js +++ /dev/null @@ -1,47 +0,0 @@ -import { Ident } from '../../tokenizer/index.js'; - -export const name = 'Nth'; -export const structure = { - nth: ['AnPlusB', 'Identifier'], - selector: ['SelectorList', null] -}; - -export 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 - }; -} - -export function generate(node) { - this.node(node.nth); - if (node.selector !== null) { - this.token(Ident, 'of'); - this.node(node.selector); - } -} diff --git a/node_modules/css-tree/lib/syntax/node/Number.js b/node_modules/css-tree/lib/syntax/node/Number.js deleted file mode 100644 index a9d8f0af..00000000 --- a/node_modules/css-tree/lib/syntax/node/Number.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Number as NumberToken } from '../../tokenizer/index.js'; - -export const name = 'Number'; -export const structure = { - value: String -}; - -export function parse() { - return { - type: 'Number', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: this.consume(NumberToken) - }; -} - -export function generate(node) { - this.token(NumberToken, node.value); -} diff --git a/node_modules/css-tree/lib/syntax/node/Operator.js b/node_modules/css-tree/lib/syntax/node/Operator.js deleted file mode 100644 index 4f1238b9..00000000 --- a/node_modules/css-tree/lib/syntax/node/Operator.js +++ /dev/null @@ -1,21 +0,0 @@ -// '/' | '*' | ',' | ':' | '+' | '-' -export const name = 'Operator'; -export const structure = { - value: String -}; - -export function parse() { - const start = this.tokenStart; - - this.next(); - - return { - type: 'Operator', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start) - }; -} - -export function generate(node) { - this.tokenize(node.value); -} diff --git a/node_modules/css-tree/lib/syntax/node/Parentheses.js b/node_modules/css-tree/lib/syntax/node/Parentheses.js deleted file mode 100644 index 8c6cdb52..00000000 --- a/node_modules/css-tree/lib/syntax/node/Parentheses.js +++ /dev/null @@ -1,34 +0,0 @@ -import { - LeftParenthesis, - RightParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'Parentheses'; -export const structure = { - children: [[]] -}; - -export function parse(readSequence, recognizer) { - const start = this.tokenStart; - let children = null; - - this.eat(LeftParenthesis); - - children = readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(RightParenthesis); - } - - return { - type: 'Parentheses', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.token(LeftParenthesis, '('); - this.children(node); - this.token(RightParenthesis, ')'); -} diff --git a/node_modules/css-tree/lib/syntax/node/Percentage.js b/node_modules/css-tree/lib/syntax/node/Percentage.js deleted file mode 100644 index 3c8b628b..00000000 --- a/node_modules/css-tree/lib/syntax/node/Percentage.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Percentage } from '../../tokenizer/index.js'; - -export const name = 'Percentage'; -export const structure = { - value: String -}; - -export function parse() { - return { - type: 'Percentage', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: this.consumeNumber(Percentage) - }; -} - -export function generate(node) { - this.token(Percentage, node.value + '%'); -} diff --git a/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js b/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js deleted file mode 100644 index 8b4196f6..00000000 --- a/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js +++ /dev/null @@ -1,63 +0,0 @@ -import { - Ident, - Function as FunctionToken, - Colon, - RightParenthesis -} from '../../tokenizer/index.js'; - - -export const name = 'PseudoClassSelector'; -export const walkContext = 'function'; -export const structure = { - name: String, - children: [['Raw'], null] -}; - -// : [ <ident> | <function-token> <any-value>? ) ] -export function parse() { - const start = this.tokenStart; - let children = null; - let name; - let nameLowerCase; - - this.eat(Colon); - - if (this.tokenType === FunctionToken) { - name = this.consumeFunctionName(); - nameLowerCase = name.toLowerCase(); - - if (hasOwnProperty.call(this.pseudo, nameLowerCase)) { - this.skipSC(); - children = this.pseudo[nameLowerCase].call(this); - this.skipSC(); - } else { - children = this.createList(); - children.push( - this.Raw(this.tokenIndex, null, false) - ); - } - - this.eat(RightParenthesis); - } else { - name = this.consume(Ident); - } - - return { - type: 'PseudoClassSelector', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -export function generate(node) { - this.token(Colon, ':'); - - if (node.children === null) { - this.token(Ident, node.name); - } else { - this.token(FunctionToken, node.name + '('); - this.children(node); - this.token(RightParenthesis, ')'); - } -} diff --git a/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js b/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js deleted file mode 100644 index fa17d2e0..00000000 --- a/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js +++ /dev/null @@ -1,64 +0,0 @@ -import { - Ident, - Function as FunctionToken, - Colon, - RightParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'PseudoElementSelector'; -export const walkContext = 'function'; -export const structure = { - name: String, - children: [['Raw'], null] -}; - -// :: [ <ident> | <function-token> <any-value>? ) ] -export function parse() { - const start = this.tokenStart; - let children = null; - let name; - let nameLowerCase; - - this.eat(Colon); - this.eat(Colon); - - if (this.tokenType === FunctionToken) { - name = this.consumeFunctionName(); - nameLowerCase = name.toLowerCase(); - - if (hasOwnProperty.call(this.pseudo, nameLowerCase)) { - this.skipSC(); - children = this.pseudo[nameLowerCase].call(this); - this.skipSC(); - } else { - children = this.createList(); - children.push( - this.Raw(this.tokenIndex, null, false) - ); - } - - this.eat(RightParenthesis); - } else { - name = this.consume(Ident); - } - - return { - type: 'PseudoElementSelector', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -export function generate(node) { - this.token(Colon, ':'); - this.token(Colon, ':'); - - if (node.children === null) { - this.token(Ident, node.name); - } else { - this.token(FunctionToken, node.name + '('); - this.children(node); - this.token(RightParenthesis, ')'); - } -} diff --git a/node_modules/css-tree/lib/syntax/node/Ratio.js b/node_modules/css-tree/lib/syntax/node/Ratio.js deleted file mode 100644 index c2e08a51..00000000 --- a/node_modules/css-tree/lib/syntax/node/Ratio.js +++ /dev/null @@ -1,59 +0,0 @@ -import { isDigit, Delim, Number as NumberToken } from '../../tokenizer/index.js'; - -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) - -// Terms of <ratio> should be a positive numbers (not zero or negative) -// (see https://drafts.csswg.org/mediaqueries-3/#values) -// However, -o-min-device-pixel-ratio takes fractional values as a ratio's term -// and this is using by various sites. Therefore we relax checking on parse -// to test a term is unsigned number without an exponent part. -// Additional checking may be applied on lexer validation. -function consumeNumber() { - this.skipSC(); - - const value = this.consume(NumberToken); - - for (let i = 0; i < value.length; i++) { - const code = value.charCodeAt(i); - if (!isDigit(code) && code !== FULLSTOP) { - this.error('Unsigned number is expected', this.tokenStart - value.length + i); - } - } - - if (Number(value) === 0) { - this.error('Zero number is not allowed', this.tokenStart - value.length); - } - - return value; -} - -export const name = 'Ratio'; -export const structure = { - left: String, - right: String -}; - -// <positive-integer> S* '/' S* <positive-integer> -export function parse() { - const start = this.tokenStart; - const left = consumeNumber.call(this); - let right; - - this.skipSC(); - this.eatDelim(SOLIDUS); - right = consumeNumber.call(this); - - return { - type: 'Ratio', - loc: this.getLocation(start, this.tokenStart), - left, - right - }; -} - -export function generate(node) { - this.token(NumberToken, node.left); - this.token(Delim, '/'); - this.token(NumberToken, node.right); -} diff --git a/node_modules/css-tree/lib/syntax/node/Raw.js b/node_modules/css-tree/lib/syntax/node/Raw.js deleted file mode 100644 index ebc422f7..00000000 --- a/node_modules/css-tree/lib/syntax/node/Raw.js +++ /dev/null @@ -1,41 +0,0 @@ -import { WhiteSpace } from '../../tokenizer/index.js'; - -function getOffsetExcludeWS() { - if (this.tokenIndex > 0) { - if (this.lookupType(-1) === WhiteSpace) { - return this.tokenIndex > 1 - ? this.getTokenStart(this.tokenIndex - 1) - : this.firstCharOffset; - } - } - - return this.tokenStart; -} - -export const name = 'Raw'; -export const structure = { - value: String -}; - -export function parse(startToken, consumeUntil, excludeWhiteSpace) { - const startOffset = this.getTokenStart(startToken); - let endOffset; - - this.skipUntilBalanced(startToken, 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) - }; -} - -export function generate(node) { - this.tokenize(node.value); -} diff --git a/node_modules/css-tree/lib/syntax/node/Rule.js b/node_modules/css-tree/lib/syntax/node/Rule.js deleted file mode 100644 index 08c8f989..00000000 --- a/node_modules/css-tree/lib/syntax/node/Rule.js +++ /dev/null @@ -1,51 +0,0 @@ -import { LeftCurlyBracket } from '../../tokenizer/index.js'; - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilLeftCurlyBracket, true); -} - -function consumePrelude() { - const prelude = this.SelectorList(); - - if (prelude.type !== 'Raw' && - this.eof === false && - this.tokenType !== LeftCurlyBracket) { - this.error(); - } - - return prelude; -} - -export const name = 'Rule'; -export const walkContext = 'rule'; -export const structure = { - prelude: ['SelectorList', 'Raw'], - block: ['Block'] -}; - -export 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 - }; -} -export function generate(node) { - this.node(node.prelude); - this.node(node.block); -} - diff --git a/node_modules/css-tree/lib/syntax/node/Selector.js b/node_modules/css-tree/lib/syntax/node/Selector.js deleted file mode 100644 index 3ef44718..00000000 --- a/node_modules/css-tree/lib/syntax/node/Selector.js +++ /dev/null @@ -1,32 +0,0 @@ -export const name = 'Selector'; -export const structure = { - children: [[ - 'TypeSelector', - 'IdSelector', - 'ClassSelector', - 'AttributeSelector', - 'PseudoClassSelector', - 'PseudoElementSelector', - 'Combinator', - 'WhiteSpace' - ]] -}; - -export 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 - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/css-tree/lib/syntax/node/SelectorList.js b/node_modules/css-tree/lib/syntax/node/SelectorList.js deleted file mode 100644 index ebba3cdd..00000000 --- a/node_modules/css-tree/lib/syntax/node/SelectorList.js +++ /dev/null @@ -1,35 +0,0 @@ -import { Comma } from '../../tokenizer/index.js'; - -export const name = 'SelectorList'; -export const walkContext = 'selector'; -export const structure = { - children: [[ - 'Selector', - 'Raw' - ]] -}; - -export function parse() { - const children = this.createList(); - - while (!this.eof) { - children.push(this.Selector()); - - if (this.tokenType === Comma) { - this.next(); - continue; - } - - break; - } - - return { - type: 'SelectorList', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node, () => this.token(Comma, ',')); -} diff --git a/node_modules/css-tree/lib/syntax/node/String.js b/node_modules/css-tree/lib/syntax/node/String.js deleted file mode 100644 index 95e1aaa5..00000000 --- a/node_modules/css-tree/lib/syntax/node/String.js +++ /dev/null @@ -1,19 +0,0 @@ -import { String as StringToken } from '../../tokenizer/index.js'; -import { decode, encode } from '../../utils/string.js'; - -export const name = 'String'; -export const structure = { - value: String -}; - -export function parse() { - return { - type: 'String', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: decode(this.consume(StringToken)) - }; -} - -export function generate(node) { - this.token(StringToken, encode(node.value)); -} diff --git a/node_modules/css-tree/lib/syntax/node/StyleSheet.js b/node_modules/css-tree/lib/syntax/node/StyleSheet.js deleted file mode 100644 index 02c41fbf..00000000 --- a/node_modules/css-tree/lib/syntax/node/StyleSheet.js +++ /dev/null @@ -1,82 +0,0 @@ -import { - WhiteSpace, - Comment, - AtKeyword, - CDO, - CDC -} from '../../tokenizer/index.js'; - -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) - -function consumeRaw(startToken) { - return this.Raw(startToken, null, false); -} - -export const name = 'StyleSheet'; -export const walkContext = 'stylesheet'; -export const structure = { - children: [[ - 'Comment', - 'CDO', - 'CDC', - 'Atrule', - 'Rule', - 'Raw' - ]] -}; - -export function parse() { - const start = this.tokenStart; - const children = this.createList(); - let child; - - scan: - while (!this.eof) { - switch (this.tokenType) { - case WhiteSpace: - this.next(); - continue; - - case 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 CDO: // <!-- - child = this.CDO(); - break; - - case 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 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 - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/css-tree/lib/syntax/node/TypeSelector.js b/node_modules/css-tree/lib/syntax/node/TypeSelector.js deleted file mode 100644 index 272e195d..00000000 --- a/node_modules/css-tree/lib/syntax/node/TypeSelector.js +++ /dev/null @@ -1,52 +0,0 @@ -import { Ident } from '../../tokenizer/index.js'; - -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) - -function eatIdentifierOrAsterisk() { - if (this.tokenType !== Ident && - this.isDelim(ASTERISK) === false) { - this.error('Identifier or asterisk is expected'); - } - - this.next(); -} - -export const name = 'TypeSelector'; -export const structure = { - name: String -}; - -// ident -// ident|ident -// ident|* -// * -// *|ident -// *|* -// |ident -// |* -export 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) - }; -} - -export function generate(node) { - this.tokenize(node.name); -} diff --git a/node_modules/css-tree/lib/syntax/node/UnicodeRange.js b/node_modules/css-tree/lib/syntax/node/UnicodeRange.js deleted file mode 100644 index 95ee8b96..00000000 --- a/node_modules/css-tree/lib/syntax/node/UnicodeRange.js +++ /dev/null @@ -1,156 +0,0 @@ -import { - isHexDigit, - Ident, - Number, - Dimension -} from '../../tokenizer/index.js'; - -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 (!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 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 === Dimension || - this.tokenType === Number) { - startsWith.call(this, HYPHENMINUS); - eatHexSequence.call(this, 1, false); - break; - } - - break; - - case 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 === 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'); - } -} - -export const name = 'UnicodeRange'; -export const structure = { - value: String -}; - -export 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) - }; -} - -export function generate(node) { - this.tokenize(node.value); -} diff --git a/node_modules/css-tree/lib/syntax/node/Url.js b/node_modules/css-tree/lib/syntax/node/Url.js deleted file mode 100644 index ac52c9d9..00000000 --- a/node_modules/css-tree/lib/syntax/node/Url.js +++ /dev/null @@ -1,52 +0,0 @@ -import * as url from '../../utils/url.js'; -import * as string from '../../utils/string.js'; -import { - Function as FunctionToken, - String as StringToken, - Url, - RightParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'Url'; -export const structure = { - value: String -}; - -// <url-token> | <function-token> <string> ) -export function parse() { - const start = this.tokenStart; - let value; - - switch (this.tokenType) { - case Url: - value = url.decode(this.consume(Url)); - break; - - case FunctionToken: - if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) { - this.error('Function name must be `url`'); - } - - this.eat(FunctionToken); - this.skipSC(); - value = string.decode(this.consume(StringToken)); - this.skipSC(); - if (!this.eof) { - this.eat(RightParenthesis); - } - break; - - default: - this.error('Url or Function is expected'); - } - - return { - type: 'Url', - loc: this.getLocation(start, this.tokenStart), - value - }; -} - -export function generate(node) { - this.token(Url, url.encode(node.value)); -} diff --git a/node_modules/css-tree/lib/syntax/node/Value.js b/node_modules/css-tree/lib/syntax/node/Value.js deleted file mode 100644 index ba465bc0..00000000 --- a/node_modules/css-tree/lib/syntax/node/Value.js +++ /dev/null @@ -1,19 +0,0 @@ -export const name = 'Value'; -export const structure = { - children: [[]] -}; - -export function parse() { - const start = this.tokenStart; - const children = this.readSequence(this.scope.Value); - - return { - type: 'Value', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/css-tree/lib/syntax/node/WhiteSpace.js b/node_modules/css-tree/lib/syntax/node/WhiteSpace.js deleted file mode 100644 index df34e6f7..00000000 --- a/node_modules/css-tree/lib/syntax/node/WhiteSpace.js +++ /dev/null @@ -1,27 +0,0 @@ -import { WhiteSpace } from '../../tokenizer/index.js'; - -const SPACE = Object.freeze({ - type: 'WhiteSpace', - loc: null, - value: ' ' -}); - -export const name = 'WhiteSpace'; -export const structure = { - value: String -}; - -export function parse() { - this.eat(WhiteSpace); - return SPACE; - - // return { - // type: 'WhiteSpace', - // loc: this.getLocation(this.tokenStart, this.tokenEnd), - // value: this.consume(WHITESPACE) - // }; -} - -export function generate(node) { - this.token(WhiteSpace, node.value); -} diff --git a/node_modules/css-tree/lib/syntax/node/index-generate.js b/node_modules/css-tree/lib/syntax/node/index-generate.js deleted file mode 100644 index c007ced5..00000000 --- a/node_modules/css-tree/lib/syntax/node/index-generate.js +++ /dev/null @@ -1,41 +0,0 @@ -export { generate as AnPlusB } from './AnPlusB.js'; -export { generate as Atrule } from './Atrule.js'; -export { generate as AtrulePrelude } from './AtrulePrelude.js'; -export { generate as AttributeSelector } from './AttributeSelector.js'; -export { generate as Block } from './Block.js'; -export { generate as Brackets } from './Brackets.js'; -export { generate as CDC } from './CDC.js'; -export { generate as CDO } from './CDO.js'; -export { generate as ClassSelector } from './ClassSelector.js'; -export { generate as Combinator } from './Combinator.js'; -export { generate as Comment } from './Comment.js'; -export { generate as Declaration } from './Declaration.js'; -export { generate as DeclarationList } from './DeclarationList.js'; -export { generate as Dimension } from './Dimension.js'; -export { generate as Function } from './Function.js'; -export { generate as Hash } from './Hash.js'; -export { generate as Identifier } from './Identifier.js'; -export { generate as IdSelector } from './IdSelector.js'; -export { generate as MediaFeature } from './MediaFeature.js'; -export { generate as MediaQuery } from './MediaQuery.js'; -export { generate as MediaQueryList } from './MediaQueryList.js'; -export { generate as NestingSelector } from './NestingSelector.js'; -export { generate as Nth } from './Nth.js'; -export { generate as Number } from './Number.js'; -export { generate as Operator } from './Operator.js'; -export { generate as Parentheses } from './Parentheses.js'; -export { generate as Percentage } from './Percentage.js'; -export { generate as PseudoClassSelector } from './PseudoClassSelector.js'; -export { generate as PseudoElementSelector } from './PseudoElementSelector.js'; -export { generate as Ratio } from './Ratio.js'; -export { generate as Raw } from './Raw.js'; -export { generate as Rule } from './Rule.js'; -export { generate as Selector } from './Selector.js'; -export { generate as SelectorList } from './SelectorList.js'; -export { generate as String } from './String.js'; -export { generate as StyleSheet } from './StyleSheet.js'; -export { generate as TypeSelector } from './TypeSelector.js'; -export { generate as UnicodeRange } from './UnicodeRange.js'; -export { generate as Url } from './Url.js'; -export { generate as Value } from './Value.js'; -export { generate as WhiteSpace } from './WhiteSpace.js'; diff --git a/node_modules/css-tree/lib/syntax/node/index-parse-selector.js b/node_modules/css-tree/lib/syntax/node/index-parse-selector.js deleted file mode 100644 index 8bb224eb..00000000 --- a/node_modules/css-tree/lib/syntax/node/index-parse-selector.js +++ /dev/null @@ -1,16 +0,0 @@ -export { parse as AnPlusB } from './AnPlusB.js'; -export { parse as AttributeSelector } from './AttributeSelector.js'; -export { parse as ClassSelector } from './ClassSelector.js'; -export { parse as Combinator } from './Combinator.js'; -export { parse as Identifier } from './Identifier.js'; -export { parse as IdSelector } from './IdSelector.js'; -export { parse as NestingSelector } from './NestingSelector.js'; -export { parse as Nth } from './Nth.js'; -export { parse as Percentage } from './Percentage.js'; -export { parse as PseudoClassSelector } from './PseudoClassSelector.js'; -export { parse as PseudoElementSelector } from './PseudoElementSelector.js'; -export { parse as Raw } from './Raw.js'; -export { parse as Selector } from './Selector.js'; -export { parse as SelectorList } from './SelectorList.js'; -export { parse as String } from './String.js'; -export { parse as TypeSelector } from './TypeSelector.js'; diff --git a/node_modules/css-tree/lib/syntax/node/index-parse.js b/node_modules/css-tree/lib/syntax/node/index-parse.js deleted file mode 100644 index 2384830d..00000000 --- a/node_modules/css-tree/lib/syntax/node/index-parse.js +++ /dev/null @@ -1,41 +0,0 @@ -export { parse as AnPlusB } from './AnPlusB.js'; -export { parse as Atrule } from './Atrule.js'; -export { parse as AtrulePrelude } from './AtrulePrelude.js'; -export { parse as AttributeSelector } from './AttributeSelector.js'; -export { parse as Block } from './Block.js'; -export { parse as Brackets } from './Brackets.js'; -export { parse as CDC } from './CDC.js'; -export { parse as CDO } from './CDO.js'; -export { parse as ClassSelector } from './ClassSelector.js'; -export { parse as Combinator } from './Combinator.js'; -export { parse as Comment } from './Comment.js'; -export { parse as Declaration } from './Declaration.js'; -export { parse as DeclarationList } from './DeclarationList.js'; -export { parse as Dimension } from './Dimension.js'; -export { parse as Function } from './Function.js'; -export { parse as Hash } from './Hash.js'; -export { parse as Identifier } from './Identifier.js'; -export { parse as IdSelector } from './IdSelector.js'; -export { parse as MediaFeature } from './MediaFeature.js'; -export { parse as MediaQuery } from './MediaQuery.js'; -export { parse as MediaQueryList } from './MediaQueryList.js'; -export { parse as NestingSelector } from './NestingSelector.js'; -export { parse as Nth } from './Nth.js'; -export { parse as Number } from './Number.js'; -export { parse as Operator } from './Operator.js'; -export { parse as Parentheses } from './Parentheses.js'; -export { parse as Percentage } from './Percentage.js'; -export { parse as PseudoClassSelector } from './PseudoClassSelector.js'; -export { parse as PseudoElementSelector } from './PseudoElementSelector.js'; -export { parse as Ratio } from './Ratio.js'; -export { parse as Raw } from './Raw.js'; -export { parse as Rule } from './Rule.js'; -export { parse as Selector } from './Selector.js'; -export { parse as SelectorList } from './SelectorList.js'; -export { parse as String } from './String.js'; -export { parse as StyleSheet } from './StyleSheet.js'; -export { parse as TypeSelector } from './TypeSelector.js'; -export { parse as UnicodeRange } from './UnicodeRange.js'; -export { parse as Url } from './Url.js'; -export { parse as Value } from './Value.js'; -export { parse as WhiteSpace } from './WhiteSpace.js'; diff --git a/node_modules/css-tree/lib/syntax/node/index.js b/node_modules/css-tree/lib/syntax/node/index.js deleted file mode 100644 index 61f2f46a..00000000 --- a/node_modules/css-tree/lib/syntax/node/index.js +++ /dev/null @@ -1,41 +0,0 @@ -export * as AnPlusB from './AnPlusB.js'; -export * as Atrule from './Atrule.js'; -export * as AtrulePrelude from './AtrulePrelude.js'; -export * as AttributeSelector from './AttributeSelector.js'; -export * as Block from './Block.js'; -export * as Brackets from './Brackets.js'; -export * as CDC from './CDC.js'; -export * as CDO from './CDO.js'; -export * as ClassSelector from './ClassSelector.js'; -export * as Combinator from './Combinator.js'; -export * as Comment from './Comment.js'; -export * as Declaration from './Declaration.js'; -export * as DeclarationList from './DeclarationList.js'; -export * as Dimension from './Dimension.js'; -export * as Function from './Function.js'; -export * as Hash from './Hash.js'; -export * as Identifier from './Identifier.js'; -export * as IdSelector from './IdSelector.js'; -export * as MediaFeature from './MediaFeature.js'; -export * as MediaQuery from './MediaQuery.js'; -export * as MediaQueryList from './MediaQueryList.js'; -export * as NestingSelector from './NestingSelector.js'; -export * as Nth from './Nth.js'; -export * as Number from './Number.js'; -export * as Operator from './Operator.js'; -export * as Parentheses from './Parentheses.js'; -export * as Percentage from './Percentage.js'; -export * as PseudoClassSelector from './PseudoClassSelector.js'; -export * as PseudoElementSelector from './PseudoElementSelector.js'; -export * as Ratio from './Ratio.js'; -export * as Raw from './Raw.js'; -export * as Rule from './Rule.js'; -export * as Selector from './Selector.js'; -export * as SelectorList from './SelectorList.js'; -export * as String from './String.js'; -export * as StyleSheet from './StyleSheet.js'; -export * as TypeSelector from './TypeSelector.js'; -export * as UnicodeRange from './UnicodeRange.js'; -export * as Url from './Url.js'; -export * as Value from './Value.js'; -export * as WhiteSpace from './WhiteSpace.js'; |
