@tbela99/css-parser 1.3.3 → 1.3.4
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/CHANGELOG.md +7 -0
- package/README.md +20 -17
- package/dist/index-umd-web.js +1031 -571
- package/dist/index.cjs +1031 -566
- package/dist/index.d.ts +247 -171
- package/dist/lib/ast/expand.js +5 -10
- package/dist/lib/ast/features/calc.js +3 -2
- package/dist/lib/ast/features/inlinecssvariables.js +5 -3
- package/dist/lib/ast/features/prefix.js +1 -1
- package/dist/lib/ast/features/shorthand.js +1 -0
- package/dist/lib/ast/features/transform.js +13 -19
- package/dist/lib/ast/minify.js +5 -2
- package/dist/lib/ast/transform/compute.js +2 -4
- package/dist/lib/ast/transform/matrix.js +20 -20
- package/dist/lib/ast/transform/minify.js +105 -12
- package/dist/lib/ast/transform/rotate.js +11 -11
- package/dist/lib/ast/transform/scale.js +6 -6
- package/dist/lib/ast/transform/skew.js +4 -4
- package/dist/lib/ast/transform/translate.js +3 -3
- package/dist/lib/ast/transform/utils.js +30 -37
- package/dist/lib/ast/types.js +14 -2
- package/dist/lib/ast/walk.js +61 -49
- package/dist/lib/fs/resolve.js +6 -3
- package/dist/lib/parser/declaration/list.js +3 -1
- package/dist/lib/parser/parse.js +345 -305
- package/dist/lib/parser/tokenize.js +11 -13
- package/dist/lib/renderer/render.js +2 -2
- package/dist/lib/syntax/syntax.js +36 -18
- package/dist/lib/validation/at-rules/container.js +11 -0
- package/dist/lib/validation/at-rules/counter-style.js +11 -0
- package/dist/lib/validation/at-rules/font-feature-values.js +11 -0
- package/dist/lib/validation/at-rules/keyframes.js +11 -0
- package/dist/lib/validation/at-rules/layer.js +11 -0
- package/dist/lib/validation/at-rules/media.js +11 -0
- package/dist/lib/validation/at-rules/page-margin-box.js +11 -0
- package/dist/lib/validation/at-rules/page.js +11 -0
- package/dist/lib/validation/at-rules/supports.js +11 -0
- package/dist/lib/validation/at-rules/when.js +11 -0
- package/dist/lib/validation/config.js +0 -2
- package/dist/lib/validation/config.json.js +21 -1
- package/dist/lib/validation/parser/parse.js +53 -2
- package/dist/lib/validation/syntax.js +199 -36
- package/dist/node.js +17 -12
- package/dist/web.js +11 -11
- package/package.json +6 -3
- package/dist/lib/validation/parser/types.js +0 -54
|
@@ -182,13 +182,15 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
182
182
|
yield pushToken(buffer, parseInfo);
|
|
183
183
|
buffer = '';
|
|
184
184
|
}
|
|
185
|
+
buffer += value;
|
|
185
186
|
while (value = next(parseInfo)) {
|
|
186
187
|
charCode = value.charCodeAt(0);
|
|
187
188
|
if (!isWhiteSpace(charCode)) {
|
|
188
189
|
break;
|
|
189
190
|
}
|
|
191
|
+
buffer += value;
|
|
190
192
|
}
|
|
191
|
-
yield pushToken(
|
|
193
|
+
yield pushToken(buffer, parseInfo, EnumToken.WhitespaceTokenType);
|
|
192
194
|
buffer = '';
|
|
193
195
|
}
|
|
194
196
|
switch (charCode) {
|
|
@@ -236,8 +238,7 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
236
238
|
buffer = '';
|
|
237
239
|
}
|
|
238
240
|
if (match(parseInfo, '=')) {
|
|
239
|
-
yield pushToken(
|
|
240
|
-
next(parseInfo);
|
|
241
|
+
yield pushToken(value + next(parseInfo), parseInfo, EnumToken.LteTokenType);
|
|
241
242
|
break;
|
|
242
243
|
}
|
|
243
244
|
buffer += value;
|
|
@@ -292,8 +293,7 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
292
293
|
}
|
|
293
294
|
if (charCode == 124 /* TokenMap.PIPE */) {
|
|
294
295
|
if (match(parseInfo, '|')) {
|
|
295
|
-
next(parseInfo);
|
|
296
|
-
yield pushToken('', parseInfo, EnumToken.ColumnCombinatorTokenType);
|
|
296
|
+
yield pushToken(value + next(parseInfo), parseInfo, EnumToken.ColumnCombinatorTokenType);
|
|
297
297
|
}
|
|
298
298
|
else if (match(parseInfo, '=')) {
|
|
299
299
|
buffer += next(parseInfo);
|
|
@@ -347,11 +347,10 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
347
347
|
buffer = '';
|
|
348
348
|
}
|
|
349
349
|
if (match(parseInfo, '=')) {
|
|
350
|
-
yield pushToken(
|
|
351
|
-
next(parseInfo);
|
|
350
|
+
yield pushToken(value + next(parseInfo), parseInfo, EnumToken.GteTokenType);
|
|
352
351
|
}
|
|
353
352
|
else {
|
|
354
|
-
yield pushToken(
|
|
353
|
+
yield pushToken(value, parseInfo, EnumToken.GtTokenType);
|
|
355
354
|
}
|
|
356
355
|
consumeWhiteSpace(parseInfo);
|
|
357
356
|
break;
|
|
@@ -402,7 +401,7 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
402
401
|
yield pushToken(buffer, parseInfo);
|
|
403
402
|
buffer = '';
|
|
404
403
|
}
|
|
405
|
-
yield pushToken(
|
|
404
|
+
yield pushToken(value, parseInfo, EnumToken.EndParensTokenType);
|
|
406
405
|
break;
|
|
407
406
|
case 40 /* TokenMap.OPEN_PAREN */:
|
|
408
407
|
if (buffer.length == 0) {
|
|
@@ -468,7 +467,7 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
468
467
|
// ')'
|
|
469
468
|
if (charCode == 0x29) {
|
|
470
469
|
yield pushToken(buffer, parseInfo, hasNewLine ? EnumToken.BadStringTokenType : EnumToken.StringTokenType);
|
|
471
|
-
yield pushToken(
|
|
470
|
+
yield pushToken(value, parseInfo, EnumToken.EndParensTokenType);
|
|
472
471
|
buffer = '';
|
|
473
472
|
break;
|
|
474
473
|
}
|
|
@@ -492,7 +491,7 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
492
491
|
charCode = value.charCodeAt(0);
|
|
493
492
|
if (charCode == 0x29) { // ')'
|
|
494
493
|
yield pushToken(buffer, parseInfo, EnumToken.UrlTokenTokenType);
|
|
495
|
-
yield pushToken(
|
|
494
|
+
yield pushToken(value, parseInfo, EnumToken.EndParensTokenType);
|
|
496
495
|
buffer = '';
|
|
497
496
|
break;
|
|
498
497
|
}
|
|
@@ -526,8 +525,7 @@ function* tokenize(parseInfo, yieldEOFToken = true) {
|
|
|
526
525
|
buffer = '';
|
|
527
526
|
}
|
|
528
527
|
if (match(parseInfo, 'important')) {
|
|
529
|
-
yield pushToken(
|
|
530
|
-
next(parseInfo, 9);
|
|
528
|
+
yield pushToken(value + next(parseInfo, 9), parseInfo, EnumToken.ImportantTokenType);
|
|
531
529
|
buffer = '';
|
|
532
530
|
break;
|
|
533
531
|
}
|
|
@@ -69,7 +69,7 @@ function doRender(data, options = {}) {
|
|
|
69
69
|
const sourcemap = options.sourcemap ? new SourceMap : null;
|
|
70
70
|
const cache = Object.create(null);
|
|
71
71
|
const result = {
|
|
72
|
-
code: renderAstNode(options.expandNestingRules ? expand(data) : data, options, sourcemap, {
|
|
72
|
+
code: renderAstNode(options.expandNestingRules && [EnumToken.StyleSheetNodeType, EnumToken.AtRuleNodeType, EnumToken.RuleNodeType].includes(data.typ) && 'chi' in data ? expand(data) : data, options, sourcemap, {
|
|
73
73
|
ind: 0,
|
|
74
74
|
lin: 1,
|
|
75
75
|
col: 1
|
|
@@ -209,7 +209,7 @@ function renderAstNode(data, options, sourcemap, position, errors, reducer, cach
|
|
|
209
209
|
str = `${node.nam}:${options.indent}${(options.minify ? filterValues(node.val) : node.val).reduce(reducer, '').trimEnd()};`;
|
|
210
210
|
}
|
|
211
211
|
else if (node.typ == EnumToken.AtRuleNodeType && !('chi' in node)) {
|
|
212
|
-
str = `${
|
|
212
|
+
str = `${node.val === '' ? '' : options.indent || ' '}${node.val};`;
|
|
213
213
|
}
|
|
214
214
|
else {
|
|
215
215
|
str = renderAstNode(node, options, sourcemap, { ...position }, errors, reducer, cache, level + 1, indents);
|
|
@@ -528,7 +528,7 @@ function isColor(token) {
|
|
|
528
528
|
}
|
|
529
529
|
if (token.typ == EnumToken.IdenTokenType) {
|
|
530
530
|
// named color
|
|
531
|
-
return token.val.toLowerCase() in COLORS_NAMES;
|
|
531
|
+
return token.val.toLowerCase() in COLORS_NAMES || 'currentcolor' === token.val.toLowerCase() || 'transparent' === token.val.toLowerCase();
|
|
532
532
|
}
|
|
533
533
|
let isLegacySyntax = false;
|
|
534
534
|
if (token.typ == EnumToken.FunctionTokenType) {
|
|
@@ -581,8 +581,13 @@ function isColor(token) {
|
|
|
581
581
|
return false;
|
|
582
582
|
}
|
|
583
583
|
}
|
|
584
|
-
if (children[i].typ == EnumToken.FunctionTokenType
|
|
585
|
-
|
|
584
|
+
if (children[i].typ == EnumToken.FunctionTokenType) {
|
|
585
|
+
if ('var' == children[i].val.toLowerCase()) {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
if (!mathFuncs.includes(children[i].val)) {
|
|
589
|
+
return false;
|
|
590
|
+
}
|
|
586
591
|
}
|
|
587
592
|
}
|
|
588
593
|
if (children.length == 4 || (isRelative && children.length == 6)) {
|
|
@@ -869,23 +874,29 @@ function isNumber(name) {
|
|
|
869
874
|
}
|
|
870
875
|
return true;
|
|
871
876
|
}
|
|
872
|
-
function isDimension(name) {
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
877
|
+
// export function isDimension(name: string) {
|
|
878
|
+
//
|
|
879
|
+
// let index: number = name.length;
|
|
880
|
+
//
|
|
881
|
+
// while (index--) {
|
|
882
|
+
//
|
|
883
|
+
// if (isLetter(<number>name.charCodeAt(index))) {
|
|
884
|
+
//
|
|
885
|
+
// continue
|
|
886
|
+
// }
|
|
887
|
+
//
|
|
888
|
+
// index++;
|
|
889
|
+
// break;
|
|
890
|
+
// }
|
|
891
|
+
//
|
|
892
|
+
// const number: string = name.slice(0, index);
|
|
893
|
+
// return number.length > 0 && isIdentStart(name.charCodeAt(index)) && isNumber(number);
|
|
894
|
+
// }
|
|
884
895
|
function isPercentage(name) {
|
|
885
896
|
return name.endsWith('%') && isNumber(name.slice(0, -1));
|
|
886
897
|
}
|
|
887
|
-
function isFlex(
|
|
888
|
-
return
|
|
898
|
+
function isFlex(dimension) {
|
|
899
|
+
return 'unit' in dimension && 'fr' == dimension.unit.toLowerCase();
|
|
889
900
|
}
|
|
890
901
|
function parseDimension(name) {
|
|
891
902
|
let index = name.length;
|
|
@@ -901,6 +912,9 @@ function parseDimension(name) {
|
|
|
901
912
|
val: +name.slice(0, index),
|
|
902
913
|
unit: name.slice(index)
|
|
903
914
|
};
|
|
915
|
+
if (index < 0 || Number.isNaN(dimension.val)) {
|
|
916
|
+
return null;
|
|
917
|
+
}
|
|
904
918
|
if (isAngle(dimension)) {
|
|
905
919
|
// @ts-ignore
|
|
906
920
|
dimension.typ = EnumToken.AngleTokenType;
|
|
@@ -924,6 +938,10 @@ function parseDimension(name) {
|
|
|
924
938
|
// @ts-ignore
|
|
925
939
|
dimension.typ = EnumToken.FrequencyTokenType;
|
|
926
940
|
}
|
|
941
|
+
else if (isFlex(dimension)) {
|
|
942
|
+
// @ts-ignore
|
|
943
|
+
dimension.typ = EnumToken.FlexTokenType;
|
|
944
|
+
}
|
|
927
945
|
return dimension;
|
|
928
946
|
}
|
|
929
947
|
function isHexColor(name) {
|
|
@@ -958,4 +976,4 @@ function isWhiteSpace(codepoint) {
|
|
|
958
976
|
codepoint == 0xa || codepoint == 0xc || codepoint == 0xd;
|
|
959
977
|
}
|
|
960
978
|
|
|
961
|
-
export { colorFontTech, fontFeaturesTech, fontFormat, isAngle, isAtKeyword, isColor, isColorspace, isDigit,
|
|
979
|
+
export { colorFontTech, fontFeaturesTech, fontFormat, isAngle, isAtKeyword, isColor, isColorspace, isDigit, isFlex, isFrequency, isFunction, isHash, isHexColor, isHueInterpolationMethod, isIdent, isIdentCodepoint, isIdentColor, isIdentStart, isLength, isNewLine, isNumber, isPercentage, isPercentageToken, isPolarColorspace, isPseudo, isRectangularOrthogonalColorspace, isResolution, isTime, isWhiteSpace, mathFuncs, mediaTypes, mozExtensions, parseColor, parseDimension, pseudoAliasMap, pseudoElements, transformFunctions, webkitExtensions, wildCardFuncs };
|
|
@@ -11,6 +11,17 @@ import { splitTokenList } from '../utils/list.js';
|
|
|
11
11
|
|
|
12
12
|
const validateContainerScrollStateFeature = validateContainerSizeFeature;
|
|
13
13
|
function validateAtRuleContainer(atRule, options, root) {
|
|
14
|
+
if (!Array.isArray(atRule.chi)) {
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
return {
|
|
17
|
+
valid: SyntaxValidationResult.Drop,
|
|
18
|
+
matches: [],
|
|
19
|
+
node: atRule,
|
|
20
|
+
syntax: '@' + atRule.nam,
|
|
21
|
+
error: 'expected supports body',
|
|
22
|
+
tokens: []
|
|
23
|
+
};
|
|
24
|
+
}
|
|
14
25
|
// media-query-list
|
|
15
26
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
16
27
|
// @ts-ignore
|
|
@@ -8,6 +8,17 @@ import '../../syntax/color/utils/constants.js';
|
|
|
8
8
|
import '../../renderer/sourcemap/lib/encode.js';
|
|
9
9
|
|
|
10
10
|
function validateAtRuleCounterStyle(atRule, options, root) {
|
|
11
|
+
if (!Array.isArray(atRule.chi)) {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
return {
|
|
14
|
+
valid: SyntaxValidationResult.Drop,
|
|
15
|
+
matches: [],
|
|
16
|
+
node: atRule,
|
|
17
|
+
syntax: '@' + atRule.nam,
|
|
18
|
+
error: 'expected supports body',
|
|
19
|
+
tokens: []
|
|
20
|
+
};
|
|
21
|
+
}
|
|
11
22
|
// media-query-list
|
|
12
23
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
13
24
|
// @ts-ignore
|
|
@@ -12,6 +12,17 @@ import '../syntax.js';
|
|
|
12
12
|
import '../config.js';
|
|
13
13
|
|
|
14
14
|
function validateAtRuleFontFeatureValues(atRule, options, root) {
|
|
15
|
+
if (!Array.isArray(atRule.chi)) {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
return {
|
|
18
|
+
valid: SyntaxValidationResult.Drop,
|
|
19
|
+
matches: [],
|
|
20
|
+
node: atRule,
|
|
21
|
+
syntax: '@' + atRule.nam,
|
|
22
|
+
error: 'expected supports body',
|
|
23
|
+
tokens: []
|
|
24
|
+
};
|
|
25
|
+
}
|
|
15
26
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
16
27
|
// @ts-ignore
|
|
17
28
|
return {
|
|
@@ -9,6 +9,17 @@ import '../../renderer/sourcemap/lib/encode.js';
|
|
|
9
9
|
import { consumeWhitespace } from '../utils/whitespace.js';
|
|
10
10
|
|
|
11
11
|
function validateAtRuleKeyframes(atRule, options, root) {
|
|
12
|
+
if (!Array.isArray(atRule.chi)) {
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
return {
|
|
15
|
+
valid: SyntaxValidationResult.Drop,
|
|
16
|
+
matches: [],
|
|
17
|
+
node: atRule,
|
|
18
|
+
syntax: '@' + atRule.nam,
|
|
19
|
+
error: 'expected supports body',
|
|
20
|
+
tokens: []
|
|
21
|
+
};
|
|
22
|
+
}
|
|
12
23
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
13
24
|
// @ts-ignore
|
|
14
25
|
return {
|
|
@@ -12,6 +12,17 @@ import '../syntax.js';
|
|
|
12
12
|
import '../config.js';
|
|
13
13
|
|
|
14
14
|
function validateAtRuleLayer(atRule, options, root) {
|
|
15
|
+
if (!Array.isArray(atRule.chi)) {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
return {
|
|
18
|
+
valid: SyntaxValidationResult.Drop,
|
|
19
|
+
matches: [],
|
|
20
|
+
node: atRule,
|
|
21
|
+
syntax: '@' + atRule.nam,
|
|
22
|
+
error: 'expected supports body',
|
|
23
|
+
tokens: []
|
|
24
|
+
};
|
|
25
|
+
}
|
|
15
26
|
// media-query-list
|
|
16
27
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
17
28
|
// @ts-ignore
|
|
@@ -10,6 +10,17 @@ import { consumeWhitespace } from '../utils/whitespace.js';
|
|
|
10
10
|
import { splitTokenList } from '../utils/list.js';
|
|
11
11
|
|
|
12
12
|
function validateAtRuleMedia(atRule, options, root) {
|
|
13
|
+
if (!Array.isArray(atRule.chi)) {
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
return {
|
|
16
|
+
valid: SyntaxValidationResult.Drop,
|
|
17
|
+
matches: [],
|
|
18
|
+
node: atRule,
|
|
19
|
+
syntax: '@' + atRule.nam,
|
|
20
|
+
error: 'expected supports body',
|
|
21
|
+
tokens: []
|
|
22
|
+
};
|
|
23
|
+
}
|
|
13
24
|
// media-query-list
|
|
14
25
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
15
26
|
// @ts-ignore
|
|
@@ -8,6 +8,17 @@ import '../../syntax/color/utils/constants.js';
|
|
|
8
8
|
import '../../renderer/sourcemap/lib/encode.js';
|
|
9
9
|
|
|
10
10
|
function validateAtRulePageMarginBox(atRule, options, root) {
|
|
11
|
+
if (!Array.isArray(atRule.chi)) {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
return {
|
|
14
|
+
valid: SyntaxValidationResult.Drop,
|
|
15
|
+
matches: [],
|
|
16
|
+
node: atRule,
|
|
17
|
+
syntax: '@' + atRule.nam,
|
|
18
|
+
error: 'expected supports body',
|
|
19
|
+
tokens: []
|
|
20
|
+
};
|
|
21
|
+
}
|
|
11
22
|
if (Array.isArray(atRule.tokens) && atRule.tokens.length > 0) {
|
|
12
23
|
// @ts-ignore
|
|
13
24
|
return {
|
|
@@ -9,6 +9,17 @@ import '../../renderer/sourcemap/lib/encode.js';
|
|
|
9
9
|
import { splitTokenList } from '../utils/list.js';
|
|
10
10
|
|
|
11
11
|
function validateAtRulePage(atRule, options, root) {
|
|
12
|
+
if (!Array.isArray(atRule.chi)) {
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
return {
|
|
15
|
+
valid: SyntaxValidationResult.Drop,
|
|
16
|
+
matches: [],
|
|
17
|
+
node: atRule,
|
|
18
|
+
syntax: '@' + atRule.nam,
|
|
19
|
+
error: 'expected supports body',
|
|
20
|
+
tokens: []
|
|
21
|
+
};
|
|
22
|
+
}
|
|
12
23
|
// media-query-list
|
|
13
24
|
if (!Array.isArray(atRule.tokens) || atRule.tokens.length == 0) {
|
|
14
25
|
// @ts-ignore
|
|
@@ -23,6 +23,17 @@ function validateAtRuleSupports(atRule, options, root) {
|
|
|
23
23
|
tokens: []
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
+
if (!Array.isArray(atRule.chi)) {
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
return {
|
|
29
|
+
valid: SyntaxValidationResult.Drop,
|
|
30
|
+
matches: [],
|
|
31
|
+
node: atRule,
|
|
32
|
+
syntax: '@' + atRule.nam,
|
|
33
|
+
error: 'expected supports body',
|
|
34
|
+
tokens: []
|
|
35
|
+
};
|
|
36
|
+
}
|
|
26
37
|
const result = validateAtRuleSupportsConditions(atRule, atRule.tokens);
|
|
27
38
|
if (result) {
|
|
28
39
|
if (result.node == null) {
|
|
@@ -12,6 +12,17 @@ import { validateMediaFeature, validateMediaCondition } from './media.js';
|
|
|
12
12
|
import { validateSupportCondition } from './supports.js';
|
|
13
13
|
|
|
14
14
|
function validateAtRuleWhen(atRule, options, root) {
|
|
15
|
+
if (!Array.isArray(atRule.chi)) {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
return {
|
|
18
|
+
valid: SyntaxValidationResult.Drop,
|
|
19
|
+
matches: [],
|
|
20
|
+
node: atRule,
|
|
21
|
+
syntax: '@' + atRule.nam,
|
|
22
|
+
error: 'expected supports body',
|
|
23
|
+
tokens: []
|
|
24
|
+
};
|
|
25
|
+
}
|
|
15
26
|
const slice = Array.isArray(atRule.tokens) ? atRule.tokens.slice() : [];
|
|
16
27
|
consumeWhitespace(slice);
|
|
17
28
|
if (slice.length == 0) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import config from './config.json.js';
|
|
2
|
-
import './parser/types.js';
|
|
3
2
|
import { parseSyntax } from './parser/parse.js';
|
|
4
3
|
|
|
5
4
|
const parsedSyntaxes = new Map();
|
|
@@ -51,7 +50,6 @@ function getParsedSyntax(group, key) {
|
|
|
51
50
|
const index = group + '.' + keys.join('.');
|
|
52
51
|
// @ts-ignore
|
|
53
52
|
if (!parsedSyntaxes.has(index)) {
|
|
54
|
-
// @ts-ignore
|
|
55
53
|
const syntax = parseSyntax(obj.syntax);
|
|
56
54
|
// @ts-ignore
|
|
57
55
|
parsedSyntaxes.set(index, syntax.chi);
|
|
@@ -4190,7 +4190,27 @@ var atRules = {
|
|
|
4190
4190
|
}
|
|
4191
4191
|
},
|
|
4192
4192
|
"@nest": {
|
|
4193
|
-
|
|
4193
|
+
},
|
|
4194
|
+
"@stylistic": {
|
|
4195
|
+
syntax: " @stylistic { <feature-value-declaration-list> } "
|
|
4196
|
+
},
|
|
4197
|
+
"@historical-forms": {
|
|
4198
|
+
syntax: " @historical-forms { <feature-value-declaration-list> } "
|
|
4199
|
+
},
|
|
4200
|
+
"@styleset": {
|
|
4201
|
+
syntax: " @styleset { <feature-value-declaration-list> } "
|
|
4202
|
+
},
|
|
4203
|
+
"@character-variant": {
|
|
4204
|
+
syntax: " @character-variant { <feature-value-declaration-list> } "
|
|
4205
|
+
},
|
|
4206
|
+
"@swash": {
|
|
4207
|
+
syntax: " @swash { <feature-value-declaration-list> } "
|
|
4208
|
+
},
|
|
4209
|
+
"@ornaments": {
|
|
4210
|
+
syntax: " @ornaments { <feature-value-declaration-list> } "
|
|
4211
|
+
},
|
|
4212
|
+
"@annotation": {
|
|
4213
|
+
syntax: " @annotation { <feature-value-declaration-list> } "
|
|
4194
4214
|
}
|
|
4195
4215
|
};
|
|
4196
4216
|
var config = {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ValidationTokenEnum } from './types.js';
|
|
2
1
|
import { isIdent, isPseudo } from '../../syntax/syntax.js';
|
|
3
2
|
import { EnumToken } from '../../ast/types.js';
|
|
4
3
|
import '../../ast/minify.js';
|
|
@@ -9,6 +8,58 @@ import '../../parser/utils/config.js';
|
|
|
9
8
|
import '../../syntax/color/utils/constants.js';
|
|
10
9
|
import '../../renderer/sourcemap/lib/encode.js';
|
|
11
10
|
|
|
11
|
+
var ValidationTokenEnum;
|
|
12
|
+
(function (ValidationTokenEnum) {
|
|
13
|
+
ValidationTokenEnum[ValidationTokenEnum["Root"] = 0] = "Root";
|
|
14
|
+
ValidationTokenEnum[ValidationTokenEnum["Keyword"] = 1] = "Keyword";
|
|
15
|
+
ValidationTokenEnum[ValidationTokenEnum["PropertyType"] = 2] = "PropertyType";
|
|
16
|
+
ValidationTokenEnum[ValidationTokenEnum["DeclarationType"] = 3] = "DeclarationType";
|
|
17
|
+
ValidationTokenEnum[ValidationTokenEnum["AtRule"] = 4] = "AtRule";
|
|
18
|
+
ValidationTokenEnum[ValidationTokenEnum["ValidationFunctionDefinition"] = 5] = "ValidationFunctionDefinition";
|
|
19
|
+
ValidationTokenEnum[ValidationTokenEnum["OpenBracket"] = 6] = "OpenBracket";
|
|
20
|
+
ValidationTokenEnum[ValidationTokenEnum["CloseBracket"] = 7] = "CloseBracket";
|
|
21
|
+
ValidationTokenEnum[ValidationTokenEnum["OpenParenthesis"] = 8] = "OpenParenthesis";
|
|
22
|
+
ValidationTokenEnum[ValidationTokenEnum["CloseParenthesis"] = 9] = "CloseParenthesis";
|
|
23
|
+
ValidationTokenEnum[ValidationTokenEnum["Comma"] = 10] = "Comma";
|
|
24
|
+
ValidationTokenEnum[ValidationTokenEnum["Pipe"] = 11] = "Pipe";
|
|
25
|
+
ValidationTokenEnum[ValidationTokenEnum["Column"] = 12] = "Column";
|
|
26
|
+
ValidationTokenEnum[ValidationTokenEnum["Star"] = 13] = "Star";
|
|
27
|
+
ValidationTokenEnum[ValidationTokenEnum["OpenCurlyBrace"] = 14] = "OpenCurlyBrace";
|
|
28
|
+
ValidationTokenEnum[ValidationTokenEnum["CloseCurlyBrace"] = 15] = "CloseCurlyBrace";
|
|
29
|
+
ValidationTokenEnum[ValidationTokenEnum["HashMark"] = 16] = "HashMark";
|
|
30
|
+
ValidationTokenEnum[ValidationTokenEnum["QuestionMark"] = 17] = "QuestionMark";
|
|
31
|
+
ValidationTokenEnum[ValidationTokenEnum["Function"] = 18] = "Function";
|
|
32
|
+
ValidationTokenEnum[ValidationTokenEnum["Number"] = 19] = "Number";
|
|
33
|
+
ValidationTokenEnum[ValidationTokenEnum["Whitespace"] = 20] = "Whitespace";
|
|
34
|
+
ValidationTokenEnum[ValidationTokenEnum["Parenthesis"] = 21] = "Parenthesis";
|
|
35
|
+
ValidationTokenEnum[ValidationTokenEnum["Bracket"] = 22] = "Bracket";
|
|
36
|
+
ValidationTokenEnum[ValidationTokenEnum["Block"] = 23] = "Block";
|
|
37
|
+
ValidationTokenEnum[ValidationTokenEnum["AtLeastOnce"] = 24] = "AtLeastOnce";
|
|
38
|
+
ValidationTokenEnum[ValidationTokenEnum["Separator"] = 25] = "Separator";
|
|
39
|
+
ValidationTokenEnum[ValidationTokenEnum["Exclamation"] = 26] = "Exclamation";
|
|
40
|
+
ValidationTokenEnum[ValidationTokenEnum["Ampersand"] = 27] = "Ampersand";
|
|
41
|
+
ValidationTokenEnum[ValidationTokenEnum["PipeToken"] = 28] = "PipeToken";
|
|
42
|
+
ValidationTokenEnum[ValidationTokenEnum["ColumnToken"] = 29] = "ColumnToken";
|
|
43
|
+
ValidationTokenEnum[ValidationTokenEnum["AmpersandToken"] = 30] = "AmpersandToken";
|
|
44
|
+
ValidationTokenEnum[ValidationTokenEnum["Parens"] = 31] = "Parens";
|
|
45
|
+
ValidationTokenEnum[ValidationTokenEnum["PseudoClassToken"] = 32] = "PseudoClassToken";
|
|
46
|
+
ValidationTokenEnum[ValidationTokenEnum["PseudoClassFunctionToken"] = 33] = "PseudoClassFunctionToken";
|
|
47
|
+
ValidationTokenEnum[ValidationTokenEnum["StringToken"] = 34] = "StringToken";
|
|
48
|
+
ValidationTokenEnum[ValidationTokenEnum["AtRuleDefinition"] = 35] = "AtRuleDefinition";
|
|
49
|
+
ValidationTokenEnum[ValidationTokenEnum["DeclarationNameToken"] = 36] = "DeclarationNameToken";
|
|
50
|
+
ValidationTokenEnum[ValidationTokenEnum["DeclarationDefinitionToken"] = 37] = "DeclarationDefinitionToken";
|
|
51
|
+
ValidationTokenEnum[ValidationTokenEnum["SemiColon"] = 38] = "SemiColon";
|
|
52
|
+
ValidationTokenEnum[ValidationTokenEnum["Character"] = 39] = "Character";
|
|
53
|
+
ValidationTokenEnum[ValidationTokenEnum["InfinityToken"] = 40] = "InfinityToken";
|
|
54
|
+
})(ValidationTokenEnum || (ValidationTokenEnum = {}));
|
|
55
|
+
var ValidationSyntaxGroupEnum;
|
|
56
|
+
(function (ValidationSyntaxGroupEnum) {
|
|
57
|
+
ValidationSyntaxGroupEnum["Declarations"] = "declarations";
|
|
58
|
+
ValidationSyntaxGroupEnum["Functions"] = "functions";
|
|
59
|
+
ValidationSyntaxGroupEnum["Syntaxes"] = "syntaxes";
|
|
60
|
+
ValidationSyntaxGroupEnum["Selectors"] = "selectors";
|
|
61
|
+
ValidationSyntaxGroupEnum["AtRules"] = "atRules";
|
|
62
|
+
})(ValidationSyntaxGroupEnum || (ValidationSyntaxGroupEnum = {}));
|
|
12
63
|
const skipped = [
|
|
13
64
|
ValidationTokenEnum.Star,
|
|
14
65
|
ValidationTokenEnum.HashMark,
|
|
@@ -1040,4 +1091,4 @@ function minify(ast) {
|
|
|
1040
1091
|
return ast;
|
|
1041
1092
|
}
|
|
1042
1093
|
|
|
1043
|
-
export { parseSyntax, renderSyntax };
|
|
1094
|
+
export { ValidationSyntaxGroupEnum, ValidationTokenEnum, parseSyntax, renderSyntax };
|