@projectwallace/css-parser 0.13.3 → 0.13.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/arena.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare const DECLARATION = 4;
5
5
  export declare const SELECTOR = 5;
6
6
  export declare const COMMENT = 6;
7
7
  export declare const BLOCK = 7;
8
+ export declare const RAW = 8;
8
9
  export declare const IDENTIFIER = 10;
9
10
  export declare const NUMBER = 11;
10
11
  export declare const DIMENSION = 12;
@@ -37,6 +38,7 @@ export declare const LAYER_NAME = 37;
37
38
  export declare const PRELUDE_OPERATOR = 38;
38
39
  export declare const FEATURE_RANGE = 39;
39
40
  export declare const AT_RULE_PRELUDE = 40;
41
+ export declare const PRELUDE_SELECTORLIST = 41;
40
42
  export declare const VALUE = 50;
41
43
  export declare const FLAG_IMPORTANT: number;
42
44
  export declare const FLAG_HAS_ERROR: number;
package/dist/arena.js CHANGED
@@ -6,6 +6,7 @@ const DECLARATION = 4;
6
6
  const SELECTOR = 5;
7
7
  const COMMENT = 6;
8
8
  const BLOCK = 7;
9
+ const RAW = 8;
9
10
  const IDENTIFIER = 10;
10
11
  const NUMBER = 11;
11
12
  const DIMENSION = 12;
@@ -38,6 +39,7 @@ const LAYER_NAME = 37;
38
39
  const PRELUDE_OPERATOR = 38;
39
40
  const FEATURE_RANGE = 39;
40
41
  const AT_RULE_PRELUDE = 40;
42
+ const PRELUDE_SELECTORLIST = 41;
41
43
  const VALUE = 50;
42
44
  const FLAG_IMPORTANT = 1 << 0;
43
45
  const FLAG_HAS_ERROR = 1 << 1;
@@ -286,4 +288,4 @@ class CSSDataArena {
286
288
  }
287
289
  }
288
290
 
