@witchcraft/expressit 0.0.3 → 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 (85) hide show
  1. package/README.md +3 -1
  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/handlers.d.ts +3 -3
  9. package/dist/ast/handlers.d.ts.map +1 -1
  10. package/dist/examples/shortcutContextParser.d.ts +1 -1
  11. package/dist/examples/shortcutContextParser.js +1 -1
  12. package/dist/helpers/parser/extractPosition.d.ts +2 -6
  13. package/dist/helpers/parser/extractPosition.d.ts.map +1 -1
  14. package/dist/helpers/parser/extractPosition.js +3 -3
  15. package/dist/helpers/parser/getUnclosedRightParenCount.d.ts +2 -3
  16. package/dist/helpers/parser/getUnclosedRightParenCount.d.ts.map +1 -1
  17. package/dist/helpers/parser/getUnclosedRightParenCount.js +4 -4
  18. package/dist/index.d.ts +1 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +3 -5
  21. package/dist/methods/autocomplete.d.ts.map +1 -1
  22. package/dist/methods/validate.js +1 -0
  23. package/dist/package.json.js +26 -39
  24. package/dist/types/ast.d.ts +1 -7
  25. package/dist/types/ast.d.ts.map +1 -1
  26. package/dist/types/errors.d.ts +5 -17
  27. package/dist/types/errors.d.ts.map +1 -1
  28. package/dist/types/errors.js +0 -1
  29. package/dist/types/parser.d.ts.map +1 -1
  30. package/dist/utils/getCursorInfo.d.ts +2 -2
  31. package/dist/utils/getCursorInfo.d.ts.map +1 -1
  32. package/dist/utils/getCursorInfo.js +1 -4
  33. package/dist/utils/getOppositeDelimiter.d.ts.map +1 -1
  34. package/dist/utils/prettyAst.js +1 -0
  35. package/package.json +24 -39
  36. package/src/Lexer.ts +704 -0
  37. package/src/Parser.ts +972 -0
  38. package/src/ast/builders/array.ts +1 -1
  39. package/src/ast/builders/condition.ts +1 -1
  40. package/src/ast/builders/expression.ts +1 -1
  41. package/src/ast/builders/group.ts +1 -1
  42. package/src/ast/builders/pos.ts +1 -1
  43. package/src/ast/builders/token.ts +1 -1
  44. package/src/ast/builders/type.ts +1 -1
  45. package/src/ast/builders/variable.ts +1 -1
  46. package/src/ast/classes/ConditionNode.ts +1 -1
  47. package/src/ast/classes/ErrorToken.ts +1 -1
  48. package/src/ast/classes/ValidToken.ts +2 -2
  49. package/src/ast/handlers.ts +6 -6
  50. package/src/examples/shortcutContextParser.ts +2 -2
  51. package/src/helpers/errors.ts +1 -1
  52. package/src/helpers/general/defaultConditionNormalizer.ts +1 -1
  53. package/src/helpers/parser/checkParserOpts.ts +10 -10
  54. package/src/helpers/parser/extractPosition.ts +4 -8
  55. package/src/helpers/parser/getUnclosedRightParenCount.ts +6 -6
  56. package/src/helpers/parser/parseParserOptions.ts +1 -1
  57. package/src/index.ts +1 -2
  58. package/src/methods/autocomplete.ts +4 -4
  59. package/src/methods/autoreplace.ts +1 -1
  60. package/src/methods/autosuggest.ts +1 -1
  61. package/src/methods/evaluate.ts +1 -1
  62. package/src/methods/normalize.ts +1 -1
  63. package/src/methods/validate.ts +1 -1
  64. package/src/types/ast.ts +1 -8
  65. package/src/types/errors.ts +12 -22
  66. package/src/types/parser.ts +0 -1
  67. package/src/utils/getCursorInfo.ts +4 -3
  68. package/src/utils/getOppositeDelimiter.ts +4 -1
  69. package/src/utils/prettyAst.ts +1 -1
  70. package/dist/grammar/ParserBase.d.ts +0 -51
  71. package/dist/grammar/ParserBase.d.ts.map +0 -1
  72. package/dist/grammar/ParserBase.js +0 -517
  73. package/dist/grammar/createTokens.d.ts +0 -56
  74. package/dist/grammar/createTokens.d.ts.map +0 -1
  75. package/dist/grammar/createTokens.js +0 -844
  76. package/dist/grammar/index.d.ts +0 -3
  77. package/dist/grammar/index.d.ts.map +0 -1
  78. package/dist/grammar/index.js +0 -6
  79. package/dist/parser.d.ts +0 -58
  80. package/dist/parser.d.ts.map +0 -1
  81. package/dist/parser.js +0 -137
  82. package/src/grammar/ParserBase.ts +0 -716
  83. package/src/grammar/createTokens.ts +0 -513
  84. package/src/grammar/index.ts +0 -4
  85. package/src/parser.ts +0 -184
