@witchcraft/expressit 0.0.2 → 0.1.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 (124) hide show
  1. package/README.md +6 -4
  2. package/dist/Lexer.d.ts +146 -0
  3. package/dist/Lexer.d.ts.map +1 -0
  4. package/dist/Lexer.js +960 -0
  5. package/dist/Parser.d.ts +140 -0
  6. package/dist/Parser.d.ts.map +1 -0
  7. package/dist/Parser.js +668 -0
  8. package/dist/ast/builders/token.js +1 -1
  9. package/dist/ast/handlers.d.ts +3 -3
  10. package/dist/ast/handlers.d.ts.map +1 -1
  11. package/dist/ast/index.d.ts.map +1 -1
  12. package/dist/examples/index.d.ts +2 -0
  13. package/dist/examples/index.d.ts.map +1 -0
  14. package/dist/examples/index.js +4 -0
  15. package/dist/examples/shortcutContextParser.d.ts +2 -1
  16. package/dist/examples/shortcutContextParser.d.ts.map +1 -1
  17. package/dist/examples/shortcutContextParser.js +9 -5
  18. package/dist/helpers/errors.d.ts.map +1 -1
  19. package/dist/helpers/errors.js +3 -1
  20. package/dist/helpers/index.d.ts.map +1 -1
  21. package/dist/helpers/parser/checkParserOpts.d.ts.map +1 -1
  22. package/dist/helpers/parser/checkParserOpts.js +3 -2
  23. package/dist/helpers/parser/extractPosition.d.ts +2 -6
  24. package/dist/helpers/parser/extractPosition.d.ts.map +1 -1
  25. package/dist/helpers/parser/extractPosition.js +3 -3
  26. package/dist/helpers/parser/getUnclosedRightParenCount.d.ts +2 -3
  27. package/dist/helpers/parser/getUnclosedRightParenCount.d.ts.map +1 -1
  28. package/dist/helpers/parser/getUnclosedRightParenCount.js +4 -4
  29. package/dist/index.d.ts +1 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -5
  32. package/dist/methods/autocomplete.d.ts.map +1 -1
  33. package/dist/methods/autocomplete.js +1 -1
  34. package/dist/methods/autoreplace.js +1 -1
  35. package/dist/methods/autosuggest.js +1 -1
  36. package/dist/methods/evaluate.d.ts.map +1 -1
  37. package/dist/methods/evaluate.js +3 -1
  38. package/dist/methods/getIndexes.d.ts.map +1 -1
  39. package/dist/methods/getIndexes.js +2 -1
  40. package/dist/methods/normalize.d.ts +0 -2
  41. package/dist/methods/normalize.d.ts.map +1 -1
  42. package/dist/methods/normalize.js +2 -3
  43. package/dist/methods/validate.d.ts.map +1 -1
  44. package/dist/methods/validate.js +3 -1
  45. package/dist/package.json.js +44 -37
  46. package/dist/types/ast.d.ts +2 -8
  47. package/dist/types/ast.d.ts.map +1 -1
  48. package/dist/types/errors.d.ts +5 -17
  49. package/dist/types/errors.d.ts.map +1 -1
  50. package/dist/types/errors.js +0 -1
  51. package/dist/types/parser.d.ts +6 -2
  52. package/dist/types/parser.d.ts.map +1 -1
  53. package/dist/utils/extractTokens.js +1 -1
  54. package/dist/utils/getCursorInfo.d.ts +2 -2
  55. package/dist/utils/getCursorInfo.d.ts.map +1 -1
  56. package/dist/utils/getCursorInfo.js +3 -2
  57. package/dist/utils/getOppositeDelimiter.d.ts.map +1 -1
  58. package/dist/utils/getOppositeDelimiter.js +1 -1
  59. package/dist/utils/prettyAst.d.ts.map +1 -1
  60. package/dist/utils/prettyAst.js +15 -9
  61. package/package.json +42 -37
  62. package/src/Lexer.ts +704 -0
  63. package/src/Parser.ts +972 -0
  64. package/src/ast/builders/array.ts +2 -2
  65. package/src/ast/builders/condition.ts +1 -1
  66. package/src/ast/builders/expression.ts +1 -1
  67. package/src/ast/builders/group.ts +1 -1
  68. package/src/ast/builders/index.ts +1 -1
  69. package/src/ast/builders/pos.ts +1 -1
  70. package/src/ast/builders/token.ts +2 -2
  71. package/src/ast/builders/type.ts +1 -1
  72. package/src/ast/builders/variable.ts +1 -1
  73. package/src/ast/classes/ConditionNode.ts +1 -1
  74. package/src/ast/classes/ErrorToken.ts +1 -1
  75. package/src/ast/classes/ValidToken.ts +2 -2
  76. package/src/ast/classes/index.ts +1 -1
  77. package/src/ast/handlers.ts +6 -6
  78. package/src/ast/index.ts +2 -2
  79. package/src/examples/index.ts +3 -0
  80. package/src/examples/shortcutContextParser.ts +11 -6
  81. package/src/helpers/errors.ts +5 -3
  82. package/src/helpers/general/defaultConditionNormalizer.ts +1 -1
  83. package/src/helpers/general/index.ts +1 -1
  84. package/src/helpers/index.ts +3 -2
  85. package/src/helpers/parser/checkParserOpts.ts +13 -12
  86. package/src/helpers/parser/extractPosition.ts +4 -8
  87. package/src/helpers/parser/getUnclosedRightParenCount.ts +6 -6
  88. package/src/helpers/parser/index.ts +1 -1
  89. package/src/helpers/parser/parseParserOptions.ts +1 -1
  90. package/src/index.ts +2 -2
  91. package/src/methods/autocomplete.ts +5 -5
  92. package/src/methods/autoreplace.ts +2 -2
  93. package/src/methods/autosuggest.ts +3 -3
  94. package/src/methods/evaluate.ts +4 -2
  95. package/src/methods/getIndexes.ts +2 -1
  96. package/src/methods/normalize.ts +3 -4
  97. package/src/methods/validate.ts +4 -2
  98. package/src/types/ast.ts +2 -9
  99. package/src/types/errors.ts +12 -22
  100. package/src/types/parser.ts +6 -4
  101. package/src/utils/extractTokens.ts +1 -1
  102. package/src/utils/getCursorInfo.ts +6 -4
  103. package/src/utils/getOppositeDelimiter.ts +5 -2
  104. package/src/utils/prettyAst.ts +5 -3
  105. package/dist/examples/advancedValueComparer.d.ts +0 -3
  106. package/dist/examples/advancedValueComparer.d.ts.map +0 -1
  107. package/dist/examples/advancedValueComparer.js +0 -28
  108. package/dist/grammar/ParserBase.d.ts +0 -51
  109. package/dist/grammar/ParserBase.d.ts.map +0 -1
  110. package/dist/grammar/ParserBase.js +0 -516
  111. package/dist/grammar/createTokens.d.ts +0 -56
  112. package/dist/grammar/createTokens.d.ts.map +0 -1
  113. package/dist/grammar/createTokens.js +0 -843
  114. package/dist/grammar/index.d.ts +0 -3
  115. package/dist/grammar/index.d.ts.map +0 -1
  116. package/dist/grammar/index.js +0 -6
  117. package/dist/parser.d.ts +0 -58
  118. package/dist/parser.d.ts.map +0 -1
  119. package/dist/parser.js +0 -136
  120. package/src/examples/advancedValueComparer.ts +0 -31
  121. package/src/grammar/ParserBase.ts +0 -715
  122. package/src/grammar/createTokens.ts +0 -512
  123. package/src/grammar/index.ts +0 -4
  124. package/src/parser.ts +0 -183
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
 
