@witchcraft/expressit 0.0.2

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 (307) hide show
  1. package/README.md +86 -0
  2. package/dist/ast/builders/array.d.ts +8 -0
  3. package/dist/ast/builders/array.d.ts.map +1 -0
  4. package/dist/ast/builders/array.js +31 -0
  5. package/dist/ast/builders/condition.d.ts +20 -0
  6. package/dist/ast/builders/condition.d.ts.map +1 -0
  7. package/dist/ast/builders/condition.js +28 -0
  8. package/dist/ast/builders/delim.d.ts +11 -0
  9. package/dist/ast/builders/delim.d.ts.map +1 -0
  10. package/dist/ast/builders/delim.js +20 -0
  11. package/dist/ast/builders/error.d.ts +9 -0
  12. package/dist/ast/builders/error.d.ts.map +1 -0
  13. package/dist/ast/builders/error.js +16 -0
  14. package/dist/ast/builders/expression.d.ts +12 -0
  15. package/dist/ast/builders/expression.d.ts.map +1 -0
  16. package/dist/ast/builders/expression.js +31 -0
  17. package/dist/ast/builders/group.d.ts +20 -0
  18. package/dist/ast/builders/group.d.ts.map +1 -0
  19. package/dist/ast/builders/group.js +47 -0
  20. package/dist/ast/builders/index.d.ts +12 -0
  21. package/dist/ast/builders/index.d.ts.map +1 -0
  22. package/dist/ast/builders/index.js +24 -0
  23. package/dist/ast/builders/isFullPos.d.ts +6 -0
  24. package/dist/ast/builders/isFullPos.d.ts.map +1 -0
  25. package/dist/ast/builders/isFullPos.js +6 -0
  26. package/dist/ast/builders/pos.d.ts +21 -0
  27. package/dist/ast/builders/pos.d.ts.map +1 -0
  28. package/dist/ast/builders/pos.js +28 -0
  29. package/dist/ast/builders/token.d.ts +12 -0
  30. package/dist/ast/builders/token.d.ts.map +1 -0
  31. package/dist/ast/builders/token.js +26 -0
  32. package/dist/ast/builders/type.d.ts +6 -0
  33. package/dist/ast/builders/type.d.ts.map +1 -0
  34. package/dist/ast/builders/type.js +37 -0
  35. package/dist/ast/builders/variable.d.ts +17 -0
  36. package/dist/ast/builders/variable.d.ts.map +1 -0
  37. package/dist/ast/builders/variable.js +62 -0
  38. package/dist/ast/classes/ArrayNode.d.ts +18 -0
  39. package/dist/ast/classes/ArrayNode.d.ts.map +1 -0
  40. package/dist/ast/classes/ArrayNode.js +55 -0
  41. package/dist/ast/classes/Condition.d.ts +13 -0
  42. package/dist/ast/classes/Condition.d.ts.map +1 -0
  43. package/dist/ast/classes/Condition.js +21 -0
  44. package/dist/ast/classes/ConditionNode.d.ts +73 -0
  45. package/dist/ast/classes/ConditionNode.d.ts.map +1 -0
  46. package/dist/ast/classes/ConditionNode.js +101 -0
  47. package/dist/ast/classes/ErrorToken.d.ts +27 -0
  48. package/dist/ast/classes/ErrorToken.d.ts.map +1 -0
  49. package/dist/ast/classes/ErrorToken.js +47 -0
  50. package/dist/ast/classes/Expression.d.ts +13 -0
  51. package/dist/ast/classes/Expression.d.ts.map +1 -0
  52. package/dist/ast/classes/Expression.js +19 -0
  53. package/dist/ast/classes/ExpressionNode.d.ts +21 -0
  54. package/dist/ast/classes/ExpressionNode.d.ts.map +1 -0
  55. package/dist/ast/classes/ExpressionNode.js +57 -0
  56. package/dist/ast/classes/GroupNode.d.ts +64 -0
  57. package/dist/ast/classes/GroupNode.d.ts.map +1 -0
  58. package/dist/ast/classes/GroupNode.js +69 -0
  59. package/dist/ast/classes/Node.d.ts +22 -0
  60. package/dist/ast/classes/Node.d.ts.map +1 -0
  61. package/dist/ast/classes/Node.js +28 -0
  62. package/dist/ast/classes/Token.d.ts +27 -0
  63. package/dist/ast/classes/Token.d.ts.map +1 -0
  64. package/dist/ast/classes/Token.js +28 -0
  65. package/dist/ast/classes/ValidToken.d.ts +26 -0
  66. package/dist/ast/classes/ValidToken.d.ts.map +1 -0
  67. package/dist/ast/classes/ValidToken.js +49 -0
  68. package/dist/ast/classes/VariableNode.d.ts +33 -0
  69. package/dist/ast/classes/VariableNode.d.ts.map +1 -0
  70. package/dist/ast/classes/VariableNode.js +58 -0
  71. package/dist/ast/classes/index.d.ts +12 -0
  72. package/dist/ast/classes/index.d.ts.map +1 -0
  73. package/dist/ast/classes/index.js +24 -0
  74. package/dist/ast/handlers.d.ts +42 -0
  75. package/dist/ast/handlers.d.ts.map +1 -0
  76. package/dist/ast/handlers.js +150 -0
  77. package/dist/ast/index.d.ts +4 -0
  78. package/dist/ast/index.d.ts.map +1 -0
  79. package/dist/ast/index.js +8 -0
  80. package/dist/examples/advancedValueComparer.d.ts +3 -0
  81. package/dist/examples/advancedValueComparer.d.ts.map +1 -0
  82. package/dist/examples/advancedValueComparer.js +28 -0
  83. package/dist/examples/shortcutContextParser.d.ts +22 -0
  84. package/dist/examples/shortcutContextParser.d.ts.map +1 -0
  85. package/dist/examples/shortcutContextParser.js +126 -0
  86. package/dist/global.d.js +1 -0
  87. package/dist/grammar/ParserBase.d.ts +51 -0
  88. package/dist/grammar/ParserBase.d.ts.map +1 -0
  89. package/dist/grammar/ParserBase.js +516 -0
  90. package/dist/grammar/createTokens.d.ts +56 -0
  91. package/dist/grammar/createTokens.d.ts.map +1 -0
  92. package/dist/grammar/createTokens.js +843 -0
  93. package/dist/grammar/index.d.ts +3 -0
  94. package/dist/grammar/index.d.ts.map +1 -0
  95. package/dist/grammar/index.js +6 -0
  96. package/dist/helpers/errors.d.ts +9 -0
  97. package/dist/helpers/errors.d.ts.map +1 -0
  98. package/dist/helpers/errors.js +41 -0
  99. package/dist/helpers/general/applyBoolean.d.ts +3 -0
  100. package/dist/helpers/general/applyBoolean.d.ts.map +1 -0
  101. package/dist/helpers/general/applyBoolean.js +17 -0
  102. package/dist/helpers/general/applyPrefix.d.ts +4 -0
  103. package/dist/helpers/general/applyPrefix.d.ts.map +1 -0
  104. package/dist/helpers/general/applyPrefix.js +9 -0
  105. package/dist/helpers/general/defaultConditionNormalizer.d.ts +3 -0
  106. package/dist/helpers/general/defaultConditionNormalizer.d.ts.map +1 -0
  107. package/dist/helpers/general/defaultConditionNormalizer.js +6 -0
  108. package/dist/helpers/general/defaultKeyParser.d.ts +3 -0
  109. package/dist/helpers/general/defaultKeyParser.d.ts.map +1 -0
  110. package/dist/helpers/general/defaultKeyParser.js +8 -0
  111. package/dist/helpers/general/defaultPrefixApplier.d.ts +3 -0
  112. package/dist/helpers/general/defaultPrefixApplier.d.ts.map +1 -0
  113. package/dist/helpers/general/defaultPrefixApplier.js +6 -0
  114. package/dist/helpers/general/defaultValueComparer.d.ts +3 -0
  115. package/dist/helpers/general/defaultValueComparer.d.ts.map +1 -0
  116. package/dist/helpers/general/defaultValueComparer.js +6 -0
  117. package/dist/helpers/general/index.d.ts +7 -0
  118. package/dist/helpers/general/index.d.ts.map +1 -0
  119. package/dist/helpers/general/index.js +14 -0
  120. package/dist/helpers/index.d.ts +4 -0
  121. package/dist/helpers/index.d.ts.map +1 -0
  122. package/dist/helpers/index.js +8 -0
  123. package/dist/helpers/parser/assignParents.d.ts +4 -0
  124. package/dist/helpers/parser/assignParents.d.ts.map +1 -0
  125. package/dist/helpers/parser/assignParents.js +71 -0
  126. package/dist/helpers/parser/checkParserOpts.d.ts +3 -0
  127. package/dist/helpers/parser/checkParserOpts.d.ts.map +1 -0
  128. package/dist/helpers/parser/checkParserOpts.js +126 -0
  129. package/dist/helpers/parser/extractPosition.d.ts +9 -0
  130. package/dist/helpers/parser/extractPosition.d.ts.map +1 -0
  131. package/dist/helpers/parser/extractPosition.js +9 -0
  132. package/dist/helpers/parser/getUnclosedRightParenCount.d.ts +5 -0
  133. package/dist/helpers/parser/getUnclosedRightParenCount.d.ts.map +1 -0
  134. package/dist/helpers/parser/getUnclosedRightParenCount.js +20 -0
  135. package/dist/helpers/parser/index.d.ts +9 -0
  136. package/dist/helpers/parser/index.d.ts.map +1 -0
  137. package/dist/helpers/parser/index.js +18 -0
  138. package/dist/helpers/parser/parseParserOptions.d.ts +4 -0
  139. package/dist/helpers/parser/parseParserOptions.d.ts.map +1 -0
  140. package/dist/helpers/parser/parseParserOptions.js +45 -0
  141. package/dist/helpers/parser/seal.d.ts +8 -0
  142. package/dist/helpers/parser/seal.d.ts.map +1 -0
  143. package/dist/helpers/parser/seal.js +10 -0
  144. package/dist/helpers/parser/setParent.d.ts +6 -0
  145. package/dist/helpers/parser/setParent.d.ts.map +1 -0
  146. package/dist/helpers/parser/setParent.js +4 -0
  147. package/dist/helpers/parser/unescape.d.ts +3 -0
  148. package/dist/helpers/parser/unescape.d.ts.map +1 -0
  149. package/dist/helpers/parser/unescape.js +6 -0
  150. package/dist/index.d.ts +6 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +17 -0
  153. package/dist/methods/autocomplete.d.ts +18 -0
  154. package/dist/methods/autocomplete.d.ts.map +1 -0
  155. package/dist/methods/autocomplete.js +109 -0
  156. package/dist/methods/autoreplace.d.ts +13 -0
  157. package/dist/methods/autoreplace.d.ts.map +1 -0
  158. package/dist/methods/autoreplace.js +36 -0
  159. package/dist/methods/autosuggest.d.ts +28 -0
  160. package/dist/methods/autosuggest.d.ts.map +1 -0
  161. package/dist/methods/autosuggest.js +371 -0
  162. package/dist/methods/evaluate.d.ts +11 -0
  163. package/dist/methods/evaluate.d.ts.map +1 -0
  164. package/dist/methods/evaluate.js +30 -0
  165. package/dist/methods/getBestIndex.d.ts +19 -0
  166. package/dist/methods/getBestIndex.d.ts.map +1 -0
  167. package/dist/methods/getBestIndex.js +53 -0
  168. package/dist/methods/getIndexes.d.ts +17 -0
  169. package/dist/methods/getIndexes.d.ts.map +1 -0
  170. package/dist/methods/getIndexes.js +97 -0
  171. package/dist/methods/index.d.ts +9 -0
  172. package/dist/methods/index.d.ts.map +1 -0
  173. package/dist/methods/index.js +18 -0
  174. package/dist/methods/normalize.d.ts +12 -0
  175. package/dist/methods/normalize.d.ts.map +1 -0
  176. package/dist/methods/normalize.js +99 -0
  177. package/dist/methods/validate.d.ts +11 -0
  178. package/dist/methods/validate.d.ts.map +1 -0
  179. package/dist/methods/validate.js +111 -0
  180. package/dist/package.js +7 -0
  181. package/dist/package.json.js +193 -0
  182. package/dist/parser.d.ts +58 -0
  183. package/dist/parser.d.ts.map +1 -0
  184. package/dist/parser.js +136 -0
  185. package/dist/types/ast.d.ts +70 -0
  186. package/dist/types/ast.d.ts.map +1 -0
  187. package/dist/types/ast.js +29 -0
  188. package/dist/types/autocomplete.d.ts +143 -0
  189. package/dist/types/autocomplete.d.ts.map +1 -0
  190. package/dist/types/autocomplete.js +24 -0
  191. package/dist/types/errors.d.ts +34 -0
  192. package/dist/types/errors.d.ts.map +1 -0
  193. package/dist/types/errors.js +10 -0
  194. package/dist/types/index.d.ts +5 -0
  195. package/dist/types/index.d.ts.map +1 -0
  196. package/dist/types/index.js +9 -0
  197. package/dist/types/parser.d.ts +451 -0
  198. package/dist/types/parser.d.ts.map +1 -0
  199. package/dist/types/parser.js +1 -0
  200. package/dist/utils/extractTokens.d.ts +8 -0
  201. package/dist/utils/extractTokens.d.ts.map +1 -0
  202. package/dist/utils/extractTokens.js +50 -0
  203. package/dist/utils/getCursorInfo.d.ts +7 -0
  204. package/dist/utils/getCursorInfo.d.ts.map +1 -0
  205. package/dist/utils/getCursorInfo.js +86 -0
  206. package/dist/utils/getOppositeDelimiter.d.ts +6 -0
  207. package/dist/utils/getOppositeDelimiter.d.ts.map +1 -0
  208. package/dist/utils/getOppositeDelimiter.js +35 -0
  209. package/dist/utils/getSurroundingErrors.d.ts +25 -0
  210. package/dist/utils/getSurroundingErrors.d.ts.map +1 -0
  211. package/dist/utils/getSurroundingErrors.js +37 -0
  212. package/dist/utils/index.d.ts +10 -0
  213. package/dist/utils/index.d.ts.map +1 -0
  214. package/dist/utils/index.js +20 -0
  215. package/dist/utils/isBracket.d.ts +3 -0
  216. package/dist/utils/isBracket.d.ts.map +1 -0
  217. package/dist/utils/isBracket.js +7 -0
  218. package/dist/utils/isDelimiter.d.ts +6 -0
  219. package/dist/utils/isDelimiter.d.ts.map +1 -0
  220. package/dist/utils/isDelimiter.js +17 -0
  221. package/dist/utils/isParen.d.ts +3 -0
  222. package/dist/utils/isParen.d.ts.map +1 -0
  223. package/dist/utils/isParen.js +7 -0
  224. package/dist/utils/isQuote.d.ts +4 -0
  225. package/dist/utils/isQuote.d.ts.map +1 -0
  226. package/dist/utils/isQuote.js +7 -0
  227. package/dist/utils/prettyAst.d.ts +35 -0
  228. package/dist/utils/prettyAst.d.ts.map +1 -0
  229. package/dist/utils/prettyAst.js +112 -0
  230. package/package.json +152 -0
  231. package/src/ast/builders/array.ts +45 -0
  232. package/src/ast/builders/condition.ts +56 -0
  233. package/src/ast/builders/delim.ts +39 -0
  234. package/src/ast/builders/error.ts +22 -0
  235. package/src/ast/builders/expression.ts +66 -0
  236. package/src/ast/builders/group.ts +79 -0
  237. package/src/ast/builders/index.ts +13 -0
  238. package/src/ast/builders/isFullPos.ts +10 -0
  239. package/src/ast/builders/pos.ts +57 -0
  240. package/src/ast/builders/token.ts +46 -0
  241. package/src/ast/builders/type.ts +32 -0
  242. package/src/ast/builders/variable.ts +89 -0
  243. package/src/ast/classes/ArrayNode.ts +46 -0
  244. package/src/ast/classes/Condition.ts +22 -0
  245. package/src/ast/classes/ConditionNode.ts +141 -0
  246. package/src/ast/classes/ErrorToken.ts +49 -0
  247. package/src/ast/classes/Expression.ts +26 -0
  248. package/src/ast/classes/ExpressionNode.ts +62 -0
  249. package/src/ast/classes/GroupNode.ts +127 -0
  250. package/src/ast/classes/Node.ts +47 -0
  251. package/src/ast/classes/Token.ts +59 -0
  252. package/src/ast/classes/ValidToken.ts +56 -0
  253. package/src/ast/classes/VariableNode.ts +67 -0
  254. package/src/ast/classes/index.ts +13 -0
  255. package/src/ast/handlers.ts +190 -0
  256. package/src/ast/index.ts +5 -0
  257. package/src/examples/advancedValueComparer.ts +31 -0
  258. package/src/examples/shortcutContextParser.ts +140 -0
  259. package/src/global.d.ts +4 -0
  260. package/src/grammar/ParserBase.ts +715 -0
  261. package/src/grammar/createTokens.ts +512 -0
  262. package/src/grammar/index.ts +4 -0
  263. package/src/helpers/errors.ts +45 -0
  264. package/src/helpers/general/applyBoolean.ts +9 -0
  265. package/src/helpers/general/applyPrefix.ts +7 -0
  266. package/src/helpers/general/defaultConditionNormalizer.ts +9 -0
  267. package/src/helpers/general/defaultKeyParser.ts +8 -0
  268. package/src/helpers/general/defaultPrefixApplier.ts +7 -0
  269. package/src/helpers/general/defaultValueComparer.ts +7 -0
  270. package/src/helpers/general/index.ts +8 -0
  271. package/src/helpers/index.ts +5 -0
  272. package/src/helpers/parser/assignParents.ts +51 -0
  273. package/src/helpers/parser/checkParserOpts.ts +143 -0
  274. package/src/helpers/parser/extractPosition.ts +15 -0
  275. package/src/helpers/parser/getUnclosedRightParenCount.ts +22 -0
  276. package/src/helpers/parser/index.ts +10 -0
  277. package/src/helpers/parser/parseParserOptions.ts +54 -0
  278. package/src/helpers/parser/seal.ts +14 -0
  279. package/src/helpers/parser/setParent.ts +5 -0
  280. package/src/helpers/parser/unescape.ts +4 -0
  281. package/src/index.ts +7 -0
  282. package/src/methods/autocomplete.ts +128 -0
  283. package/src/methods/autoreplace.ts +46 -0
  284. package/src/methods/autosuggest.ts +543 -0
  285. package/src/methods/evaluate.ts +37 -0
  286. package/src/methods/getBestIndex.ts +53 -0
  287. package/src/methods/getIndexes.ts +99 -0
  288. package/src/methods/index.ts +10 -0
  289. package/src/methods/normalize.ts +138 -0
  290. package/src/methods/validate.ts +141 -0
  291. package/src/package.js +11 -0
  292. package/src/parser.ts +183 -0
  293. package/src/types/ast.ts +148 -0
  294. package/src/types/autocomplete.ts +152 -0
  295. package/src/types/errors.ts +40 -0
  296. package/src/types/index.ts +6 -0
  297. package/src/types/parser.ts +479 -0
  298. package/src/utils/extractTokens.ts +67 -0
  299. package/src/utils/getCursorInfo.ts +106 -0
  300. package/src/utils/getOppositeDelimiter.ts +36 -0
  301. package/src/utils/getSurroundingErrors.ts +57 -0
  302. package/src/utils/index.ts +11 -0
  303. package/src/utils/isBracket.ts +6 -0
  304. package/src/utils/isDelimiter.ts +18 -0
  305. package/src/utils/isParen.ts +6 -0
  306. package/src/utils/isQuote.ts +6 -0
  307. package/src/utils/prettyAst.ts +152 -0
