@witchcraft/expressit 0.2.1 → 0.3.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 (119) hide show
  1. package/README.md +6 -4
  2. package/dist/Lexer.d.ts +102 -99
  3. package/dist/Lexer.d.ts.map +1 -1
  4. package/dist/Lexer.js +211 -557
  5. package/dist/Parser.d.ts +27 -27
  6. package/dist/Parser.d.ts.map +1 -1
  7. package/dist/Parser.js +5 -2
  8. package/dist/ast/builders/condition.d.ts +1 -1
  9. package/dist/ast/builders/condition.d.ts.map +1 -1
  10. package/dist/ast/builders/condition.js +1 -0
  11. package/dist/ast/builders/delim.d.ts +3 -3
  12. package/dist/ast/builders/delim.d.ts.map +1 -1
  13. package/dist/ast/builders/error.d.ts +2 -2
  14. package/dist/ast/builders/error.d.ts.map +1 -1
  15. package/dist/ast/builders/expression.d.ts +2 -2
  16. package/dist/ast/builders/expression.d.ts.map +1 -1
  17. package/dist/ast/builders/expression.js +2 -6
  18. package/dist/ast/builders/group.d.ts +1 -1
  19. package/dist/ast/builders/group.d.ts.map +1 -1
  20. package/dist/ast/builders/group.js +1 -3
  21. package/dist/ast/builders/pos.d.ts +2 -2
  22. package/dist/ast/builders/pos.d.ts.map +1 -1
  23. package/dist/ast/builders/token.d.ts +2 -2
  24. package/dist/ast/builders/token.d.ts.map +1 -1
  25. package/dist/ast/builders/type.d.ts +2 -2
  26. package/dist/ast/builders/type.d.ts.map +1 -1
  27. package/dist/ast/builders/variable.d.ts +3 -3
  28. package/dist/ast/builders/variable.d.ts.map +1 -1
  29. package/dist/ast/createConditionNode.d.ts +1 -1
  30. package/dist/ast/createConditionNode.d.ts.map +1 -1
  31. package/dist/ast/createGroupNode.d.ts +1 -1
  32. package/dist/ast/createGroupNode.d.ts.map +1 -1
  33. package/dist/ast/createToken.d.ts +2 -2
  34. package/dist/ast/createToken.d.ts.map +1 -1
  35. package/dist/ast/createToken.js +2 -2
  36. package/dist/ast/error.d.ts +2 -2
  37. package/dist/ast/error.d.ts.map +1 -1
  38. package/dist/ast/error.js +1 -0
  39. package/dist/ast/handlers.d.ts +23 -23
  40. package/dist/ast/handlers.d.ts.map +1 -1
  41. package/dist/ast/handlers.js +4 -4
  42. package/dist/examples/ParserWithSqlSupport.d.ts +62 -0
  43. package/dist/examples/ParserWithSqlSupport.d.ts.map +1 -0
  44. package/dist/examples/ParserWithSqlSupport.js +271 -0
  45. package/dist/examples/{shortcutContextParser.d.ts → ShortcutContextParser.d.ts} +5 -5
  46. package/dist/examples/ShortcutContextParser.d.ts.map +1 -0
  47. package/dist/examples/{shortcutContextParser.js → ShortcutContextParser.js} +2 -2
  48. package/dist/examples/index.d.ts +2 -1
  49. package/dist/examples/index.d.ts.map +1 -1
  50. package/dist/examples/index.js +3 -1
  51. package/dist/index.js +2 -2
  52. package/dist/internal/ExpressitError.d.ts +2 -2
  53. package/dist/internal/ExpressitError.d.ts.map +1 -1
  54. package/dist/internal/ExpressitError.js +2 -1
  55. package/dist/internal/checkParserOpts.d.ts +1 -1
  56. package/dist/internal/checkParserOpts.d.ts.map +1 -1
  57. package/dist/internal/checkParserOpts.js +11 -11
  58. package/dist/internal/parseParserOptions.d.ts +1 -1
  59. package/dist/internal/parseParserOptions.d.ts.map +1 -1
  60. package/dist/package.json.js +4 -195
  61. package/dist/types/ast.d.ts +60 -58
  62. package/dist/types/ast.d.ts.map +1 -1
  63. package/dist/types/ast.js +26 -27
  64. package/dist/types/autocomplete.d.ts +23 -21
  65. package/dist/types/autocomplete.d.ts.map +1 -1
  66. package/dist/types/autocomplete.js +24 -21
  67. package/dist/types/errors.d.ts +12 -10
  68. package/dist/types/errors.d.ts.map +1 -1
  69. package/dist/types/errors.js +8 -7
  70. package/dist/types/index.js +2 -2
  71. package/dist/types/parser.d.ts +9 -9
  72. package/dist/types/parser.d.ts.map +1 -1
  73. package/dist/utils/getCursorInfo.js +3 -1
  74. package/dist/utils/getOppositeDelimiter.d.ts +2 -2
  75. package/dist/utils/getOppositeDelimiter.d.ts.map +1 -1
  76. package/dist/utils/isDelimiter.d.ts +2 -2
  77. package/dist/utils/isDelimiter.d.ts.map +1 -1
  78. package/dist/utils/isParen.d.ts +2 -2
  79. package/dist/utils/isParen.d.ts.map +1 -1
  80. package/dist/utils/isQuote.d.ts +2 -2
  81. package/dist/utils/isQuote.d.ts.map +1 -1
  82. package/package.json +29 -27
  83. package/src/Lexer.ts +103 -92
  84. package/src/Parser.ts +70 -64
  85. package/src/ast/builders/condition.ts +3 -3
  86. package/src/ast/builders/delim.ts +5 -5
  87. package/src/ast/builders/error.ts +3 -3
  88. package/src/ast/builders/expression.ts +4 -8
  89. package/src/ast/builders/group.ts +2 -4
  90. package/src/ast/builders/pos.ts +3 -3
  91. package/src/ast/builders/token.ts +2 -2
  92. package/src/ast/builders/type.ts +2 -2
  93. package/src/ast/builders/variable.ts +5 -5
  94. package/src/ast/createConditionNode.ts +2 -2
  95. package/src/ast/createGroupNode.ts +4 -4
  96. package/src/ast/createToken.ts +6 -6
  97. package/src/ast/error.ts +2 -2
  98. package/src/ast/handlers.ts +23 -23
  99. package/src/examples/ParserWithSqlSupport.ts +371 -0
  100. package/src/examples/{shortcutContextParser.ts → ShortcutContextParser.ts} +14 -14
  101. package/src/examples/index.ts +2 -1
  102. package/src/internal/ExpressitError.ts +4 -4
  103. package/src/internal/checkParserOpts.ts +14 -14
  104. package/src/internal/parseParserOptions.ts +2 -2
  105. package/src/types/ast.ts +101 -96
  106. package/src/types/autocomplete.ts +26 -22
  107. package/src/types/errors.ts +18 -13
  108. package/src/types/parser.ts +9 -9
  109. package/src/utils/getCursorInfo.ts +1 -1
  110. package/src/utils/getOppositeDelimiter.ts +2 -2
  111. package/src/utils/getSurroundingErrors.ts +4 -4
  112. package/src/utils/isDelimiter.ts +3 -3
  113. package/src/utils/isParen.ts +2 -2
  114. package/src/utils/isQuote.ts +2 -2
  115. package/dist/examples/shortcutContextParser.d.ts.map +0 -1
  116. package/dist/global.d.js +0 -1
  117. package/dist/package.js +0 -7
  118. package/src/global.d.ts +0 -4
  119. package/src/package.js +0 -11
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  ### 🚧 WORK IN PROGRESS 🚧
2
2
  [![NPM Version (with latest tag)](https://img.shields.io/npm/v/%40witchcraft%2Fexpressit/latest)](https://www.npmjs.com/package/@witchcraft/expressit/v/latest)
3
3
  <!-- [![NPM Version (with beta tag)](https://img.shields.io/npm/v/%40witchcraft%2Fexpressit/beta)](https://www.npmjs.com/package/@witchcraft/expressit/v/beta) -->
4
- [![Build](https://github.com/witchcraftjs/expressit/actions/workflows/build.yml/badge.svg)](https://github.com/witchcraftjs/expressit/actions/workflows/build.yml)
5
4
  [![Docs](https://github.com/witchcraftjs/expressit/workflows/Docs/badge.svg)](https://github.com/witchcraftjs/expressit/actions/workflows/docs.yml)
6
5
  [![Release](https://github.com/witchcraftjs/expressit/actions/workflows/release.yml/badge.svg)](https://github.com/witchcraftjs/expressit/actions/workflows/release.yml)
7
6
 
@@ -35,7 +34,10 @@ pnpm install @witchcraft/expressit
35
34
  - `extractTokens`, `getCursorInfo`, `getOppositeDelimiter`, `getSurroundingErrors` - useful for adding custom syntax highlighting.
36
35
  - `prettyAst` - pretty prints a compact version of the ast for debugging
37
36
  - other minor utilities - `isDelimiter`, `isQuote`, etc.
38
- - **Pre-Configured Parsers** - Includes a pre-configured boolean parser (intended for parsing shortcut contexts in a similar way to VS Code).
37
+ - **Pre-Configured Example Parsers**
38
+ - Shortcut Context Parser / Boolean Parser - Intended for parsing shortcut contexts in a similar way to VS Code).
39
+ - Experimental parser with **SQL output support** - Create an easy to read query language that can be used to generate safe SQL queries (it's flexible, but built to integrate
40
+ easily with drizzle).
39
41
  - **Lots of Docs and Tests**
40
42
 
41
43
  # Usage
@@ -79,12 +81,12 @@ const parser = new Parser({/* opts */})
79
81
  // ON ENTER/SUBMIT
80
82
  const res = parser.evaluate(ast, context)
81
83
  ```
82
- Many more examples can be found in the [tests](https://github.com/witchcraftjs/expressit/blob/master/tests), and there's also some WIP pre-configured parsers in [src/examples](https://github.com/witchcraftjs/expressit/blob/master/src/examples/) whose usage can be seen in [./test/examples.spec.ts](https://github.com/witchcraftjs/expressit/blob/master/test/examples.spec.ts).
84
+ Many more examples can be found in the [tests](https://github.com/witchcraftjs/expressit/blob/master/tests), and there's also some example pre-configured parsers in [src/examples](https://github.com/witchcraftjs/expressit/blob/master/src/examples/) whose usage can be seen in [./test/examples.spec.ts](https://github.com/witchcraftjs/expressit/blob/master/test/examples.spec.ts).
83
85
 
84
86
  ## [Development](./docs-src/DEVELOPMENT.md)
85
87
 
86
88
  ## Related
87
89
 
88
- [Shortcuts Manager](https://github.com/alanscodelog/shortcuts-manager)
90
+ [Shortcuts Manager](https://github.com/witchcraftjs/spellcraft)
89
91
 
90
92
  [Parsekey (shortcuts parser)](https://github.com/alanscodelog/parsekey)
package/dist/Lexer.d.ts CHANGED
@@ -1,55 +1,60 @@
1
+ import type { EnumLike } from "@alanscodelog/utils";
1
2
  import type { FullParserOptions } from "./types/index.js";
2
- declare enum MODE {
3
- MAIN = "MAIN",
4
- MAYBE_QUOTE_ERROR = "MAYBE_QUOTE_ERROR",
5
- NOT_SINGLE = "NOT_SINGLE",
6
- NOT_DOUBLE = "NOT_DOUBLE",
7
- NOT_BACKTICK = "NOT_BACKTICK",
8
- NOT_REGEX = "NOT_REGEX",
9
- REGEX_END = "REGEX_END",
10
- BRACKET_MAIN = "BRACKET_MAIN",
11
- BRACKET_MAYBE_QUOTE_ERROR = "BRACKET_MAYBE_QUOTE_ERROR",
12
- BRACKET_NOT_SINGLE = "BRACKET_NOT_SINGLE",
13
- BRACKET_NOT_DOUBLE = "BRACKET_NOT_DOUBLE",
14
- BRACKET_NOT_BACKTICK = "BRACKET_NOT_BACKTICK"
15
- }
16
- export declare enum $T {
17
- _ = "_",// whitespace,
18
- VALUE_UNQUOTED = "VALUE_UNQUOTED",
19
- VALUE_REGEX = "VALUE_REGEX",
20
- VALUE_NOT_SINGLE = "VALUE_NOT_SINGLE",
21
- VALUE_NOT_DOUBLE = "VALUE_NOT_DOUBLE",
22
- VALUE_NOT_BACKTICK = "VALUE_NOT_BACKTICK",
23
- SYM_OR = "SYM_OR",
24
- SYM_AND = "SYM_AND",
25
- SYM_NOT = "SYM_NOT",
26
- WORD_OR = "WORD_OR",
27
- WORD_AND = "WORD_AND",
28
- WORD_NOT = "WORD_NOT",
29
- REGEX_START = "REGEX_START",
30
- REGEX_END = "REGEX_END",
31
- EXP_PROP_OP = "EXP_PROP_OP",
32
- CUSTOM_PROP_OP = "CUSTOM_PROP_OP",
33
- PAREN_L = "PAREN_L",
34
- PAREN_R = "PAREN_R",
35
- BRACKET_L = "BRACKET_L",
36
- BRACKET_R = "BRACKET_R",
37
- QUOTE_SINGLE = "QUOTE_SINGLE",
38
- QUOTE_DOUBLE = "QUOTE_DOUBLE",
39
- QUOTE_BACKTICK = "QUOTE_BACKTICK"
40
- }
41
- export declare enum $C {
42
- ANY = "ANY",
43
- QUOTE_ANY = "QUOTE_ANY",
44
- REGEX_ANY = "REGEX_ANY",
45
- VALUE_FOR_SINGLE = "VALUE_FOR_SINGLE",
46
- VALUE_FOR_DOUBLE = "VALUE_FOR_DOUBLE",
47
- VALUE_FOR_BACKTICK = "VALUE_FOR_BACKTICK",
48
- OPERATOR_OR = "OPERATOR_OR",
49
- OPERATOR_AND = "OPERATOR_AND",
50
- OPERATOR_NOT = "OPERATOR_NOT",
51
- VALUE = "VALUE"
52
- }
3
+ declare const MODE: {
4
+ MAIN: "MAIN";
5
+ MAYBE_QUOTE_ERROR: "MAYBE_QUOTE_ERROR";
6
+ NOT_SINGLE: "NOT_SINGLE";
7
+ NOT_DOUBLE: "NOT_DOUBLE";
8
+ NOT_BACKTICK: "NOT_BACKTICK";
9
+ NOT_REGEX: "NOT_REGEX";
10
+ REGEX_END: "REGEX_END";
11
+ BRACKET_MAIN: "BRACKET_MAIN";
12
+ BRACKET_MAYBE_QUOTE_ERROR: "BRACKET_MAYBE_QUOTE_ERROR";
13
+ BRACKET_NOT_SINGLE: "BRACKET_NOT_SINGLE";
14
+ BRACKET_NOT_DOUBLE: "BRACKET_NOT_DOUBLE";
15
+ BRACKET_NOT_BACKTICK: "BRACKET_NOT_BACKTICK";
16
+ BRACKET_NOT_REGEX: "BRACKET_NOT_REGEX";
17
+ BRACKET_REGEX_END: "BRACKET_REGEX_END";
18
+ };
19
+ export declare const $T: {
20
+ REGEX_END: "REGEX_END";
21
+ _: "_";
22
+ VALUE_UNQUOTED: "VALUE_UNQUOTED";
23
+ VALUE_REGEX: "VALUE_REGEX";
24
+ VALUE_NOT_SINGLE: "VALUE_NOT_SINGLE";
25
+ VALUE_NOT_DOUBLE: "VALUE_NOT_DOUBLE";
26
+ VALUE_NOT_BACKTICK: "VALUE_NOT_BACKTICK";
27
+ SYM_OR: "SYM_OR";
28
+ SYM_AND: "SYM_AND";
29
+ SYM_NOT: "SYM_NOT";
30
+ WORD_OR: "WORD_OR";
31
+ WORD_AND: "WORD_AND";
32
+ WORD_NOT: "WORD_NOT";
33
+ REGEX_START: "REGEX_START";
34
+ EXP_PROP_OP: "EXP_PROP_OP";
35
+ CUSTOM_PROP_OP: "CUSTOM_PROP_OP";
36
+ PAREN_L: "PAREN_L";
37
+ PAREN_R: "PAREN_R";
38
+ BRACKET_L: "BRACKET_L";
39
+ BRACKET_R: "BRACKET_R";
40
+ QUOTE_SINGLE: "QUOTE_SINGLE";
41
+ QUOTE_DOUBLE: "QUOTE_DOUBLE";
42
+ QUOTE_BACKTICK: "QUOTE_BACKTICK";
43
+ };
44
+ export type $TType = EnumLike<typeof $T>;
45
+ export declare const $C: {
46
+ VALUE: "VALUE";
47
+ ANY: "ANY";
48
+ QUOTE_ANY: "QUOTE_ANY";
49
+ REGEX_ANY: "REGEX_ANY";
50
+ VALUE_FOR_SINGLE: "VALUE_FOR_SINGLE";
51
+ VALUE_FOR_DOUBLE: "VALUE_FOR_DOUBLE";
52
+ VALUE_FOR_BACKTICK: "VALUE_FOR_BACKTICK";
53
+ OPERATOR_OR: "OPERATOR_OR";
54
+ OPERATOR_AND: "OPERATOR_AND";
55
+ OPERATOR_NOT: "OPERATOR_NOT";
56
+ };
57
+ export type $CType = EnumLike<typeof $C>;
53
58
  type SymbolInfo = {
54
59
  symOrs: string[];
55
60
  symAnds: string[];
@@ -62,24 +67,22 @@ type SymbolInfo = {
62
67
  customOpAlsoNegation: boolean;
63
68
  };
64
69
  type TokenMatchFunc = (c: string, input: string, start: number, mode: string) => string | boolean;
65
- interface BaseTokenType<T extends $T | $C> {
70
+ interface LexerBaseToken<T extends $TType | $CType> {
66
71
  type: T;
67
72
  skip?: boolean;
68
73
  }
69
- export interface RealTokenType<T extends $T = $T, TPush extends string | undefined = undefined> extends BaseTokenType<T> {
74
+ export interface LexerRealToken<T extends $TType = $TType, TPush extends string | undefined = undefined> extends LexerBaseToken<T> {
70
75
  matches: TokenMatchFunc;
71
76
  push?: TPush | ((mode: string, tokens: Token[]) => TPush);
72
- longerAlt?: $T;
77
+ longerAlt?: $TType;
73
78
  skip?: boolean;
74
79
  }
75
- export interface TokenCategoryType<TC extends $C, TTokens extends RealTokenType<$T, any>[] = RealTokenType<$T, any>[]> extends BaseTokenType<TC> {
80
+ export interface LexerCategoryToken<TC extends $CType, TTokens extends LexerRealToken<$TType, any>[] = LexerRealToken<$TType, any>[]> extends LexerBaseToken<TC> {
76
81
  isCategory: true;
77
- entries: Partial<{
78
- [key in TTokens[number]["type"]]: TTokens[number];
79
- }>;
82
+ entries: Partial<Record<TTokens[number]["type"], TTokens[number]>>;
80
83
  }
81
- export type TokenType<TC extends $C | $T> = TC extends $T ? RealTokenType<TC, any> : TC extends $C ? TokenCategoryType<TC> : never;
82
- export interface Token<T extends $T | $C = $T | $C> {
84
+ export type LexerToken<TC extends $CType | $TType> = TC extends $TType ? LexerRealToken<TC, any> : TC extends $CType ? LexerCategoryToken<TC> : never;
85
+ export interface Token<T extends $TType | $CType = $TType | $CType> {
83
86
  type: T;
84
87
  value: string;
85
88
  startOffset: number;
@@ -89,58 +92,58 @@ export interface Token<T extends $T | $C = $T | $C> {
89
92
  export declare class Lexer {
90
93
  symbols: SymbolInfo;
91
94
  $: {
92
- [key in $T]: RealTokenType<key, any>;
95
+ [key in $TType]: LexerRealToken<key, any>;
93
96
  };
94
97
  $categories: ReturnType<Lexer["createTokens"]>["$categories"];
95
98
  branches: {
96
- [key in keyof typeof MODE]?: TokenType<$T>[];
99
+ [key in keyof typeof MODE]?: LexerToken<$TType>[];
97
100
  };
98
- opts: FullParserOptions<{}>;
99
- constructor(opts?: Partial<FullParserOptions<{}>>);
101
+ opts: FullParserOptions<any>;
102
+ constructor(opts?: Partial<FullParserOptions<any>>);
100
103
  calculateSymbolInfo(): SymbolInfo;
101
104
  createTokens(): {
102
105
  $: {
103
- PAREN_L: RealTokenType<$T.PAREN_L, undefined>;
104
- PAREN_R: RealTokenType<$T.PAREN_R, undefined>;
105
- BRACKET_L: RealTokenType<$T.BRACKET_L, MODE.BRACKET_MAIN>;
106
- BRACKET_R: RealTokenType<$T.BRACKET_R, MODE.MAIN>;
107
- CUSTOM_PROP_OP?: RealTokenType<$T.CUSTOM_PROP_OP, undefined> | undefined;
108
- EXP_PROP_OP?: RealTokenType<$T.EXP_PROP_OP, undefined> | undefined;
109
- WORD_NOT?: RealTokenType<$T.WORD_NOT, undefined> | undefined;
110
- WORD_AND?: RealTokenType<$T.WORD_AND, undefined> | undefined;
111
- WORD_OR?: RealTokenType<$T.WORD_OR, undefined> | undefined;
112
- SYM_NOT?: RealTokenType<$T.SYM_NOT, undefined> | undefined;
113
- SYM_AND?: RealTokenType<$T.SYM_AND, undefined> | undefined;
114
- SYM_OR?: RealTokenType<$T.SYM_OR, undefined> | undefined;
115
- _: RealTokenType<$T._, undefined>;
116
- REGEX_START: RealTokenType<$T.REGEX_START, MODE.NOT_REGEX>;
117
- REGEX_END: RealTokenType<$T.REGEX_END, MODE.MAIN>;
118
- VALUE_REGEX: RealTokenType<$T.VALUE_REGEX, MODE.REGEX_END>;
119
- QUOTE_SINGLE: RealTokenType<$T.QUOTE_SINGLE, MODE.MAIN | MODE.NOT_SINGLE | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_SINGLE>;
120
- QUOTE_DOUBLE: RealTokenType<$T.QUOTE_DOUBLE, MODE.MAIN | MODE.NOT_DOUBLE | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_DOUBLE>;
121
- QUOTE_BACKTICK: RealTokenType<$T.QUOTE_BACKTICK, MODE.MAIN | MODE.NOT_BACKTICK | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_BACKTICK>;
122
- VALUE_NOT_SINGLE: RealTokenType<$T.VALUE_NOT_SINGLE, MODE.MAIN | MODE.BRACKET_MAIN>;
123
- VALUE_NOT_DOUBLE: RealTokenType<$T.VALUE_NOT_DOUBLE, MODE.MAIN | MODE.BRACKET_MAIN>;
124
- VALUE_NOT_BACKTICK: RealTokenType<$T.VALUE_NOT_BACKTICK, MODE.MAIN | MODE.BRACKET_MAIN>;
125
- VALUE_UNQUOTED: RealTokenType<$T.VALUE_UNQUOTED, MODE.MAIN | MODE.BRACKET_MAIN>;
106
+ PAREN_L: LexerRealToken<"PAREN_L", undefined>;
107
+ PAREN_R: LexerRealToken<"PAREN_R", undefined>;
108
+ BRACKET_L: LexerRealToken<"BRACKET_L", "BRACKET_MAIN">;
109
+ BRACKET_R: LexerRealToken<"BRACKET_R", "MAIN">;
110
+ CUSTOM_PROP_OP?: LexerRealToken<"CUSTOM_PROP_OP", undefined> | undefined;
111
+ EXP_PROP_OP?: LexerRealToken<"EXP_PROP_OP", undefined> | undefined;
112
+ WORD_NOT?: LexerRealToken<"WORD_NOT", undefined> | undefined;
113
+ WORD_AND?: LexerRealToken<"WORD_AND", undefined> | undefined;
114
+ WORD_OR?: LexerRealToken<"WORD_OR", undefined> | undefined;
115
+ SYM_NOT?: LexerRealToken<"SYM_NOT", undefined> | undefined;
116
+ SYM_AND?: LexerRealToken<"SYM_AND", undefined> | undefined;
117
+ SYM_OR?: LexerRealToken<"SYM_OR", undefined> | undefined;
118
+ _: LexerRealToken<"_", undefined>;
119
+ REGEX_START: LexerRealToken<"REGEX_START", "NOT_REGEX">;
120
+ REGEX_END: LexerRealToken<"REGEX_END", "MAIN">;
121
+ VALUE_REGEX: LexerRealToken<"VALUE_REGEX", "REGEX_END">;
122
+ QUOTE_SINGLE: LexerRealToken<"QUOTE_SINGLE", "MAIN" | "NOT_SINGLE" | "BRACKET_MAIN" | "BRACKET_NOT_SINGLE">;
123
+ QUOTE_DOUBLE: LexerRealToken<"QUOTE_DOUBLE", "MAIN" | "NOT_DOUBLE" | "BRACKET_MAIN" | "BRACKET_NOT_DOUBLE">;
124
+ QUOTE_BACKTICK: LexerRealToken<"QUOTE_BACKTICK", "MAIN" | "NOT_BACKTICK" | "BRACKET_MAIN" | "BRACKET_NOT_BACKTICK">;
125
+ VALUE_NOT_SINGLE: LexerRealToken<"VALUE_NOT_SINGLE", "MAIN" | "BRACKET_MAIN">;
126
+ VALUE_NOT_DOUBLE: LexerRealToken<"VALUE_NOT_DOUBLE", "MAIN" | "BRACKET_MAIN">;
127
+ VALUE_NOT_BACKTICK: LexerRealToken<"VALUE_NOT_BACKTICK", "MAIN" | "BRACKET_MAIN">;
128
+ VALUE_UNQUOTED: LexerRealToken<"VALUE_UNQUOTED", "MAIN" | "BRACKET_MAIN">;
126
129
  };
127
130
  $categories: {
128
- ANY: TokenCategoryType<$C.ANY, (RealTokenType<$T.REGEX_START, MODE.NOT_REGEX> | RealTokenType<$T.REGEX_END, MODE.MAIN> | RealTokenType<$T.QUOTE_SINGLE, MODE.MAIN | MODE.NOT_SINGLE | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_SINGLE> | RealTokenType<$T.QUOTE_DOUBLE, MODE.MAIN | MODE.NOT_DOUBLE | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_DOUBLE> | RealTokenType<$T.QUOTE_BACKTICK, MODE.MAIN | MODE.NOT_BACKTICK | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_BACKTICK> | RealTokenType<$T.VALUE_NOT_SINGLE, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.VALUE_NOT_DOUBLE, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.VALUE_NOT_BACKTICK, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.VALUE_UNQUOTED, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.SYM_OR, undefined> | RealTokenType<$T.SYM_AND, undefined> | RealTokenType<$T.SYM_NOT, undefined> | RealTokenType<$T.WORD_OR, undefined> | RealTokenType<$T.WORD_AND, undefined> | RealTokenType<$T.WORD_NOT, undefined> | RealTokenType<$T.EXP_PROP_OP, undefined> | RealTokenType<$T.CUSTOM_PROP_OP, undefined> | RealTokenType<$T.PAREN_L, undefined> | RealTokenType<$T.PAREN_R, undefined> | RealTokenType<$T.BRACKET_L, MODE.BRACKET_MAIN> | RealTokenType<$T.BRACKET_R, MODE.MAIN>)[]>;
129
- VALUE: TokenCategoryType<$C.VALUE, (RealTokenType<$T.VALUE_NOT_SINGLE, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.VALUE_NOT_DOUBLE, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.VALUE_NOT_BACKTICK, MODE.MAIN | MODE.BRACKET_MAIN> | RealTokenType<$T.VALUE_UNQUOTED, MODE.MAIN | MODE.BRACKET_MAIN>)[]>;
130
- VALUE_FOR_SINGLE: TokenCategoryType<$C.VALUE_FOR_SINGLE, RealTokenType<$T.VALUE_NOT_SINGLE, MODE.MAIN | MODE.BRACKET_MAIN>[]>;
131
- VALUE_FOR_DOUBLE: TokenCategoryType<$C.VALUE_FOR_DOUBLE, RealTokenType<$T.VALUE_NOT_DOUBLE, MODE.MAIN | MODE.BRACKET_MAIN>[]>;
132
- VALUE_FOR_BACKTICK: TokenCategoryType<$C.VALUE_FOR_BACKTICK, RealTokenType<$T.VALUE_NOT_BACKTICK, MODE.MAIN | MODE.BRACKET_MAIN>[]>;
133
- REGEX_ANY: TokenCategoryType<$C.REGEX_ANY, (RealTokenType<$T.REGEX_START, MODE.NOT_REGEX> | RealTokenType<$T.REGEX_END, MODE.MAIN>)[]>;
134
- QUOTE_ANY: TokenCategoryType<$C.QUOTE_ANY, (RealTokenType<$T.QUOTE_SINGLE, MODE.MAIN | MODE.NOT_SINGLE | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_SINGLE> | RealTokenType<$T.QUOTE_DOUBLE, MODE.MAIN | MODE.NOT_DOUBLE | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_DOUBLE> | RealTokenType<$T.QUOTE_BACKTICK, MODE.MAIN | MODE.NOT_BACKTICK | MODE.BRACKET_MAIN | MODE.BRACKET_NOT_BACKTICK>)[]>;
135
- OPERATOR_OR: TokenCategoryType<$C.OPERATOR_OR, (RealTokenType<$T.SYM_OR, undefined> | RealTokenType<$T.WORD_OR, undefined>)[]>;
136
- OPERATOR_AND: TokenCategoryType<$C.OPERATOR_AND, (RealTokenType<$T.SYM_AND, undefined> | RealTokenType<$T.WORD_AND, undefined>)[]>;
137
- OPERATOR_NOT: TokenCategoryType<$C.OPERATOR_NOT, (RealTokenType<$T.SYM_NOT, undefined> | RealTokenType<$T.WORD_NOT, undefined>)[]>;
131
+ ANY: LexerCategoryToken<"ANY", (LexerRealToken<"REGEX_START", "NOT_REGEX"> | LexerRealToken<"REGEX_END", "MAIN"> | LexerRealToken<"QUOTE_SINGLE", "MAIN" | "NOT_SINGLE" | "BRACKET_MAIN" | "BRACKET_NOT_SINGLE"> | LexerRealToken<"QUOTE_DOUBLE", "MAIN" | "NOT_DOUBLE" | "BRACKET_MAIN" | "BRACKET_NOT_DOUBLE"> | LexerRealToken<"QUOTE_BACKTICK", "MAIN" | "NOT_BACKTICK" | "BRACKET_MAIN" | "BRACKET_NOT_BACKTICK"> | LexerRealToken<"VALUE_NOT_SINGLE", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"VALUE_NOT_DOUBLE", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"VALUE_NOT_BACKTICK", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"VALUE_UNQUOTED", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"SYM_OR", undefined> | LexerRealToken<"SYM_AND", undefined> | LexerRealToken<"SYM_NOT", undefined> | LexerRealToken<"WORD_OR", undefined> | LexerRealToken<"WORD_AND", undefined> | LexerRealToken<"WORD_NOT", undefined> | LexerRealToken<"EXP_PROP_OP", undefined> | LexerRealToken<"CUSTOM_PROP_OP", undefined> | LexerRealToken<"PAREN_L", undefined> | LexerRealToken<"PAREN_R", undefined> | LexerRealToken<"BRACKET_L", "BRACKET_MAIN"> | LexerRealToken<"BRACKET_R", "MAIN">)[]>;
132
+ VALUE: LexerCategoryToken<"VALUE", (LexerRealToken<"VALUE_NOT_SINGLE", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"VALUE_NOT_DOUBLE", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"VALUE_NOT_BACKTICK", "MAIN" | "BRACKET_MAIN"> | LexerRealToken<"VALUE_UNQUOTED", "MAIN" | "BRACKET_MAIN">)[]>;
133
+ VALUE_FOR_SINGLE: LexerCategoryToken<"VALUE_FOR_SINGLE", LexerRealToken<"VALUE_NOT_SINGLE", "MAIN" | "BRACKET_MAIN">[]>;
134
+ VALUE_FOR_DOUBLE: LexerCategoryToken<"VALUE_FOR_DOUBLE", LexerRealToken<"VALUE_NOT_DOUBLE", "MAIN" | "BRACKET_MAIN">[]>;
135
+ VALUE_FOR_BACKTICK: LexerCategoryToken<"VALUE_FOR_BACKTICK", LexerRealToken<"VALUE_NOT_BACKTICK", "MAIN" | "BRACKET_MAIN">[]>;
136
+ REGEX_ANY: LexerCategoryToken<"REGEX_ANY", (LexerRealToken<"REGEX_START", "NOT_REGEX"> | LexerRealToken<"REGEX_END", "MAIN">)[]>;
137
+ QUOTE_ANY: LexerCategoryToken<"QUOTE_ANY", (LexerRealToken<"QUOTE_SINGLE", "MAIN" | "NOT_SINGLE" | "BRACKET_MAIN" | "BRACKET_NOT_SINGLE"> | LexerRealToken<"QUOTE_DOUBLE", "MAIN" | "NOT_DOUBLE" | "BRACKET_MAIN" | "BRACKET_NOT_DOUBLE"> | LexerRealToken<"QUOTE_BACKTICK", "MAIN" | "NOT_BACKTICK" | "BRACKET_MAIN" | "BRACKET_NOT_BACKTICK">)[]>;
138
+ OPERATOR_OR: LexerCategoryToken<"OPERATOR_OR", (LexerRealToken<"SYM_OR", undefined> | LexerRealToken<"WORD_OR", undefined>)[]>;
139
+ OPERATOR_AND: LexerCategoryToken<"OPERATOR_AND", (LexerRealToken<"SYM_AND", undefined> | LexerRealToken<"WORD_AND", undefined>)[]>;
140
+ OPERATOR_NOT: LexerCategoryToken<"OPERATOR_NOT", (LexerRealToken<"SYM_NOT", undefined> | LexerRealToken<"WORD_NOT", undefined>)[]>;
138
141
  };
139
142
  };
140
143
  createModeBranches(): {
141
- [key in keyof typeof MODE]?: TokenType<$T>[];
144
+ [key in keyof typeof MODE]?: LexerToken<$TType>[];
142
145
  };
143
- tokenize(input: string): Token<$T>[];
146
+ tokenize(input: string): Token<$TType>[];
144
147
  }
145
148
  export {};
146
149
  //# sourceMappingURL=Lexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"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"}