2
2
  ### 🚧 WORK IN PROGRESS 🚧
3
3
 
4
- ![Docs](https://github.com/witchcraftjs/expressit/workflows/Docs/badge.svg)
5
- ![Build](https://github.com/witchcraftjs/expressit/workflows/Build/badge.svg)
6
- [![Release](https://github.com/witchcraftjs/expressit/workflows/Release/badge.svg)](https://www.npmjs.com/@witchcraft/expressit)
4
+ ![Docs](https://github.com/witchcraftjs/expressit/actions/workflows/docs.yml/badge.svg)
5
+ ![Build](https://github.com/witchcraftjs/expressit/actions/workflows/build.yml/badge.svg)
6
+ [![Release](https://github.com/witchcraftjs/expressit/actions/workflows/release.yml/badge.svg)](https://www.npmjs.com/@witchcraft/expressit)
7
7
 
8
8
  Expressit is a blazing fast, customizable, error-tolerant expression parser that creates safe to eval expressions + a few other goodies.
9
9
 
@@ -41,7 +41,9 @@ pnpm install @witchcraft/expressit
41
41
  # Usage
42
42
 
43
43
  ```ts
44
- import { Parser, ErrorToken } from "@witchcraft/expressit"
44
+ // while you can import from "@witchcraft/expressit", if using something like vite, it's recommended you do not use barrel imports.
45
+ import { Parser } from "@witchcraft/expressit/Parser.js"
46
+ import { ErrorToken } from "@witchcraft/expressit/classes/ErrorToken.js"
45
47
 
46
48
  const parser = new Parser({/* opts */})
47
49
  const context = {
@@ -0,0 +1,146 @@
1
+ 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
+ }
53
+ type SymbolInfo = {
54
+ symOrs: string[];
55
+ symAnds: string[];
56
+ symNots: string[];
57
+ wordOrs: string[];
58
+ wordAnds: string[];
59
+ wordNots: string[];
60
+ all: string[];
61
+ expandedSepAlsoCustom: boolean;
62
+ customOpAlsoNegation: boolean;
63
+ };
64
+ type TokenMatchFunc = (c: string, input: string, start: number, mode: string) => string | boolean;
65
+ interface BaseTokenType<T extends $T | $C> {
66
+ type: T;
67
+ skip?: boolean;
68
+ }
69
+ export interface RealTokenType<T extends $T = $T, TPush extends string | undefined = undefined> extends BaseTokenType<T> {
70
+ matches: TokenMatchFunc;
71
+ push?: TPush | ((mode: string, tokens: Token[]) => TPush);
72
+ longerAlt?: $T;
73
+ skip?: boolean;
74
+ }
75
+ export interface TokenCategoryType<TC extends $C, TTokens extends RealTokenType<$T, any>[] = RealTokenType<$T, any>[]> extends BaseTokenType<TC> {
76
+ isCategory: true;
77
+ entries: Partial<{
78
+ [key in TTokens[number]["type"]]: TTokens[number];
79
+ }>;
80
+ }
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> {
83
+ type: T;
84
+ value: string;
85
+ startOffset: number;
86
+ endOffset: number;
87
+ isError?: boolean;
88
+ }
89
+ export declare class Lexer {
90
+ symbols: SymbolInfo;
91
+ $: {
92
+ [key in $T]: RealTokenType<key, any>;
93
+ };
94
+ $categories: ReturnType<Lexer["createTokens"]>["$categories"];
95
+ branches: {
96
+ [key in keyof typeof MODE]?: TokenType<$T>[];
97
+ };
98
+ opts: FullParserOptions<{}>;
99
+ constructor(opts?: Partial<FullParserOptions<{}>>);
100
+ calculateSymbolInfo(): SymbolInfo;
101
+ createTokens(): {
102
+ $: {
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>;
126
+ };
127
+ $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>)[]>;
138
+ };
139
+ };
140
+ createModeBranches(): {
141
+ [key in keyof typeof MODE]?: TokenType<$T>[];
142
+ };
143
+ tokenize(input: string): Token<$T>[];
144
+ }
145
+ export {};
146
+ //# sourceMappingURL=Lexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"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"}