@@ -0,0 +1,140 @@
1
+ import type { AddParameters, Mixin } from "@alanscodelog/utils/types";
2
+ import { ArrayNode } from "./ast/classes/ArrayNode.js";
3
+ import { ConditionNode } from "./ast/classes/ConditionNode.js";
4
+ import { GroupNode } from "./ast/classes/GroupNode.js";
5
+ import type { ValidToken } from "./ast/classes/ValidToken.js";
6
+ import { VariableNode } from "./ast/classes/VariableNode.js";
7
+ import * as handle from "./ast/handlers.js";
8
+ import { $C, $T, type Token, type TokenCategoryType, type TokenType } from "./Lexer.js";
9
+ import { AutocompleteMixin } from "./methods/autocomplete.js";
10
+ import { AutoreplaceMixin } from "./methods/autoreplace.js";
11
+ import { Autosuggest } from "./methods/autosuggest.js";
12
+ import { EvaluateMixin } from "./methods/evaluate.js";
13
+ import { GetBestIndexesMixin } from "./methods/getBestIndex.js";
14
+ import { GetIndexMixin } from "./methods/getIndexes.js";
15
+ import { NormalizeMixin } from "./methods/normalize.js";
16
+ import { ValidateMixin } from "./methods/validate.js";
17
+ import type { ParserResults } from "./types/ast.js";
18
+ import { type AnyToken, type Position, TOKEN_TYPE } from "./types/index.js";
19
+ import type { FullParserOptions, ParserOptions } from "./types/parser.js";
20
+ /**
21
+ * The parser's methods are often long and have a lot of documentation per method, so it's methods have been split into mixins. They can be found in the `./methods` folder.
22
+ *
23
+ * Writing from within any of these methods is like writing a method from here except:
24
+ * - `this` calls are wrapped in `(this as any as Parser<T>)`
25
+ * - private method/property access requires `// @ts-expect-error`.
26
+ * - recursion with hidden parameters requires re-typing this (see evaluate/validate for examples) since otherwise if we only retyped the function it would become unbound from `this`.
27
+ *
28
+ * Docs work like normal (on methods). From the outside, users of the library cannot even tell the class is composed of mixins.
29
+ */
30
+ export interface Parser<T extends {} = {}> extends Mixin<AutocompleteMixin<T> | AutoreplaceMixin | Autosuggest<T> | EvaluateMixin<T> | ValidateMixin<T> | NormalizeMixin<T> | GetIndexMixin<T> | GetBestIndexesMixin>, AutocompleteMixin<T>, AutoreplaceMixin, Autosuggest<T>, EvaluateMixin<T>, ValidateMixin<T>, NormalizeMixin<T>, GetIndexMixin<T>, GetBestIndexesMixin {
31
+ }
32
+ /**
33
+ * Creates the main parser class which handles all functionality (evaluation, validation, etc).
34
+ */
35
+ export declare class Parser<T extends {} = {}> {
36
+ private evaluationOptionsChecked;
37
+ _checkEvaluationOptions(): void;
38
+ private validationOptionsChecked;
39
+ _checkValidationOptions(): void;
40
+ options: FullParserOptions<T>;
41
+ private readonly lexer;
42
+ private readonly $;
43
+ private readonly $categories;
44
+ private readonly info;
45
+ constructor(options?: ParserOptions<T>);
46
+ state: {
47
+ rawInput: string;
48
+ lexedTokens: Token<$T>[];
49
+ index: number;
50
+ shift: number;
51
+ };
52
+ /**
53
+ * This is exposed mainly for debugging purposes. Use parse directly instead.
54
+ */
55
+ lex(input: string): {
56
+ tokens: Token<$T>[];
57
+ shift: number;
58
+ rawInput: string;
59
+ };
60
+ /**
61
+ * Parse an input string into an AST.
62
+ * It can also parse the result from `lex`, but that is really only for internal use.
63
+ */
64
+ parse(input: string | {
65
+ tokens: Token<$T>[];
66
+ shift: number;
67
+ rawInput: string;
68
+ }): ParserResults;
69
+ subParserOne?: Parser<T> & {
70
+ parse: AddParameters<Parser<T>["parse"], [{
71
+ seal: boolean;
72
+ }]>;
73
+ };
74
+ subParserTwo?: Parser<T> & {
75
+ parse: AddParameters<Parser<T>["parse"], [{
76
+ seal: boolean;
77
+ }]>;
78
+ };
79
+ createSubParserIfNotExists(opts: ParserOptions<T>, which?: "One" | "Two"): Parser["subParserOne"];
80
+ transformCategoryToken<TC extends $C>(token: Token, categoryToken: TokenCategoryType<TC>): Token<TC>;
81
+ getCategoryTokens<TType extends $C>(type: TType): TokenCategoryType<TType>["entries"] | undefined;
82
+ getTokenType(type: $T | $C): TokenType<$T> | undefined;
83
+ isExactType<TType extends $T>(token: Token, type: TType): token is Token<TType>;
84
+ isType(token: Token | undefined, type: $T | $C): boolean;
85
+ createErrorToken(type: $T, index?: number): Token;
86
+ processToken<TDefined extends boolean = boolean>(token?: Pick<Token, "value" | "startOffset" | "endOffset">): [TDefined extends true ? string : string | undefined, Position];
87
+ peek(n?: number): Token<$T> | undefined;
88
+ nextIsEof(): boolean;
89
+ consumeAny(): Token<$T>;
90
+ consume<TType extends $T | $C>(type: TType | undefined): Token<TType>;
91
+ saveState(): Parser["state"];
92
+ restoreState(state: Parser["state"]): void;
93
+ ruleMain(): ParserResults;
94
+ ruleBool<TType extends "AND" | "OR">(type: TType): any;
95
+ ruleCondition(): ConditionNode | GroupNode | ConditionNode<boolean> | undefined;
96
+ ruleConditionValue(property: ReturnType<Parser<T>["ruleConditionProperty"]>, { convertRegexValues, convertArrayValues }?: {
97
+ convertRegexValues?: boolean;
98
+ convertArrayValues?: boolean;
99
+ }): ReturnType<Parser["rulePlainGroup"]> | ReturnType<Parser["rulePlainBracketGroup"]> | ReturnType<Parser["ruleVariable"]> | undefined;
100
+ rulePlainGroup({ onlyValues, convertRegexValues, convertArrayValues }?: {
101
+ onlyValues?: boolean;
102
+ convertRegexValues?: boolean;
103
+ convertArrayValues?: boolean;
104
+ }): [
105
+ ValidToken<TOKEN_TYPE.PARENL> | undefined,
106
+ GroupNode["expression"],
107
+ ValidToken<TOKEN_TYPE.PARENR> | undefined
108
+ ];
109
+ rulePlainBracketGroup({ convertArrayValues }?: {
110
+ convertArrayValues?: boolean;
111
+ }): ArrayNode | VariableNode;
112
+ ruleConditionProperty(): {
113
+ prop?: VariableNode;
114
+ rest: Parameters<typeof handle.condition>[2];
115
+ } | undefined;
116
+ ruleProperty(): {
117
+ prop?: VariableNode;
118
+ rest: Parameters<typeof handle.condition>[2];
119
+ };
120
+ ruleVariable({ unprefixed, }?: {
121
+ unprefixed?: boolean;
122
+ }): VariableNode | undefined;
123
+ ruleValueDelimAny(): ValidToken<TOKEN_TYPE.SINGLEQUOTE | TOKEN_TYPE.DOUBLEQUOTE | TOKEN_TYPE.BACKTICK | TOKEN_TYPE.REGEX> | undefined;
124
+ ruleRegexAny(): ValidToken<TOKEN_TYPE.REGEX> | [ValidToken<TOKEN_TYPE.REGEX>, AnyToken<TOKEN_TYPE.VALUE>];
125
+ ruleValueNot<TType extends $T.QUOTE_SINGLE | $T.QUOTE_DOUBLE | $T.QUOTE_BACKTICK | $C.REGEX_ANY>(type: TType): ValidToken<TOKEN_TYPE.VALUE>;
126
+ ruleQuote<TType extends $T.QUOTE_SINGLE | $T.QUOTE_DOUBLE | $T.QUOTE_BACKTICK>(type: TType): ValidToken<TType extends $T.QUOTE_SINGLE ? TOKEN_TYPE.SINGLEQUOTE : TType extends $T.QUOTE_DOUBLE ? TOKEN_TYPE.DOUBLEQUOTE : TType extends $T.QUOTE_BACKTICK ? TOKEN_TYPE.BACKTICK : never>;
127
+ ruleVariablePrefix<TOnlyToken extends boolean = false>({ onlyToken, unprefixed, }?: {
128
+ onlyToken?: TOnlyToken;
129
+ unprefixed?: boolean;
130
+ }): TOnlyToken extends true ? Token<$T.VALUE_UNQUOTED> | undefined : AnyToken<TOKEN_TYPE.VALUE> | undefined;
131
+ ruleValueUnquoted<TOnlyToken extends boolean = false>({ onlyToken, }?: {
132
+ onlyToken?: TOnlyToken;
133
+ }): TOnlyToken extends true ? Token<$T.VALUE_UNQUOTED> : AnyToken<TOKEN_TYPE.VALUE>;
134
+ ruleParenL(): ValidToken<TOKEN_TYPE.PARENL> | undefined;
135
+ ruleParenR(): ValidToken<TOKEN_TYPE.PARENR> | undefined;
136
+ ruleBracketL(): ValidToken<TOKEN_TYPE.BRACKETL> | undefined;
137
+ ruleBracketR(): ValidToken<TOKEN_TYPE.BRACKETR> | undefined;
138
+ ruleNot(): ValidToken<TOKEN_TYPE.NOT> | undefined;
139
+ }
140
+ //# sourceMappingURL=Parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"}