289
- export { ATTRIBUTE_SELECTOR, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_NONE, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, AT_RULE, AT_RULE_PRELUDE, BLOCK, CLASS_SELECTOR, COMBINATOR, COMMENT, CONTAINER_QUERY, CSSDataArena, DECLARATION, DIMENSION, FEATURE_RANGE, FLAG_BROWSERHACK, FLAG_HAS_BLOCK, FLAG_HAS_DECLARATIONS, FLAG_HAS_ERROR, FLAG_HAS_PARENS, FLAG_IMPORTANT, FLAG_LENGTH_OVERFLOW, FUNCTION, HASH, IDENTIFIER, ID_SELECTOR, LANG_SELECTOR, LAYER_NAME, MEDIA_FEATURE, MEDIA_QUERY, MEDIA_TYPE, NESTING_SELECTOR, NTH_OF_SELECTOR, NTH_SELECTOR, NUMBER, OPERATOR, PARENTHESIS, PRELUDE_OPERATOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, SELECTOR, SELECTOR_LIST, STRING, STYLESHEET, STYLE_RULE, SUPPORTS_QUERY, TYPE_SELECTOR, UNICODE_RANGE, UNIVERSAL_SELECTOR, URL, VALUE };
291
+ export { ATTRIBUTE_SELECTOR, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_NONE, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, AT_RULE, AT_RULE_PRELUDE, BLOCK, CLASS_SELECTOR, COMBINATOR, COMMENT, CONTAINER_QUERY, CSSDataArena, DECLARATION, DIMENSION, FEATURE_RANGE, FLAG_BROWSERHACK, FLAG_HAS_BLOCK, FLAG_HAS_DECLARATIONS, FLAG_HAS_ERROR, FLAG_HAS_PARENS, FLAG_IMPORTANT, FLAG_LENGTH_OVERFLOW, FUNCTION, HASH, IDENTIFIER, ID_SELECTOR, LANG_SELECTOR, LAYER_NAME, MEDIA_FEATURE, MEDIA_QUERY, MEDIA_TYPE, NESTING_SELECTOR, NTH_OF_SELECTOR, NTH_SELECTOR, NUMBER, OPERATOR, PARENTHESIS, PRELUDE_OPERATOR, PRELUDE_SELECTORLIST, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, RAW, SELECTOR, SELECTOR_LIST, STRING, STYLESHEET, STYLE_RULE, SUPPORTS_QUERY, TYPE_SELECTOR, UNICODE_RANGE, UNIVERSAL_SELECTOR, URL, VALUE };
@@ -1,5 +1,5 @@
1
- import { STYLESHEET, STYLE_RULE, AT_RULE, DECLARATION, SELECTOR, COMMENT, BLOCK, IDENTIFIER, NUMBER, DIMENSION, STRING, HASH, FUNCTION, OPERATOR, PARENTHESIS, URL, VALUE, SELECTOR_LIST, TYPE_SELECTOR, CLASS_SELECTOR, ID_SELECTOR, ATTRIBUTE_SELECTOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, COMBINATOR, UNIVERSAL_SELECTOR, NESTING_SELECTOR, NTH_SELECTOR, NTH_OF_SELECTOR, LANG_SELECTOR, MEDIA_QUERY, MEDIA_FEATURE, MEDIA_TYPE, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, PRELUDE_OPERATOR, FEATURE_RANGE, AT_RULE_PRELUDE, FLAG_IMPORTANT, ATTR_OPERATOR_NONE, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_FLAG_NONE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE } from './arena';
2
- export { STYLESHEET, STYLE_RULE, AT_RULE, DECLARATION, SELECTOR, COMMENT, BLOCK, IDENTIFIER, NUMBER, DIMENSION, STRING, HASH, FUNCTION, OPERATOR, PARENTHESIS, URL, VALUE, SELECTOR_LIST, TYPE_SELECTOR, CLASS_SELECTOR, ID_SELECTOR, ATTRIBUTE_SELECTOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, COMBINATOR, UNIVERSAL_SELECTOR, NESTING_SELECTOR, NTH_SELECTOR, NTH_OF_SELECTOR, LANG_SELECTOR, MEDIA_QUERY, MEDIA_FEATURE, MEDIA_TYPE, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, PRELUDE_OPERATOR, FEATURE_RANGE, AT_RULE_PRELUDE, FLAG_IMPORTANT, ATTR_OPERATOR_NONE, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_FLAG_NONE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, };
1
+ import { STYLESHEET, STYLE_RULE, AT_RULE, DECLARATION, SELECTOR, COMMENT, BLOCK, RAW, IDENTIFIER, NUMBER, DIMENSION, STRING, HASH, FUNCTION, OPERATOR, PARENTHESIS, URL, VALUE, SELECTOR_LIST, TYPE_SELECTOR, CLASS_SELECTOR, ID_SELECTOR, ATTRIBUTE_SELECTOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, COMBINATOR, UNIVERSAL_SELECTOR, NESTING_SELECTOR, NTH_SELECTOR, NTH_OF_SELECTOR, LANG_SELECTOR, MEDIA_QUERY, MEDIA_FEATURE, MEDIA_TYPE, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, PRELUDE_OPERATOR, FEATURE_RANGE, AT_RULE_PRELUDE, FLAG_IMPORTANT, ATTR_OPERATOR_NONE, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_FLAG_NONE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE } from './arena';
2
+ export { STYLESHEET, STYLE_RULE, AT_RULE, DECLARATION, SELECTOR, COMMENT, BLOCK, RAW, IDENTIFIER, NUMBER, DIMENSION, STRING, HASH, FUNCTION, OPERATOR, PARENTHESIS, URL, VALUE, SELECTOR_LIST, TYPE_SELECTOR, CLASS_SELECTOR, ID_SELECTOR, ATTRIBUTE_SELECTOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, COMBINATOR, UNIVERSAL_SELECTOR, NESTING_SELECTOR, NTH_SELECTOR, NTH_OF_SELECTOR, LANG_SELECTOR, MEDIA_QUERY, MEDIA_FEATURE, MEDIA_TYPE, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, PRELUDE_OPERATOR, FEATURE_RANGE, AT_RULE_PRELUDE, FLAG_IMPORTANT, ATTR_OPERATOR_NONE, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_FLAG_NONE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, };
3
3
  export declare const NODE_TYPES: {
4
4
  readonly STYLESHEET: 1;
5
5
  readonly STYLE_RULE: 2;
@@ -8,6 +8,7 @@ export declare const NODE_TYPES: {
8
8
  readonly SELECTOR: 5;
9
9
  readonly COMMENT: 6;
10
10
  readonly BLOCK: 7;
11
+ readonly RAW: 8;
11
12
  readonly IDENTIFIER: 10;
12
13
  readonly NUMBER: 11;
13
14
  readonly DIMENSION: 12;
package/dist/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- import { AT_RULE_PRELUDE, FEATURE_RANGE, PRELUDE_OPERATOR, LAYER_NAME, SUPPORTS_QUERY, CONTAINER_QUERY, MEDIA_TYPE, MEDIA_FEATURE, MEDIA_QUERY, LANG_SELECTOR, NTH_OF_SELECTOR, NTH_SELECTOR, NESTING_SELECTOR, UNIVERSAL_SELECTOR, COMBINATOR, PSEUDO_ELEMENT_SELECTOR, PSEUDO_CLASS_SELECTOR, ATTRIBUTE_SELECTOR, ID_SELECTOR, CLASS_SELECTOR, TYPE_SELECTOR, SELECTOR_LIST, VALUE, URL, PARENTHESIS, OPERATOR, FUNCTION, HASH, STRING, DIMENSION, NUMBER, IDENTIFIER, BLOCK, COMMENT, SELECTOR, DECLARATION, AT_RULE, STYLE_RULE, STYLESHEET } from './arena.js';
1
+ import { AT_RULE_PRELUDE, FEATURE_RANGE, PRELUDE_OPERATOR, LAYER_NAME, SUPPORTS_QUERY, CONTAINER_QUERY, MEDIA_TYPE, MEDIA_FEATURE, MEDIA_QUERY, LANG_SELECTOR, NTH_OF_SELECTOR, NTH_SELECTOR, NESTING_SELECTOR, UNIVERSAL_SELECTOR, COMBINATOR, PSEUDO_ELEMENT_SELECTOR, PSEUDO_CLASS_SELECTOR, ATTRIBUTE_SELECTOR, ID_SELECTOR, CLASS_SELECTOR, TYPE_SELECTOR, SELECTOR_LIST, VALUE, URL, PARENTHESIS, OPERATOR, FUNCTION, HASH, STRING, DIMENSION, NUMBER, IDENTIFIER, RAW, BLOCK, COMMENT, SELECTOR, DECLARATION, AT_RULE, STYLE_RULE, STYLESHEET } from './arena.js';
2
2
  export { ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_NONE, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, FLAG_IMPORTANT } from './arena.js';
3
3
 
4
4
  const NODE_TYPES = {
@@ -10,6 +10,7 @@ const NODE_TYPES = {
10
10
  SELECTOR,
11
11
  COMMENT,
12
12
  BLOCK,
13
+ RAW,
13
14
  // Value nodes
14
15
  IDENTIFIER,
15
16
  NUMBER,
@@ -47,4 +48,4 @@ const NODE_TYPES = {
47
48
  AT_RULE_PRELUDE
48
49
  };
49
50
 
50
- export { ATTRIBUTE_SELECTOR, AT_RULE, AT_RULE_PRELUDE, BLOCK, CLASS_SELECTOR, COMBINATOR, COMMENT, CONTAINER_QUERY, DECLARATION, DIMENSION, FEATURE_RANGE, FUNCTION, HASH, IDENTIFIER, ID_SELECTOR, LANG_SELECTOR, LAYER_NAME, MEDIA_FEATURE, MEDIA_QUERY, MEDIA_TYPE, NESTING_SELECTOR, NODE_TYPES, NTH_OF_SELECTOR, NTH_SELECTOR, NUMBER, OPERATOR, PARENTHESIS, PRELUDE_OPERATOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, SELECTOR, SELECTOR_LIST, STRING, STYLESHEET, STYLE_RULE, SUPPORTS_QUERY, TYPE_SELECTOR, UNIVERSAL_SELECTOR, URL, VALUE };
51
+ export { ATTRIBUTE_SELECTOR, AT_RULE, AT_RULE_PRELUDE, BLOCK, CLASS_SELECTOR, COMBINATOR, COMMENT, CONTAINER_QUERY, DECLARATION, DIMENSION, FEATURE_RANGE, FUNCTION, HASH, IDENTIFIER, ID_SELECTOR, LANG_SELECTOR, LAYER_NAME, MEDIA_FEATURE, MEDIA_QUERY, MEDIA_TYPE, NESTING_SELECTOR, NODE_TYPES, NTH_OF_SELECTOR, NTH_SELECTOR, NUMBER, OPERATOR, PARENTHESIS, PRELUDE_OPERATOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, RAW, SELECTOR, SELECTOR_LIST, STRING, STYLESHEET, STYLE_RULE, SUPPORTS_QUERY, TYPE_SELECTOR, UNIVERSAL_SELECTOR, URL, VALUE };
@@ -1,5 +1,5 @@
1
1
  import type { CSSDataArena } from './arena';
2
- import { STYLESHEET, STYLE_RULE, AT_RULE, DECLARATION, SELECTOR, COMMENT, BLOCK, IDENTIFIER, NUMBER, DIMENSION, STRING, HASH, FUNCTION, OPERATOR, PARENTHESIS, URL, VALUE, SELECTOR_LIST, TYPE_SELECTOR, CLASS_SELECTOR, ID_SELECTOR, ATTRIBUTE_SELECTOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, COMBINATOR, UNIVERSAL_SELECTOR, NESTING_SELECTOR, NTH_SELECTOR, NTH_OF_SELECTOR, LANG_SELECTOR, MEDIA_QUERY, MEDIA_FEATURE, MEDIA_TYPE, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, PRELUDE_OPERATOR, FEATURE_RANGE, AT_RULE_PRELUDE } from './arena';
2
+ import { RAW, STYLESHEET, STYLE_RULE, AT_RULE, DECLARATION, SELECTOR, COMMENT, BLOCK, IDENTIFIER, NUMBER, DIMENSION, STRING, HASH, FUNCTION, OPERATOR, PARENTHESIS, URL, VALUE, SELECTOR_LIST, TYPE_SELECTOR, CLASS_SELECTOR, ID_SELECTOR, ATTRIBUTE_SELECTOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, COMBINATOR, UNIVERSAL_SELECTOR, NESTING_SELECTOR, NTH_SELECTOR, NTH_OF_SELECTOR, LANG_SELECTOR, MEDIA_QUERY, MEDIA_FEATURE, MEDIA_TYPE, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, PRELUDE_OPERATOR, FEATURE_RANGE, AT_RULE_PRELUDE } from './arena';
3
3
  export declare const TYPE_NAMES: {
4
4
  readonly 1: "StyleSheet";
5
5
  readonly 2: "Rule";
@@ -8,6 +8,7 @@ export declare const TYPE_NAMES: {
8
8
  readonly 5: "Selector";
9
9
  readonly 6: "Comment";
10
10
  readonly 7: "Block";
11
+ readonly 8: "Raw";
11
12
  readonly 10: "Identifier";
12
13
  readonly 11: "Number";
13
14
  readonly 12: "Dimension";
@@ -45,7 +46,7 @@ export declare const TYPE_NAMES: {
45
46
  export type TypeName = (typeof TYPE_NAMES)[keyof typeof TYPE_NAMES] | 'unknown';
46
47
  export declare const ATTR_OPERATOR_NAMES: Record<number, string | null>;
47
48
  export declare const ATTR_FLAG_NAMES: Record<number, string | null>;
48
- export type CSSNodeType = typeof STYLESHEET | typeof STYLE_RULE | typeof AT_RULE | typeof DECLARATION | typeof SELECTOR | typeof COMMENT | typeof BLOCK | typeof IDENTIFIER | typeof NUMBER | typeof DIMENSION | typeof STRING | typeof HASH | typeof FUNCTION | typeof OPERATOR | typeof PARENTHESIS | typeof URL | typeof VALUE | typeof SELECTOR_LIST | typeof TYPE_SELECTOR | typeof CLASS_SELECTOR | typeof ID_SELECTOR | typeof ATTRIBUTE_SELECTOR | typeof PSEUDO_CLASS_SELECTOR | typeof PSEUDO_ELEMENT_SELECTOR | typeof COMBINATOR | typeof UNIVERSAL_SELECTOR | typeof NESTING_SELECTOR | typeof NTH_SELECTOR | typeof NTH_OF_SELECTOR | typeof LANG_SELECTOR | typeof MEDIA_QUERY | typeof MEDIA_FEATURE | typeof MEDIA_TYPE | typeof CONTAINER_QUERY | typeof SUPPORTS_QUERY | typeof LAYER_NAME | typeof PRELUDE_OPERATOR | typeof FEATURE_RANGE | typeof AT_RULE_PRELUDE;
49
+ export type CSSNodeType = typeof STYLESHEET | typeof STYLE_RULE | typeof AT_RULE | typeof DECLARATION | typeof SELECTOR | typeof COMMENT | typeof BLOCK | typeof RAW | typeof IDENTIFIER | typeof NUMBER | typeof DIMENSION | typeof STRING | typeof HASH | typeof FUNCTION | typeof OPERATOR | typeof PARENTHESIS | typeof URL | typeof VALUE | typeof SELECTOR_LIST | typeof TYPE_SELECTOR | typeof CLASS_SELECTOR | typeof ID_SELECTOR | typeof ATTRIBUTE_SELECTOR | typeof PSEUDO_CLASS_SELECTOR | typeof PSEUDO_ELEMENT_SELECTOR | typeof COMBINATOR | typeof UNIVERSAL_SELECTOR | typeof NESTING_SELECTOR | typeof NTH_SELECTOR | typeof NTH_OF_SELECTOR | typeof LANG_SELECTOR | typeof MEDIA_QUERY | typeof MEDIA_FEATURE | typeof MEDIA_TYPE | typeof CONTAINER_QUERY | typeof SUPPORTS_QUERY | typeof LAYER_NAME | typeof PRELUDE_OPERATOR | typeof FEATURE_RANGE | typeof AT_RULE_PRELUDE;
49
50
  export interface CloneOptions {
50
51
  /**
51
52
  * Recursively clone all children
package/dist/css-node.js CHANGED
@@ -1,4 +1,4 @@
1
- import { DECLARATION, OPERATOR, SELECTOR, MEDIA_FEATURE, DIMENSION, NUMBER, URL, STRING, AT_RULE, AT_RULE_PRELUDE, STYLE_RULE, ATTRIBUTE_SELECTOR, FLAG_IMPORTANT, FLAG_BROWSERHACK, IDENTIFIER, FUNCTION, PSEUDO_ELEMENT_SELECTOR, PSEUDO_CLASS_SELECTOR, FLAG_HAS_ERROR, FLAG_HAS_BLOCK, FLAG_HAS_DECLARATIONS, BLOCK, COMMENT, FLAG_HAS_PARENS, NTH_SELECTOR, NTH_OF_SELECTOR, SELECTOR_LIST, FEATURE_RANGE, PRELUDE_OPERATOR, LAYER_NAME, SUPPORTS_QUERY, CONTAINER_QUERY, MEDIA_TYPE, MEDIA_QUERY, LANG_SELECTOR, NESTING_SELECTOR, UNIVERSAL_SELECTOR, COMBINATOR, ID_SELECTOR, CLASS_SELECTOR, TYPE_SELECTOR, VALUE, UNICODE_RANGE, PARENTHESIS, HASH, STYLESHEET, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_NONE } from './arena.js';
1
+ import { ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_NONE, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, DECLARATION, OPERATOR, SELECTOR, MEDIA_FEATURE, DIMENSION, NUMBER, URL, STRING, AT_RULE, AT_RULE_PRELUDE, RAW, STYLE_RULE, ATTRIBUTE_SELECTOR, FLAG_IMPORTANT, FLAG_BROWSERHACK, IDENTIFIER, FUNCTION, PSEUDO_ELEMENT_SELECTOR, PSEUDO_CLASS_SELECTOR, FLAG_HAS_ERROR, FLAG_HAS_BLOCK, FLAG_HAS_DECLARATIONS, BLOCK, COMMENT, FLAG_HAS_PARENS, NTH_SELECTOR, NTH_OF_SELECTOR, SELECTOR_LIST, FEATURE_RANGE, PRELUDE_OPERATOR, LAYER_NAME, SUPPORTS_QUERY, CONTAINER_QUERY, MEDIA_TYPE, MEDIA_QUERY, LANG_SELECTOR, NESTING_SELECTOR, UNIVERSAL_SELECTOR, COMBINATOR, ID_SELECTOR, CLASS_SELECTOR, TYPE_SELECTOR, VALUE, UNICODE_RANGE, PARENTHESIS, HASH, STYLESHEET } from './arena.js';
2
2
  import { str_starts_with, is_vendor_prefixed, is_whitespace, CHAR_MINUS_HYPHEN, CHAR_PLUS } from './string-utils.js';
3
3
  import { parse_dimension } from './parse-dimension.js';
4
4
 
@@ -10,6 +10,7 @@ const TYPE_NAMES = {
10
10
  [SELECTOR]: "Selector",
11
11
  [COMMENT]: "Comment",
12
12
  [BLOCK]: "Block",
13
+ [RAW]: "Raw",
13
14
  [IDENTIFIER]: "Identifier",
14
15
  [NUMBER]: "Number",
15
16
  [DIMENSION]: "Dimension",
@@ -170,7 +171,7 @@ class CSSNode {
170
171
  get prelude() {
171
172
  if (this.type === AT_RULE) {
172
173
  let first = this.first_child;
173
- if (first && first.type === AT_RULE_PRELUDE) {
174
+ if (first?.type === AT_RULE_PRELUDE || first?.type === RAW) {
174
175
  return first;
175
176
  }
176
177
  return null;
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { tokenize } from './tokenize';
8
8
  export { walk, traverse, SKIP, BREAK } from './walk';
9
9
  export { is_custom, is_vendor_prefixed, str_equals, str_starts_with, str_index_of } from './string-utils';
10
10
  export { type ParserOptions } from './parse';
11
- export { CSSNode, type CSSNodeType, TYPE_NAMES, type CloneOptions, type PlainCSSNode } from './css-node';
11
+ export { CSSNode, type CSSNodeType, TYPE_NAMES, type CloneOptions, type PlainCSSNode, ATTR_FLAG_NAMES, ATTR_OPERATOR_NAMES, } from './css-node';
12
12
  export type { LexerPosition, CommentInfo } from './tokenize';
13
13
  export { ATTR_OPERATOR_NONE, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_FLAG_NONE, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, } from './arena';
14
14
  export * from './constants';
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ export { parse_dimension } from './parse-dimension.js';
7
7
  export { tokenize } from './tokenize.js';
8
8
  export { BREAK, SKIP, traverse, walk } from './walk.js';
9
9
  export { is_custom, is_vendor_prefixed, str_equals, str_index_of, str_starts_with } from './string-utils.js';
10
- export { CSSNode, TYPE_NAMES } from './css-node.js';
11
- export { ATTRIBUTE_SELECTOR, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_NONE, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, AT_RULE, AT_RULE_PRELUDE, BLOCK, CLASS_SELECTOR, COMBINATOR, COMMENT, CONTAINER_QUERY, DECLARATION, DIMENSION, FEATURE_RANGE, FLAG_IMPORTANT, FUNCTION, HASH, IDENTIFIER, ID_SELECTOR, LANG_SELECTOR, LAYER_NAME, MEDIA_FEATURE, MEDIA_QUERY, MEDIA_TYPE, NESTING_SELECTOR, NTH_OF_SELECTOR, NTH_SELECTOR, NUMBER, OPERATOR, PARENTHESIS, PRELUDE_OPERATOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, SELECTOR, SELECTOR_LIST, STRING, STYLESHEET, STYLE_RULE, SUPPORTS_QUERY, TYPE_SELECTOR, UNIVERSAL_SELECTOR, URL, VALUE } from './arena.js';
10
+ export { ATTR_FLAG_NAMES, ATTR_OPERATOR_NAMES, CSSNode, TYPE_NAMES } from './css-node.js';
11
+ export { ATTRIBUTE_SELECTOR, ATTR_FLAG_CASE_INSENSITIVE, ATTR_FLAG_CASE_SENSITIVE, ATTR_FLAG_NONE, ATTR_OPERATOR_CARET_EQUAL, ATTR_OPERATOR_DOLLAR_EQUAL, ATTR_OPERATOR_EQUAL, ATTR_OPERATOR_NONE, ATTR_OPERATOR_PIPE_EQUAL, ATTR_OPERATOR_STAR_EQUAL, ATTR_OPERATOR_TILDE_EQUAL, AT_RULE, AT_RULE_PRELUDE, BLOCK, CLASS_SELECTOR, COMBINATOR, COMMENT, CONTAINER_QUERY, DECLARATION, DIMENSION, FEATURE_RANGE, FLAG_IMPORTANT, FUNCTION, HASH, IDENTIFIER, ID_SELECTOR, LANG_SELECTOR, LAYER_NAME, MEDIA_FEATURE, MEDIA_QUERY, MEDIA_TYPE, NESTING_SELECTOR, NTH_OF_SELECTOR, NTH_SELECTOR, NUMBER, OPERATOR, PARENTHESIS, PRELUDE_OPERATOR, PSEUDO_CLASS_SELECTOR, PSEUDO_ELEMENT_SELECTOR, RAW, SELECTOR, SELECTOR_LIST, STRING, STYLESHEET, STYLE_RULE, SUPPORTS_QUERY, TYPE_SELECTOR, UNIVERSAL_SELECTOR, URL, VALUE } from './arena.js';
12
12
  export { NODE_TYPES } from './constants.js';
13
13
  export { TOKEN_AT_KEYWORD, TOKEN_BAD_STRING, TOKEN_BAD_URL, TOKEN_CDC, TOKEN_CDO, TOKEN_COLON, TOKEN_COMMA, TOKEN_COMMENT, TOKEN_DELIM, TOKEN_DIMENSION, TOKEN_EOF, TOKEN_FUNCTION, TOKEN_HASH, TOKEN_IDENT, TOKEN_LEFT_BRACE, TOKEN_LEFT_BRACKET, TOKEN_LEFT_PAREN, TOKEN_NUMBER, TOKEN_PERCENTAGE, TOKEN_RIGHT_BRACE, TOKEN_RIGHT_BRACKET, TOKEN_RIGHT_PAREN, TOKEN_SEMICOLON, TOKEN_STRING, TOKEN_UNICODE_RANGE, TOKEN_URL, TOKEN_WHITESPACE } from './token-types.js';
@@ -1,5 +1,5 @@
1
1
  import { Lexer } from './tokenize.js';
2
- import { CSSDataArena, PRELUDE_OPERATOR, MEDIA_TYPE, MEDIA_QUERY, MEDIA_FEATURE, FUNCTION, IDENTIFIER, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, STRING, URL, DIMENSION, NUMBER, FEATURE_RANGE } from './arena.js';
2
+ import { CSSDataArena, PRELUDE_OPERATOR, MEDIA_TYPE, MEDIA_QUERY, MEDIA_FEATURE, FUNCTION, IDENTIFIER, CONTAINER_QUERY, SUPPORTS_QUERY, LAYER_NAME, STRING, URL, DIMENSION, NUMBER, PRELUDE_SELECTORLIST, FEATURE_RANGE } from './arena.js';
3
3
  import { TOKEN_COMMA, TOKEN_IDENT, TOKEN_LEFT_PAREN, TOKEN_RIGHT_PAREN, TOKEN_FUNCTION, TOKEN_EOF, TOKEN_WHITESPACE, TOKEN_STRING, TOKEN_URL, TOKEN_DIMENSION, TOKEN_PERCENTAGE, TOKEN_NUMBER } from './token-types.js';
4
4
  import { strip_vendor_prefix, str_equals, CHAR_LESS_THAN, CHAR_GREATER_THAN, CHAR_EQUALS, CHAR_COLON, is_whitespace } from './string-utils.js';
5
5
  import { skip_whitespace_and_comments_forward, trim_boundaries } from './parse-utils.js';
@@ -24,23 +24,35 @@ class AtRulePreludeParser {
24
24
  }
25
25
  // Dispatch to appropriate parser based on at-rule type
26
26
  parse_prelude_dispatch(at_rule_name) {
27
- let normalized_name = strip_vendor_prefix(at_rule_name);
28
- if (str_equals("media", normalized_name)) {
29
- return this.parse_media_query_list();
30
- } else if (str_equals("container", normalized_name)) {
31
- return this.parse_container_query();
32
- } else if (str_equals("supports", normalized_name)) {
33
- return this.parse_supports_query();
34
- } else if (str_equals("layer", normalized_name)) {
35
- return this.parse_layer_names();
36
- } else if (str_equals("keyframes", normalized_name)) {
37
- return this.parse_identifier();
38
- } else if (str_equals("property", normalized_name)) {
39
- return this.parse_identifier();
40
- } else if (str_equals("import", normalized_name)) {
41
- return this.parse_import_prelude();
42
- } else if (str_equals("charset", normalized_name)) {
43
- return this.parse_charset_prelude();
27
+ let normalized_name = strip_vendor_prefix(at_rule_name).toLowerCase();
28
+ switch (normalized_name) {
29
+ case "media":
30
+ return this.parse_media_query_list();
31
+ case "container":
32
+ return this.parse_container_query();
33
+ case "supports":
34
+ return this.parse_supports_query();
35
+ case "layer":
36
+ return this.parse_layer_names();
37
+ case "keyframes":
38
+ case "property":
39
+ case "counter-style":
40
+ case "color-profile":
41
+ case "font-palette-values":
42
+ case "position-try":
43
+ case "font-feature-values":
44
+ case "page":
45
+ return this.parse_identifier();
46
+ case "import":
47
+ return this.parse_import_prelude();
48
+ case "charset":
49
+ return this.parse_charset_prelude();
50
+ case "namespace":
51
+ return this.parse_namespace_prelude();
52
+ case "scope":
53
+ return this.parse_scope_prelude();
54
+ case "custom-media":
55
+ return this.parse_custom_media_prelude();
44
56
  }
45
57
  return [];
46
58
  }
@@ -524,6 +536,76 @@ class AtRulePreludeParser {
524
536
  this.lexer = saved_lexer;
525
537
  return nodes;
526
538
  }
539
+ // Parse @namespace prelude: [prefix] url("...") | "..."
540
+ // e.g. @namespace url("http://www.w3.org/1999/xhtml");
541
+ // e.g. @namespace svg url("http://www.w3.org/2000/svg");
542
+ parse_namespace_prelude() {
543
+ let nodes = [];
544
+ this.skip_whitespace();
545
+ if (this.lexer.pos >= this.prelude_end) return [];
546
+ const saved = this.lexer.save_position();
547
+ this.next_token();
548
+ if (this.lexer.token_type === TOKEN_IDENT) {
549
+ nodes.push(this.create_node(IDENTIFIER, this.lexer.token_start, this.lexer.token_end));
550
+ this.skip_whitespace();
551
+ } else {
552
+ this.lexer.restore_position(saved);
553
+ }
554
+ const url_node = this.parse_import_url();
555
+ if (url_node !== null) nodes.push(url_node);
556
+ return nodes;
557
+ }
558
+ // Parse @scope prelude: [(<scope-start>)] [to (<scope-end>)]
559
+ // e.g. @scope (.parent) to (.child) { }
560
+ parse_scope_prelude() {
561
+ let nodes = [];
562
+ while (this.lexer.pos < this.prelude_end) {
563
+ this.skip_whitespace();
564
+ if (this.lexer.pos >= this.prelude_end) break;
565
+ const token_type = this.peek_token_type();
566
+ if (token_type === TOKEN_LEFT_PAREN) {
567
+ this.next_token();
568
+ let paren_start = this.lexer.token_start;
569
+ let content_start = this.lexer.pos;
570
+ let depth = 1;
571
+ while (this.lexer.pos < this.prelude_end && depth > 0) {
572
+ this.next_token();
573
+ if (this.lexer.token_type === TOKEN_LEFT_PAREN) depth++;
574
+ else if (this.lexer.token_type === TOKEN_RIGHT_PAREN) depth--;
575
+ }
576
+ let content_end = this.lexer.token_start;
577
+ let paren_end = this.lexer.token_end;
578
+ let scope_node = this.create_node(PRELUDE_SELECTORLIST, paren_start, paren_end);
579
+ let trimmed = trim_boundaries(this.source, content_start, content_end);
580
+ if (trimmed) {
581
+ this.arena.set_value_start_delta(scope_node, trimmed[0] - paren_start);
582
+ this.arena.set_value_length(scope_node, trimmed[1] - trimmed[0]);
583
+ }
584
+ nodes.push(scope_node);
585
+ } else if (token_type === TOKEN_IDENT) {
586
+ this.next_token();
587
+ let text = this.source.substring(this.lexer.token_start, this.lexer.token_end);
588
+ if (str_equals("to", text)) {
589
+ nodes.push(this.create_node(PRELUDE_OPERATOR, this.lexer.token_start, this.lexer.token_end));
590
+ }
591
+ } else {
592
+ this.next_token();
593
+ }
594
+ }
595
+ return nodes;
596
+ }
597
+ // Parse @custom-media prelude: --name <media-condition>
598
+ // e.g. @custom-media --small (max-width: 30em);
599
+ parse_custom_media_prelude() {
600
+ let nodes = [];
601
+ this.skip_whitespace();
602
+ if (this.lexer.pos >= this.prelude_end) return [];
603
+ this.next_token();
604
+ if (this.lexer.token_type !== TOKEN_IDENT) return [];
605
+ nodes.push(this.create_node(IDENTIFIER, this.lexer.token_start, this.lexer.token_end));
606
+ nodes.push(...this.parse_media_query_list());
607
+ return nodes;
608
+ }
527
609
  // Parse media feature range syntax: (50px <= width <= 100px)
528
610
  parse_feature_range(feature_start, feature_end, content_start, content_end) {
529
611
  let range_node = this.create_node(FEATURE_RANGE, feature_start, feature_end);
@@ -1,5 +1,5 @@
1
1
  import { Lexer } from './tokenize.js';
2
- import { CSSDataArena, DECLARATION, FLAG_IMPORTANT, FLAG_BROWSERHACK } from './arena.js';
2
+ import { CSSDataArena, DECLARATION, RAW, FLAG_IMPORTANT, FLAG_BROWSERHACK } from './arena.js';
3
3
  import { ValueParser } from './parse-value.js';
4
4
  import { is_vendor_prefixed } from './string-utils.js';
5
5
  import { TOKEN_AT_KEYWORD, TOKEN_HASH, TOKEN_IDENT, TOKEN_DELIM, TOKEN_LEFT_PAREN, TOKEN_RIGHT_PAREN, TOKEN_LEFT_BRACKET, TOKEN_RIGHT_BRACKET, TOKEN_COMMA, TOKEN_COLON, TOKEN_EOF, TOKEN_SEMICOLON, TOKEN_RIGHT_BRACE, TOKEN_LEFT_BRACE, TOKEN_FUNCTION } from './token-types.js';
@@ -130,6 +130,9 @@ class DeclarationParser {
130
130
  if (this.value_parser) {
131
131
  let valueNode = this.value_parser.parse_value(value_start, trimmed[1], value_start_line, value_start_column);
132
132
  this.arena.append_children(declaration, [valueNode]);
133
+ } else {
134
+ let rawNode = this.arena.create_node(RAW, trimmed[0], trimmed[1] - trimmed[0], value_start_line, value_start_column);
135
+ this.arena.append_children(declaration, [rawNode]);
133
136
  }
134
137
  } else {
135
138
  this.arena.set_value_start_delta(declaration, value_start - prop_start);
package/dist/parse.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Lexer } from './tokenize.js';
2
- import { CSSDataArena, STYLESHEET, STYLE_RULE, FLAG_HAS_BLOCK, BLOCK, FLAG_HAS_DECLARATIONS, SELECTOR_LIST, AT_RULE, AT_RULE_PRELUDE } from './arena.js';
2
+ import { CSSDataArena, STYLESHEET, STYLE_RULE, FLAG_HAS_BLOCK, BLOCK, FLAG_HAS_DECLARATIONS, SELECTOR_LIST, RAW, AT_RULE, AT_RULE_PRELUDE } from './arena.js';
3
3
  import { CSSNode } from './css-node.js';
4
4
  import { SelectorParser } from './parse-selector.js';
5
5
  import { AtRulePreludeParser } from './parse-atrule-prelude.js';
@@ -8,8 +8,8 @@ import { TOKEN_EOF, TOKEN_AT_KEYWORD, TOKEN_LEFT_BRACE, TOKEN_RIGHT_BRACE, TOKEN
8
8
  import { trim_boundaries } from './parse-utils.js';
9
9
  import { CHAR_PERIOD, CHAR_GREATER_THAN, CHAR_PLUS, CHAR_TILDE, CHAR_AMPERSAND } from './string-utils.js';
10
10
 
11
- let DECLARATION_AT_RULES = /* @__PURE__ */ new Set(["font-face", "font-feature-values", "page", "property", "counter-style"]);
12
- let CONDITIONAL_AT_RULES = /* @__PURE__ */ new Set(["media", "supports", "container", "layer", "nest"]);
11
+ let DECLARATION_AT_RULES = /* @__PURE__ */ new Set(["font-face", "font-feature-values", "page", "property", "counter-style", "color-profile", "font-palette-values", "position-try", "view-transition"]);
12
+ let CONDITIONAL_AT_RULES = /* @__PURE__ */ new Set(["media", "supports", "container", "layer", "nest", "scope", "starting-style"]);
13
13
  class Parser {
14
14
  source;
15
15
  lexer;
@@ -171,8 +171,9 @@ class Parser {
171
171
  return selector;
172
172
  }
173
173
  }
174
- let selector_list = this.arena.create_node(SELECTOR_LIST, selector_start, last_end - selector_start, selector_line, selector_column);
175
- return selector_list;
174
+ let node_type = this.parse_selectors_enabled ? SELECTOR_LIST : RAW;
175
+ let selector_node = this.arena.create_node(node_type, selector_start, last_end - selector_start, selector_line, selector_column);
176
+ return selector_node;
176
177
  }
177
178
  // Parse a declaration: property: value;
178
179
  parse_declaration() {
@@ -237,6 +238,8 @@ class Parser {
237
238
  if (prelude_nodes.length > 0) {
238
239
  this.arena.append_children(prelude_wrapper, prelude_nodes);
239
240
  }
241
+ } else {
242
+ prelude_wrapper = this.arena.create_node(RAW, trimmed[0], trimmed[1] - trimmed[0], at_rule_line, at_rule_column);
240
243
  }
241
244
  }
242
245
  let last_end = this.lexer.token_end;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectwallace/css-parser",
3
- "version": "0.13.3",
3
+ "version": "0.13.5",
4
4
  "description": "High-performance CSS lexer and parser, optimized for CSS inspection and analysis",
5
5
  "author": "Bart Veneman <bart@projectwallace.com>",
6
6
  "license": "MIT",