@@ -0,0 +1,69 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ var __accessCheck = (obj, member, msg) => {
8
+ if (!member.has(obj))
9
+ throw TypeError("Cannot " + msg);
10
+ };
11
+ var __privateGet = (obj, member, getter) => {
12
+ __accessCheck(obj, member, "read from private field");
13
+ return getter ? getter.call(obj) : member.get(obj);
14
+ };
15
+ var __privateAdd = (obj, member, value) => {
16
+ if (member.has(obj))
17
+ throw TypeError("Cannot add the same private member more than once");
18
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
19
+ };
20
+ var __privateSet = (obj, member, value, setter) => {
21
+ __accessCheck(obj, member, "write to private field");
22
+ setter ? setter.call(obj, value) : member.set(obj, value);
23
+ return value;
24
+ };
25
+ var _parent, _setParent;
26
+ import { Node } from "./Node.js";
27
+ import { ValidToken } from "./ValidToken.js";
28
+ import { AST_TYPE } from "../../types/ast.js";
29
+ class GroupNode extends Node {
30
+ constructor({ prefix, expression, paren, start, end }) {
31
+ super(AST_TYPE.GROUP, start, end);
32
+ /**
33
+ * If the condition is negated this will contain a "not" **token**, @see ValidToken .
34
+ *
35
+ * If `prefixableGroups` is enabled and the group is prefixed by a **condition**, this will be an @see ConditionNode.
36
+ *
37
+ * **Careful:** `!(a)` here this would not be a **condition** since it's just a regular negation.
38
+ *
39
+ * See examples at @see GroupNode .
40
+ */
41
+ __publicField(this, "prefix");
42
+ __publicField(this, "expression");
43
+ /**
44
+ * The parenthesis tokens, @see ValidToken . These will always be defined (although not necessarily with valid tokens).
45
+ */
46
+ __publicField(this, "paren");
47
+ __privateAdd(this, _parent, void 0);
48
+ __privateAdd(this, _setParent, false);
49
+ this.prefix = prefix;
50
+ this.expression = expression;
51
+ this.paren = paren;
52
+ this.valid = (this.prefix === void 0 || this.prefix instanceof ValidToken || this.prefix instanceof Node && this.prefix.valid) && this.expression instanceof Node && this.expression.valid && (this.paren === void 0 || this.paren.left instanceof ValidToken && this.paren.right instanceof ValidToken);
53
+ }
54
+ get parent() {
55
+ return __privateGet(this, _parent);
56
+ }
57
+ set parent(value) {
58
+ if (__privateGet(this, _setParent)) {
59
+ throw new Error("parent property is readonly");
60
+ }
61
+ __privateSet(this, _parent, value);
62
+ __privateSet(this, _setParent, true);
63
+ }
64
+ }
65
+ _parent = new WeakMap();
66
+ _setParent = new WeakMap();
67
+ export {
68
+ GroupNode
69
+ };
@@ -0,0 +1,22 @@
1
+ import type { ArrayNode } from "./ArrayNode.js";
2
+ import type { ConditionNode } from "./ConditionNode.js";
3
+ import type { ExpressionNode } from "./ExpressionNode.js";
4
+ import type { GroupNode } from "./GroupNode.js";
5
+ import type { AST_TYPE } from "../../types/ast.js";
6
+ /**
7
+ * The base AST node class all node types extend from. Can be used to check if an object is an ast node.
8
+ * ```ts
9
+ * if (group.prefix instanceof Node) {
10
+ * //...
11
+ * }
12
+ * ```
13
+ */
14
+ export declare class Node<TType extends AST_TYPE = AST_TYPE, TValid extends boolean = boolean> {
15
+ readonly type: TType;
16
+ readonly start: number;
17
+ readonly end: number;
18
+ readonly valid: TValid;
19
+ get parent(): ConditionNode | GroupNode | ExpressionNode | ArrayNode | undefined;
20
+ constructor(type: TType, start: number, end: number);
21
+ }
22
+ //# sourceMappingURL=Node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../../src/ast/classes/Node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;;;;;;GAOG;AACH,qBAAa,IAAI,CAChB,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjC,MAAM,SAAS,OAAO,GAAG,OAAO;IAEhC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IAEpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAA;IAEvB,IAAI,MAAM,IACV,aAAa,GACb,SAAS,GACT,cAAc,GACd,SAAS,GACT,SAAS,CAER;gBAEW,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAQnD"}
@@ -0,0 +1,28 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import { BooleanParserLibraryError } from "../../helpers/errors.js";
8
+ import { ERROR_CODES } from "../../types/errors.js";
9
+ class Node {
10
+ constructor(type, start, end) {
11
+ __publicField(this, "type");
12
+ __publicField(this, "start");
13
+ __publicField(this, "end");
14
+ __publicField(this, "valid");
15
+ this.type = type;
16
+ if (start === void 0 || end === void 0) {
17
+ throw new BooleanParserLibraryError(ERROR_CODES.PARSER_POSITION_ERROR, { start, end });
18
+ }
19
+ this.start = start;
20
+ this.end = end;
21
+ }
22
+ get parent() {
23
+ return void 0;
24
+ }
25
+ }
26
+ export {
27
+ Node
28
+ };
@@ -0,0 +1,27 @@
1
+ import type { ArrayNode } from "./ArrayNode.js";
2
+ import type { ConditionNode } from "./ConditionNode.js";
3
+ import type { ExpressionNode } from "./ExpressionNode.js";
4
+ import type { GroupNode } from "./GroupNode.js";
5
+ import type { VariableNode } from "./VariableNode.js";
6
+ import type { TOKEN_TYPE } from "../../types/ast.js";
7
+ /**
8
+ * The base class from which @see ValidToken and @see ErrorToken extend.
9
+ *
10
+ * Mostly for internal use, and I would suggest using @see AnyToken instead of this for typing things, but can be used to check whether an object is a token:
11
+ * ```ts
12
+ * if (group.prefix instanceof Token) {
13
+ * //...
14
+ * }
15
+ * ```
16
+ * Only really takes care of setting the start/end position.
17
+ */
18
+ export declare class Token<TValid extends boolean = boolean, TType extends TValid extends true ? TOKEN_TYPE : never = TValid extends true ? TOKEN_TYPE : never, TValue extends TValid extends true ? string : never = TValid extends true ? string : never, TExpected extends TValid extends false ? TOKEN_TYPE[] : never = TValid extends false ? TOKEN_TYPE[] : never> {
19
+ readonly type: TType;
20
+ readonly value: TValue;
21
+ readonly expected: TExpected;
22
+ readonly start: number;
23
+ readonly end: number;
24
+ get parent(): VariableNode | GroupNode | ExpressionNode | ArrayNode | ConditionNode;
25
+ constructor(start: number, end: number);
26
+ }
27
+ //# sourceMappingURL=Token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../../src/ast/classes/Token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGpD;;;;;;;;;;GAUG;AACH,qBAAa,KAAK,CACjB,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,KAAK,SACJ,MAAM,SAAS,IAAI,GAAG,UAAU,GAAG,KAAK,GACxC,MAAM,SAAS,IAAI,GAAG,UAAU,GAAG,KAAK,EACzC,MAAM,SACL,MAAM,SAAS,IAAI,GAAG,MAAM,GAAG,KAAK,GACpC,MAAM,SAAS,IAAI,GAAG,MAAM,GAAG,KAAK,EACrC,SAAS,SACR,MAAM,SAAS,KAAK,GAAG,UAAU,EAAE,GAAG,KAAK,GAC3C,MAAM,SAAS,KAAK,GAAG,UAAU,EAAE,GAAG,KAAK;IAE5C,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAA;IAErB,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAA;IAEvB,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAA;IAE7B,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAA;IAEvB,QAAQ,CAAC,GAAG,EAAG,MAAM,CAAA;IAErB,IAAI,MAAM,IAAI,YAAY,GAC1B,SAAS,GACT,cAAc,GACd,SAAS,GACT,aAAa,CAEZ;gBAEW,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAOtC"}
@@ -0,0 +1,28 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import { BooleanParserLibraryError } from "../../helpers/errors.js";
8
+ import { ERROR_CODES } from "../../types/errors.js";
9
+ class Token {
10
+ constructor(start, end) {
11
+ __publicField(this, "type");
12
+ __publicField(this, "value");
13
+ __publicField(this, "expected");
14
+ __publicField(this, "start");
15
+ __publicField(this, "end");
16
+ if (start === void 0 || end === void 0) {
17
+ throw new BooleanParserLibraryError(ERROR_CODES.PARSER_POSITION_ERROR, { start, end });
18
+ }
19
+ this.start = start;
20
+ this.end = end;
21
+ }
22
+ get parent() {
23
+ return void 0;
24
+ }
25
+ }
26
+ export {
27
+ Token
28
+ };
@@ -0,0 +1,26 @@
1
+ import type { ArrayNode } from "./ArrayNode.js";
2
+ import type { ConditionNode } from "./ConditionNode.js";
3
+ import type { ExpressionNode } from "./ExpressionNode.js";
4
+ import type { GroupNode } from "./GroupNode.js";
5
+ import { Token } from "./Token.js";
6
+ import type { VariableNode } from "./VariableNode.js";
7
+ import type { TOKEN_TYPE } from "../../types/ast.js";
8
+ /**
9
+ * The class for all *valid* tokens.
10
+ *
11
+ * Valid tokens always have a value, even if it might be an empty string.
12
+ */
13
+ export declare class ValidToken<TType extends TOKEN_TYPE = TOKEN_TYPE> extends Token<true, TType, string, never> {
14
+ #private;
15
+ readonly type: TType;
16
+ readonly value: string;
17
+ get parent(): VariableNode | GroupNode | ExpressionNode | ConditionNode | ArrayNode;
18
+ set parent(value: VariableNode | GroupNode | ExpressionNode | ConditionNode | ArrayNode);
19
+ constructor({ type, value, start, end }: {
20
+ type: TType;
21
+ value: string;
22
+ start: number;
23
+ end: number;
24
+ });
25
+ }
26
+ //# sourceMappingURL=ValidToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidToken.d.ts","sourceRoot":"","sources":["../../../src/ast/classes/ValidToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGpD;;;;GAIG;AACH,qBAAa,UAAU,CACtB,KAAK,SAAS,UAAU,GAAG,UAAU,CACpC,SAAQ,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;;IAC1C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IAEpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAItB,IAAI,MAAM,IACR,YAAY,GACZ,SAAS,GACT,cAAc,GACd,aAAa,GACb,SAAS,CAEV;IAED,IAAI,MAAM,CAAC,KAAK,EACd,YAAY,GACZ,SAAS,GACT,cAAc,GACd,aAAa,GACb,SAAS,EAIV;gBAEW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACxC,IAAI,EAAE,KAAK,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACX;CAMD"}
@@ -0,0 +1,49 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ var __accessCheck = (obj, member, msg) => {
8
+ if (!member.has(obj))
9
+ throw TypeError("Cannot " + msg);
10
+ };
11
+ var __privateGet = (obj, member, getter) => {
12
+ __accessCheck(obj, member, "read from private field");
13
+ return getter ? getter.call(obj) : member.get(obj);
14
+ };
15
+ var __privateAdd = (obj, member, value) => {
16
+ if (member.has(obj))
17
+ throw TypeError("Cannot add the same private member more than once");
18
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
19
+ };
20
+ var __privateSet = (obj, member, value, setter) => {
21
+ __accessCheck(obj, member, "write to private field");
22
+ setter ? setter.call(obj, value) : member.set(obj, value);
23
+ return value;
24
+ };
25
+ var _parent;
26
+ import { Token } from "./Token.js";
27
+ class ValidToken extends Token {
28
+ constructor({ type, value, start, end }) {
29
+ super(start, end);
30
+ __publicField(this, "type");
31
+ __publicField(this, "value");
32
+ __privateAdd(this, _parent, void 0);
33
+ this.type = type;
34
+ this.value = value;
35
+ }
36
+ get parent() {
37
+ return __privateGet(this, _parent);
38
+ }
39
+ set parent(value) {
40
+ if (__privateGet(this, _parent)) {
41
+ throw new Error("parent property is readonly");
42
+ }
43
+ __privateSet(this, _parent, value);
44
+ }
45
+ }
46
+ _parent = new WeakMap();
47
+ export {
48
+ ValidToken
49
+ };
@@ -0,0 +1,33 @@
1
+ import type { ArrayNode } from "./ArrayNode.js";
2
+ import type { ConditionNode } from "./ConditionNode.js";
3
+ import type { ErrorToken } from "./ErrorToken.js";
4
+ import { Node } from "./Node.js";
5
+ import { ValidToken } from "./ValidToken.js";
6
+ import { type AnyToken, AST_TYPE, type NodeDelimiters, type TOKEN_TYPE, type TokenQuoteTypes } from "../../types/ast.js";
7
+ /**
8
+ * A variable represents **just** a string value (NOT it's boolean value).
9
+ *
10
+ * The parser will never return just a variable, they are always wrapped in an @see ConditionNode to give them a boolean value.
11
+ *
12
+ * A variable might or might not be quoted. If it is, the `quote` property will contain the quote tokens, @see ValidToken . While they will always be of the same quote type, one might be valid while the other might not (@see ErrorToken).
13
+ *
14
+ * `value` will contain the string value of the variable. The text is not processed and might still contain escaped characters (even if unquoted!) that need to be removed to get the intended value. This is so that the position of the node is accurate. @see evaluate will take care of unescaping when needed.
15
+ *
16
+ * If `prefixableStrings` is true, the `prefix` property might contain a value token.
17
+ */
18
+ export declare class VariableNode<TValid extends boolean = boolean> extends Node<AST_TYPE.VARIABLE, TValid> {
19
+ #private;
20
+ readonly value: TValid extends boolean ? AnyToken<TOKEN_TYPE.VALUE> : TValid extends true ? ValidToken<TOKEN_TYPE.VALUE> : ErrorToken<TOKEN_TYPE.VALUE>;
21
+ readonly prefix?: ValidToken<TOKEN_TYPE.VALUE>;
22
+ readonly quote?: NodeDelimiters<TokenQuoteTypes, TokenQuoteTypes>;
23
+ get parent(): ConditionNode | ArrayNode | undefined;
24
+ set parent(value: ConditionNode | ArrayNode | undefined);
25
+ constructor({ prefix, value, quote, start, end }: {
26
+ prefix?: VariableNode<TValid>["prefix"];
27
+ value: VariableNode<TValid>["value"];
28
+ quote?: VariableNode<TValid>["quote"];
29
+ start: number;
30
+ end: number;
31
+ });
32
+ }
33
+ //# sourceMappingURL=VariableNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariableNode.d.ts","sourceRoot":"","sources":["../../../src/ast/classes/VariableNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,KAAK,QAAQ,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAExH;;;;;;;;;;GAUG;AACH,qBAAa,YAAY,CACxB,MAAM,SAAS,OAAO,GAAG,OAAO,CAC/B,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,OAAO,GACnC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAC1B,MAAM,SAAS,IAAI,GACnB,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,GAC7B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAE9B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAE9C,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;IAMjE,IAAI,MAAM,IAAI,aAAa,GAAG,SAAS,GAAG,SAAS,CAElD;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,EAItD;gBAEW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACjD,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;QACvC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;QACpC,KAAK,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;QACrC,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACX;CAcD"}
@@ -0,0 +1,58 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ var __accessCheck = (obj, member, msg) => {
8
+ if (!member.has(obj))
9
+ throw TypeError("Cannot " + msg);
10
+ };
11
+ var __privateGet = (obj, member, getter) => {
12
+ __accessCheck(obj, member, "read from private field");
13
+ return getter ? getter.call(obj) : member.get(obj);
14
+ };
15
+ var __privateAdd = (obj, member, value) => {
16
+ if (member.has(obj))
17
+ throw TypeError("Cannot add the same private member more than once");
18
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
19
+ };
20
+ var __privateSet = (obj, member, value, setter) => {
21
+ __accessCheck(obj, member, "write to private field");
22
+ setter ? setter.call(obj, value) : member.set(obj, value);
23
+ return value;
24
+ };
25
+ var _parent, _setParent;
26
+ import { Node } from "./Node.js";
27
+ import { ValidToken } from "./ValidToken.js";
28
+ import { AST_TYPE } from "../../types/ast.js";
29
+ class VariableNode extends Node {
30
+ constructor({ prefix, value, quote, start, end }) {
31
+ super(AST_TYPE.VARIABLE, start, end);
32
+ __publicField(this, "value");
33
+ __publicField(this, "prefix");
34
+ // todo
35
+ __publicField(this, "quote");
36
+ __privateAdd(this, _parent, void 0);
37
+ __privateAdd(this, _setParent, false);
38
+ this.prefix = prefix;
39
+ this.value = value;
40
+ this.quote = quote;
41
+ this.valid = this.value instanceof ValidToken && (this.quote === void 0 || this.quote.left instanceof ValidToken && this.quote.right instanceof ValidToken);
42
+ }
43
+ get parent() {
44
+ return __privateGet(this, _parent);
45
+ }
46
+ set parent(value) {
47
+ if (__privateGet(this, _setParent)) {
48
+ throw new Error("parent property is readonly");
49
+ }
50
+ __privateSet(this, _parent, value);
51
+ __privateSet(this, _setParent, true);
52
+ }
53
+ }
54
+ _parent = new WeakMap();
55
+ _setParent = new WeakMap();
56
+ export {
57
+ VariableNode
58
+ };
@@ -0,0 +1,12 @@
1
+ export { ArrayNode } from "./ArrayNode.js";
2
+ export { Condition } from "./Condition.js";
3
+ export { ConditionNode } from "./ConditionNode.js";
4
+ export { ErrorToken } from "./ErrorToken.js";
5
+ export { Expression } from "./Expression.js";
6
+ export { ExpressionNode } from "./ExpressionNode.js";
7
+ export { GroupNode } from "./GroupNode.js";
8
+ export { Node } from "./Node.js";
9
+ export { Token } from "./Token.js";
10
+ export { ValidToken } from "./ValidToken.js";
11
+ export { VariableNode } from "./VariableNode.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ast/classes/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { ArrayNode } from "./ArrayNode.js";
2
+ import { Condition } from "./Condition.js";
3
+ import { ConditionNode } from "./ConditionNode.js";
4
+ import { ErrorToken } from "./ErrorToken.js";
5
+ import { Expression } from "./Expression.js";
6
+ import { ExpressionNode } from "./ExpressionNode.js";
7
+ import { GroupNode } from "./GroupNode.js";
8
+ import { Node } from "./Node.js";
9
+ import { Token } from "./Token.js";
10
+ import { ValidToken } from "./ValidToken.js";
11
+ import { VariableNode } from "./VariableNode.js";
12
+ export {
13
+ ArrayNode,
14
+ Condition,
15
+ ConditionNode,
16
+ ErrorToken,
17
+ Expression,
18
+ ExpressionNode,
19
+ GroupNode,
20
+ Node,
21
+ Token,
22
+ ValidToken,
23
+ VariableNode
24
+ };
@@ -0,0 +1,42 @@
1
+ import { ArrayNode } from "./classes/ArrayNode.js";
2
+ import { ConditionNode } from "./classes/ConditionNode.js";
3
+ import { ErrorToken } from "./classes/ErrorToken.js";
4
+ import { ExpressionNode } from "./classes/ExpressionNode.js";
5
+ import { GroupNode } from "./classes/GroupNode.js";
6
+ import { ValidToken } from "./classes/ValidToken.js";
7
+ import { VariableNode } from "./classes/VariableNode.js";
8
+ import { type AnyToken, type Position, TOKEN_TYPE, type TokenBooleanTypes, type TokenQuoteTypes } from "../types/ast.js";
9
+ declare function error<T extends TOKEN_TYPE>(pos: number, expected: T[]): ErrorToken<T>;
10
+ export declare const token: {
11
+ value: (value: string | undefined, pos: Position) => AnyToken<TOKEN_TYPE.VALUE>;
12
+ custom: (value: string | undefined, pos: Position) => AnyToken<TOKEN_TYPE.OP_CUSTOM>;
13
+ sep: (value: string | undefined, pos: Position) => AnyToken<TOKEN_TYPE.OP_EXPANDED_SEP>;
14
+ };
15
+ /** We want to handle all the types outside the grammar file. This makes it easier without trying to check the value. */
16
+ export declare const delimiter: {
17
+ parenL: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.PARENL> | undefined;
18
+ parenR: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.PARENR> | undefined;
19
+ bracketL: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.BRACKETL> | undefined;
20
+ bracketR: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.BRACKETR> | undefined;
21
+ double: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.DOUBLEQUOTE> | undefined;
22
+ single: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.SINGLEQUOTE> | undefined;
23
+ regex: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.REGEX> | undefined;
24
+ tick: (value: string | undefined, pos: Position) => ValidToken<TOKEN_TYPE.BACKTICK> | undefined;
25
+ tokenError: typeof error;
26
+ };
27
+ export declare const operator: {
28
+ and: (value: string, pos: Position) => ValidToken<TOKEN_TYPE.AND>;
29
+ or: (value: string, pos: Position) => ValidToken<TOKEN_TYPE.OR>;
30
+ not: (value: string, pos: Position) => ValidToken<TOKEN_TYPE.NOT>;
31
+ };
32
+ export declare function variable(prefix: ValidToken<TOKEN_TYPE.VALUE> | null | undefined, quoteL: AnyToken<TokenQuoteTypes> | null | undefined, value: AnyToken<TOKEN_TYPE.VALUE> | null | undefined, quoteR: AnyToken<TokenQuoteTypes> | null | undefined, flags?: ValidToken<TOKEN_TYPE.VALUE>): VariableNode;
33
+ export declare function condition(not: ValidToken<TOKEN_TYPE.NOT> | null | undefined, property: VariableNode | null | undefined, { propertyOperator, sepL, sepR }?: {
34
+ propertyOperator?: ConditionNode["propertyOperator"] | null;
35
+ sepL?: ValidToken<TOKEN_TYPE.OP_EXPANDED_SEP> | null;
36
+ sepR?: ValidToken<TOKEN_TYPE.OP_EXPANDED_SEP> | null;
37
+ }, value?: VariableNode | GroupNode | ArrayNode | null): ConditionNode;
38
+ export declare function expression(left: ConditionNode | GroupNode | null | undefined, operator: ValidToken<TokenBooleanTypes> | null | undefined, right: ConditionNode | GroupNode | null | undefined): ExpressionNode;
39
+ export declare function group(operator: ValidToken<TOKEN_TYPE.NOT> | null | undefined, prefix: ConditionNode | null | undefined, parenL: ValidToken<TOKEN_TYPE.PARENL> | null | undefined, condition: GroupNode["expression"], parenR: ValidToken<TOKEN_TYPE.PARENR> | null | undefined): GroupNode;
40
+ export declare function array(bracketL: ValidToken<TOKEN_TYPE.BRACKETL>, values: VariableNode[], bracketR: ValidToken<TOKEN_TYPE.BRACKETR> | null | undefined): ArrayNode;
41
+ export {};
42
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/ast/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { ArrayNode } from "./classes/ArrayNode.js";
2
+ import { ConditionNode } from "./classes/ConditionNode.js";
3
+ import { ErrorToken } from "./classes/ErrorToken.js";
4
+ import { ExpressionNode } from "./classes/ExpressionNode.js";
5
+ import { GroupNode } from "./classes/GroupNode.js";
6
+ import { ValidToken } from "./classes/ValidToken.js";
7
+ import { VariableNode } from "./classes/VariableNode.js";
8
+ import { TOKEN_TYPE } from "../types/ast.js";
9
+ function error(pos, expected) {
10
+ if (pos === void 0)
11
+ throw new Error("should never happen, passed undefined position for error token");
12
+ return new ErrorToken({ expected, start: pos, end: pos });
13
+ }
14
+ const operators = (type) => (value, pos) => new ValidToken({ value, type, ...pos });
15
+ const delimiters = (type) => (value, pos) => (
16
+ // check must be falsy, we want to return undefined when given ""
17
+ value ? new ValidToken({ value, type, ...pos }) : void 0
18
+ );
19
+ const maybeToken = (type) => (value, pos) => {
20
+ if (value === void 0) {
21
+ return error(pos.end, [type]);
22
+ } else {
23
+ return new ValidToken({ value, type, ...pos });
24
+ }
25
+ };
26
+ const token = {
27
+ value: maybeToken(TOKEN_TYPE.VALUE),
28
+ custom: maybeToken(TOKEN_TYPE.OP_CUSTOM),
29
+ sep: maybeToken(TOKEN_TYPE.OP_EXPANDED_SEP)
30
+ };
31
+ const delimiter = {
32
+ parenL: delimiters(TOKEN_TYPE.PARENL),
33
+ parenR: delimiters(TOKEN_TYPE.PARENR),
34
+ bracketL: delimiters(TOKEN_TYPE.BRACKETL),
35
+ bracketR: delimiters(TOKEN_TYPE.BRACKETR),
36
+ double: delimiters(TOKEN_TYPE.DOUBLEQUOTE),
37
+ single: delimiters(TOKEN_TYPE.SINGLEQUOTE),
38
+ regex: delimiters(TOKEN_TYPE.REGEX),
39
+ tick: delimiters(TOKEN_TYPE.BACKTICK),
40
+ tokenError: error
41
+ };
42
+ const operator = {
43
+ and: operators(TOKEN_TYPE.AND),
44
+ or: operators(TOKEN_TYPE.OR),
45
+ not: operators(TOKEN_TYPE.NOT)
46
+ };
47
+ function variable(prefix, quoteL, value, quoteR, flags) {
48
+ var _a;
49
+ const node = {
50
+ prefix: prefix ?? void 0,
51
+ value: value ?? error((prefix == null ? void 0 : prefix.end) ?? (quoteL == null ? void 0 : quoteL.end) ?? (quoteR == null ? void 0 : quoteR.start), [TOKEN_TYPE.VALUE]),
52
+ start: (prefix == null ? void 0 : prefix.start) ?? (quoteL == null ? void 0 : quoteL.start) ?? (value == null ? void 0 : value.start) ?? (quoteR == null ? void 0 : quoteR.start),
53
+ end: (quoteR == null ? void 0 : quoteR.end) ?? (value == null ? void 0 : value.end) ?? (quoteL == null ? void 0 : quoteL.end) ?? (prefix == null ? void 0 : prefix.end)
54
+ };
55
+ if (quoteL || quoteR) {
56
+ node.quote = {
57
+ left: quoteL ?? error(node.value.start, [quoteR.type]),
58
+ right: quoteR ?? error(node.value.end, [quoteL.type])
59
+ };
60
+ if (flags) {
61
+ node.quote.flags = flags;
62
+ node.end = (_a = node.quote) == null ? void 0 : _a.flags.end;
63
+ }
64
+ }
65
+ const instance = new VariableNode(node);
66
+ return instance;
67
+ }
68
+ function condition(not, property, { propertyOperator, sepL, sepR } = {}, value) {
69
+ var _a;
70
+ const start = (not == null ? void 0 : not.start) ?? (property == null ? void 0 : property.start) ?? (sepL == null ? void 0 : sepL.start) ?? (propertyOperator == null ? void 0 : propertyOperator.start) ?? (sepR == null ? void 0 : sepR.start) ?? (value == null ? void 0 : value.start);
71
+ const end = (value == null ? void 0 : value.end) ?? (sepR == null ? void 0 : sepR.end) ?? (propertyOperator == null ? void 0 : propertyOperator.end) ?? (sepL == null ? void 0 : sepL.end) ?? (property == null ? void 0 : property.end) ?? (not == null ? void 0 : not.end);
72
+ const node = {
73
+ value: value ? value : error(end, [TOKEN_TYPE.VALUE]),
74
+ start,
75
+ end
76
+ };
77
+ if (not) {
78
+ node.operator = not;
79
+ }
80
+ if (property)
81
+ node.property = property;
82
+ if (propertyOperator)
83
+ node.propertyOperator = propertyOperator;
84
+ if (sepL || sepR) {
85
+ node.sep = {};
86
+ if (sepL) {
87
+ node.sep.left = sepL;
88
+ node.property || (node.property = error(sepL.start, [TOKEN_TYPE.VALUE]));
89
+ node.propertyOperator || (node.propertyOperator = error((sepL == null ? void 0 : sepL.end) ?? (sepR == null ? void 0 : sepR.start), [TOKEN_TYPE.VALUE]));
90
+ }
91
+ if (sepR)
92
+ node.sep.right = sepR;
93
+ else if (!node.value || node.value instanceof VariableNode) {
94
+ node.sep.right = error(((_a = node.value) == null ? void 0 : _a.start) ?? end, [TOKEN_TYPE.OP_EXPANDED_SEP]);
95
+ }
96
+ } else if (propertyOperator) {
97
+ node.property || (node.property = error(propertyOperator.start, [TOKEN_TYPE.VALUE]));
98
+ }
99
+ const instance = new ConditionNode(node);
100
+ return instance;
101
+ }
102
+ function expression(left, operator2, right) {
103
+ const instance = new ExpressionNode({
104
+ left: left ?? error((operator2 == null ? void 0 : operator2.start) ?? (right == null ? void 0 : right.start), [TOKEN_TYPE.VALUE]),
105
+ operator: operator2 ?? error((left == null ? void 0 : left.end) ?? (right == null ? void 0 : right.start), [TOKEN_TYPE.AND, TOKEN_TYPE.OR]),
106
+ right: right ?? error((operator2 == null ? void 0 : operator2.end) ?? (left == null ? void 0 : left.end), [TOKEN_TYPE.VALUE]),
107
+ start: (left == null ? void 0 : left.start) ?? (operator2 == null ? void 0 : operator2.start) ?? (right == null ? void 0 : right.start),
108
+ end: (right == null ? void 0 : right.end) ?? (operator2 == null ? void 0 : operator2.end) ?? (left == null ? void 0 : left.end)
109
+ });
110
+ return instance;
111
+ }
112
+ function group(operator2, prefix, parenL, condition2, parenR) {
113
+ const node = {
114
+ prefix: prefix ?? operator2 ?? void 0,
115
+ expression: condition2 ?? error((parenL == null ? void 0 : parenL.end) ?? (parenR == null ? void 0 : parenR.start), [TOKEN_TYPE.VALUE]),
116
+ paren: {
117
+ left: parenL ?? error((prefix == null ? void 0 : prefix.end) ?? (operator2 == null ? void 0 : operator2.end) ?? (condition2 == null ? void 0 : condition2.start) ?? (parenR == null ? void 0 : parenR.start), [TOKEN_TYPE.PARENL]),
118
+ right: parenR ?? error((condition2 == null ? void 0 : condition2.end) ?? (parenL == null ? void 0 : parenL.end), [TOKEN_TYPE.PARENR])
119
+ },
120
+ start: (prefix == null ? void 0 : prefix.start) ?? (operator2 == null ? void 0 : operator2.start) ?? (parenL == null ? void 0 : parenL.start) ?? (condition2 == null ? void 0 : condition2.start) ?? (parenR == null ? void 0 : parenR.start),
121
+ end: (parenR == null ? void 0 : parenR.end) ?? (condition2 == null ? void 0 : condition2.end) ?? (parenL == null ? void 0 : parenL.end) ?? (operator2 == null ? void 0 : operator2.end) ?? (prefix == null ? void 0 : prefix.end)
122
+ };
123
+ const instance = new GroupNode(node);
124
+ return instance;
125
+ }
126
+ function array(bracketL, values, bracketR) {
127
+ var _a, _b;
128
+ const node = {
129
+ values,
130
+ bracket: {
131
+ left: bracketL,
132
+ // always valid for now
133
+ right: bracketR ?? error(((_a = values[values.length - 1]) == null ? void 0 : _a.end) ?? (bracketL == null ? void 0 : bracketL.end), [TOKEN_TYPE.BRACKETR])
134
+ },
135
+ start: bracketL.start,
136
+ end: (bracketR == null ? void 0 : bracketR.end) ?? ((_b = values[values.length - 1]) == null ? void 0 : _b.end) ?? bracketL.end
137
+ };
138
+ const instance = new ArrayNode(node);
139
+ return instance;
140
+ }
141
+ export {
142
+ array,
143
+ condition,
144
+ delimiter,
145
+ expression,
146
+ group,
147
+ operator,
148
+ token,
149
+ variable
150
+ };
@@ -0,0 +1,4 @@
1
+ export * as builders from "./builders/index.js";
2
+ export * as classes from "./classes/index.js";
3
+ export { token } from "./handlers.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as index from "./builders/index.js";
2
+ import * as index$1 from "./classes/index.js";
3
+ import { token } from "./handlers.js";
4
+ export {
5
+ index as builders,
6
+ index$1 as classes,
7
+ token
8
+ };
@@ -0,0 +1,3 @@
1
+ import type { ValueQuery } from "../types/parser.js";
2
+ export declare function valueComparer(contextValue: string, { operator, prefix, value, isRegex, regexFlags }: ValueQuery): boolean;
3
+ //# sourceMappingURL=advancedValueComparer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advancedValueComparer.d.ts","sourceRoot":"","sources":["../../src/examples/advancedValueComparer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAKpD,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,GAAG,OAAO,CAyBzH"}