@nymphjs/query-parser 1.0.0-beta.13 → 1.0.0-beta.130
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/CHANGELOG.md +495 -0
- package/README.md +64 -50
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/queryParser.js +953 -0
- package/dist/queryParser.js.map +1 -0
- package/dist/queryParser.test.js +1686 -0
- package/dist/queryParser.test.js.map +1 -0
- package/jest.config.js +31 -5
- package/package.json +35 -34
- package/src/index.ts +2 -2
- package/src/queryParser.test.ts +1106 -164
- package/src/queryParser.ts +425 -140
- package/tsconfig.json +7 -4
- package/typedoc.json +4 -0
- package/lib/index.d.ts +0 -4
- package/lib/index.js +0 -25
- package/lib/index.js.map +0 -1
- package/lib/queryParser.js +0 -672
- package/lib/queryParser.js.map +0 -1
- package/lib/queryParser.test.js +0 -856
- package/lib/queryParser.test.js.map +0 -1
- package/webpack.config.js +0 -28
- /package/{lib → dist}/queryParser.d.ts +0 -0
- /package/{lib → dist}/queryParser.test.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Nymph Query Parser
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Application Data and Access Framework for Node.js and the browser.
|
|
4
|
+
|
|
5
|
+
https://nymph.io/
|
|
4
6
|
|
|
5
7
|
The Query Parser is a utility for creating complex Nymph entity queries from a simple text input. Essentially, it turns a string into a Nymph query.
|
|
6
8
|
|
|
@@ -23,11 +25,11 @@ import Category from './Category';
|
|
|
23
25
|
async function doQuery() {
|
|
24
26
|
const [options, ...selectors] = queryParser({
|
|
25
27
|
query:
|
|
26
|
-
'limit:4 foobar (| [archived] mdate<"2 weeks ago") category<{
|
|
28
|
+
'limit:4 sort:mdate foobar (| [archived] mdate<"2 weeks ago") category<{Cat Tech}>',
|
|
27
29
|
entityClass: BlogPost,
|
|
28
30
|
defaultFields: ['title', 'body'],
|
|
29
31
|
qrefMap: {
|
|
30
|
-
|
|
32
|
+
Cat: {
|
|
31
33
|
class: Category,
|
|
32
34
|
defaultFields: ['name'],
|
|
33
35
|
},
|
|
@@ -37,7 +39,8 @@ async function doQuery() {
|
|
|
37
39
|
Options will be
|
|
38
40
|
{
|
|
39
41
|
class: BlogPost,
|
|
40
|
-
limit: 4
|
|
42
|
+
limit: 4,
|
|
43
|
+
sort: 'mdate'
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
And selectors will be (equivalent to)
|
|
@@ -81,133 +84,144 @@ async function doQuery() {
|
|
|
81
84
|
|
|
82
85
|
## Options
|
|
83
86
|
|
|
84
|
-
You can set limit, offset, and reverse like this.
|
|
87
|
+
You can set limit, offset, sort, and reverse like this.
|
|
85
88
|
|
|
86
89
|
- `limit:number`
|
|
87
90
|
- `offset:number`
|
|
91
|
+
- `sort:string`, `sort:-`
|
|
88
92
|
- `reverse:true`, `reverse:false`, `reverse:1`, or `reverse:0`
|
|
89
93
|
|
|
90
94
|
These must appear in the top level of the query (outside of any parentheses).
|
|
91
95
|
|
|
96
|
+
Using a dash for sort means the results will not be sorted in any particular order. You can also use "cdate" for created date and "mdate" for modified date.
|
|
97
|
+
|
|
92
98
|
## Clauses
|
|
93
99
|
|
|
94
100
|
These are the available clauses, and their syntax.
|
|
95
101
|
|
|
96
|
-
### equal and
|
|
102
|
+
### equal and not equal
|
|
97
103
|
|
|
98
104
|
Check for string or JSON representation equality.
|
|
99
105
|
|
|
100
|
-
- `name=string` or
|
|
101
|
-
- `name="string value"` or
|
|
106
|
+
- `name=string` or `-name=string`
|
|
107
|
+
- `name="string value"` or `-name="string value"`
|
|
102
108
|
- (Use this if you have a space in your string, or if your string could be interpreted as valid JSON. Escape double quotes with a leading backslash.)
|
|
103
|
-
- `name=JSON` or
|
|
109
|
+
- `name=JSON` or `-name=JSON`
|
|
104
110
|
- (Match a JSON encoded value (like `true`, `1`, `[1,2,3]`, or `{"prop":"val"}`).)
|
|
105
111
|
|
|
106
|
-
### guid and
|
|
112
|
+
### guid and not guid
|
|
107
113
|
|
|
108
114
|
Check for entity GUID.
|
|
109
115
|
|
|
110
|
-
- `{guid}` or
|
|
116
|
+
- `{guid}` or `-{guid}`
|
|
111
117
|
|
|
112
|
-
### tag and
|
|
118
|
+
### tag and not tag
|
|
113
119
|
|
|
114
120
|
Check for a tag.
|
|
115
121
|
|
|
116
|
-
- `<name>` or
|
|
122
|
+
- `<name>` or `-<name>`
|
|
117
123
|
|
|
118
|
-
### truthy and
|
|
124
|
+
### truthy and not truthy
|
|
119
125
|
|
|
120
126
|
Check for truthiness.
|
|
121
127
|
|
|
122
|
-
- `[name]` or
|
|
128
|
+
- `[name]` or `-[name]`
|
|
123
129
|
|
|
124
|
-
### ref and
|
|
130
|
+
### ref and not ref
|
|
125
131
|
|
|
126
132
|
Check for a reference to another entity.
|
|
127
133
|
|
|
128
|
-
- `name<{guid}>` or
|
|
134
|
+
- `name<{guid}>` or `-name<{guid}>`
|
|
129
135
|
|
|
130
|
-
### qref and
|
|
136
|
+
### qref and not qref
|
|
131
137
|
|
|
132
138
|
Check for a reference to another entity using a query.
|
|
133
139
|
|
|
134
|
-
- `name<{refclassname inner query}>` or
|
|
135
|
-
- (
|
|
140
|
+
- `name<{refclassname inner query}>` or `-name<{refclassname inner query}>`
|
|
141
|
+
- (Escape curly brackets with a leading backslash.)
|
|
136
142
|
- (Requires a map of refclassname to their actual class and default fields.)
|
|
137
143
|
|
|
138
|
-
### contain and
|
|
144
|
+
### contain and not contain
|
|
139
145
|
|
|
140
|
-
Check
|
|
146
|
+
Check if the array at the named property contains a value.
|
|
141
147
|
|
|
142
|
-
- `name<value>` or
|
|
148
|
+
- `name<value>` or `-name<value>`
|
|
143
149
|
- (Escape angle brackets with a leading backslash. If your value could be interpreted as valid JSON, encode it as a JSON string and use the JSON syntax instead.)
|
|
144
|
-
- `name<JSON>` or
|
|
150
|
+
- `name<JSON>` or `-name<JSON>`
|
|
145
151
|
- (Search for a JSON encoded value (like `true`, `1`, `[1,2,3]`, or `{"prop":"val"}`).)
|
|
146
152
|
|
|
147
|
-
###
|
|
153
|
+
### search and not search
|
|
154
|
+
|
|
155
|
+
Check for full-text search query match. Use single quotes to find sequential terms and double quotes to find exact terms. Use "or" as the or operator. Use "-" before a term as the negation operator. Stop words and punctuation are stripped. Case insensitive.
|
|
156
|
+
|
|
157
|
+
- `name(query)` or `-name(query)`
|
|
158
|
+
- `name:query` or `name:'sequence query'` or `name:"exact query"` or `-name:query` or `-name:'sequence query'` or `-name:"exact query"`
|
|
159
|
+
- (The "limit", "offset", "sort", and "reverse" properties cannot be used with the colon syntax.)
|
|
160
|
+
|
|
161
|
+
### match and not match
|
|
148
162
|
|
|
149
163
|
Check for POSIX regex match.
|
|
150
164
|
|
|
151
|
-
- `name~/pattern/` or
|
|
165
|
+
- `name~/pattern/` or `-name~/pattern/`
|
|
152
166
|
|
|
153
|
-
### imatch and
|
|
167
|
+
### imatch and not imatch
|
|
154
168
|
|
|
155
169
|
Check for case insensitive POSIX regex match.
|
|
156
170
|
|
|
157
|
-
- `name~/pattern/i` or
|
|
171
|
+
- `name~/pattern/i` or `-name~/pattern/i`
|
|
158
172
|
|
|
159
|
-
### like and
|
|
173
|
+
### like and not like
|
|
160
174
|
|
|
161
175
|
Check for pattern match where \_ is single char wildcard and % is any length wildcard.
|
|
162
176
|
|
|
163
|
-
- `name~pattern` or
|
|
164
|
-
- `name~"pattern"` or
|
|
177
|
+
- `name~pattern` or `-name~pattern`
|
|
178
|
+
- `name~"pattern"` or `-name~"pattern"`
|
|
165
179
|
- (Use this if you have a space in your pattern.)
|
|
166
180
|
|
|
167
|
-
### ilike and
|
|
181
|
+
### ilike and not ilike
|
|
168
182
|
|
|
169
183
|
Check for case insensitive pattern match where \_ is single char wildcard and % is any length wildcard.
|
|
170
184
|
|
|
171
|
-
- `name~"pattern"i` or
|
|
185
|
+
- `name~"pattern"i` or `-name~"pattern"i`
|
|
172
186
|
|
|
173
|
-
### gt
|
|
187
|
+
### gt and not gt
|
|
174
188
|
|
|
175
189
|
Check a prop's value is greater than a given value.
|
|
176
190
|
|
|
177
|
-
- `name>number`
|
|
178
|
-
- `name>relative`
|
|
191
|
+
- `name>number` or `-name>number`
|
|
192
|
+
- `name>relative` or `-name>relative`
|
|
179
193
|
- (A single relative time value like `now` or `yesterday`.)
|
|
180
|
-
- `name>"relative time value"`
|
|
194
|
+
- `name>"relative time value"` or `-name>"relative time value"`
|
|
181
195
|
- (Use this for a time value with a space like `"two days from now"`, `"last thursday"`, `"+4 weeks"`, or `"5 minutes ago"`.)
|
|
182
196
|
|
|
183
|
-
### gte
|
|
197
|
+
### gte and not gte
|
|
184
198
|
|
|
185
199
|
Check a prop's value is greater than or equal to a given value.
|
|
186
200
|
|
|
187
|
-
- `name>=number`
|
|
188
|
-
- `name>=relative`
|
|
201
|
+
- `name>=number` or `-name>=number`
|
|
202
|
+
- `name>=relative` or `-name>=relative`
|
|
189
203
|
- (A single relative time value like `now` or `yesterday`.)
|
|
190
|
-
- `name>="relative time value"`
|
|
204
|
+
- `name>="relative time value"` or `-name>="relative time value"`
|
|
191
205
|
- (Use this for a time value with a space like `"two days from now"`, `"last thursday"`, `"+4 weeks"`, or `"5 minutes ago"`.)
|
|
192
206
|
|
|
193
|
-
### lt
|
|
207
|
+
### lt and not lt
|
|
194
208
|
|
|
195
209
|
Check a prop's value is less than a given value.
|
|
196
210
|
|
|
197
|
-
- `name<number`
|
|
198
|
-
- `name<relative`
|
|
211
|
+
- `name<number` or `-name<number`
|
|
212
|
+
- `name<relative` or `-name<relative`
|
|
199
213
|
- (A single relative time value like `now` or `yesterday`.)
|
|
200
|
-
- `name<"relative time value"`
|
|
214
|
+
- `name<"relative time value"` or `-name<"relative time value"`
|
|
201
215
|
- (Use this for a time value with a space like `"two days from now"`, `"last thursday"`, `"+4 weeks"`, or `"5 minutes ago"`.)
|
|
202
216
|
|
|
203
|
-
### lte
|
|
217
|
+
### lte and not lte
|
|
204
218
|
|
|
205
219
|
Check a prop's value is less than or equal to a given value.
|
|
206
220
|
|
|
207
|
-
- `name<=number`
|
|
208
|
-
- `name<=relative`
|
|
221
|
+
- `name<=number` or `-name<=number`
|
|
222
|
+
- `name<=relative` or `-name<=relative`
|
|
209
223
|
- (A single relative time value like `now` or `yesterday`.)
|
|
210
|
-
- `name<="relative time value"`
|
|
224
|
+
- `name<="relative time value"` or `-name<="relative time value"`
|
|
211
225
|
- (Use this for a time value with a space like `"two days from now"`, `"last thursday"`, `"+4 weeks"`, or `"5 minutes ago"`.)
|
|
212
226
|
|
|
213
227
|
## Selectors
|
|
@@ -237,7 +251,7 @@ You can also supply a function in the option `bareHandler` that will handle bare
|
|
|
237
251
|
|
|
238
252
|
# License
|
|
239
253
|
|
|
240
|
-
Copyright 2021 SciActive Inc
|
|
254
|
+
Copyright 2021-2026 SciActive Inc
|
|
241
255
|
|
|
242
256
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
243
257
|
you may not use this file except in compliance with the License.
|
package/dist/index.d.ts
ADDED
package/dist/index.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
export * from './queryParser.js';
|
|
2
|
+
import queryParser from './queryParser.js';
|
|
3
|
+
export { queryParser };
|
|
4
|
+
export default queryParser;
|
|
2
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://@nymphjs/client/webpack/universalModuleDefinition","webpack://@nymphjs/client/./lib/index.js","webpack://@nymphjs/client/./lib/queryParser.js","webpack://@nymphjs/client/./node_modules/@sciactive/splitn/dist/es/index.js","webpack://@nymphjs/client/webpack/bootstrap","webpack://@nymphjs/client/webpack/runtime/define property getters","webpack://@nymphjs/client/webpack/runtime/hasOwnProperty shorthand","webpack://@nymphjs/client/webpack/runtime/make namespace object","webpack://@nymphjs/client/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@nymphjs/client\"] = factory();\n\telse\n\t\troot[\"@nymphjs/client\"] = factory();\n})(this, () => {\nreturn ","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.queryParser = void 0;\n__exportStar(require(\"./queryParser\"), exports);\nconst queryParser_1 = __importDefault(require(\"./queryParser\"));\nexports.queryParser = queryParser_1.default;\nexports.default = queryParser_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst splitn_1 = __importDefault(require(\"@sciactive/splitn\"));\nfunction queryParser({ query, entityClass, defaultFields = ['name'], qrefMap = {}, bareHandler = (input, _class, defaultFields = ['name']) => {\n if (!input.match(/[_%]/)) {\n input = `%${input}%`;\n }\n if (defaultFields.length) {\n return {\n type: '|',\n ilike: defaultFields.map((field) => [field, input]),\n };\n }\n return {};\n}, }) {\n const options = { class: entityClass };\n return [\n options,\n ...selectorsParser({\n query,\n entityClass,\n type: '&',\n defaultFields,\n qrefMap,\n options,\n bareHandler,\n }),\n ];\n}\nexports.default = queryParser;\nfunction selectorsParser({ query, entityClass, type, defaultFields, qrefMap, options, bareHandler, }) {\n const selector = { type };\n let curQuery = query;\n const subSelectorPairs = [];\n let inQuote = false;\n let nesting = 0;\n let currentStart = null;\n for (let i = 0; i < curQuery.length; i++) {\n if (curQuery[i] === '\"') {\n if (!inQuote) {\n inQuote = true;\n }\n else if (curQuery[i - 1] !== '\\\\') {\n inQuote = false;\n }\n }\n else if (inQuote) {\n continue;\n }\n else if (curQuery[i] === '(') {\n if (currentStart == null) {\n currentStart = i;\n }\n else {\n nesting++;\n }\n }\n else if (curQuery[i] === ')') {\n if (nesting === 0) {\n if (currentStart == null) {\n }\n else {\n subSelectorPairs.push([currentStart, i + 1]);\n currentStart = null;\n }\n }\n else {\n nesting--;\n }\n }\n }\n if (subSelectorPairs.length) {\n selector.selector = [];\n subSelectorPairs.reverse();\n for (let pair of subSelectorPairs) {\n let selectorQuery = curQuery.slice(pair[0] + 1, pair[1] - 1);\n curQuery = curQuery.slice(0, pair[0]) + curQuery.slice(pair[1]);\n let type = '&';\n if (selectorQuery.startsWith('&')) {\n selectorQuery = selectorQuery.slice(1);\n }\n else if (selectorQuery.startsWith('!&')) {\n type = '!&';\n selectorQuery = selectorQuery.slice(2);\n }\n else if (selectorQuery.startsWith('|')) {\n type = '|';\n selectorQuery = selectorQuery.slice(1);\n }\n else if (selectorQuery.startsWith('!|')) {\n type = '!|';\n selectorQuery = selectorQuery.slice(2);\n }\n else if (selectorQuery.startsWith('!')) {\n type = '!&';\n selectorQuery = selectorQuery.slice(1);\n }\n selector.selector.push(...selectorsParser({\n query: selectorQuery,\n entityClass,\n type,\n defaultFields,\n qrefMap,\n bareHandler,\n }));\n }\n }\n curQuery = selectorParser({\n query: curQuery,\n selector,\n qrefMap,\n bareHandler,\n });\n if (options) {\n const limitRegex = /(?: |^)limit:(\\d+)(?= |$)/;\n const limitMatch = curQuery.match(limitRegex);\n if (limitMatch) {\n options.limit = Number(limitMatch[1]);\n }\n curQuery = curQuery.replace(limitRegex, '');\n const offsetRegex = /(?: |^)offset:(\\d+)(?= |$)/;\n const offsetMatch = curQuery.match(offsetRegex);\n if (offsetMatch) {\n options.offset = Number(offsetMatch[1]);\n }\n curQuery = curQuery.replace(offsetRegex, '');\n const reverseRegex = /(?: |^)reverse:(true|false|1|0)(?= |$)/;\n const reverseMatch = curQuery.match(reverseRegex);\n if (reverseMatch) {\n options.reverse = reverseMatch[1] === 'true' || reverseMatch[1] === '1';\n }\n curQuery = curQuery.replace(reverseRegex, '');\n }\n curQuery = curQuery.trim();\n if (curQuery.length) {\n const bareSelector = bareHandler(curQuery, entityClass, defaultFields);\n if (Object.keys(bareSelector).length) {\n return [\n ...(Object.keys(selector).length > 1 ? [selector] : []),\n {\n type: '|',\n ...bareSelector,\n },\n ];\n }\n }\n if ('selector' in selector &&\n selector.selector.length === 1 &&\n Object.keys(selector).length === 2 &&\n (selector.type === '&' || selector.type === '|')) {\n return selector.selector;\n }\n return [selector];\n}\nfunction selectorParser({ query, selector, qrefMap, bareHandler, }) {\n let curQuery = query;\n const qrefRegex = /(?: |^)(\\w+)!?<\\{(\\w+) (.*?[^\\\\])\\}>(?= |$)/g;\n const qrefMatch = curQuery.match(qrefRegex);\n if (qrefMatch) {\n selector.qref = [];\n selector['!qref'] = [];\n for (let match of qrefMatch) {\n try {\n let [name, value] = (0, splitn_1.default)(match.trim().slice(0, -1), '<', 2);\n value = unQuoteCurlies(value.slice(1, -1));\n let [className, qrefQuery] = value.split(' ', 2);\n const EntityClass = qrefMap[className].class;\n if (EntityClass == null) {\n continue;\n }\n const qref = queryParser({\n query: qrefQuery,\n entityClass: EntityClass,\n defaultFields: qrefMap[className].defaultFields,\n qrefMap,\n bareHandler,\n });\n if (name.endsWith('!')) {\n selector['!qref'].push([name.slice(0, -1), qref]);\n }\n else {\n selector.qref.push([name, qref]);\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.qref.length) {\n delete selector.qref;\n }\n if (!selector['!qref'].length) {\n delete selector['!qref'];\n }\n }\n curQuery = curQuery.replace(qrefRegex, '');\n const equalRegex = /(?: |^)(\\w+)!?=(\"\"|\".*?[^\\\\]\"|[^ ]+)(?= |$)/g;\n const equalMatch = curQuery.match(equalRegex);\n if (equalMatch) {\n selector.equal = [];\n selector['!equal'] = [];\n for (let match of equalMatch) {\n try {\n let [name, value] = match.trim().split('=', 2);\n try {\n if (name.endsWith('!')) {\n selector['!equal'].push([name.slice(0, -1), JSON.parse(value)]);\n }\n else {\n selector.equal.push([name, JSON.parse(value)]);\n }\n }\n catch (e) {\n if (name.endsWith('!')) {\n selector['!equal'].push([name.slice(0, -1), unQuoteString(value)]);\n }\n else {\n selector.equal.push([name, unQuoteString(value)]);\n }\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.equal.length) {\n delete selector.equal;\n }\n if (!selector['!equal'].length) {\n delete selector['!equal'];\n }\n }\n curQuery = curQuery.replace(equalRegex, '');\n const refRegex = /(?: |^)(\\w+)!?<\\{([0-9a-f]{24})\\}>(?= |$)/g;\n const refMatch = curQuery.match(refRegex);\n if (refMatch) {\n selector.ref = [];\n selector['!ref'] = [];\n for (let match of refMatch) {\n try {\n let [name, value] = match.trim().slice(0, -1).split('<', 2);\n if (name.endsWith('!')) {\n selector['!ref'].push([name.slice(0, -1), value.slice(1, -1)]);\n }\n else {\n selector.ref.push([name, value.slice(1, -1)]);\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.ref.length) {\n delete selector.ref;\n }\n if (!selector['!ref'].length) {\n delete selector['!ref'];\n }\n }\n curQuery = curQuery.replace(refRegex, '');\n const containRegex = /(?: |^)(\\w+)!?(<.*?[^\\\\]>)(?= |$)/g;\n const containMatch = curQuery.match(containRegex);\n if (containMatch) {\n selector.contain = [];\n selector['!contain'] = [];\n for (let match of containMatch) {\n try {\n let [name, value] = match.trim().slice(0, -1).split('<', 2);\n try {\n if (name.endsWith('!')) {\n selector['!contain'].push([\n name.slice(0, -1),\n JSON.parse(unQuoteAngles(value)),\n ]);\n }\n else {\n selector.contain.push([name, JSON.parse(unQuoteAngles(value))]);\n }\n }\n catch (e) {\n if (name.endsWith('!')) {\n selector['!contain'].push([\n name.slice(0, -1),\n unQuoteAngles(value),\n ]);\n }\n else {\n selector.contain.push([name, unQuoteAngles(value)]);\n }\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.contain.length) {\n delete selector.contain;\n }\n if (!selector['!contain'].length) {\n delete selector['!contain'];\n }\n }\n curQuery = curQuery.replace(containRegex, '');\n const posixRegex = /(?: |^)(\\w+)!?~(\\/\\/|\\/.*?[^\\\\]\\/)i?(?= |$)/g;\n const posixMatch = curQuery.match(posixRegex);\n if (posixMatch) {\n selector.match = [];\n selector['!match'] = [];\n selector.imatch = [];\n selector['!imatch'] = [];\n for (let match of posixMatch) {\n try {\n let [name, value] = match.trim().split('~', 2);\n if (name.endsWith('!')) {\n if (value.endsWith('i')) {\n selector['!imatch'].push([\n name.slice(0, -1),\n value.replace(/^\\/|\\/i$/g, ''),\n ]);\n }\n else {\n selector['!match'].push([\n name.slice(0, -1),\n value.replace(/^\\/|\\/$/g, ''),\n ]);\n }\n }\n else {\n if (value.endsWith('i')) {\n selector.imatch.push([name, value.replace(/^\\/|\\/i$/g, '')]);\n }\n else {\n selector.match.push([name, value.replace(/^\\/|\\/$/g, '')]);\n }\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.match.length) {\n delete selector.match;\n }\n if (!selector['!match'].length) {\n delete selector['!match'];\n }\n if (!selector.imatch.length) {\n delete selector.imatch;\n }\n if (!selector['!imatch'].length) {\n delete selector['!imatch'];\n }\n }\n curQuery = curQuery.replace(posixRegex, '');\n const likeRegex = /(?: |^)(\\w+)!?~(\"\"i?|\".*?[^\\\\]\"i?|[^ ]+)(?= |$)/g;\n const likeMatch = curQuery.match(likeRegex);\n if (likeMatch) {\n selector.like = [];\n selector['!like'] = [];\n selector.ilike = [];\n selector['!ilike'] = [];\n for (let match of likeMatch) {\n try {\n let [name, value] = match.trim().split('~', 2);\n if (name.endsWith('!')) {\n if (value.endsWith('\"i')) {\n selector['!ilike'].push([\n name.slice(0, -1),\n unQuoteString(value.slice(0, -1)),\n ]);\n }\n else {\n selector['!like'].push([name.slice(0, -1), unQuoteString(value)]);\n }\n }\n else {\n if (value.endsWith('\"i')) {\n selector.ilike.push([name, unQuoteString(value.slice(0, -1))]);\n }\n else {\n selector.like.push([name, unQuoteString(value)]);\n }\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.like.length) {\n delete selector.like;\n }\n if (!selector['!like'].length) {\n delete selector['!like'];\n }\n if (!selector.ilike.length) {\n delete selector.ilike;\n }\n if (!selector['!ilike'].length) {\n delete selector['!ilike'];\n }\n }\n curQuery = curQuery.replace(likeRegex, '');\n const guidRegex = /(?: |^)\\{!?([0-9a-f]{24})\\}(?= |$)/g;\n const guidMatch = curQuery.match(guidRegex);\n if (guidMatch) {\n selector.guid = [];\n selector['!guid'] = [];\n for (let match of guidMatch) {\n try {\n let guid = match.trim().replace(/^\\{|\\}$/g, '');\n if (guid.startsWith('!')) {\n selector['!guid'].push(guid.slice(1));\n }\n else {\n selector.guid.push(guid);\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.guid.length) {\n delete selector.guid;\n }\n if (!selector['!guid'].length) {\n delete selector['!guid'];\n }\n }\n curQuery = curQuery.replace(guidRegex, '');\n const truthyRegex = /(?: |^)\\[(!?\\w+)\\](?= |$)/g;\n const truthyMatch = curQuery.match(truthyRegex);\n if (truthyMatch) {\n selector.truthy = [];\n selector['!truthy'] = [];\n for (let match of truthyMatch) {\n try {\n let name = match.trim().replace(/^\\[|\\]$/g, '');\n if (name.startsWith('!')) {\n selector['!truthy'].push(name.slice(1));\n }\n else {\n selector.truthy.push(name);\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.truthy.length) {\n delete selector.truthy;\n }\n if (!selector['!truthy'].length) {\n delete selector['!truthy'];\n }\n }\n curQuery = curQuery.replace(truthyRegex, '');\n const tagRegex = /(?: |^)<(!?\\w+)>(?= |$)/g;\n const tagMatch = curQuery.match(tagRegex);\n if (tagMatch) {\n selector.tag = [];\n selector['!tag'] = [];\n for (let match of tagMatch) {\n try {\n let name = match.trim().replace(/^<|>$/g, '');\n if (name.startsWith('!')) {\n selector['!tag'].push(name.slice(1));\n }\n else {\n selector.tag.push(name);\n }\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.tag.length) {\n delete selector.tag;\n }\n if (!selector['!tag'].length) {\n delete selector['!tag'];\n }\n }\n curQuery = curQuery.replace(tagRegex, '');\n const gtRegex = /(?: |^)(\\w+)>(-?\\d+(?:\\.\\d+)?)(?= |$)/g;\n const gtMatch = curQuery.match(gtRegex);\n if (gtMatch) {\n selector.gt = [];\n for (let match of gtMatch) {\n try {\n let [name, value] = match.trim().split('>', 2);\n selector.gt.push([name, Number(value)]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.gt.length) {\n delete selector.gt;\n }\n }\n curQuery = curQuery.replace(gtRegex, '');\n const gtRelativeRegex = /(?: |^)(\\w+)>(\\w+|\"[^\"]+\")(?= |$)/g;\n const gtRelativeMatch = curQuery.match(gtRelativeRegex);\n if (gtRelativeMatch) {\n if (selector.gt == null) {\n selector.gt = [];\n }\n for (let match of gtRelativeMatch) {\n try {\n let [name, value] = match.trim().split('>', 2);\n selector.gt.push([\n name,\n null,\n value.replace(/\"/g, ''),\n ]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.gt.length) {\n delete selector.gt;\n }\n }\n curQuery = curQuery.replace(gtRelativeRegex, '');\n const gteRegex = /(?: |^)(\\w+)>=(-?\\d+(?:\\.\\d+)?)(?= |$)/g;\n const gteMatch = curQuery.match(gteRegex);\n if (gteMatch) {\n selector.gte = [];\n for (let match of gteMatch) {\n try {\n let [name, value] = match.trim().split('>=', 2);\n selector.gte.push([name, Number(value)]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.gte.length) {\n delete selector.gte;\n }\n }\n curQuery = curQuery.replace(gteRegex, '');\n const gteRelativeRegex = /(?: |^)(\\w+)>=(\\w+|\"[^\"]+\")(?= |$)/g;\n const gteRelativeMatch = curQuery.match(gteRelativeRegex);\n if (gteRelativeMatch) {\n if (selector.gte == null) {\n selector.gte = [];\n }\n for (let match of gteRelativeMatch) {\n try {\n let [name, value] = match.trim().split('>=', 2);\n selector.gte.push([\n name,\n null,\n value.replace(/\"/g, ''),\n ]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.gte.length) {\n delete selector.gte;\n }\n }\n curQuery = curQuery.replace(gteRelativeRegex, '');\n const ltRegex = /(?: |^)(\\w+)<(-?\\d+(?:\\.\\d+)?)(?= |$)/g;\n const ltMatch = curQuery.match(ltRegex);\n if (ltMatch) {\n selector.lt = [];\n for (let match of ltMatch) {\n try {\n let [name, value] = match.trim().split('<', 2);\n selector.lt.push([name, Number(value)]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.lt.length) {\n delete selector.lt;\n }\n }\n curQuery = curQuery.replace(ltRegex, '');\n const ltRelativeRegex = /(?: |^)(\\w+)<(\\w+|\"[^\"]+\")(?= |$)/g;\n const ltRelativeMatch = curQuery.match(ltRelativeRegex);\n if (ltRelativeMatch) {\n if (selector.lt == null) {\n selector.lt = [];\n }\n for (let match of ltRelativeMatch) {\n try {\n let [name, value] = match.trim().split('<', 2);\n selector.lt.push([\n name,\n null,\n value.replace(/\"/g, ''),\n ]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.lt.length) {\n delete selector.lt;\n }\n }\n curQuery = curQuery.replace(ltRelativeRegex, '');\n const lteRegex = /(?: |^)(\\w+)<=(-?\\d+(?:\\.\\d+)?)(?= |$)/g;\n const lteMatch = curQuery.match(lteRegex);\n if (lteMatch) {\n selector.lte = [];\n for (let match of lteMatch) {\n try {\n let [name, value] = match.trim().split('<=', 2);\n selector.lte.push([name, Number(value)]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.lte.length) {\n delete selector.lte;\n }\n }\n curQuery = curQuery.replace(lteRegex, '');\n const lteRelativeRegex = /(?: |^)(\\w+)<=(\\w+|\"[^\"]+\")(?= |$)/g;\n const lteRelativeMatch = curQuery.match(lteRelativeRegex);\n if (lteRelativeMatch) {\n if (selector.lte == null) {\n selector.lte = [];\n }\n for (let match of lteRelativeMatch) {\n try {\n let [name, value] = match.trim().split('<=', 2);\n selector.lte.push([\n name,\n null,\n value.replace(/\"/g, ''),\n ]);\n }\n catch (e) {\n continue;\n }\n }\n if (!selector.lte.length) {\n delete selector.lte;\n }\n }\n curQuery = curQuery.replace(lteRelativeRegex, '');\n return curQuery.trim();\n}\nfunction unQuoteString(input) {\n if (input.match(/^\".*?[^\\\\]\"$/)) {\n return input.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n }\n return input;\n}\nfunction unQuoteAngles(input) {\n return input.replace(/\\\\</g, '<').replace(/\\\\>/g, '>').replace(/\\\\\\\\/g, '\\\\');\n}\nfunction unQuoteCurlies(input) {\n return input\n .replace(/\\\\\\{/g, '{')\n .replace(/\\\\\\}/g, '}')\n .replace(/\\\\\\\\/g, '\\\\');\n}\n//# sourceMappingURL=queryParser.js.map","export default function splitn(str, delimiter, limit = Infinity) {\n let curStr = str;\n const a = [];\n while (a.length < limit && curStr.length) {\n const next = curStr.split(delimiter, 1);\n a.push(next[0]);\n curStr = curStr.slice(next[0].length);\n if (a.length < limit && curStr) {\n curStr = curStr.replace(delimiter, '');\n if (!curStr) {\n a.push(curStr);\n }\n }\n }\n if (curStr && limit > 0) {\n a[a.length - 1] += curStr;\n }\n return a;\n}\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(568);\n"],"names":["root","factory","exports","module","define","amd","this","__createBinding","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__exportStar","p","prototype","hasOwnProperty","call","__importDefault","mod","value","queryParser","queryParser_1","default","splitn_1","query","entityClass","defaultFields","qrefMap","bareHandler","input","_class","match","length","type","ilike","map","field","options","class","selectorsParser","selector","curQuery","subSelectorPairs","inQuote","nesting","currentStart","i","push","reverse","pair","selectorQuery","slice","startsWith","qrefRegex","qrefMatch","qref","name","trim","replace","className","qrefQuery","split","EntityClass","endsWith","e","equalRegex","equalMatch","equal","JSON","parse","unQuoteString","refRegex","refMatch","ref","containRegex","containMatch","contain","unQuoteAngles","posixRegex","posixMatch","imatch","likeRegex","likeMatch","like","guidRegex","guidMatch","guid","truthyRegex","truthyMatch","truthy","tagRegex","tagMatch","tag","gtRegex","gtMatch","gt","Number","gtRelativeRegex","gtRelativeMatch","gteRegex","gteMatch","gte","gteRelativeRegex","gteRelativeMatch","ltRegex","ltMatch","lt","ltRelativeRegex","ltRelativeMatch","lteRegex","lteMatch","lte","lteRelativeRegex","lteRelativeMatch","selectorParser","limitRegex","limitMatch","limit","offsetRegex","offsetMatch","offset","reverseRegex","reverseMatch","bareSelector","keys","splitn","str","delimiter","Infinity","curStr","a","next","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","key","obj","prop","r","Symbol","toStringTag"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAe,WAAW,CAAC"}
|