astronomical 2.0.0 → 2.1.1-rc.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/lib/cjs/index.js +223 -74
- package/lib/cjs/parseQuery.js +109 -65
- package/lib/cjs/types/index.d.ts.map +1 -1
- package/lib/cjs/types/parseQuery.d.ts +36 -7
- package/lib/cjs/types/parseQuery.d.ts.map +1 -1
- package/lib/esm/{index.mjs → index.js} +223 -74
- package/lib/esm/parseQuery.js +109 -65
- package/lib/esm/types/index.d.ts.map +1 -1
- package/lib/esm/types/parseQuery.d.ts +36 -7
- package/lib/esm/types/parseQuery.d.ts.map +1 -1
- package/package.json +2 -2
package/lib/cjs/parseQuery.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeType = exports.TokenType = void 0;
|
|
3
4
|
exports.tokenize = tokenize;
|
|
4
5
|
exports.parse = parse;
|
|
5
6
|
const _1 = require(".");
|
|
@@ -10,11 +11,48 @@ const log = debugLogEnabled ? {
|
|
|
10
11
|
console.debug(...args);
|
|
11
12
|
}
|
|
12
13
|
} : undefined;
|
|
13
|
-
|
|
14
|
+
// Optimize: create supportedIdentifiers directly instead of Object.fromEntries + map
|
|
15
|
+
const visitorKeys = Object.keys(nodeutils_1.VISITOR_KEYS);
|
|
16
|
+
const supportedIdentifiers = {};
|
|
17
|
+
for (let i = 0; i < visitorKeys.length; i++) {
|
|
18
|
+
const k = visitorKeys[i];
|
|
19
|
+
supportedIdentifiers[k] = k;
|
|
20
|
+
}
|
|
21
|
+
var TokenType;
|
|
22
|
+
(function (TokenType) {
|
|
23
|
+
TokenType[TokenType["IDENTIFIER"] = 0] = "IDENTIFIER";
|
|
24
|
+
TokenType[TokenType["WILDCARD"] = 1] = "WILDCARD";
|
|
25
|
+
TokenType[TokenType["DESCENDANT"] = 2] = "DESCENDANT";
|
|
26
|
+
TokenType[TokenType["CHILD"] = 3] = "CHILD";
|
|
27
|
+
TokenType[TokenType["PARENT"] = 4] = "PARENT";
|
|
28
|
+
TokenType[TokenType["AND"] = 5] = "AND";
|
|
29
|
+
TokenType[TokenType["OR"] = 6] = "OR";
|
|
30
|
+
TokenType[TokenType["EQUALS"] = 7] = "EQUALS";
|
|
31
|
+
TokenType[TokenType["LITERAL"] = 8] = "LITERAL";
|
|
32
|
+
TokenType[TokenType["ATTRIBUTESELECTOR"] = 9] = "ATTRIBUTESELECTOR";
|
|
33
|
+
TokenType[TokenType["RESOLVESELECTOR"] = 10] = "RESOLVESELECTOR";
|
|
34
|
+
TokenType[TokenType["BINDINGSELECTOR"] = 11] = "BINDINGSELECTOR";
|
|
35
|
+
TokenType[TokenType["FILTERBEGIN"] = 12] = "FILTERBEGIN";
|
|
36
|
+
TokenType[TokenType["FILTEREND"] = 13] = "FILTEREND";
|
|
37
|
+
TokenType[TokenType["SEPARATOR"] = 14] = "SEPARATOR";
|
|
38
|
+
TokenType[TokenType["PARAMETERSBEGIN"] = 15] = "PARAMETERSBEGIN";
|
|
39
|
+
TokenType[TokenType["PARAMETERSEND"] = 16] = "PARAMETERSEND";
|
|
40
|
+
TokenType[TokenType["FUNCTION"] = 17] = "FUNCTION";
|
|
41
|
+
})(TokenType || (exports.TokenType = TokenType = {}));
|
|
42
|
+
exports.NodeType = {
|
|
43
|
+
PARENT: 0xf1,
|
|
44
|
+
CHILD: 0xf2,
|
|
45
|
+
DESCENDANT: 0xf3,
|
|
46
|
+
AND: 0xf4,
|
|
47
|
+
OR: 0xf5,
|
|
48
|
+
EQUALS: 0xf6,
|
|
49
|
+
LITERAL: 0xf7,
|
|
50
|
+
FUNCTION: 0xf8
|
|
51
|
+
};
|
|
14
52
|
function isIdentifierToken(token) {
|
|
15
53
|
if (token == undefined)
|
|
16
54
|
return false;
|
|
17
|
-
if (token.
|
|
55
|
+
if (token.tokenType != TokenType.IDENTIFIER && token.tokenType != TokenType.WILDCARD)
|
|
18
56
|
return false;
|
|
19
57
|
if (!token.value)
|
|
20
58
|
return false;
|
|
@@ -25,12 +63,10 @@ function isIdentifierToken(token) {
|
|
|
25
63
|
return true;
|
|
26
64
|
}
|
|
27
65
|
const whitespace = " \n\r\t";
|
|
28
|
-
function isCharacter(
|
|
29
|
-
const charcode = c.charCodeAt(0);
|
|
66
|
+
function isCharacter(charcode) {
|
|
30
67
|
return (charcode >= 65 && charcode <= 90) || (charcode >= 97 && charcode <= 122);
|
|
31
68
|
}
|
|
32
|
-
function isInteger(
|
|
33
|
-
const charcode = c.charCodeAt(0);
|
|
69
|
+
function isInteger(charcode) {
|
|
34
70
|
return (charcode >= 48 && charcode <= 57);
|
|
35
71
|
}
|
|
36
72
|
function tokenize(input) {
|
|
@@ -43,71 +79,71 @@ function tokenize(input) {
|
|
|
43
79
|
break;
|
|
44
80
|
if (input[s] == "/") {
|
|
45
81
|
if (input[s + 1] == "/") {
|
|
46
|
-
result.push({
|
|
82
|
+
result.push({ tokenType: TokenType.DESCENDANT });
|
|
47
83
|
s += 2;
|
|
48
84
|
continue;
|
|
49
85
|
}
|
|
50
|
-
result.push({
|
|
86
|
+
result.push({ tokenType: TokenType.CHILD });
|
|
51
87
|
s++;
|
|
52
88
|
continue;
|
|
53
89
|
}
|
|
54
90
|
if (input[s] == ":") {
|
|
55
|
-
result.push({
|
|
91
|
+
result.push({ tokenType: TokenType.ATTRIBUTESELECTOR });
|
|
56
92
|
s++;
|
|
57
93
|
continue;
|
|
58
94
|
}
|
|
59
95
|
if (input[s] == "$" && input[s + 1] == "$") {
|
|
60
|
-
result.push({
|
|
96
|
+
result.push({ tokenType: TokenType.RESOLVESELECTOR });
|
|
61
97
|
s += 2;
|
|
62
98
|
continue;
|
|
63
99
|
}
|
|
64
100
|
if (input[s] == "$") {
|
|
65
|
-
result.push({
|
|
101
|
+
result.push({ tokenType: TokenType.BINDINGSELECTOR });
|
|
66
102
|
s++;
|
|
67
103
|
continue;
|
|
68
104
|
}
|
|
69
105
|
if (input[s] == "[") {
|
|
70
|
-
result.push({
|
|
106
|
+
result.push({ tokenType: TokenType.FILTERBEGIN });
|
|
71
107
|
s++;
|
|
72
108
|
continue;
|
|
73
109
|
}
|
|
74
110
|
if (input[s] == "]") {
|
|
75
|
-
result.push({
|
|
111
|
+
result.push({ tokenType: TokenType.FILTEREND });
|
|
76
112
|
s++;
|
|
77
113
|
continue;
|
|
78
114
|
}
|
|
79
115
|
if (input[s] == ",") {
|
|
80
|
-
result.push({
|
|
116
|
+
result.push({ tokenType: TokenType.SEPARATOR });
|
|
81
117
|
s++;
|
|
82
118
|
continue;
|
|
83
119
|
}
|
|
84
120
|
if (input[s] == "(") {
|
|
85
|
-
result.push({
|
|
121
|
+
result.push({ tokenType: TokenType.PARAMETERSBEGIN });
|
|
86
122
|
s++;
|
|
87
123
|
continue;
|
|
88
124
|
}
|
|
89
125
|
if (input[s] == "f" && input[s + 1] == "n" && input[s + 2] == ":") {
|
|
90
|
-
result.push({
|
|
126
|
+
result.push({ tokenType: TokenType.FUNCTION });
|
|
91
127
|
s += 3;
|
|
92
128
|
continue;
|
|
93
129
|
}
|
|
94
130
|
if (input[s] == ")") {
|
|
95
|
-
result.push({
|
|
131
|
+
result.push({ tokenType: TokenType.PARAMETERSEND });
|
|
96
132
|
s++;
|
|
97
133
|
continue;
|
|
98
134
|
}
|
|
99
135
|
if (input[s] == "&" && input[s + 1] == "&") {
|
|
100
|
-
result.push({
|
|
136
|
+
result.push({ tokenType: TokenType.AND });
|
|
101
137
|
s += 2;
|
|
102
138
|
continue;
|
|
103
139
|
}
|
|
104
140
|
if (input[s] == "|" && input[s + 1] == "|") {
|
|
105
|
-
result.push({
|
|
141
|
+
result.push({ tokenType: TokenType.OR });
|
|
106
142
|
s += 2;
|
|
107
143
|
continue;
|
|
108
144
|
}
|
|
109
145
|
if (input[s] == "=" && input[s + 1] == "=") {
|
|
110
|
-
result.push({
|
|
146
|
+
result.push({ tokenType: TokenType.EQUALS });
|
|
111
147
|
s += 2;
|
|
112
148
|
continue;
|
|
113
149
|
}
|
|
@@ -117,32 +153,33 @@ function tokenize(input) {
|
|
|
117
153
|
s++;
|
|
118
154
|
while (s < input.length && input[s] != begin)
|
|
119
155
|
s++;
|
|
120
|
-
result.push({
|
|
156
|
+
result.push({ tokenType: TokenType.LITERAL, value: input.slice(start + 1, s) });
|
|
121
157
|
s++;
|
|
122
158
|
continue;
|
|
123
159
|
}
|
|
124
160
|
if (input[s] == "." && input[s + 1] == ".") {
|
|
125
|
-
result.push({
|
|
161
|
+
result.push({ tokenType: TokenType.PARENT });
|
|
126
162
|
s += 2;
|
|
127
163
|
continue;
|
|
128
164
|
}
|
|
129
165
|
if (input[s] == "*") {
|
|
130
|
-
result.push({
|
|
166
|
+
result.push({ tokenType: TokenType.WILDCARD, value: "*" });
|
|
131
167
|
s++;
|
|
132
168
|
continue;
|
|
133
169
|
}
|
|
134
|
-
|
|
170
|
+
const charCode = input.charCodeAt(s);
|
|
171
|
+
if (isCharacter(charCode)) {
|
|
135
172
|
const start = s;
|
|
136
|
-
while (s < input.length && isCharacter(input
|
|
173
|
+
while (s < input.length && isCharacter(input.charCodeAt(s)))
|
|
137
174
|
s++;
|
|
138
|
-
result.push({
|
|
175
|
+
result.push({ tokenType: TokenType.IDENTIFIER, value: input.slice(start, s) });
|
|
139
176
|
continue;
|
|
140
177
|
}
|
|
141
|
-
if (isInteger(
|
|
178
|
+
if (isInteger(charCode)) {
|
|
142
179
|
const start = s;
|
|
143
|
-
while (s < input.length && isInteger(input
|
|
180
|
+
while (s < input.length && isInteger(input.charCodeAt(s)))
|
|
144
181
|
s++;
|
|
145
|
-
result.push({
|
|
182
|
+
result.push({ tokenType: TokenType.LITERAL, value: input.slice(start, s) });
|
|
146
183
|
continue;
|
|
147
184
|
}
|
|
148
185
|
throw new Error("Unexpected token: " + input[s]);
|
|
@@ -154,48 +191,48 @@ function buildFilter(tokens) {
|
|
|
154
191
|
tokens.shift();
|
|
155
192
|
const p = buildTree(tokens);
|
|
156
193
|
const next = tokens[0];
|
|
157
|
-
if (next.
|
|
194
|
+
if (next.tokenType == TokenType.AND) {
|
|
158
195
|
return {
|
|
159
|
-
type:
|
|
196
|
+
type: exports.NodeType.AND,
|
|
160
197
|
left: p,
|
|
161
198
|
right: buildFilter(tokens)
|
|
162
199
|
};
|
|
163
200
|
}
|
|
164
|
-
if (next.
|
|
201
|
+
if (next.tokenType == TokenType.OR) {
|
|
165
202
|
return {
|
|
166
|
-
type:
|
|
203
|
+
type: exports.NodeType.OR,
|
|
167
204
|
left: p,
|
|
168
205
|
right: buildFilter(tokens)
|
|
169
206
|
};
|
|
170
207
|
}
|
|
171
|
-
if (next.
|
|
208
|
+
if (next.tokenType == TokenType.EQUALS) {
|
|
172
209
|
const right = buildFilter(tokens);
|
|
173
|
-
if (right.type ==
|
|
210
|
+
if (right.type == exports.NodeType.OR || right.type == exports.NodeType.AND) {
|
|
174
211
|
return {
|
|
175
212
|
type: right.type,
|
|
176
213
|
left: {
|
|
177
|
-
type:
|
|
214
|
+
type: exports.NodeType.EQUALS,
|
|
178
215
|
left: p,
|
|
179
216
|
right: right.left
|
|
180
217
|
},
|
|
181
218
|
right: right.right
|
|
182
219
|
};
|
|
183
220
|
}
|
|
184
|
-
if (right.type ==
|
|
221
|
+
if (right.type == exports.NodeType.EQUALS)
|
|
185
222
|
throw new Error("Unexpected equals in equals");
|
|
186
223
|
return {
|
|
187
|
-
type:
|
|
224
|
+
type: exports.NodeType.EQUALS,
|
|
188
225
|
left: p,
|
|
189
226
|
right: right
|
|
190
227
|
};
|
|
191
228
|
}
|
|
192
|
-
if (next.
|
|
229
|
+
if (next.tokenType == TokenType.FILTEREND) {
|
|
193
230
|
tokens.shift();
|
|
194
231
|
return p;
|
|
195
232
|
}
|
|
196
|
-
throw new Error("Unexpected token in filter: " + next?.
|
|
233
|
+
throw new Error("Unexpected token in filter: " + next?.tokenType);
|
|
197
234
|
}
|
|
198
|
-
const subNodes = [
|
|
235
|
+
const subNodes = [TokenType.CHILD, TokenType.DESCENDANT];
|
|
199
236
|
function buildTree(tokens) {
|
|
200
237
|
log?.debug("BUILD TREE", tokens);
|
|
201
238
|
if (tokens.length == 0)
|
|
@@ -203,53 +240,60 @@ function buildTree(tokens) {
|
|
|
203
240
|
const token = tokens.shift();
|
|
204
241
|
if (token == undefined)
|
|
205
242
|
throw new Error("Unexpected end of input");
|
|
206
|
-
if (token.
|
|
243
|
+
if (token.tokenType == TokenType.PARENT) {
|
|
207
244
|
return {
|
|
208
|
-
type:
|
|
245
|
+
type: exports.NodeType.PARENT,
|
|
209
246
|
child: buildTree(tokens)
|
|
210
247
|
};
|
|
211
248
|
}
|
|
212
|
-
if (subNodes.includes(token.
|
|
249
|
+
if (subNodes.includes(token.tokenType)) {
|
|
213
250
|
let next = tokens.shift();
|
|
214
|
-
if (next?.
|
|
251
|
+
if (next?.tokenType == TokenType.FUNCTION) {
|
|
215
252
|
const name = tokens.shift();
|
|
216
|
-
if (name == undefined || name.
|
|
217
|
-
throw new Error("Unexpected token: " + name?.
|
|
253
|
+
if (name == undefined || name.tokenType != TokenType.IDENTIFIER || name.value == undefined || typeof (name.value) != "string")
|
|
254
|
+
throw new Error("Unexpected token: " + name?.tokenType + ". Expecting function name");
|
|
218
255
|
const value = name.value;
|
|
219
256
|
if (!(0, _1.isAvailableFunction)(value)) {
|
|
220
257
|
throw new Error("Unsupported function: " + name.value);
|
|
221
258
|
}
|
|
222
259
|
return buildFunctionCall(value, tokens);
|
|
223
260
|
}
|
|
224
|
-
if (next?.
|
|
225
|
-
return { type:
|
|
261
|
+
if (next?.tokenType == TokenType.PARENT) {
|
|
262
|
+
return { type: exports.NodeType.PARENT, child: buildTree(tokens) };
|
|
226
263
|
}
|
|
227
264
|
const modifiers = [];
|
|
228
|
-
while (next && (next?.
|
|
265
|
+
while (next && (next?.tokenType == TokenType.ATTRIBUTESELECTOR || next?.tokenType == TokenType.BINDINGSELECTOR || next?.tokenType == TokenType.RESOLVESELECTOR)) {
|
|
229
266
|
modifiers.push(next);
|
|
230
267
|
next = tokens.shift();
|
|
231
268
|
}
|
|
232
|
-
const isAttribute = modifiers.some(m => m.
|
|
233
|
-
const isBinding = modifiers.some(m => m.
|
|
234
|
-
const isResolve = modifiers.some(m => m.
|
|
269
|
+
const isAttribute = modifiers.some(m => m.tokenType == TokenType.ATTRIBUTESELECTOR);
|
|
270
|
+
const isBinding = modifiers.some(m => m.tokenType == TokenType.BINDINGSELECTOR);
|
|
271
|
+
const isResolve = modifiers.some(m => m.tokenType == TokenType.RESOLVESELECTOR);
|
|
235
272
|
if (isResolve && isBinding)
|
|
236
273
|
throw new Error("Cannot have both resolve and binding");
|
|
237
274
|
if (!next || !next.value || (!isAttribute && !isIdentifierToken(next)))
|
|
238
|
-
throw new Error("Unexpected or missing token: " + next?.
|
|
275
|
+
throw new Error("Unexpected or missing token: " + next?.tokenType);
|
|
239
276
|
const identifer = next.value;
|
|
240
277
|
let filter = undefined;
|
|
241
|
-
if (tokens.length > 0 && tokens[0].
|
|
278
|
+
if (tokens.length > 0 && tokens[0].tokenType == TokenType.FILTERBEGIN) {
|
|
242
279
|
filter = buildFilter(tokens);
|
|
243
280
|
log?.debug("FILTER", filter, tokens);
|
|
244
281
|
}
|
|
245
282
|
let child = undefined;
|
|
246
|
-
if (tokens.length > 0 && subNodes.includes(tokens[0].
|
|
283
|
+
if (tokens.length > 0 && subNodes.includes(tokens[0].tokenType)) {
|
|
247
284
|
child = buildTree(tokens);
|
|
248
285
|
}
|
|
249
286
|
if (typeof (identifer) != "string")
|
|
250
287
|
throw new Error("Identifier must be a string");
|
|
288
|
+
let nodeType = exports.NodeType.CHILD;
|
|
289
|
+
if (token.tokenType == TokenType.DESCENDANT) {
|
|
290
|
+
nodeType = exports.NodeType.DESCENDANT;
|
|
291
|
+
}
|
|
292
|
+
else if (token.tokenType != TokenType.CHILD) {
|
|
293
|
+
throw new Error("Unexpected token:" + token.tokenType);
|
|
294
|
+
}
|
|
251
295
|
return {
|
|
252
|
-
type:
|
|
296
|
+
type: nodeType,
|
|
253
297
|
value: identifer,
|
|
254
298
|
attribute: isAttribute,
|
|
255
299
|
binding: isBinding,
|
|
@@ -258,30 +302,30 @@ function buildTree(tokens) {
|
|
|
258
302
|
child: child
|
|
259
303
|
};
|
|
260
304
|
}
|
|
261
|
-
if (token.
|
|
305
|
+
if (token.tokenType == TokenType.LITERAL) {
|
|
262
306
|
return {
|
|
263
|
-
type:
|
|
307
|
+
type: exports.NodeType.LITERAL,
|
|
264
308
|
value: token.value
|
|
265
309
|
};
|
|
266
310
|
}
|
|
267
|
-
throw new Error("Unexpected token: " + token.
|
|
311
|
+
throw new Error("Unexpected token: " + token.tokenType);
|
|
268
312
|
}
|
|
269
313
|
function buildFunctionCall(name, tokens) {
|
|
270
314
|
log?.debug("BUILD FUNCTION", name, tokens);
|
|
271
315
|
const parameters = [];
|
|
272
316
|
const next = tokens.shift();
|
|
273
|
-
if (next?.
|
|
274
|
-
throw new Error("Unexpected token: " + next?.
|
|
275
|
-
while (tokens.length > 0 && tokens[0].
|
|
317
|
+
if (next?.tokenType != TokenType.PARAMETERSBEGIN)
|
|
318
|
+
throw new Error("Unexpected token: " + next?.tokenType);
|
|
319
|
+
while (tokens.length > 0 && tokens[0].tokenType != TokenType.PARAMETERSEND) {
|
|
276
320
|
parameters.push(buildTree(tokens));
|
|
277
|
-
if (tokens[0].
|
|
321
|
+
if (tokens[0].tokenType == TokenType.SEPARATOR)
|
|
278
322
|
tokens.shift();
|
|
279
323
|
}
|
|
280
324
|
if (tokens.length == 0)
|
|
281
325
|
throw new Error("Unexpected end of input");
|
|
282
326
|
tokens.shift();
|
|
283
327
|
return {
|
|
284
|
-
type:
|
|
328
|
+
type: exports.NodeType.FUNCTION,
|
|
285
329
|
function: name,
|
|
286
330
|
parameters: parameters
|
|
287
331
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAYjC,eAAO,MAAM,SAAS;;qBAEL,MAAM,EAAE,EAAE,KAAG,MAAM,EAAE;;;qBAWrB,MAAM,EAAE,EAAE,KAAG,MAAM,EAAE;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
import { AvailableFunction } from ".";
|
|
2
|
+
export declare enum TokenType {
|
|
3
|
+
IDENTIFIER = 0,
|
|
4
|
+
WILDCARD = 1,
|
|
5
|
+
DESCENDANT = 2,
|
|
6
|
+
CHILD = 3,
|
|
7
|
+
PARENT = 4,
|
|
8
|
+
AND = 5,
|
|
9
|
+
OR = 6,
|
|
10
|
+
EQUALS = 7,
|
|
11
|
+
LITERAL = 8,
|
|
12
|
+
ATTRIBUTESELECTOR = 9,
|
|
13
|
+
RESOLVESELECTOR = 10,
|
|
14
|
+
BINDINGSELECTOR = 11,
|
|
15
|
+
FILTERBEGIN = 12,
|
|
16
|
+
FILTEREND = 13,
|
|
17
|
+
SEPARATOR = 14,
|
|
18
|
+
PARAMETERSBEGIN = 15,
|
|
19
|
+
PARAMETERSEND = 16,
|
|
20
|
+
FUNCTION = 17
|
|
21
|
+
}
|
|
22
|
+
export declare const NodeType: {
|
|
23
|
+
readonly PARENT: 241;
|
|
24
|
+
readonly CHILD: 242;
|
|
25
|
+
readonly DESCENDANT: 243;
|
|
26
|
+
readonly AND: 244;
|
|
27
|
+
readonly OR: 245;
|
|
28
|
+
readonly EQUALS: 246;
|
|
29
|
+
readonly LITERAL: 247;
|
|
30
|
+
readonly FUNCTION: 248;
|
|
31
|
+
};
|
|
2
32
|
type Token = {
|
|
3
|
-
|
|
33
|
+
tokenType: TokenType;
|
|
4
34
|
value?: string;
|
|
5
35
|
};
|
|
6
36
|
export declare function tokenize(input: string): Token[];
|
|
7
37
|
type BaseNode = {
|
|
8
|
-
type: string;
|
|
9
38
|
attribute?: boolean;
|
|
10
39
|
binding?: boolean;
|
|
11
40
|
resolve?: boolean;
|
|
@@ -14,25 +43,25 @@ type BaseNode = {
|
|
|
14
43
|
child?: QNode;
|
|
15
44
|
};
|
|
16
45
|
export type Selector = BaseNode & ({
|
|
17
|
-
type:
|
|
46
|
+
type: typeof NodeType.CHILD | typeof NodeType.DESCENDANT;
|
|
18
47
|
attribute: boolean;
|
|
19
48
|
binding: boolean;
|
|
20
49
|
value: string;
|
|
21
50
|
resolve: boolean;
|
|
22
51
|
} | {
|
|
23
|
-
type:
|
|
52
|
+
type: typeof NodeType.PARENT;
|
|
24
53
|
});
|
|
25
54
|
export type Condition = BaseNode & {
|
|
26
|
-
type:
|
|
55
|
+
type: typeof NodeType.AND | typeof NodeType.OR | typeof NodeType.EQUALS;
|
|
27
56
|
left: QNode;
|
|
28
57
|
right: QNode;
|
|
29
58
|
};
|
|
30
59
|
export type Literal = BaseNode & {
|
|
31
|
-
type:
|
|
60
|
+
type: typeof NodeType.LITERAL;
|
|
32
61
|
value: string;
|
|
33
62
|
};
|
|
34
63
|
export type FunctionCall = BaseNode & {
|
|
35
|
-
type:
|
|
64
|
+
type: typeof NodeType.FUNCTION;
|
|
36
65
|
function: AvailableFunction;
|
|
37
66
|
parameters: QNode[];
|
|
38
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseQuery.d.ts","sourceRoot":"","sources":["../../../src/parseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"parseQuery.d.ts","sourceRoot":"","sources":["../../../src/parseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,GAAG,CAAC;AAmB3D,oBAAY,SAAS;IACnB,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,UAAU,IAAA;IACV,KAAK,IAAA;IACL,MAAM,IAAA;IACN,GAAG,IAAA;IACH,EAAE,IAAA;IACF,MAAM,IAAA;IACN,OAAO,IAAA;IACP,iBAAiB,IAAA;IACjB,eAAe,KAAA;IACf,eAAe,KAAA;IACf,WAAW,KAAA;IACX,SAAS,KAAA;IACT,SAAS,KAAA;IACT,eAAe,KAAA;IACf,aAAa,KAAA;IACb,QAAQ,KAAA;CACT;AAED,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAIX,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAA;AAyBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAI,KAAK,EAAE,CA+GhD;AACD,KAAK,QAAQ,GAAG;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAA;AAKD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;IACjC,IAAI,EAAE,OAAO,QAAQ,CAAC,KAAK,GAAG,OAAO,QAAQ,CAAC,UAAU,CAAC;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG;IACF,IAAI,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAA;CAC7B,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG;IACjC,IAAI,EAAE,OAAO,QAAQ,CAAC,GAAG,GAAG,OAAO,QAAQ,CAAC,EAAE,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC;IACxE,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG;IAC/B,IAAI,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG;IACpC,IAAI,EAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,KAAK,EAAE,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAE;AA+InE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAM1C"}
|