@tbela99/css-parser 1.3.2 → 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.
Files changed (59) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +59 -20
  3. package/dist/index-umd-web.js +1846 -1075
  4. package/dist/index.cjs +1941 -1202
  5. package/dist/index.d.ts +914 -181
  6. package/dist/lib/ast/expand.js +5 -10
  7. package/dist/lib/ast/features/calc.js +8 -8
  8. package/dist/lib/ast/features/inlinecssvariables.js +9 -8
  9. package/dist/lib/ast/features/prefix.js +5 -15
  10. package/dist/lib/ast/features/shorthand.js +5 -6
  11. package/dist/lib/ast/features/transform.js +18 -25
  12. package/dist/lib/ast/features/type.js +4 -2
  13. package/dist/lib/ast/minify.js +56 -112
  14. package/dist/lib/ast/transform/compute.js +2 -4
  15. package/dist/lib/ast/transform/matrix.js +20 -20
  16. package/dist/lib/ast/transform/minify.js +105 -12
  17. package/dist/lib/ast/transform/rotate.js +11 -11
  18. package/dist/lib/ast/transform/scale.js +6 -6
  19. package/dist/lib/ast/transform/skew.js +4 -4
  20. package/dist/lib/ast/transform/translate.js +3 -3
  21. package/dist/lib/ast/transform/utils.js +30 -37
  22. package/dist/lib/ast/types.js +16 -4
  23. package/dist/lib/ast/walk.js +172 -70
  24. package/dist/lib/fs/resolve.js +12 -7
  25. package/dist/lib/parser/declaration/list.js +3 -1
  26. package/dist/lib/parser/parse.js +441 -161
  27. package/dist/lib/parser/tokenize.js +12 -14
  28. package/dist/lib/renderer/render.js +7 -7
  29. package/dist/lib/syntax/color/cmyk.js +6 -3
  30. package/dist/lib/syntax/color/color-mix.js +2 -3
  31. package/dist/lib/syntax/color/color.js +28 -6
  32. package/dist/lib/syntax/color/hex.js +3 -0
  33. package/dist/lib/syntax/color/hsl.js +18 -7
  34. package/dist/lib/syntax/color/hwb.js +3 -3
  35. package/dist/lib/syntax/color/lab.js +4 -4
  36. package/dist/lib/syntax/color/lch.js +7 -4
  37. package/dist/lib/syntax/color/oklab.js +4 -4
  38. package/dist/lib/syntax/color/oklch.js +18 -6
  39. package/dist/lib/syntax/color/relativecolor.js +9 -56
  40. package/dist/lib/syntax/color/srgb.js +1 -1
  41. package/dist/lib/syntax/syntax.js +36 -18
  42. package/dist/lib/validation/at-rules/container.js +11 -0
  43. package/dist/lib/validation/at-rules/counter-style.js +11 -0
  44. package/dist/lib/validation/at-rules/font-feature-values.js +11 -0
  45. package/dist/lib/validation/at-rules/keyframes.js +11 -0
  46. package/dist/lib/validation/at-rules/layer.js +11 -0
  47. package/dist/lib/validation/at-rules/media.js +11 -0
  48. package/dist/lib/validation/at-rules/page-margin-box.js +11 -0
  49. package/dist/lib/validation/at-rules/page.js +11 -0
  50. package/dist/lib/validation/at-rules/supports.js +11 -0
  51. package/dist/lib/validation/at-rules/when.js +11 -0
  52. package/dist/lib/validation/config.js +0 -2
  53. package/dist/lib/validation/config.json.js +21 -9
  54. package/dist/lib/validation/parser/parse.js +53 -2
  55. package/dist/lib/validation/syntax.js +199 -36
  56. package/dist/node.js +63 -36
  57. package/dist/web.js +84 -25
  58. package/package.json +7 -5
  59. package/dist/lib/validation/parser/types.js +0 -54
@@ -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 && !mathFuncs.includes(children[i].val)) {
585
- return false;
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
- let index = name.length;
874
- while (index--) {
875
- if (isLetter(name.charCodeAt(index))) {
876
- continue;
877
- }
878
- index++;
879
- break;
880
- }
881
- const number = name.slice(0, index);
882
- return number.length > 0 && isIdentStart(name.charCodeAt(index)) && isNumber(number);
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(name) {
888
- return name.endsWith('fr') && isNumber(name.slice(0, -2));
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, isDimension, 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 };
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);
@@ -1619,6 +1619,9 @@ var declarations = {
1619
1619
  "text-anchor": {
1620
1620
  syntax: "start | middle | end"
1621
1621
  },
1622
+ "text-autospace": {
1623
+ syntax: "normal | <autospace> | auto"
1624
+ },
1622
1625
  "text-box": {
1623
1626
  syntax: "normal | <'text-box-trim'> || <'text-box-edge'>"
1624
1627
  },
@@ -4186,19 +4189,28 @@ var atRules = {
4186
4189
  }
4187
4190
  }
4188
4191
  },
4189
- charset: {
4190
- syntax: "<string>"
4192
+ "@nest": {
4191
4193
  },
4192
- container: {
4193
- syntax: "[ <container-name> ]? <container-condition>"
4194
+ "@stylistic": {
4195
+ syntax: " @stylistic { <feature-value-declaration-list> } "
4194
4196
  },
4195
- nest: {
4196
- syntax: "<complex-selector-list>"
4197
+ "@historical-forms": {
4198
+ syntax: " @historical-forms { <feature-value-declaration-list> } "
4197
4199
  },
4198
- scope: {
4199
- syntax: "[ ( <scope-start> ) ]? [ to ( <scope-end> ) ]?"
4200
+ "@styleset": {
4201
+ syntax: " @styleset { <feature-value-declaration-list> } "
4200
4202
  },
4201
- "position-try": {
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> } "
4202
4214
  }
4203
4215
  };
4204
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 };