@eslint/css-tree 3.2.0

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.
Files changed (279) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +194 -0
  3. package/cjs/convertor/create.cjs +32 -0
  4. package/cjs/convertor/index.cjs +8 -0
  5. package/cjs/data-patch.cjs +7 -0
  6. package/cjs/data.cjs +120 -0
  7. package/cjs/definition-syntax/SyntaxError.cjs +16 -0
  8. package/cjs/definition-syntax/generate.cjs +139 -0
  9. package/cjs/definition-syntax/index.cjs +13 -0
  10. package/cjs/definition-syntax/parse.cjs +556 -0
  11. package/cjs/definition-syntax/scanner.cjs +113 -0
  12. package/cjs/definition-syntax/walk.cjs +57 -0
  13. package/cjs/generator/create.cjs +102 -0
  14. package/cjs/generator/index.cjs +8 -0
  15. package/cjs/generator/sourceMap.cjs +96 -0
  16. package/cjs/generator/token-before.cjs +170 -0
  17. package/cjs/index.cjs +65 -0
  18. package/cjs/lexer/Lexer.cjs +517 -0
  19. package/cjs/lexer/error.cjs +128 -0
  20. package/cjs/lexer/generic-an-plus-b.cjs +235 -0
  21. package/cjs/lexer/generic-const.cjs +12 -0
  22. package/cjs/lexer/generic-urange.cjs +149 -0
  23. package/cjs/lexer/generic.cjs +589 -0
  24. package/cjs/lexer/index.cjs +7 -0
  25. package/cjs/lexer/match-graph.cjs +530 -0
  26. package/cjs/lexer/match.cjs +632 -0
  27. package/cjs/lexer/prepare-tokens.cjs +54 -0
  28. package/cjs/lexer/search.cjs +65 -0
  29. package/cjs/lexer/structure.cjs +173 -0
  30. package/cjs/lexer/trace.cjs +73 -0
  31. package/cjs/lexer/units.cjs +38 -0
  32. package/cjs/parser/SyntaxError.cjs +74 -0
  33. package/cjs/parser/create.cjs +378 -0
  34. package/cjs/parser/index.cjs +8 -0
  35. package/cjs/parser/parse-selector.cjs +8 -0
  36. package/cjs/parser/sequence.cjs +47 -0
  37. package/cjs/syntax/atrule/container.cjs +32 -0
  38. package/cjs/syntax/atrule/font-face.cjs +12 -0
  39. package/cjs/syntax/atrule/import.cjs +101 -0
  40. package/cjs/syntax/atrule/index.cjs +27 -0
  41. package/cjs/syntax/atrule/layer.cjs +16 -0
  42. package/cjs/syntax/atrule/media.cjs +16 -0
  43. package/cjs/syntax/atrule/nest.cjs +16 -0
  44. package/cjs/syntax/atrule/page.cjs +16 -0
  45. package/cjs/syntax/atrule/scope.cjs +16 -0
  46. package/cjs/syntax/atrule/starting-style.cjs +12 -0
  47. package/cjs/syntax/atrule/supports.cjs +16 -0
  48. package/cjs/syntax/config/generator.cjs +9 -0
  49. package/cjs/syntax/config/lexer.cjs +14 -0
  50. package/cjs/syntax/config/mix.cjs +126 -0
  51. package/cjs/syntax/config/parser-selector.cjs +19 -0
  52. package/cjs/syntax/config/parser.cjs +49 -0
  53. package/cjs/syntax/config/walker.cjs +9 -0
  54. package/cjs/syntax/create.cjs +58 -0
  55. package/cjs/syntax/function/expression.cjs +11 -0
  56. package/cjs/syntax/function/var.cjs +43 -0
  57. package/cjs/syntax/index.cjs +14 -0
  58. package/cjs/syntax/node/AnPlusB.cjs +293 -0
  59. package/cjs/syntax/node/Atrule.cjs +103 -0
  60. package/cjs/syntax/node/AtrulePrelude.cjs +52 -0
  61. package/cjs/syntax/node/AttributeSelector.cjs +148 -0
  62. package/cjs/syntax/node/Block.cjs +96 -0
  63. package/cjs/syntax/node/Brackets.cjs +38 -0
  64. package/cjs/syntax/node/CDC.cjs +26 -0
  65. package/cjs/syntax/node/CDO.cjs +26 -0
  66. package/cjs/syntax/node/ClassSelector.cjs +31 -0
  67. package/cjs/syntax/node/Combinator.cjs +61 -0
  68. package/cjs/syntax/node/Comment.cjs +40 -0
  69. package/cjs/syntax/node/Condition.cjs +120 -0
  70. package/cjs/syntax/node/Declaration.cjs +166 -0
  71. package/cjs/syntax/node/DeclarationList.cjs +62 -0
  72. package/cjs/syntax/node/Dimension.cjs +30 -0
  73. package/cjs/syntax/node/Feature.cjs +101 -0
  74. package/cjs/syntax/node/FeatureFunction.cjs +67 -0
  75. package/cjs/syntax/node/FeatureRange.cjs +133 -0
  76. package/cjs/syntax/node/Function.cjs +45 -0
  77. package/cjs/syntax/node/GeneralEnclosed.cjs +68 -0
  78. package/cjs/syntax/node/Hash.cjs +30 -0
  79. package/cjs/syntax/node/IdSelector.cjs +33 -0
  80. package/cjs/syntax/node/Identifier.cjs +25 -0
  81. package/cjs/syntax/node/Layer.cjs +35 -0
  82. package/cjs/syntax/node/LayerList.cjs +43 -0
  83. package/cjs/syntax/node/MediaQuery.cjs +100 -0
  84. package/cjs/syntax/node/MediaQueryList.cjs +41 -0
  85. package/cjs/syntax/node/NestingSelector.cjs +29 -0
  86. package/cjs/syntax/node/Nth.cjs +54 -0
  87. package/cjs/syntax/node/Number.cjs +25 -0
  88. package/cjs/syntax/node/Operator.cjs +28 -0
  89. package/cjs/syntax/node/Parentheses.cjs +38 -0
  90. package/cjs/syntax/node/Percentage.cjs +25 -0
  91. package/cjs/syntax/node/PseudoClassSelector.cjs +67 -0
  92. package/cjs/syntax/node/PseudoElementSelector.cjs +69 -0
  93. package/cjs/syntax/node/Ratio.cjs +71 -0
  94. package/cjs/syntax/node/Raw.cjs +48 -0
  95. package/cjs/syntax/node/Rule.cjs +58 -0
  96. package/cjs/syntax/node/Scope.cjs +69 -0
  97. package/cjs/syntax/node/Selector.cjs +38 -0
  98. package/cjs/syntax/node/SelectorList.cjs +43 -0
  99. package/cjs/syntax/node/String.cjs +26 -0
  100. package/cjs/syntax/node/StyleSheet.cjs +83 -0
  101. package/cjs/syntax/node/SupportsDeclaration.cjs +38 -0
  102. package/cjs/syntax/node/TypeSelector.cjs +59 -0
  103. package/cjs/syntax/node/UnicodeRange.cjs +158 -0
  104. package/cjs/syntax/node/Url.cjs +54 -0
  105. package/cjs/syntax/node/Value.cjs +26 -0
  106. package/cjs/syntax/node/WhiteSpace.cjs +34 -0
  107. package/cjs/syntax/node/index-generate.cjs +103 -0
  108. package/cjs/syntax/node/index-parse-selector.cjs +39 -0
  109. package/cjs/syntax/node/index-parse.cjs +103 -0
  110. package/cjs/syntax/node/index.cjs +103 -0
  111. package/cjs/syntax/pseudo/index.cjs +60 -0
  112. package/cjs/syntax/pseudo/lang.cjs +37 -0
  113. package/cjs/syntax/scope/atrulePrelude.cjs +9 -0
  114. package/cjs/syntax/scope/default.cjs +76 -0
  115. package/cjs/syntax/scope/index.cjs +11 -0
  116. package/cjs/syntax/scope/selector.cjs +88 -0
  117. package/cjs/syntax/scope/value.cjs +29 -0
  118. package/cjs/tokenizer/OffsetToLocation.cjs +91 -0
  119. package/cjs/tokenizer/TokenStream.cjs +358 -0
  120. package/cjs/tokenizer/adopt-buffer.cjs +13 -0
  121. package/cjs/tokenizer/char-code-definitions.cjs +236 -0
  122. package/cjs/tokenizer/index.cjs +554 -0
  123. package/cjs/tokenizer/names.cjs +32 -0
  124. package/cjs/tokenizer/types.cjs +57 -0
  125. package/cjs/tokenizer/utils.cjs +261 -0
  126. package/cjs/utils/List.cjs +473 -0
  127. package/cjs/utils/clone.cjs +25 -0
  128. package/cjs/utils/create-custom-error.cjs +18 -0
  129. package/cjs/utils/ident.cjs +102 -0
  130. package/cjs/utils/index.cjs +20 -0
  131. package/cjs/utils/names.cjs +113 -0
  132. package/cjs/utils/string.cjs +99 -0
  133. package/cjs/utils/url.cjs +108 -0
  134. package/cjs/version.cjs +5 -0
  135. package/cjs/walker/create.cjs +291 -0
  136. package/cjs/walker/index.cjs +8 -0
  137. package/data/patch.json +874 -0
  138. package/dist/csstree.esm.js +12 -0
  139. package/dist/csstree.js +12 -0
  140. package/dist/data.cjs +1341 -0
  141. package/dist/data.js +1341 -0
  142. package/dist/version.cjs +1 -0
  143. package/dist/version.js +1 -0
  144. package/lib/convertor/create.js +28 -0
  145. package/lib/convertor/index.js +4 -0
  146. package/lib/data-patch.js +6 -0
  147. package/lib/data.js +118 -0
  148. package/lib/definition-syntax/SyntaxError.js +12 -0
  149. package/lib/definition-syntax/generate.js +135 -0
  150. package/lib/definition-syntax/index.js +4 -0
  151. package/lib/definition-syntax/parse.js +552 -0
  152. package/lib/definition-syntax/scanner.js +109 -0
  153. package/lib/definition-syntax/walk.js +53 -0
  154. package/lib/generator/create.js +97 -0
  155. package/lib/generator/index.js +4 -0
  156. package/lib/generator/sourceMap.js +92 -0
  157. package/lib/generator/token-before.js +182 -0
  158. package/lib/index.d.ts +3016 -0
  159. package/lib/index.js +30 -0
  160. package/lib/lexer/Lexer.js +511 -0
  161. package/lib/lexer/error.js +123 -0
  162. package/lib/lexer/generic-an-plus-b.js +238 -0
  163. package/lib/lexer/generic-const.js +8 -0
  164. package/lib/lexer/generic-urange.js +151 -0
  165. package/lib/lexer/generic.js +622 -0
  166. package/lib/lexer/index.js +1 -0
  167. package/lib/lexer/match-graph.js +527 -0
  168. package/lib/lexer/match.js +630 -0
  169. package/lib/lexer/prepare-tokens.js +50 -0
  170. package/lib/lexer/search.js +61 -0
  171. package/lib/lexer/structure.js +169 -0
  172. package/lib/lexer/trace.js +66 -0
  173. package/lib/lexer/units.js +27 -0
  174. package/lib/parser/SyntaxError.js +70 -0
  175. package/lib/parser/create.js +388 -0
  176. package/lib/parser/index.js +4 -0
  177. package/lib/parser/parse-selector.js +4 -0
  178. package/lib/parser/sequence.js +43 -0
  179. package/lib/syntax/atrule/container.js +28 -0
  180. package/lib/syntax/atrule/font-face.js +8 -0
  181. package/lib/syntax/atrule/import.js +104 -0
  182. package/lib/syntax/atrule/index.js +23 -0
  183. package/lib/syntax/atrule/layer.js +12 -0
  184. package/lib/syntax/atrule/media.js +12 -0
  185. package/lib/syntax/atrule/nest.js +12 -0
  186. package/lib/syntax/atrule/page.js +12 -0
  187. package/lib/syntax/atrule/scope.js +12 -0
  188. package/lib/syntax/atrule/starting-style.js +8 -0
  189. package/lib/syntax/atrule/supports.js +12 -0
  190. package/lib/syntax/config/generator.js +5 -0
  191. package/lib/syntax/config/lexer.js +10 -0
  192. package/lib/syntax/config/mix.js +122 -0
  193. package/lib/syntax/config/parser-selector.js +15 -0
  194. package/lib/syntax/config/parser.js +45 -0
  195. package/lib/syntax/config/walker.js +5 -0
  196. package/lib/syntax/create.js +55 -0
  197. package/lib/syntax/function/expression.js +7 -0
  198. package/lib/syntax/function/var.js +39 -0
  199. package/lib/syntax/index.js +10 -0
  200. package/lib/syntax/node/AnPlusB.js +292 -0
  201. package/lib/syntax/node/Atrule.js +100 -0
  202. package/lib/syntax/node/AtrulePrelude.js +47 -0
  203. package/lib/syntax/node/AttributeSelector.js +147 -0
  204. package/lib/syntax/node/Block.js +95 -0
  205. package/lib/syntax/node/Brackets.js +35 -0
  206. package/lib/syntax/node/CDC.js +19 -0
  207. package/lib/syntax/node/CDO.js +19 -0
  208. package/lib/syntax/node/ClassSelector.js +24 -0
  209. package/lib/syntax/node/Combinator.js +54 -0
  210. package/lib/syntax/node/Comment.js +33 -0
  211. package/lib/syntax/node/Condition.js +123 -0
  212. package/lib/syntax/node/Declaration.js +165 -0
  213. package/lib/syntax/node/DeclarationList.js +62 -0
  214. package/lib/syntax/node/Dimension.js +23 -0
  215. package/lib/syntax/node/Feature.js +103 -0
  216. package/lib/syntax/node/FeatureFunction.js +63 -0
  217. package/lib/syntax/node/FeatureRange.js +133 -0
  218. package/lib/syntax/node/Function.js +41 -0
  219. package/lib/syntax/node/GeneralEnclosed.js +66 -0
  220. package/lib/syntax/node/Hash.js +23 -0
  221. package/lib/syntax/node/IdSelector.js +26 -0
  222. package/lib/syntax/node/Identifier.js +18 -0
  223. package/lib/syntax/node/Layer.js +28 -0
  224. package/lib/syntax/node/LayerList.js +36 -0
  225. package/lib/syntax/node/MediaQuery.js +102 -0
  226. package/lib/syntax/node/MediaQueryList.js +34 -0
  227. package/lib/syntax/node/NestingSelector.js +22 -0
  228. package/lib/syntax/node/Nth.js +47 -0
  229. package/lib/syntax/node/Number.js +18 -0
  230. package/lib/syntax/node/Operator.js +21 -0
  231. package/lib/syntax/node/Parentheses.js +34 -0
  232. package/lib/syntax/node/Percentage.js +18 -0
  233. package/lib/syntax/node/PseudoClassSelector.js +65 -0
  234. package/lib/syntax/node/PseudoElementSelector.js +66 -0
  235. package/lib/syntax/node/Ratio.js +68 -0
  236. package/lib/syntax/node/Raw.js +41 -0
  237. package/lib/syntax/node/Rule.js +51 -0
  238. package/lib/syntax/node/Scope.js +66 -0
  239. package/lib/syntax/node/Selector.js +31 -0
  240. package/lib/syntax/node/SelectorList.js +35 -0
  241. package/lib/syntax/node/String.js +19 -0
  242. package/lib/syntax/node/StyleSheet.js +82 -0
  243. package/lib/syntax/node/SupportsDeclaration.js +34 -0
  244. package/lib/syntax/node/TypeSelector.js +52 -0
  245. package/lib/syntax/node/UnicodeRange.js +156 -0
  246. package/lib/syntax/node/Url.js +52 -0
  247. package/lib/syntax/node/Value.js +19 -0
  248. package/lib/syntax/node/WhiteSpace.js +27 -0
  249. package/lib/syntax/node/index-generate.js +49 -0
  250. package/lib/syntax/node/index-parse-selector.js +17 -0
  251. package/lib/syntax/node/index-parse.js +49 -0
  252. package/lib/syntax/node/index.js +49 -0
  253. package/lib/syntax/pseudo/index.js +56 -0
  254. package/lib/syntax/pseudo/lang.js +33 -0
  255. package/lib/syntax/scope/atrulePrelude.js +5 -0
  256. package/lib/syntax/scope/default.js +85 -0
  257. package/lib/syntax/scope/index.js +3 -0
  258. package/lib/syntax/scope/selector.js +94 -0
  259. package/lib/syntax/scope/value.js +25 -0
  260. package/lib/tokenizer/OffsetToLocation.js +87 -0
  261. package/lib/tokenizer/TokenStream.js +366 -0
  262. package/lib/tokenizer/adopt-buffer.js +9 -0
  263. package/lib/tokenizer/char-code-definitions.js +212 -0
  264. package/lib/tokenizer/index.js +513 -0
  265. package/lib/tokenizer/names.js +28 -0
  266. package/lib/tokenizer/types.js +28 -0
  267. package/lib/tokenizer/utils.js +254 -0
  268. package/lib/utils/List.js +469 -0
  269. package/lib/utils/clone.js +21 -0
  270. package/lib/utils/create-custom-error.js +14 -0
  271. package/lib/utils/ident.js +101 -0
  272. package/lib/utils/index.js +6 -0
  273. package/lib/utils/names.js +106 -0
  274. package/lib/utils/string.js +99 -0
  275. package/lib/utils/url.js +108 -0
  276. package/lib/version.js +5 -0
  277. package/lib/walker/create.js +287 -0
  278. package/lib/walker/index.js +4 -0
  279. package/package.json +133 -0
