@witchcraft/expressit 0.1.0 → 0.1.1
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.
- package/dist/Lexer.js +2 -2
- package/dist/Parser.d.ts +94 -23
- package/dist/Parser.d.ts.map +1 -1
- package/dist/Parser.js +831 -23
- package/dist/ast/builders/token.js +1 -1
- package/dist/helpers/errors.js +3 -3
- package/dist/helpers/parser/checkParserOpts.js +2 -2
- package/dist/package.json.js +3 -4
- package/dist/utils/extractTokens.js +1 -1
- package/dist/utils/getCursorInfo.js +2 -2
- package/dist/utils/getOppositeDelimiter.js +1 -1
- package/dist/utils/prettyAst.js +6 -6
- package/package.json +3 -4
- package/src/Lexer.ts +2 -2
- package/src/Parser.ts +1102 -60
- package/src/ast/builders/token.ts +1 -1
- package/src/helpers/errors.ts +3 -3
- package/src/helpers/parser/checkParserOpts.ts +2 -2
- package/src/utils/extractTokens.ts +1 -1
- package/src/utils/getCursorInfo.ts +2 -2
- package/src/utils/getOppositeDelimiter.ts +1 -1
- package/src/utils/prettyAst.ts +3 -3
- package/dist/methods/autocomplete.d.ts +0 -18
- package/dist/methods/autocomplete.d.ts.map +0 -1
- package/dist/methods/autocomplete.js +0 -109
- package/dist/methods/autoreplace.d.ts +0 -13
- package/dist/methods/autoreplace.d.ts.map +0 -1
- package/dist/methods/autoreplace.js +0 -36
- package/dist/methods/autosuggest.d.ts +0 -28
- package/dist/methods/autosuggest.d.ts.map +0 -1
- package/dist/methods/autosuggest.js +0 -371
- package/dist/methods/evaluate.d.ts +0 -11
- package/dist/methods/evaluate.d.ts.map +0 -1
- package/dist/methods/evaluate.js +0 -32
- package/dist/methods/getBestIndex.d.ts +0 -19
- package/dist/methods/getBestIndex.d.ts.map +0 -1
- package/dist/methods/getBestIndex.js +0 -53
- package/dist/methods/getIndexes.d.ts +0 -17
- package/dist/methods/getIndexes.d.ts.map +0 -1
- package/dist/methods/getIndexes.js +0 -98
- package/dist/methods/index.d.ts +0 -9
- package/dist/methods/index.d.ts.map +0 -1
- package/dist/methods/index.js +0 -18
- package/dist/methods/normalize.d.ts +0 -10
- package/dist/methods/normalize.d.ts.map +0 -1
- package/dist/methods/normalize.js +0 -98
- package/dist/methods/validate.d.ts +0 -11
- package/dist/methods/validate.d.ts.map +0 -1
- package/dist/methods/validate.js +0 -113
- package/src/methods/autocomplete.ts +0 -128
- package/src/methods/autoreplace.ts +0 -46
- package/src/methods/autosuggest.ts +0 -543
- package/src/methods/evaluate.ts +0 -39
- package/src/methods/getBestIndex.ts +0 -53
- package/src/methods/getIndexes.ts +0 -100
- package/src/methods/index.ts +0 -10
- package/src/methods/normalize.ts +0 -137
- package/src/methods/validate.ts +0 -143
package/dist/Lexer.js
CHANGED
|
@@ -4,8 +4,8 @@ var __publicField = (obj, key, value) => {
|
|
|
4
4
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
5
|
return value;
|
|
6
6
|
};
|
|
7
|
-
import { isBlank } from "@alanscodelog/utils/isBlank";
|
|
8
|
-
import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn";
|
|
7
|
+
import { isBlank } from "@alanscodelog/utils/isBlank.js";
|
|
8
|
+
import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn.js";
|
|
9
9
|
import { checkParserOpts } from "./helpers/parser/checkParserOpts.js";
|
|
10
10
|
import { parseParserOptions } from "./helpers/parser/parseParserOptions.js";
|
|
11
11
|
const regexFlags = /^[a-zA-Z]+/;
|
package/dist/Parser.d.ts
CHANGED
|
@@ -1,34 +1,15 @@
|
|
|
1
|
-
import type { AddParameters
|
|
1
|
+
import type { AddParameters } from "@alanscodelog/utils/types";
|
|
2
2
|
import { ArrayNode } from "./ast/classes/ArrayNode.js";
|
|
3
3
|
import { ConditionNode } from "./ast/classes/ConditionNode.js";
|
|
4
4
|
import { GroupNode } from "./ast/classes/GroupNode.js";
|
|
5
|
-
import
|
|
5
|
+
import { Condition, Expression } from "./ast/classes/index.js";
|
|
6
|
+
import { ValidToken } from "./ast/classes/ValidToken.js";
|
|
6
7
|
import { VariableNode } from "./ast/classes/VariableNode.js";
|
|
7
8
|
import * as handle from "./ast/handlers.js";
|
|
8
9
|
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
10
|
import type { ParserResults } from "./types/ast.js";
|
|
18
|
-
import { type AnyToken, type Position, TOKEN_TYPE } from "./types/index.js";
|
|
11
|
+
import { type AnyToken, type Completion, type Position, type Suggestion, TOKEN_TYPE } from "./types/index.js";
|
|
19
12
|
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
13
|
/**
|
|
33
14
|
* Creates the main parser class which handles all functionality (evaluation, validation, etc).
|
|
34
15
|
*/
|
|
@@ -136,5 +117,95 @@ export declare class Parser<T extends {} = {}> {
|
|
|
136
117
|
ruleBracketL(): ValidToken<TOKEN_TYPE.BRACKETL> | undefined;
|
|
137
118
|
ruleBracketR(): ValidToken<TOKEN_TYPE.BRACKETR> | undefined;
|
|
138
119
|
ruleNot(): ValidToken<TOKEN_TYPE.NOT> | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* Given a list of @see Suggestion entries, the parser options, and a list of variables, prefixes, operators, etc, and the preferred quote type, returns a list of @see Completion entries.
|
|
122
|
+
*
|
|
123
|
+
* It takes care of suggesting the correct delimiters for fixes, quoting variables/prefixes if it would not be possible to parse them unquoted, and separating symbol from non-symbol (word) operators.
|
|
124
|
+
*
|
|
125
|
+
* Does not add whitespace or group requirements. The suggestion information is still in the completion if you wish to show these. But they should not be added to the completion value if using @see autoreplace which will take care of it.
|
|
126
|
+
*
|
|
127
|
+
* Is not aware of existing values. You will have to use @see getCursorInfo to understand the context in which the suggestion was made, so that, for example, you could filter out used regex flags.
|
|
128
|
+
*/
|
|
129
|
+
autocomplete(suggestions: Suggestion[], { values, arrayValues, variables, prefixes, properties, expandedPropertyOperators, customPropertyOperators, keywords, regexFlags, quote, }?: Partial<Record<"variables" | "values" | "arrayValues" | "prefixes" | "properties" | "regexFlags" | "expandedPropertyOperators" | "customPropertyOperators", string[]>> & {
|
|
130
|
+
quote?: string;
|
|
131
|
+
keywords?: FullParserOptions<T>["keywords"];
|
|
132
|
+
}): Completion[];
|
|
133
|
+
/**
|
|
134
|
+
* Given the input string and a @see Completion consisting of the value of the replacement and a @see Suggestion entry, returns the replacement string and the new position of the cursor.
|
|
135
|
+
*
|
|
136
|
+
* The value passed should be escaped if it's needed (or quoted). @see autocomplete already takes care of quoting variables if you're using it.
|
|
137
|
+
*/
|
|
138
|
+
autoreplace(input: string, { value, suggestion }: Completion): {
|
|
139
|
+
replacement: string;
|
|
140
|
+
cursor: number;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Returns a list of suggestions ( @see Suggestion ). These are not a list of autocomplete entries (with values), but more a list of entries describing possible suggestions. This list can then be passed to @see Parser["autocomplete"] to build a list to show users, from which you can then pick an entry to pass to @see Parser["autoreplace"] .
|
|
144
|
+
*
|
|
145
|
+
* The list returned is "unsorted", but there is still some logic to the order. Fixes for errors are suggested first, in the order returned by @see getSurroundingErrors. Regular suggestions come after in the following order: prefixes if enabled, variables, boolean symbol operators, then boolean word operators.
|
|
146
|
+
*
|
|
147
|
+
* When the cursor is between two tokens that have possible suggestions, only suggestion types for the token before are returned. For example:
|
|
148
|
+
*
|
|
149
|
+
* ```js
|
|
150
|
+
* prop="val"
|
|
151
|
+
* prop|="val" //returns a property suggestions to replace `prop`
|
|
152
|
+
* prop=|"val" //returns a custom operator suggestion to replace `=`
|
|
153
|
+
* prop="|val" //returns a value suggestion
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* And if there are no suggestions for the previous token but there are for the next ones, they are suggested:
|
|
157
|
+
* ```js
|
|
158
|
+
* prop:op:"val"
|
|
159
|
+
* prop:op|:"val" // returns an operator suggestion
|
|
160
|
+
* prop:op:|"val" // returns a value suggestion
|
|
161
|
+
* prop:op|"val" // returns a suggestion for the missing separator
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
autosuggest(input: string, ast: ParserResults, index: number): Suggestion[];
|
|
165
|
+
/**
|
|
166
|
+
* Evaluates a {@link Parser.normalize normalized} ast.
|
|
167
|
+
*
|
|
168
|
+
* How the ast is evaluated for different operators can be controlled by the {@link ParserOptions.valueComparer valueComparer} option.
|
|
169
|
+
*/
|
|
170
|
+
evaluate(ast: Expression<any, any> | Condition<any, any>, context: Record<string, any>): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Given the set of indexes returned by {@link getBestIndex}, the set of existing indexes in a database, and the index to sort by\*, will return a list of the best/shortest sets of indexes.
|
|
173
|
+
*
|
|
174
|
+
* For example, given the query `a && b && c`, `getBestIndex` will return `[Set(a), Set(b)]`.
|
|
175
|
+
*
|
|
176
|
+
* Suppose we have indexes on all the variables and that the user wants to sort by `c`, this function will return [`Set(c)`].
|
|
177
|
+
*
|
|
178
|
+
* Suppose instead we have indexes only on `a` and `b` and that the user wants to sort by `c`, this function will return [`Set(a), Set(b)`]. Either can be picked by some other criteria (e.g. size of the indexes). Sort should then be done in memory.
|
|
179
|
+
*
|
|
180
|
+
* And then finally, if we have no existing indexes on any of the variables, the function will return `[]`.
|
|
181
|
+
*
|
|
182
|
+
* Note: This is a simple algorithm and is not designed to take into account instances where entries are indexed by two or more properties as their keys (i.e. multicolumn indexes).
|
|
183
|
+
*
|
|
184
|
+
* \* If the sort index is not in the list of existing indexes it is not taken into account.
|
|
185
|
+
*/
|
|
186
|
+
getBestIndexes(indexes: Set<string>[], existing: Set<string> | Map<string, number>, sortIndex?: string): Set<string>[];
|
|
187
|
+
/**
|
|
188
|
+
* Returns a list of the different sets of keys that need to be indexed to run a normalized query on a database and hit an existing index.
|
|
189
|
+
*
|
|
190
|
+
* For example, the expression `a || b` requires both `a` AND `b` be indexed to use an index. The function would return `[Set(a, b)]`.
|
|
191
|
+
*
|
|
192
|
+
* On the otherhand, the expression `a && b` only requires `a` OR `b` to be indexed (`[Set(a), Set(b)]`) If at least one is indexed, the rest of the filtering can be done in memory. There is no need to in memory filter the entire database.
|
|
193
|
+
*
|
|
194
|
+
* Now take a more complicated query like `(a && b) || (a && c)`. This only requires `a` be indexed, or both `b` AND `c`. (`[Set(a)], [Set(b), Set(c)]`).
|
|
195
|
+
*
|
|
196
|
+
* Queries like `(a || b) && (a || c)` would require all the variables to be indexed `[Set(a), Set(b), Set(c)]`.
|
|
197
|
+
*/
|
|
198
|
+
getIndexes(ast: Condition | Expression): Set<string>[];
|
|
199
|
+
/**
|
|
200
|
+
* Normalizes the ast by applying {@link GroupNode GroupNodes} and converting {@link ConditionNode ConditionNodes} to {@link NormalizedConditionNode NormalizedConditionNodes}.
|
|
201
|
+
*/
|
|
202
|
+
normalize<TType extends string, TValue>(ast: ParserResults): Condition<TType, TValue> | Expression<TType, TValue>;
|
|
203
|
+
/**
|
|
204
|
+
* Allows pre-validating ASTs for syntax highlighting purposes.
|
|
205
|
+
* Works similar to evaluate. Internally it will use the prefixApplier, keyParser, and valueValidator (instead of comparer).
|
|
206
|
+
*
|
|
207
|
+
* The context does not need to be passed. If it's not passed, the function will not attempt to get the values (so it will not error) and the contextValue param of the valueValidator will be undefined.
|
|
208
|
+
*/
|
|
209
|
+
validate(ast: ParserResults, context?: Record<string, any>): (Position & T)[];
|
|
139
210
|
}
|
|
140
211
|
//# sourceMappingURL=Parser.d.ts.map
|
package/dist/Parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"}
|