xlucene-parser 1.10.1 → 1.10.3
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/src/cached-parser.d.ts +63 -0
- package/dist/src/cached-parser.d.ts.map +1 -1
- package/dist/src/cached-parser.js +63 -0
- package/dist/src/cached-parser.js.map +1 -1
- package/dist/src/functions/index.d.ts +31 -0
- package/dist/src/functions/index.d.ts.map +1 -1
- package/dist/src/functions/index.js +31 -0
- package/dist/src/functions/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +161 -2
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/interfaces.js +6 -0
- package/dist/src/interfaces.js.map +1 -1
- package/dist/src/parser.d.ts +219 -14
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +219 -14
- package/dist/src/parser.js.map +1 -1
- package/dist/src/utils.d.ts +39 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +28 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +2 -2
package/dist/src/parser.d.ts
CHANGED
|
@@ -1,40 +1,245 @@
|
|
|
1
1
|
import { xLuceneTypeConfig, xLuceneVariables } from '@terascope/types';
|
|
2
2
|
import * as i from './interfaces.js';
|
|
3
3
|
/**
|
|
4
|
-
* Parse a xLucene query
|
|
4
|
+
* Parse a xLucene query and provide methods to traverse and manipulate the resulting AST.
|
|
5
|
+
*
|
|
6
|
+
* The Parser class is the main entry point for parsing xLucene queries. It converts
|
|
7
|
+
* query strings into an Abstract Syntax Tree (AST) that can be traversed, validated,
|
|
8
|
+
* and transformed.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const parser = new Parser('name:John AND age:>=25');
|
|
13
|
+
* console.log(parser.ast); // Access the parsed AST
|
|
14
|
+
*
|
|
15
|
+
* // Iterate over term nodes
|
|
16
|
+
* parser.forTermTypes((node) => {
|
|
17
|
+
* console.log(node.field, node.value);
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Resolve variables
|
|
21
|
+
* const resolved = parser.resolveVariables({ minAge: 25 });
|
|
22
|
+
* ```
|
|
5
23
|
*/
|
|
6
24
|
export declare class Parser {
|
|
7
25
|
readonly ast: i.Node;
|
|
8
26
|
readonly query: string;
|
|
9
27
|
readonly typeConfig: xLuceneTypeConfig;
|
|
10
28
|
readonly filterNilVariables: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new Parser instance.
|
|
31
|
+
*
|
|
32
|
+
* @param { string } query - The xLucene query string to parse
|
|
33
|
+
* @param { i.ParserOptions } options - Optional configuration for parsing behavior
|
|
34
|
+
* @param { xLuceneTypeConfig } options.type_config - Field type configuration for coercion
|
|
35
|
+
* @param { boolean } options.filterNilVariables - Filter out nodes with undefined variables
|
|
36
|
+
* @param { xLuceneVariables } options.variables - Variable values for resolution
|
|
37
|
+
* @param { i.Node } _overrideNode - Internal parameter for creating parser with existing AST
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Basic parsing
|
|
42
|
+
* const parser = new Parser('name:John');
|
|
43
|
+
*
|
|
44
|
+
* // With type configuration
|
|
45
|
+
* const parser = new Parser('age:25', {
|
|
46
|
+
* type_config: { age: 'integer' }
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* // With variable filtering
|
|
50
|
+
* const parser = new Parser('name:$username', {
|
|
51
|
+
* filterNilVariables: true,
|
|
52
|
+
* variables: { username: 'John' }
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
11
56
|
constructor(query: string, options?: i.ParserOptions, _overrideNode?: i.Node);
|
|
12
|
-
filterNodes(ast: i.Node, fn: (node: i.Node, parent?: i.Node) => boolean): i.Node;
|
|
13
57
|
/**
|
|
14
|
-
* Recursively
|
|
58
|
+
* Recursively filters nodes in an AST based on a predicate function. Handles logical groups,
|
|
59
|
+
* conjunctions, negations, ranges, and function nodes while preserving tree structure and
|
|
60
|
+
* automatically simplifying when possible (e.g., unwrapping single-node conjunctions).
|
|
61
|
+
*
|
|
62
|
+
* @param {i.Node} ast - The root AST node to filter
|
|
63
|
+
* @param {function(i.Node, i.Node=): boolean} fn - Predicate function that receives
|
|
64
|
+
* (node, parent) and returns true to keep the node, false to remove it
|
|
65
|
+
*
|
|
66
|
+
* @returns {i.Node} New filtered AST containing only nodes that pass the filter criteria.
|
|
67
|
+
* Returns empty node if all nodes are filtered out.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* // Filter out unwanted fields
|
|
71
|
+
* const filtered = filterNodes(ast, (node) => node.field !== 'unwanted');
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* // Filter based on parent context
|
|
75
|
+
* const filtered = filterNodes(ast, (node, parent) =>
|
|
76
|
+
* !parent || utils.isLogicalGroup(parent)
|
|
77
|
+
* );
|
|
15
78
|
*/
|
|
79
|
+
filterNodes(ast: i.Node, fn: (node: i.Node, parent?: i.Node) => boolean): i.Node;
|
|
80
|
+
/**
|
|
81
|
+
* Recursively iterate over all nodes of the specified types in the AST.
|
|
82
|
+
*
|
|
83
|
+
* This method performs a depth-first traversal of the AST, calling the callback
|
|
84
|
+
* function for each node whose type matches one of the specified types.
|
|
85
|
+
*
|
|
86
|
+
* @param types - Array of NodeType values to match
|
|
87
|
+
* @param cb - Callback function called for each matching node
|
|
88
|
+
* @param skipFunctionParams - Whether to skip traversing function parameters
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Find all term and wildcard nodes
|
|
93
|
+
* parser.forTypes([NodeType.Term, NodeType.Wildcard], (node) => {
|
|
94
|
+
* console.log('Found node:', node.type);
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* // Find logical groups, skipping function parameters
|
|
98
|
+
* parser.forTypes([NodeType.LogicalGroup], (node) => {
|
|
99
|
+
* console.log('Logical group with', node.flow.length, 'conjunctions');
|
|
100
|
+
* }, true);
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
16
103
|
forTypes<T extends i.NodeType[] | readonly i.NodeType[]>(types: T, cb: (node: i.Node) => void, skipFunctionParams?: boolean): void;
|
|
17
104
|
/**
|
|
18
|
-
* Recursively
|
|
19
|
-
|
|
105
|
+
* Recursively walk through every node in the AST and call the callback function for each node.
|
|
106
|
+
*
|
|
107
|
+
* This method performs a depth-first traversal of the entire AST, visiting every node
|
|
108
|
+
* exactly once. Unlike `forTypes()` which filters by node type, this method calls the
|
|
109
|
+
* callback for all nodes regardless of their type.
|
|
110
|
+
*
|
|
111
|
+
* @param cb - Callback function called for each node in the AST
|
|
112
|
+
* @param cb.node - The current node being visited
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Log all nodes in the AST
|
|
117
|
+
* parser.walkAST((node) => {
|
|
118
|
+
* console.log(`Node type: ${node.type}`);
|
|
119
|
+
* });
|
|
120
|
+
*
|
|
121
|
+
* // Search for node properties
|
|
122
|
+
* parser.walkAST((node) => {
|
|
123
|
+
* if (isFunctionNode(node) && node.name === 'knn') {
|
|
124
|
+
* hasKNN = true;
|
|
125
|
+
* return;
|
|
126
|
+
* }
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
20
130
|
walkAST(cb: (node: i.Node) => void): void;
|
|
21
131
|
/**
|
|
22
|
-
* Iterate over all
|
|
23
|
-
|
|
132
|
+
* Iterate over all term-like nodes in the AST.
|
|
133
|
+
*
|
|
134
|
+
* Term-like nodes include: Term, Regexp, Range, Wildcard, Function, and TermList.
|
|
135
|
+
* This is a convenience method that filters to nodes representing searchable terms.
|
|
136
|
+
*
|
|
137
|
+
* @param cb - Callback function called for each term-like node
|
|
138
|
+
* @param skipFunctionParams - Whether to skip traversing function parameters (default: true)
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // Process all searchable terms
|
|
143
|
+
* parser.forTermTypes((node) => {
|
|
144
|
+
* if (node.field) {
|
|
145
|
+
* console.log(`Field: ${node.field}`);
|
|
146
|
+
* }
|
|
147
|
+
* });
|
|
148
|
+
*
|
|
149
|
+
* // Include function parameters in traversal
|
|
150
|
+
* parser.forTermTypes((node) => {
|
|
151
|
+
* console.log('Term type:', node.type);
|
|
152
|
+
* }, false);
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
24
155
|
forTermTypes(cb: (node: i.TermLikeNode) => void, skipFunctionParams?: boolean): void;
|
|
25
156
|
/**
|
|
26
|
-
* Iterate over all
|
|
27
|
-
*
|
|
28
|
-
|
|
157
|
+
* Iterate over all field values from term-like nodes.
|
|
158
|
+
*
|
|
159
|
+
* This method extracts and processes all field values from nodes that contain
|
|
160
|
+
* searchable terms. It's particularly useful for validating values and variables,
|
|
161
|
+
* or for collecting all values used in a query.
|
|
162
|
+
*
|
|
163
|
+
* @param cb - Callback function called for each field value
|
|
164
|
+
* @param cb.value - The field value (can be a literal value or variable reference)
|
|
165
|
+
* @param cb.node - The parent node containing this value
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* // Collect all literal values
|
|
170
|
+
* const values: any[] = [];
|
|
171
|
+
* parser.forEachFieldValue((value, node) => {
|
|
172
|
+
* if (value.type === 'value') {
|
|
173
|
+
* values.push(value.value);
|
|
174
|
+
* }
|
|
175
|
+
* });
|
|
176
|
+
*
|
|
177
|
+
* // Validate variable references
|
|
178
|
+
* parser.forEachFieldValue((value, node) => {
|
|
179
|
+
* if (value.type === 'variable') {
|
|
180
|
+
* console.log(`Variable ${value.value} used in field ${node.field}`);
|
|
181
|
+
* }
|
|
182
|
+
* });
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
29
185
|
forEachFieldValue(cb: (value: i.FieldValue<any>, node: i.TermLikeNode) => void): void;
|
|
30
186
|
forEachTermNode(fieldValidator: (field: string) => void, valueValidator: (fieldValue: i.FieldValue<any>) => void): void;
|
|
31
187
|
/**
|
|
32
|
-
* Validate and resolve the
|
|
33
|
-
|
|
188
|
+
* Validate and resolve variables in the query, returning a new Parser instance.
|
|
189
|
+
*
|
|
190
|
+
* This method processes all variable references in the AST, replacing them with
|
|
191
|
+
* their actual values. Variable references use `$variableName` syntax, and scoped
|
|
192
|
+
* variables use `@variableName` syntax.
|
|
193
|
+
*
|
|
194
|
+
* @param variables - Object mapping variable names to their values
|
|
195
|
+
* @returns A new Parser instance with resolved variables
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* // Original query with variables
|
|
200
|
+
* const parser = new Parser('name:$username AND age:>=$minAge');
|
|
201
|
+
*
|
|
202
|
+
* // Resolve variables
|
|
203
|
+
* const resolved = parser.resolveVariables({
|
|
204
|
+
* username: 'John',
|
|
205
|
+
* minAge: 25
|
|
206
|
+
* });
|
|
207
|
+
*
|
|
208
|
+
* // Resolved query equivalent to: name:John AND age:>=25
|
|
209
|
+
* ```
|
|
210
|
+
*
|
|
211
|
+
* @throws {TSError} If variables object is invalid
|
|
212
|
+
*/
|
|
34
213
|
resolveVariables(variables: xLuceneVariables): Parser;
|
|
35
214
|
/**
|
|
36
|
-
*
|
|
37
|
-
|
|
215
|
+
* Transform the AST by applying a mapping function to each node.
|
|
216
|
+
*
|
|
217
|
+
* This method performs a deep traversal of the AST, applying the provided
|
|
218
|
+
* function to each node and rebuilding the tree with the results. The function
|
|
219
|
+
* receives each node and its parent, and should return a transformed node.
|
|
220
|
+
*
|
|
221
|
+
* @param fn - Function to transform each node
|
|
222
|
+
* @param fn.node - The current node being processed
|
|
223
|
+
* @param fn.parent - The parent node (if any)
|
|
224
|
+
* @returns The transformed AST root node
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```typescript
|
|
228
|
+
* // Transform all string values to lowercase
|
|
229
|
+
* const transformedAST = parser.mapNode((node, parent) => {
|
|
230
|
+
* if (node.type === 'term' && node.value.type === 'value') {
|
|
231
|
+
* return {
|
|
232
|
+
* ...node,
|
|
233
|
+
* value: {
|
|
234
|
+
* ...node.value,
|
|
235
|
+
* value: String(node.value.value).toLowerCase()
|
|
236
|
+
* }
|
|
237
|
+
* };
|
|
238
|
+
* }
|
|
239
|
+
* return node;
|
|
240
|
+
* });
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
38
243
|
mapNode(fn: (node: i.Node, parent?: i.Node) => i.Node): i.Node;
|
|
39
244
|
}
|
|
40
245
|
//# sourceMappingURL=parser.d.ts.map
|
package/dist/src/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAOrC
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAOrC;;;;;;;;;;;;;;;;;;;;EAoBE;AACF,qBAAa,MAAM;IACf,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAErC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;gBAEC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,CAAC,CAAC,aAAa,EACzB,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI;IA+D1B;;;;;;;;;;;;;;;;;;;;;MAqBE;IACF,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC,IAAI;IAwHhF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,EACnD,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,kBAAkB,UAAQ,GACjE,IAAI;IAmCP;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI;IA0BlC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,CACR,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,KAAK,IAAI,EAClC,kBAAkB,UAAO,GAC1B,IAAI;IAQP;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,iBAAiB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,KAAK,IAAI,GAAG,IAAI;IAsBrF,eAAe,CACX,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACvC,cAAc,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,GACxD,IAAI;IA+DP;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM;IA8BrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;CAkCjE"}
|
package/dist/src/parser.js
CHANGED
|
@@ -5,13 +5,58 @@ import * as i from './interfaces.js';
|
|
|
5
5
|
import * as utils from './utils.js';
|
|
6
6
|
const termTypes = new Set(utils.termTypes.filter((type) => (type !== i.NodeType.Range && type !== i.NodeType.Function)));
|
|
7
7
|
/**
|
|
8
|
-
* Parse a xLucene query
|
|
8
|
+
* Parse a xLucene query and provide methods to traverse and manipulate the resulting AST.
|
|
9
|
+
*
|
|
10
|
+
* The Parser class is the main entry point for parsing xLucene queries. It converts
|
|
11
|
+
* query strings into an Abstract Syntax Tree (AST) that can be traversed, validated,
|
|
12
|
+
* and transformed.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const parser = new Parser('name:John AND age:>=25');
|
|
17
|
+
* console.log(parser.ast); // Access the parsed AST
|
|
18
|
+
*
|
|
19
|
+
* // Iterate over term nodes
|
|
20
|
+
* parser.forTermTypes((node) => {
|
|
21
|
+
* console.log(node.field, node.value);
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Resolve variables
|
|
25
|
+
* const resolved = parser.resolveVariables({ minAge: 25 });
|
|
26
|
+
* ```
|
|
9
27
|
*/
|
|
10
28
|
export class Parser {
|
|
11
29
|
ast;
|
|
12
30
|
query;
|
|
13
31
|
typeConfig;
|
|
14
32
|
filterNilVariables;
|
|
33
|
+
/**
|
|
34
|
+
* Create a new Parser instance.
|
|
35
|
+
*
|
|
36
|
+
* @param { string } query - The xLucene query string to parse
|
|
37
|
+
* @param { i.ParserOptions } options - Optional configuration for parsing behavior
|
|
38
|
+
* @param { xLuceneTypeConfig } options.type_config - Field type configuration for coercion
|
|
39
|
+
* @param { boolean } options.filterNilVariables - Filter out nodes with undefined variables
|
|
40
|
+
* @param { xLuceneVariables } options.variables - Variable values for resolution
|
|
41
|
+
* @param { i.Node } _overrideNode - Internal parameter for creating parser with existing AST
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // Basic parsing
|
|
46
|
+
* const parser = new Parser('name:John');
|
|
47
|
+
*
|
|
48
|
+
* // With type configuration
|
|
49
|
+
* const parser = new Parser('age:25', {
|
|
50
|
+
* type_config: { age: 'integer' }
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* // With variable filtering
|
|
54
|
+
* const parser = new Parser('name:$username', {
|
|
55
|
+
* filterNilVariables: true,
|
|
56
|
+
* variables: { username: 'John' }
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
15
60
|
constructor(query, options, _overrideNode) {
|
|
16
61
|
this.query = trim(query || '');
|
|
17
62
|
this.filterNilVariables = !!options?.filterNilVariables;
|
|
@@ -70,6 +115,28 @@ export class Parser {
|
|
|
70
115
|
});
|
|
71
116
|
}
|
|
72
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Recursively filters nodes in an AST based on a predicate function. Handles logical groups,
|
|
120
|
+
* conjunctions, negations, ranges, and function nodes while preserving tree structure and
|
|
121
|
+
* automatically simplifying when possible (e.g., unwrapping single-node conjunctions).
|
|
122
|
+
*
|
|
123
|
+
* @param {i.Node} ast - The root AST node to filter
|
|
124
|
+
* @param {function(i.Node, i.Node=): boolean} fn - Predicate function that receives
|
|
125
|
+
* (node, parent) and returns true to keep the node, false to remove it
|
|
126
|
+
*
|
|
127
|
+
* @returns {i.Node} New filtered AST containing only nodes that pass the filter criteria.
|
|
128
|
+
* Returns empty node if all nodes are filtered out.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* // Filter out unwanted fields
|
|
132
|
+
* const filtered = filterNodes(ast, (node) => node.field !== 'unwanted');
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* // Filter based on parent context
|
|
136
|
+
* const filtered = filterNodes(ast, (node, parent) =>
|
|
137
|
+
* !parent || utils.isLogicalGroup(parent)
|
|
138
|
+
* );
|
|
139
|
+
*/
|
|
73
140
|
filterNodes(ast, fn) {
|
|
74
141
|
const filterNode = (ogNode, parent) => {
|
|
75
142
|
const clone = cloneDeep(ogNode);
|
|
@@ -176,8 +243,28 @@ export class Parser {
|
|
|
176
243
|
return filterNode(ast);
|
|
177
244
|
}
|
|
178
245
|
/**
|
|
179
|
-
* Recursively iterate over all
|
|
180
|
-
|
|
246
|
+
* Recursively iterate over all nodes of the specified types in the AST.
|
|
247
|
+
*
|
|
248
|
+
* This method performs a depth-first traversal of the AST, calling the callback
|
|
249
|
+
* function for each node whose type matches one of the specified types.
|
|
250
|
+
*
|
|
251
|
+
* @param types - Array of NodeType values to match
|
|
252
|
+
* @param cb - Callback function called for each matching node
|
|
253
|
+
* @param skipFunctionParams - Whether to skip traversing function parameters
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```typescript
|
|
257
|
+
* // Find all term and wildcard nodes
|
|
258
|
+
* parser.forTypes([NodeType.Term, NodeType.Wildcard], (node) => {
|
|
259
|
+
* console.log('Found node:', node.type);
|
|
260
|
+
* });
|
|
261
|
+
*
|
|
262
|
+
* // Find logical groups, skipping function parameters
|
|
263
|
+
* parser.forTypes([NodeType.LogicalGroup], (node) => {
|
|
264
|
+
* console.log('Logical group with', node.flow.length, 'conjunctions');
|
|
265
|
+
* }, true);
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
181
268
|
forTypes(types, cb, skipFunctionParams = false) {
|
|
182
269
|
const walkNode = (node) => {
|
|
183
270
|
if (types.includes(node.type)) {
|
|
@@ -208,8 +295,31 @@ export class Parser {
|
|
|
208
295
|
walkNode(this.ast);
|
|
209
296
|
}
|
|
210
297
|
/**
|
|
211
|
-
* Recursively
|
|
212
|
-
|
|
298
|
+
* Recursively walk through every node in the AST and call the callback function for each node.
|
|
299
|
+
*
|
|
300
|
+
* This method performs a depth-first traversal of the entire AST, visiting every node
|
|
301
|
+
* exactly once. Unlike `forTypes()` which filters by node type, this method calls the
|
|
302
|
+
* callback for all nodes regardless of their type.
|
|
303
|
+
*
|
|
304
|
+
* @param cb - Callback function called for each node in the AST
|
|
305
|
+
* @param cb.node - The current node being visited
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```typescript
|
|
309
|
+
* // Log all nodes in the AST
|
|
310
|
+
* parser.walkAST((node) => {
|
|
311
|
+
* console.log(`Node type: ${node.type}`);
|
|
312
|
+
* });
|
|
313
|
+
*
|
|
314
|
+
* // Search for node properties
|
|
315
|
+
* parser.walkAST((node) => {
|
|
316
|
+
* if (isFunctionNode(node) && node.name === 'knn') {
|
|
317
|
+
* hasKNN = true;
|
|
318
|
+
* return;
|
|
319
|
+
* }
|
|
320
|
+
* });
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
213
323
|
walkAST(cb) {
|
|
214
324
|
const walkNode = (node) => {
|
|
215
325
|
cb(node);
|
|
@@ -232,15 +342,61 @@ export class Parser {
|
|
|
232
342
|
walkNode(this.ast);
|
|
233
343
|
}
|
|
234
344
|
/**
|
|
235
|
-
* Iterate over all
|
|
236
|
-
|
|
345
|
+
* Iterate over all term-like nodes in the AST.
|
|
346
|
+
*
|
|
347
|
+
* Term-like nodes include: Term, Regexp, Range, Wildcard, Function, and TermList.
|
|
348
|
+
* This is a convenience method that filters to nodes representing searchable terms.
|
|
349
|
+
*
|
|
350
|
+
* @param cb - Callback function called for each term-like node
|
|
351
|
+
* @param skipFunctionParams - Whether to skip traversing function parameters (default: true)
|
|
352
|
+
*
|
|
353
|
+
* @example
|
|
354
|
+
* ```typescript
|
|
355
|
+
* // Process all searchable terms
|
|
356
|
+
* parser.forTermTypes((node) => {
|
|
357
|
+
* if (node.field) {
|
|
358
|
+
* console.log(`Field: ${node.field}`);
|
|
359
|
+
* }
|
|
360
|
+
* });
|
|
361
|
+
*
|
|
362
|
+
* // Include function parameters in traversal
|
|
363
|
+
* parser.forTermTypes((node) => {
|
|
364
|
+
* console.log('Term type:', node.type);
|
|
365
|
+
* }, false);
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
237
368
|
forTermTypes(cb, skipFunctionParams = true) {
|
|
238
369
|
this.forTypes(utils.termTypes, cb, skipFunctionParams);
|
|
239
370
|
}
|
|
240
371
|
/**
|
|
241
|
-
* Iterate over all
|
|
242
|
-
*
|
|
243
|
-
|
|
372
|
+
* Iterate over all field values from term-like nodes.
|
|
373
|
+
*
|
|
374
|
+
* This method extracts and processes all field values from nodes that contain
|
|
375
|
+
* searchable terms. It's particularly useful for validating values and variables,
|
|
376
|
+
* or for collecting all values used in a query.
|
|
377
|
+
*
|
|
378
|
+
* @param cb - Callback function called for each field value
|
|
379
|
+
* @param cb.value - The field value (can be a literal value or variable reference)
|
|
380
|
+
* @param cb.node - The parent node containing this value
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* ```typescript
|
|
384
|
+
* // Collect all literal values
|
|
385
|
+
* const values: any[] = [];
|
|
386
|
+
* parser.forEachFieldValue((value, node) => {
|
|
387
|
+
* if (value.type === 'value') {
|
|
388
|
+
* values.push(value.value);
|
|
389
|
+
* }
|
|
390
|
+
* });
|
|
391
|
+
*
|
|
392
|
+
* // Validate variable references
|
|
393
|
+
* parser.forEachFieldValue((value, node) => {
|
|
394
|
+
* if (value.type === 'variable') {
|
|
395
|
+
* console.log(`Variable ${value.value} used in field ${node.field}`);
|
|
396
|
+
* }
|
|
397
|
+
* });
|
|
398
|
+
* ```
|
|
399
|
+
*/
|
|
244
400
|
forEachFieldValue(cb) {
|
|
245
401
|
this.forTermTypes((node) => {
|
|
246
402
|
if (utils.isFunctionNode(node))
|
|
@@ -317,8 +473,31 @@ export class Parser {
|
|
|
317
473
|
walkNode(this.ast);
|
|
318
474
|
}
|
|
319
475
|
/**
|
|
320
|
-
* Validate and resolve the
|
|
321
|
-
|
|
476
|
+
* Validate and resolve variables in the query, returning a new Parser instance.
|
|
477
|
+
*
|
|
478
|
+
* This method processes all variable references in the AST, replacing them with
|
|
479
|
+
* their actual values. Variable references use `$variableName` syntax, and scoped
|
|
480
|
+
* variables use `@variableName` syntax.
|
|
481
|
+
*
|
|
482
|
+
* @param variables - Object mapping variable names to their values
|
|
483
|
+
* @returns A new Parser instance with resolved variables
|
|
484
|
+
*
|
|
485
|
+
* @example
|
|
486
|
+
* ```typescript
|
|
487
|
+
* // Original query with variables
|
|
488
|
+
* const parser = new Parser('name:$username AND age:>=$minAge');
|
|
489
|
+
*
|
|
490
|
+
* // Resolve variables
|
|
491
|
+
* const resolved = parser.resolveVariables({
|
|
492
|
+
* username: 'John',
|
|
493
|
+
* minAge: 25
|
|
494
|
+
* });
|
|
495
|
+
*
|
|
496
|
+
* // Resolved query equivalent to: name:John AND age:>=25
|
|
497
|
+
* ```
|
|
498
|
+
*
|
|
499
|
+
* @throws {TSError} If variables object is invalid
|
|
500
|
+
*/
|
|
322
501
|
resolveVariables(variables) {
|
|
323
502
|
const validatedVariables = utils.validateVariables(variables);
|
|
324
503
|
const ast = this.mapNode((node, parent) => {
|
|
@@ -340,8 +519,34 @@ export class Parser {
|
|
|
340
519
|
}, ast);
|
|
341
520
|
}
|
|
342
521
|
/**
|
|
343
|
-
*
|
|
344
|
-
|
|
522
|
+
* Transform the AST by applying a mapping function to each node.
|
|
523
|
+
*
|
|
524
|
+
* This method performs a deep traversal of the AST, applying the provided
|
|
525
|
+
* function to each node and rebuilding the tree with the results. The function
|
|
526
|
+
* receives each node and its parent, and should return a transformed node.
|
|
527
|
+
*
|
|
528
|
+
* @param fn - Function to transform each node
|
|
529
|
+
* @param fn.node - The current node being processed
|
|
530
|
+
* @param fn.parent - The parent node (if any)
|
|
531
|
+
* @returns The transformed AST root node
|
|
532
|
+
*
|
|
533
|
+
* @example
|
|
534
|
+
* ```typescript
|
|
535
|
+
* // Transform all string values to lowercase
|
|
536
|
+
* const transformedAST = parser.mapNode((node, parent) => {
|
|
537
|
+
* if (node.type === 'term' && node.value.type === 'value') {
|
|
538
|
+
* return {
|
|
539
|
+
* ...node,
|
|
540
|
+
* value: {
|
|
541
|
+
* ...node.value,
|
|
542
|
+
* value: String(node.value.value).toLowerCase()
|
|
543
|
+
* }
|
|
544
|
+
* };
|
|
545
|
+
* }
|
|
546
|
+
* return node;
|
|
547
|
+
* });
|
|
548
|
+
* ```
|
|
549
|
+
*/
|
|
345
550
|
mapNode(fn) {
|
|
346
551
|
const mapNode = (ogNode, parent) => {
|
|
347
552
|
const node = fn({ ...ogNode }, parent);
|
package/dist/src/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"}
|