@@ -0,0 +1,158 @@
1
+ 'use strict';
2
+
3
+ const types = require('../../tokenizer/types.cjs');
4
+ const charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs');
5
+
6
+ const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
7
+ const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
8
+ const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)
9
+
10
+ function eatHexSequence(offset, allowDash) {
11
+ let len = 0;
12
+
13
+ for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) {
14
+ const code = this.charCodeAt(pos);
15
+
16
+ if (code === HYPHENMINUS && allowDash && len !== 0) {
17
+ eatHexSequence.call(this, offset + len + 1, false);
18
+ return -1;
19
+ }
20
+
21
+ if (!charCodeDefinitions.isHexDigit(code)) {
22
+ this.error(
23
+ allowDash && len !== 0
24
+ ? 'Hyphen minus' + (len < 6 ? ' or hex digit' : '') + ' is expected'
25
+ : (len < 6 ? 'Hex digit is expected' : 'Unexpected input'),
26
+ pos
27
+ );
28
+ }
29
+
30
+ if (++len > 6) {
31
+ this.error('Too many hex digits', pos);
32
+ } }
33
+
34
+ this.next();
35
+ return len;
36
+ }
37
+
38
+ function eatQuestionMarkSequence(max) {
39
+ let count = 0;
40
+
41
+ while (this.isDelim(QUESTIONMARK)) {
42
+ if (++count > max) {
43
+ this.error('Too many question marks');
44
+ }
45
+
46
+ this.next();
47
+ }
48
+ }
49
+
50
+ function startsWith(code) {
51
+ if (this.charCodeAt(this.tokenStart) !== code) {
52
+ this.error((code === PLUSSIGN ? 'Plus sign' : 'Hyphen minus') + ' is expected');
53
+ }
54
+ }
55
+
56
+ // https://drafts.csswg.org/css-syntax/#urange
57
+ // Informally, the <urange> production has three forms:
58
+ // U+0001
59
+ // Defines a range consisting of a single code point, in this case the code point "1".
60
+ // U+0001-00ff
61
+ // Defines a range of codepoints between the first and the second value, in this case
62
+ // the range between "1" and "ff" (255 in decimal) inclusive.
63
+ // U+00??
64
+ // Defines a range of codepoints where the "?" characters range over all hex digits,
65
+ // in this case defining the same as the value U+0000-00ff.
66
+ // In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit).
67
+ //
68
+ // <urange> =
69
+ // u '+' <ident-token> '?'* |
70
+ // u <dimension-token> '?'* |
71
+ // u <number-token> '?'* |
72
+ // u <number-token> <dimension-token> |
73
+ // u <number-token> <number-token> |
74
+ // u '+' '?'+
75
+ function scanUnicodeRange() {
76
+ let hexLength = 0;
77
+
78
+ switch (this.tokenType) {
79
+ case types.Number:
80
+ // u <number-token> '?'*
81
+ // u <number-token> <dimension-token>
82
+ // u <number-token> <number-token>
83
+ hexLength = eatHexSequence.call(this, 1, true);
84
+
85
+ if (this.isDelim(QUESTIONMARK)) {
86
+ eatQuestionMarkSequence.call(this, 6 - hexLength);
87
+ break;
88
+ }
89
+
90
+ if (this.tokenType === types.Dimension ||
91
+ this.tokenType === types.Number) {
92
+ startsWith.call(this, HYPHENMINUS);
93
+ eatHexSequence.call(this, 1, false);
94
+ break;
95
+ }
96
+
97
+ break;
98
+
99
+ case types.Dimension:
100
+ // u <dimension-token> '?'*
101
+ hexLength = eatHexSequence.call(this, 1, true);
102
+
103
+ if (hexLength > 0) {
104
+ eatQuestionMarkSequence.call(this, 6 - hexLength);
105
+ }
106
+
107
+ break;
108
+
109
+ default:
110
+ // u '+' <ident-token> '?'*
111
+ // u '+' '?'+
112
+ this.eatDelim(PLUSSIGN);
113
+
114
+ if (this.tokenType === types.Ident) {
115
+ hexLength = eatHexSequence.call(this, 0, true);
116
+ if (hexLength > 0) {
117
+ eatQuestionMarkSequence.call(this, 6 - hexLength);
118
+ }
119
+ break;
120
+ }
121
+
122
+ if (this.isDelim(QUESTIONMARK)) {
123
+ this.next();
124
+ eatQuestionMarkSequence.call(this, 5);
125
+ break;
126
+ }
127
+
128
+ this.error('Hex digit or question mark is expected');
129
+ }
130
+ }
131
+
132
+ const name = 'UnicodeRange';
133
+ const structure = {
134
+ value: String
135
+ };
136
+
137
+ function parse() {
138
+ const start = this.tokenStart;
139
+
140
+ // U or u
141
+ this.eatIdent('u');
142
+ scanUnicodeRange.call(this);
143
+
144
+ return {
145
+ type: 'UnicodeRange',
146
+ loc: this.getLocation(start, this.tokenStart),
147
+ value: this.substrToCursor(start)
148
+ };
149
+ }
150
+
151
+ function generate(node) {
152
+ this.tokenize(node.value);
153
+ }
154
+
155
+ exports.generate = generate;
156
+ exports.name = name;
157
+ exports.parse = parse;
158
+ exports.structure = structure;
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ const url = require('../../utils/url.cjs');
4
+ const string = require('../../utils/string.cjs');
5
+ const types = require('../../tokenizer/types.cjs');
6
+
7
+ const name = 'Url';
8
+ const structure = {
9
+ value: String
10
+ };
11
+
12
+ // <url-token> | <function-token> <string> )
13
+ function parse() {
14
+ const start = this.tokenStart;
15
+ let value;
16
+
17
+ switch (this.tokenType) {
18
+ case types.Url:
19
+ value = url.decode(this.consume(types.Url));
20
+ break;
21
+
22
+ case types.Function:
23
+ if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) {
24
+ this.error('Function name must be `url`');
25
+ }
26
+
27
+ this.eat(types.Function);
28
+ this.skipSC();
29
+ value = string.decode(this.consume(types.String));
30
+ this.skipSC();
31
+ if (!this.eof) {
32
+ this.eat(types.RightParenthesis);
33
+ }
34
+ break;
35
+
36
+ default:
37
+ this.error('Url or Function is expected');
38
+ }
39
+
40
+ return {
41
+ type: 'Url',
42
+ loc: this.getLocation(start, this.tokenStart),
43
+ value
44
+ };
45
+ }
46
+
47
+ function generate(node) {
48
+ this.token(types.Url, url.encode(node.value));
49
+ }
50
+
51
+ exports.generate = generate;
52
+ exports.name = name;
53
+ exports.parse = parse;
54
+ exports.structure = structure;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ const name = 'Value';
4
+ const structure = {
5
+ children: [[]]
6
+ };
7
+
8
+ function parse() {
9
+ const start = this.tokenStart;
10
+ const children = this.readSequence(this.scope.Value);
11
+
12
+ return {
13
+ type: 'Value',
14
+ loc: this.getLocation(start, this.tokenStart),
15
+ children
16
+ };
17
+ }
18
+
19
+ function generate(node) {
20
+ this.children(node);
21
+ }
22
+
23
+ exports.generate = generate;
24
+ exports.name = name;
25
+ exports.parse = parse;
26
+ exports.structure = structure;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ const types = require('../../tokenizer/types.cjs');
4
+
5
+ const SPACE = Object.freeze({
6
+ type: 'WhiteSpace',
7
+ loc: null,
8
+ value: ' '
9
+ });
10
+
11
+ const name = 'WhiteSpace';
12
+ const structure = {
13
+ value: String
14
+ };
15
+
16
+ function parse() {
17
+ this.eat(types.WhiteSpace);
18
+ return SPACE;
19
+
20
+ // return {
21
+ // type: 'WhiteSpace',
22
+ // loc: this.getLocation(this.tokenStart, this.tokenEnd),
23
+ // value: this.consume(WHITESPACE)
24
+ // };
25
+ }
26
+
27
+ function generate(node) {
28
+ this.token(types.WhiteSpace, node.value);
29
+ }
30
+
31
+ exports.generate = generate;
32
+ exports.name = name;
33
+ exports.parse = parse;
34
+ exports.structure = structure;
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ const AnPlusB = require('./AnPlusB.cjs');
4
+ const Atrule = require('./Atrule.cjs');
5
+ const AtrulePrelude = require('./AtrulePrelude.cjs');
6
+ const AttributeSelector = require('./AttributeSelector.cjs');
7
+ const Block = require('./Block.cjs');
8
+ const Brackets = require('./Brackets.cjs');
9
+ const CDC = require('./CDC.cjs');
10
+ const CDO = require('./CDO.cjs');
11
+ const ClassSelector = require('./ClassSelector.cjs');
12
+ const Combinator = require('./Combinator.cjs');
13
+ const Comment = require('./Comment.cjs');
14
+ const Condition = require('./Condition.cjs');
15
+ const Declaration = require('./Declaration.cjs');
16
+ const DeclarationList = require('./DeclarationList.cjs');
17
+ const Dimension = require('./Dimension.cjs');
18
+ const Feature = require('./Feature.cjs');
19
+ const FeatureFunction = require('./FeatureFunction.cjs');
20
+ const FeatureRange = require('./FeatureRange.cjs');
21
+ const Function = require('./Function.cjs');
22
+ const GeneralEnclosed = require('./GeneralEnclosed.cjs');
23
+ const Hash = require('./Hash.cjs');
24
+ const Identifier = require('./Identifier.cjs');
25
+ const IdSelector = require('./IdSelector.cjs');
26
+ const Layer = require('./Layer.cjs');
27
+ const LayerList = require('./LayerList.cjs');
28
+ const MediaQuery = require('./MediaQuery.cjs');
29
+ const MediaQueryList = require('./MediaQueryList.cjs');
30
+ const NestingSelector = require('./NestingSelector.cjs');
31
+ const Nth = require('./Nth.cjs');
32
+ const Number = require('./Number.cjs');
33
+ const Operator = require('./Operator.cjs');
34
+ const Parentheses = require('./Parentheses.cjs');
35
+ const Percentage = require('./Percentage.cjs');
36
+ const PseudoClassSelector = require('./PseudoClassSelector.cjs');
37
+ const PseudoElementSelector = require('./PseudoElementSelector.cjs');
38
+ const Ratio = require('./Ratio.cjs');
39
+ const Raw = require('./Raw.cjs');
40
+ const Rule = require('./Rule.cjs');
41
+ const Scope = require('./Scope.cjs');
42
+ const Selector = require('./Selector.cjs');
43
+ const SelectorList = require('./SelectorList.cjs');
44
+ const String = require('./String.cjs');
45
+ const StyleSheet = require('./StyleSheet.cjs');
46
+ const SupportsDeclaration = require('./SupportsDeclaration.cjs');
47
+ const TypeSelector = require('./TypeSelector.cjs');
48
+ const UnicodeRange = require('./UnicodeRange.cjs');
49
+ const Url = require('./Url.cjs');
50
+ const Value = require('./Value.cjs');
51
+ const WhiteSpace = require('./WhiteSpace.cjs');
52
+
53
+
54
+
55
+ exports.AnPlusB = AnPlusB.generate;
56
+ exports.Atrule = Atrule.generate;
57
+ exports.AtrulePrelude = AtrulePrelude.generate;
58
+ exports.AttributeSelector = AttributeSelector.generate;
59
+ exports.Block = Block.generate;
60
+ exports.Brackets = Brackets.generate;
61
+ exports.CDC = CDC.generate;
62
+ exports.CDO = CDO.generate;
63
+ exports.ClassSelector = ClassSelector.generate;
64
+ exports.Combinator = Combinator.generate;
65
+ exports.Comment = Comment.generate;
66
+ exports.Condition = Condition.generate;
67
+ exports.Declaration = Declaration.generate;
68
+ exports.DeclarationList = DeclarationList.generate;
69
+ exports.Dimension = Dimension.generate;
70
+ exports.Feature = Feature.generate;
71
+ exports.FeatureFunction = FeatureFunction.generate;
72
+ exports.FeatureRange = FeatureRange.generate;
73
+ exports.Function = Function.generate;
74
+ exports.GeneralEnclosed = GeneralEnclosed.generate;
75
+ exports.Hash = Hash.generate;
76
+ exports.Identifier = Identifier.generate;
77
+ exports.IdSelector = IdSelector.generate;
78
+ exports.Layer = Layer.generate;
79
+ exports.LayerList = LayerList.generate;
80
+ exports.MediaQuery = MediaQuery.generate;
81
+ exports.MediaQueryList = MediaQueryList.generate;
82
+ exports.NestingSelector = NestingSelector.generate;
83
+ exports.Nth = Nth.generate;
84
+ exports.Number = Number.generate;
85
+ exports.Operator = Operator.generate;
86
+ exports.Parentheses = Parentheses.generate;
87
+ exports.Percentage = Percentage.generate;
88
+ exports.PseudoClassSelector = PseudoClassSelector.generate;
89
+ exports.PseudoElementSelector = PseudoElementSelector.generate;
90
+ exports.Ratio = Ratio.generate;
91
+ exports.Raw = Raw.generate;
92
+ exports.Rule = Rule.generate;
93
+ exports.Scope = Scope.generate;
94
+ exports.Selector = Selector.generate;
95
+ exports.SelectorList = SelectorList.generate;
96
+ exports.String = String.generate;
97
+ exports.StyleSheet = StyleSheet.generate;
98
+ exports.SupportsDeclaration = SupportsDeclaration.generate;
99
+ exports.TypeSelector = TypeSelector.generate;
100
+ exports.UnicodeRange = UnicodeRange.generate;
101
+ exports.Url = Url.generate;
102
+ exports.Value = Value.generate;
103
+ exports.WhiteSpace = WhiteSpace.generate;
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ const AnPlusB = require('./AnPlusB.cjs');
4
+ const AttributeSelector = require('./AttributeSelector.cjs');
5
+ const ClassSelector = require('./ClassSelector.cjs');
6
+ const Combinator = require('./Combinator.cjs');
7
+ const Identifier = require('./Identifier.cjs');
8
+ const IdSelector = require('./IdSelector.cjs');
9
+ const NestingSelector = require('./NestingSelector.cjs');
10
+ const Nth = require('./Nth.cjs');
11
+ const Operator = require('./Operator.cjs');
12
+ const Percentage = require('./Percentage.cjs');
13
+ const PseudoClassSelector = require('./PseudoClassSelector.cjs');
14
+ const PseudoElementSelector = require('./PseudoElementSelector.cjs');
15
+ const Raw = require('./Raw.cjs');
16
+ const Selector = require('./Selector.cjs');
17
+ const SelectorList = require('./SelectorList.cjs');
18
+ const String = require('./String.cjs');
19
+ const TypeSelector = require('./TypeSelector.cjs');
20
+
21
+
22
+
23
+ exports.AnPlusB = AnPlusB.parse;
24
+ exports.AttributeSelector = AttributeSelector.parse;
25
+ exports.ClassSelector = ClassSelector.parse;
26
+ exports.Combinator = Combinator.parse;
27
+ exports.Identifier = Identifier.parse;
28
+ exports.IdSelector = IdSelector.parse;
29
+ exports.NestingSelector = NestingSelector.parse;
30
+ exports.Nth = Nth.parse;
31
+ exports.Operator = Operator.parse;
32
+ exports.Percentage = Percentage.parse;
33
+ exports.PseudoClassSelector = PseudoClassSelector.parse;
34
+ exports.PseudoElementSelector = PseudoElementSelector.parse;
35
+ exports.Raw = Raw.parse;
36
+ exports.Selector = Selector.parse;
37
+ exports.SelectorList = SelectorList.parse;
38
+ exports.String = String.parse;
39
+ exports.TypeSelector = TypeSelector.parse;
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ const AnPlusB = require('./AnPlusB.cjs');
4
+ const Atrule = require('./Atrule.cjs');
5
+ const AtrulePrelude = require('./AtrulePrelude.cjs');
6
+ const AttributeSelector = require('./AttributeSelector.cjs');
7
+ const Block = require('./Block.cjs');
8
+ const Brackets = require('./Brackets.cjs');
9
+ const CDC = require('./CDC.cjs');
10
+ const CDO = require('./CDO.cjs');
11
+ const ClassSelector = require('./ClassSelector.cjs');
12
+ const Combinator = require('./Combinator.cjs');
13
+ const Comment = require('./Comment.cjs');
14
+ const Condition = require('./Condition.cjs');
15
+ const Declaration = require('./Declaration.cjs');
16
+ const DeclarationList = require('./DeclarationList.cjs');
17
+ const Dimension = require('./Dimension.cjs');
18
+ const Feature = require('./Feature.cjs');
19
+ const FeatureFunction = require('./FeatureFunction.cjs');
20
+ const FeatureRange = require('./FeatureRange.cjs');
21
+ const Function = require('./Function.cjs');
22
+ const GeneralEnclosed = require('./GeneralEnclosed.cjs');
23
+ const Hash = require('./Hash.cjs');
24
+ const Identifier = require('./Identifier.cjs');
25
+ const IdSelector = require('./IdSelector.cjs');
26
+ const Layer = require('./Layer.cjs');
27
+ const LayerList = require('./LayerList.cjs');
28
+ const MediaQuery = require('./MediaQuery.cjs');
29
+ const MediaQueryList = require('./MediaQueryList.cjs');
30
+ const NestingSelector = require('./NestingSelector.cjs');
31
+ const Nth = require('./Nth.cjs');
32
+ const Number = require('./Number.cjs');
33
+ const Operator = require('./Operator.cjs');
34
+ const Parentheses = require('./Parentheses.cjs');
35
+ const Percentage = require('./Percentage.cjs');
36
+ const PseudoClassSelector = require('./PseudoClassSelector.cjs');
37
+ const PseudoElementSelector = require('./PseudoElementSelector.cjs');
38
+ const Ratio = require('./Ratio.cjs');
39
+ const Raw = require('./Raw.cjs');
40
+ const Rule = require('./Rule.cjs');
41
+ const Scope = require('./Scope.cjs');
42
+ const Selector = require('./Selector.cjs');
43
+ const SelectorList = require('./SelectorList.cjs');
44
+ const String = require('./String.cjs');
45
+ const StyleSheet = require('./StyleSheet.cjs');
46
+ const SupportsDeclaration = require('./SupportsDeclaration.cjs');
47
+ const TypeSelector = require('./TypeSelector.cjs');
48
+ const UnicodeRange = require('./UnicodeRange.cjs');
49
+ const Url = require('./Url.cjs');
50
+ const Value = require('./Value.cjs');
51
+ const WhiteSpace = require('./WhiteSpace.cjs');
52
+
53
+
54
+
55
+ exports.AnPlusB = AnPlusB.parse;
56
+ exports.Atrule = Atrule.parse;
57
+ exports.AtrulePrelude = AtrulePrelude.parse;
58
+ exports.AttributeSelector = AttributeSelector.parse;
59
+ exports.Block = Block.parse;
60
+ exports.Brackets = Brackets.parse;
61
+ exports.CDC = CDC.parse;
62
+ exports.CDO = CDO.parse;
63
+ exports.ClassSelector = ClassSelector.parse;
64
+ exports.Combinator = Combinator.parse;
65
+ exports.Comment = Comment.parse;
66
+ exports.Condition = Condition.parse;
67
+ exports.Declaration = Declaration.parse;
68
+ exports.DeclarationList = DeclarationList.parse;
69
+ exports.Dimension = Dimension.parse;
70
+ exports.Feature = Feature.parse;
71
+ exports.FeatureFunction = FeatureFunction.parse;
72
+ exports.FeatureRange = FeatureRange.parse;
73
+ exports.Function = Function.parse;
74
+ exports.GeneralEnclosed = GeneralEnclosed.parse;
75
+ exports.Hash = Hash.parse;
76
+ exports.Identifier = Identifier.parse;
77
+ exports.IdSelector = IdSelector.parse;
78
+ exports.Layer = Layer.parse;
79
+ exports.LayerList = LayerList.parse;
80
+ exports.MediaQuery = MediaQuery.parse;
81
+ exports.MediaQueryList = MediaQueryList.parse;
82
+ exports.NestingSelector = NestingSelector.parse;
83
+ exports.Nth = Nth.parse;
84
+ exports.Number = Number.parse;
85
+ exports.Operator = Operator.parse;
86
+ exports.Parentheses = Parentheses.parse;
87
+ exports.Percentage = Percentage.parse;
88
+ exports.PseudoClassSelector = PseudoClassSelector.parse;
89
+ exports.PseudoElementSelector = PseudoElementSelector.parse;
90
+ exports.Ratio = Ratio.parse;
91
+ exports.Raw = Raw.parse;
92
+ exports.Rule = Rule.parse;
93
+ exports.Scope = Scope.parse;
94
+ exports.Selector = Selector.parse;
95
+ exports.SelectorList = SelectorList.parse;
96
+ exports.String = String.parse;
97
+ exports.StyleSheet = StyleSheet.parse;
98
+ exports.SupportsDeclaration = SupportsDeclaration.parse;
99
+ exports.TypeSelector = TypeSelector.parse;
100
+ exports.UnicodeRange = UnicodeRange.parse;
101
+ exports.Url = Url.parse;
102
+ exports.Value = Value.parse;
103
+ exports.WhiteSpace = WhiteSpace.parse;
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ const AnPlusB = require('./AnPlusB.cjs');
4
+ const Atrule = require('./Atrule.cjs');
5
+ const AtrulePrelude = require('./AtrulePrelude.cjs');
6
+ const AttributeSelector = require('./AttributeSelector.cjs');
7
+ const Block = require('./Block.cjs');
8
+ const Brackets = require('./Brackets.cjs');
9
+ const CDC = require('./CDC.cjs');
10
+ const CDO = require('./CDO.cjs');
11
+ const ClassSelector = require('./ClassSelector.cjs');
12
+ const Combinator = require('./Combinator.cjs');
13
+ const Comment = require('./Comment.cjs');
14
+ const Condition = require('./Condition.cjs');
15
+ const Declaration = require('./Declaration.cjs');
16
+ const DeclarationList = require('./DeclarationList.cjs');
17
+ const Dimension = require('./Dimension.cjs');
18
+ const Feature = require('./Feature.cjs');
19
+ const FeatureFunction = require('./FeatureFunction.cjs');
20
+ const FeatureRange = require('./FeatureRange.cjs');
21
+ const Function = require('./Function.cjs');
22
+ const GeneralEnclosed = require('./GeneralEnclosed.cjs');
23
+ const Hash = require('./Hash.cjs');
24
+ const Identifier = require('./Identifier.cjs');
25
+ const IdSelector = require('./IdSelector.cjs');
26
+ const Layer = require('./Layer.cjs');
27
+ const LayerList = require('./LayerList.cjs');
28
+ const MediaQuery = require('./MediaQuery.cjs');
29
+ const MediaQueryList = require('./MediaQueryList.cjs');
30
+ const NestingSelector = require('./NestingSelector.cjs');
31
+ const Nth = require('./Nth.cjs');
32
+ const Number$1 = require('./Number.cjs');
33
+ const Operator = require('./Operator.cjs');
34
+ const Parentheses = require('./Parentheses.cjs');
35
+ const Percentage = require('./Percentage.cjs');
36
+ const PseudoClassSelector = require('./PseudoClassSelector.cjs');
37
+ const PseudoElementSelector = require('./PseudoElementSelector.cjs');
38
+ const Ratio = require('./Ratio.cjs');
39
+ const Raw = require('./Raw.cjs');
40
+ const Rule = require('./Rule.cjs');
41
+ const Scope = require('./Scope.cjs');
42
+ const Selector = require('./Selector.cjs');
43
+ const SelectorList = require('./SelectorList.cjs');
44
+ const String$1 = require('./String.cjs');
45
+ const StyleSheet = require('./StyleSheet.cjs');
46
+ const SupportsDeclaration = require('./SupportsDeclaration.cjs');
47
+ const TypeSelector = require('./TypeSelector.cjs');
48
+ const UnicodeRange = require('./UnicodeRange.cjs');
49
+ const Url = require('./Url.cjs');
50
+ const Value = require('./Value.cjs');
51
+ const WhiteSpace = require('./WhiteSpace.cjs');
52
+
53
+
54
+
55
+ exports.AnPlusB = AnPlusB;
56
+ exports.Atrule = Atrule;
57
+ exports.AtrulePrelude = AtrulePrelude;
58
+ exports.AttributeSelector = AttributeSelector;
59
+ exports.Block = Block;
60
+ exports.Brackets = Brackets;
61
+ exports.CDC = CDC;
62
+ exports.CDO = CDO;
63
+ exports.ClassSelector = ClassSelector;
64
+ exports.Combinator = Combinator;
65
+ exports.Comment = Comment;
66
+ exports.Condition = Condition;
67
+ exports.Declaration = Declaration;
68
+ exports.DeclarationList = DeclarationList;
69
+ exports.Dimension = Dimension;
70
+ exports.Feature = Feature;
71
+ exports.FeatureFunction = FeatureFunction;
72
+ exports.FeatureRange = FeatureRange;
73
+ exports.Function = Function;
74
+ exports.GeneralEnclosed = GeneralEnclosed;
75
+ exports.Hash = Hash;
76
+ exports.Identifier = Identifier;
77
+ exports.IdSelector = IdSelector;
78
+ exports.Layer = Layer;
79
+ exports.LayerList = LayerList;
80
+ exports.MediaQuery = MediaQuery;
81
+ exports.MediaQueryList = MediaQueryList;
82
+ exports.NestingSelector = NestingSelector;
83
+ exports.Nth = Nth;
84
+ exports.Number = Number$1;
85
+ exports.Operator = Operator;
86
+ exports.Parentheses = Parentheses;
87
+ exports.Percentage = Percentage;
88
+ exports.PseudoClassSelector = PseudoClassSelector;
89
+ exports.PseudoElementSelector = PseudoElementSelector;
90
+ exports.Ratio = Ratio;
91
+ exports.Raw = Raw;
92
+ exports.Rule = Rule;
93
+ exports.Scope = Scope;
94
+ exports.Selector = Selector;
95
+ exports.SelectorList = SelectorList;
96
+ exports.String = String$1;
97
+ exports.StyleSheet = StyleSheet;
98
+ exports.SupportsDeclaration = SupportsDeclaration;
99
+ exports.TypeSelector = TypeSelector;
100
+ exports.UnicodeRange = UnicodeRange;
101
+ exports.Url = Url;
102
+ exports.Value = Value;
103
+ exports.WhiteSpace = WhiteSpace;
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ const lang = require('./lang.cjs');
4
+
5
+ const selectorList = {
6
+ parse() {
7
+ return this.createSingleNodeList(
8
+ this.SelectorList()
9
+ );
10
+ }
11
+ };
12
+
13
+ const selector = {
14
+ parse() {
15
+ return this.createSingleNodeList(
16
+ this.Selector()
17
+ );
18
+ }
19
+ };
20
+
21
+ const identList = {
22
+ parse() {
23
+ return this.createSingleNodeList(
24
+ this.Identifier()
25
+ );
26
+ }
27
+ };
28
+
29
+ const langList = {
30
+ parse: lang.parseLanguageRangeList
31
+ };
32
+
33
+ const nth = {
34
+ parse() {
35
+ return this.createSingleNodeList(
36
+ this.Nth()
37
+ );
38
+ }
39
+ };
40
+
41
+ const pseudo = {
42
+ 'dir': identList,
43
+ 'has': selectorList,
44
+ 'lang': langList,
45
+ 'matches': selectorList,
46
+ 'is': selectorList,
47
+ '-moz-any': selectorList,
48
+ '-webkit-any': selectorList,
49
+ 'where': selectorList,
50
+ 'not': selectorList,
51
+ 'nth-child': nth,
52
+ 'nth-last-child': nth,
53
+ 'nth-last-of-type': nth,
54
+ 'nth-of-type': nth,
55
+ 'slotted': selector,
56
+ 'host': selector,
57
+ 'host-context': selector
58
+ };
59
+
60
+ module.exports = pseudo;