@sap/cds 5.6.0 → 5.6.4
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 +44 -1
- package/apis/services.d.ts +4 -0
- package/lib/core/reflect.js +1 -0
- package/lib/env/index.js +5 -1
- package/lib/i18n/localize.js +2 -1
- package/lib/log/format/kibana.js +1 -1
- package/lib/ql/Whereable.js +1 -0
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/ExpressionToCQN.js +2 -0
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/readToCQN.js +5 -5
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetResponseHeadersCommand.js +1 -0
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/result.js +18 -15
- package/libx/_runtime/cds-services/adapter/rest/rest-to-cqn/index.js +2 -2
- package/libx/_runtime/cds-services/adapter/rest/utils/validation-checks.js +6 -2
- package/libx/_runtime/cds-services/services/utils/compareJson.js +1 -1
- package/libx/_runtime/common/auth/strategies/utils/uaa.js +10 -3
- package/libx/_runtime/common/composition/update.js +9 -1
- package/libx/_runtime/common/generic/paging.js +2 -2
- package/libx/_runtime/db/expand/expandCQNToJoin.js +44 -9
- package/libx/_runtime/db/generic/arrayed.js +14 -27
- package/libx/_runtime/db/sql-builder/ExpressionBuilder.js +2 -2
- package/libx/_runtime/fiori/generic/edit.js +1 -1
- package/libx/_runtime/fiori/generic/read.js +28 -0
- package/libx/_runtime/fiori/uiflex/extensibility/index.js +3 -1
- package/libx/_runtime/fiori/uiflex/handler/transformRESULT.js +0 -4
- package/libx/_runtime/messaging/common-utils/AMQPClient.js +8 -3
- package/libx/_runtime/remote/Service.js +6 -2
- package/libx/odata/index.js +2 -1
- package/libx/odata/odata2cqn/afterburner.js +9 -1
- package/libx/odata/odata2cqn/grammar.pegjs +30 -7
- package/libx/odata/odata2cqn/parser.js +1 -1
- package/package.json +1 -1
- package/server.js +9 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,12 +4,55 @@
|
|
|
4
4
|
- The format is based on [Keep a Changelog](http://keepachangelog.com/).
|
|
5
5
|
- This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## Version 5.6.4 - 2021-11-23
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Preserve log level in Kibana formatter
|
|
12
|
+
- RFC 3986 compliant segment recognition in beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
13
|
+
- Support for `$skiptoken` OData query option when using beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
14
|
+
- OData requests with `$skip` and without `$top` query option to services with defined default limit (`cds.query.limit.default`)
|
|
15
|
+
- Creating entities with binary keys. Currently the binary keys may be provided only as Node.js `Buffer` instances using a custom handler.
|
|
16
|
+
- Requests with payload containing nested arrayed elements no longer crash the application
|
|
17
|
+
|
|
18
|
+
## Version 5.6.3 - 2021-11-15
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- `cds run` does not fail if `cds.requires.multitenancy` is explicitly set to `false`
|
|
23
|
+
- Calculation of `DraftIsCreatedByMe` or `DraftIsProcessedByMe` when expanding or navigating to `DraftAdministrativeData`
|
|
24
|
+
- Nested `any` in `$filter` query option
|
|
25
|
+
- Crash on draft activate after draft edit for not existing composition of one, if no explicit DB service is defined
|
|
26
|
+
- Typescript definition of `srv.delete` no longer leads to a duplication error
|
|
27
|
+
|
|
28
|
+
## Version 5.6.2 - 2021-11-08
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- Handle arrayed elements using templating mechanism
|
|
33
|
+
- OData requests to `$count` endpoint of ETag enabled entity
|
|
34
|
+
- `cds.test` does no longer crash if executed in `cds repl` on a remote service call
|
|
35
|
+
- Crash on draft activate after draft edit for not existing composition of one
|
|
36
|
+
- Ensure request correlation (with default server)
|
|
37
|
+
- `<entity>.texts` points to real text entity
|
|
38
|
+
- Draft union with expand to to-one and to-many
|
|
39
|
+
- No columns in draft lock statement (i.e., use `SELECT 1`)
|
|
40
|
+
|
|
41
|
+
## Version 5.6.1 - 2021-11-02
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- UAA credentials lookup
|
|
46
|
+
- Revert return type validation for `cds.String` for compatibility with older `@sap/cds-mtx` versions
|
|
47
|
+
- Messaging: Ill-defined incoming AMQP messages will not crash the app
|
|
48
|
+
- `cds compile -l` does no longer crash if called without `--to` option
|
|
49
|
+
|
|
7
50
|
## Version 5.6.0 - 2021-10-29
|
|
8
51
|
|
|
9
52
|
### Added
|
|
10
53
|
|
|
11
54
|
- New REST protocol adapter (beta)
|
|
12
|
-
+ Makes use of the beta OData URL to CQN parser. Hence, almost all OData requests are supported (see limitations below).
|
|
55
|
+
+ Makes use of the beta OData URL to CQN parser. Hence, almost all OData requests are supported (see limitations below).
|
|
13
56
|
+ Activate via `cds.env.features.rest_new_adapter = true`
|
|
14
57
|
+ Out of scope (compared to OData protocol adapter):
|
|
15
58
|
+ OData query option `$apply`
|
package/apis/services.d.ts
CHANGED
|
@@ -165,6 +165,10 @@ export class Service extends QueryAPI {
|
|
|
165
165
|
* @see [capire docs](https://cap.cloud.sap/docs/node.js/services#srv-send)
|
|
166
166
|
*/
|
|
167
167
|
delete (entityOrPath: Target, data?: object) : Promise<this>
|
|
168
|
+
/**
|
|
169
|
+
* @see [docs](https://cap.cloud.sap/docs/node.js/services#srv-run)
|
|
170
|
+
*/
|
|
171
|
+
delete <T>(entity : Definition | string, key?: any) : DELETE<T>
|
|
168
172
|
|
|
169
173
|
// The central method to dispatch events
|
|
170
174
|
dispatch (msg: EventMessage): Promise<any>
|
package/lib/core/reflect.js
CHANGED
|
@@ -26,6 +26,7 @@ class LinkedCSN extends any {
|
|
|
26
26
|
/* else: */ any.prototype
|
|
27
27
|
)
|
|
28
28
|
if (p.key && !d.key && d.kind === 'element') Object.defineProperty (d,'key',{value:undefined}) //> don't propagate .key
|
|
29
|
+
if (d.elements && d.elements.localized) Object.defineProperty (d,'texts',{value: defs [d.elements.localized.target] })
|
|
29
30
|
try { return Object.setPrototypeOf(d,p) } //> link d to resolved proto
|
|
30
31
|
catch(e) { //> cyclic proto error
|
|
31
32
|
let msg = d.name; for (; p && p.name; p = p.__proto__) msg += ' > '+p.name
|
package/lib/env/index.js
CHANGED
|
@@ -242,7 +242,11 @@ _loadFromPath (_path, _basePath) {
|
|
|
242
242
|
|
|
243
243
|
_link_required_services () {
|
|
244
244
|
const { requires } = this, protos = requires && requires._prototypes || {}
|
|
245
|
-
for (let each in requires)
|
|
245
|
+
for (let each in requires) {
|
|
246
|
+
requires[each] = _merged (each)
|
|
247
|
+
// if we got an invalid value, remove it (would anyways cause trouble down the road)
|
|
248
|
+
if (!requires[each]) delete requires[each]
|
|
249
|
+
}
|
|
246
250
|
function _merged (key) {
|
|
247
251
|
const entry = requires[key] || protos[key]
|
|
248
252
|
if (!entry || entry._is_merged || entry.kind === key || !(entry.kind in requires) && !(entry.kind in protos)) return entry
|
package/lib/i18n/localize.js
CHANGED
|
@@ -35,7 +35,8 @@ function localize (model, /*with:*/ locale, aString) {
|
|
|
35
35
|
const TEXT_KEY_MARKER = 'i18n>'
|
|
36
36
|
const TEXT_KEYS = /"([^"{]+)?{b?i18n>([^"}]+)}([^"]+)?"/g
|
|
37
37
|
function localizeString (aString, bundle) {
|
|
38
|
-
if (!bundle) return aString
|
|
38
|
+
if (!bundle || !aString) return aString
|
|
39
|
+
if (typeof aString === 'object') aString = JSON.stringify(aString, null, 2)
|
|
39
40
|
// quick check for presence of any text key, to avoid expensive operation below
|
|
40
41
|
if (aString.indexOf(TEXT_KEY_MARKER) < 0) return aString
|
|
41
42
|
const isXml = aString.startsWith('<?xml')
|
package/lib/log/format/kibana.js
CHANGED
|
@@ -35,7 +35,7 @@ module.exports = (module, level, ...args) => {
|
|
|
35
35
|
const err = args.shift()
|
|
36
36
|
toLog.msg = err.message
|
|
37
37
|
if (err instanceof Error) toLog.stacktrace = err.stack.split(/\s*\r?\n\s*/)
|
|
38
|
-
Object.assign(toLog, err)
|
|
38
|
+
Object.assign(toLog, err, { level: toLog.level })
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
// append remaining args via util.format()
|
package/lib/ql/Whereable.js
CHANGED
|
@@ -77,6 +77,7 @@ const _object_predicate = ([arg], _clause) => { // e.g. .where ({ID:4711, stock:
|
|
|
77
77
|
else if (x.SELECT || x.list) pred.push('in', x)
|
|
78
78
|
else if (is_array(x)) pred.push('in', {list:x.map(val)})
|
|
79
79
|
else if (is_cqn(x)) pred.push('=', x)
|
|
80
|
+
else if (x instanceof Buffer) pred.push('=', {val:x})
|
|
80
81
|
else if (x instanceof RegExp) pred.push('like', {val:x})
|
|
81
82
|
else if (typeof x === 'object') for (let op in x) pred.push(op, val(x[op]))
|
|
82
83
|
else if (_clause === 'on' && typeof x === 'string') pred.push('=', { ref: x.split('.') })
|
|
@@ -59,6 +59,8 @@ class ExpressionToCQN {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
_lambda(pathSegments) {
|
|
62
|
+
// we don't care about the variable name
|
|
63
|
+
if (pathSegments[0].getKind() === 'EXPRESSION.VARIABLE') pathSegments = pathSegments.slice(1)
|
|
62
64
|
const nav =
|
|
63
65
|
pathSegments.length > 2 ? pathSegments.slice(0, pathSegments.length - 2).map(this._segmentFromMember) : []
|
|
64
66
|
const navName = this._segmentFromMember(pathSegments[pathSegments.length - 2])
|
|
@@ -14,7 +14,7 @@ const { _expand } = require('../utils/handlerUtils')
|
|
|
14
14
|
const { resolveStructuredName } = require('../utils/handlerUtils')
|
|
15
15
|
const { isStreaming } = require('../utils/stream')
|
|
16
16
|
const { convertUrlPathToCqn, getAllKeys } = require('./utils')
|
|
17
|
-
const { getMaxPageSize } = require('../../../../common/utils/page')
|
|
17
|
+
const { getMaxPageSize, getDefaultPageSize } = require('../../../../common/utils/page')
|
|
18
18
|
const { isAsteriskColumn } = require('../../../../common/utils/rewriteAsterisks')
|
|
19
19
|
|
|
20
20
|
const {
|
|
@@ -137,11 +137,11 @@ const _apply = (uriInfo, queryOptions, entity, model) => {
|
|
|
137
137
|
return {}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
const _topSkip = (queryOptions,
|
|
140
|
+
const _topSkip = (queryOptions, target, cqn) => {
|
|
141
141
|
if (queryOptions && (queryOptions.$top || queryOptions.$skip || queryOptions.$skiptoken)) {
|
|
142
|
-
const top = queryOptions.$top ? parseInt(queryOptions.$top) :
|
|
142
|
+
const top = queryOptions.$top ? parseInt(queryOptions.$top) : getDefaultPageSize(target)
|
|
143
143
|
const skip = parseInt(queryOptions.$skip || 0) + parseInt(queryOptions.$skiptoken || 0)
|
|
144
|
-
cqn.limit(Math.min(top,
|
|
144
|
+
cqn.limit(Math.min(top, getMaxPageSize(target)), skip)
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
|
|
@@ -400,7 +400,7 @@ const readToCQN = (service, target, odataReq) => {
|
|
|
400
400
|
}
|
|
401
401
|
|
|
402
402
|
if (isCollectionOrToMany) {
|
|
403
|
-
_topSkip(queryOptions,
|
|
403
|
+
_topSkip(queryOptions, target, cqn)
|
|
404
404
|
_orderby(uriInfo, cqn)
|
|
405
405
|
}
|
|
406
406
|
|
|
@@ -75,6 +75,7 @@ class SetResponseHeadersCommand extends Command {
|
|
|
75
75
|
? lastSegment.getTarget() && lastSegment.getTarget().isConcurrent()
|
|
76
76
|
: this._request.getConcurrentResource()) &&
|
|
77
77
|
representationKind !== RepresentationKinds.ENTITY_COLLECTION &&
|
|
78
|
+
representationKind !== RepresentationKinds.COUNT &&
|
|
78
79
|
representationKind !== RepresentationKinds.REFERENCE &&
|
|
79
80
|
representationKind !== RepresentationKinds.REFERENCE_COLLECTION
|
|
80
81
|
) {
|
|
@@ -249,23 +249,26 @@ const postProcess = (req, res, service, result, previousResult) => {
|
|
|
249
249
|
if (template.elements.size === 0) return
|
|
250
250
|
|
|
251
251
|
// normalize result to rows
|
|
252
|
-
result = result.value && Object.keys(result).filter(k => !k.match(/^\W/)).length === 1 ? result.value : result
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
252
|
+
result = result.value != null && Object.keys(result).filter(k => !k.match(/^\W/)).length === 1 ? result.value : result
|
|
253
|
+
|
|
254
|
+
if (typeof result === 'object' && result != null) {
|
|
255
|
+
const rows = Array.isArray(result) ? result : [result]
|
|
256
|
+
|
|
257
|
+
// process each row
|
|
258
|
+
const processFn = _processorFn(req, previousResult, options)
|
|
259
|
+
|
|
260
|
+
for (const row of rows) {
|
|
261
|
+
const args = {
|
|
262
|
+
processFn,
|
|
263
|
+
row,
|
|
264
|
+
template,
|
|
265
|
+
pathOptions: {
|
|
266
|
+
includeKeyValues: false
|
|
267
|
+
}
|
|
265
268
|
}
|
|
266
|
-
}
|
|
267
269
|
|
|
268
|
-
|
|
270
|
+
templateProcessor(args)
|
|
271
|
+
}
|
|
269
272
|
}
|
|
270
273
|
|
|
271
274
|
applyOmitValuesPreference(res, options.omitValuesPreference)
|
|
@@ -4,7 +4,7 @@ const { INSERT, SELECT, UPDATE, DELETE } = cds.ql
|
|
|
4
4
|
|
|
5
5
|
const { createCqlString } = require('./utils')
|
|
6
6
|
const { getColumns } = require('../../../services/utils/columns')
|
|
7
|
-
const { getMaxPageSize } = require('../../../../common/utils/page')
|
|
7
|
+
const { getMaxPageSize, getDefaultPageSize } = require('../../../../common/utils/page')
|
|
8
8
|
|
|
9
9
|
const _readToCQN = ({ isCollection, segments }, target, restReq) => {
|
|
10
10
|
const key = Object.keys(target.keys)[0]
|
|
@@ -20,7 +20,7 @@ const _readToCQN = ({ isCollection, segments }, target, restReq) => {
|
|
|
20
20
|
if (!isCollection) cqn.SELECT.one = true
|
|
21
21
|
|
|
22
22
|
if (isCollection && (restReq.query.$top || restReq.query.$skip)) {
|
|
23
|
-
const top = restReq.query.$top ? parseInt(restReq.query.$top) :
|
|
23
|
+
const top = restReq.query.$top ? parseInt(restReq.query.$top) : getDefaultPageSize(target)
|
|
24
24
|
cqn.limit(Math.min(top, getMaxPageSize(target)), parseInt(restReq.query.$skip) || 0)
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -106,10 +106,14 @@ const validateReturnType = (operation, data) => {
|
|
|
106
106
|
// Determine entity from bound or unbound action/function
|
|
107
107
|
const returnTypeCsnDefinition = returnType._type || returnType
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
// REVISIT: remove exception with cds^6
|
|
110
|
+
// mtx returns object instead of string (as in modell) -> skip validation
|
|
111
|
+
if (returnTypeCsnDefinition.type !== 'cds.String') {
|
|
112
|
+
checkResult = checkStatic(returnTypeCsnDefinition, data, true)
|
|
113
|
+
}
|
|
110
114
|
}
|
|
111
115
|
|
|
112
|
-
if (checkResult.length !== 0) {
|
|
116
|
+
if (checkResult && checkResult.length !== 0) {
|
|
113
117
|
throw _getTypeError(operation, returnType.type, checkResult)
|
|
114
118
|
}
|
|
115
119
|
|
|
@@ -268,7 +268,7 @@ const compareJson = (newValue, oldValue, entity) => {
|
|
|
268
268
|
return Array.isArray(newValue) ? result : result[0]
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
const _isObject = item => item && typeof item === 'object' && !Array.isArray(item)
|
|
271
|
+
const _isObject = item => item && typeof item === 'object' && !Array.isArray(item) && !Buffer.isBuffer(item)
|
|
272
272
|
|
|
273
273
|
const _mergeArrays = (entity, oldValue, newValue) => {
|
|
274
274
|
const merged = []
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
const cds = require('../../../../cds')
|
|
2
2
|
|
|
3
3
|
const getCredentials = uaa => {
|
|
4
|
-
uaa =
|
|
4
|
+
uaa =
|
|
5
|
+
uaa && uaa.credentials
|
|
6
|
+
? uaa
|
|
7
|
+
: cds.env.requires.uaa && cds.env.requires.uaa.credentials
|
|
8
|
+
? cds.env.requires.uaa
|
|
9
|
+
: cds.env.requires.xsuaa && cds.env.requires.xsuaa.credentials
|
|
10
|
+
? cds.env.requires.xsuaa
|
|
11
|
+
: {}
|
|
5
12
|
|
|
6
|
-
if (!uaa.credentials)
|
|
13
|
+
if (!uaa.credentials)
|
|
7
14
|
throw Object.assign(new Error('No or malformed uaa credentials'), { credentials: uaa.credentials })
|
|
8
|
-
|
|
15
|
+
|
|
9
16
|
return uaa.credentials
|
|
10
17
|
}
|
|
11
18
|
|
|
@@ -205,11 +205,19 @@ function _addSubDeepUpdateCQNRecursion({ definitions, compositionTree, entity, d
|
|
|
205
205
|
const selectSubData = []
|
|
206
206
|
for (const entry of data) {
|
|
207
207
|
if (element.name in entry) {
|
|
208
|
-
_addToData(subData, entity, element, entry)
|
|
209
208
|
const selectEntry = selectDataByKey.get(_serializedKey(entity, entry))
|
|
209
|
+
|
|
210
210
|
if (selectEntry && element.name in selectEntry) {
|
|
211
|
+
if (
|
|
212
|
+
selectEntry[element.name] === null &&
|
|
213
|
+
(entry[element.name] === null || Object.keys(entry[element.name]).length === 0)
|
|
214
|
+
) {
|
|
215
|
+
continue
|
|
216
|
+
}
|
|
211
217
|
_addToData(selectSubData, entity, element, selectEntry)
|
|
212
218
|
}
|
|
219
|
+
|
|
220
|
+
_addToData(subData, entity, element, entry)
|
|
213
221
|
}
|
|
214
222
|
}
|
|
215
223
|
_addSubDeepUpdateCQN({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const cds = require('../../cds')
|
|
2
|
-
const { getDefaultPageSize } = require('../utils/page')
|
|
2
|
+
const { getDefaultPageSize, getMaxPageSize } = require('../utils/page')
|
|
3
3
|
|
|
4
4
|
const _handler = function (req) {
|
|
5
5
|
// only if http request
|
|
@@ -11,7 +11,7 @@ const _handler = function (req) {
|
|
|
11
11
|
let { rows, offset } = req.query.SELECT.limit || {}
|
|
12
12
|
rows = rows && 'val' in rows ? rows.val : getDefaultPageSize(req.target)
|
|
13
13
|
offset = offset && 'val' in offset ? offset.val : 0
|
|
14
|
-
req.query.limit(...[rows, offset])
|
|
14
|
+
req.query.limit(...[Math.min(rows, getMaxPageSize(req.target)), offset])
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -11,15 +11,27 @@ const { isAsteriskColumn } = require('../../common/utils/rewriteAsterisks')
|
|
|
11
11
|
const GET_KEY_VALUE = Symbol.for('sap.cds.getKeyValue')
|
|
12
12
|
const TO_MANY = Symbol.for('sap.cds.toMany')
|
|
13
13
|
const TO_ACTIVE = Symbol.for('sap.cds.toActive')
|
|
14
|
-
|
|
15
14
|
const SKIP_MAPPING = Symbol.for('sap.cds.skipMapping')
|
|
16
15
|
const IDENTIFIER = Symbol.for('sap.cds.identifier')
|
|
17
16
|
const IS_ACTIVE = Symbol.for('sap.cds.isActive')
|
|
18
17
|
const IS_UNION_DRAFT = Symbol.for('sap.cds.isUnionDraft')
|
|
18
|
+
|
|
19
19
|
const { DRAFT_COLUMNS } = require('../../common/constants/draft')
|
|
20
20
|
|
|
21
21
|
const { getCQNUnionFrom } = require('../../common/utils/union')
|
|
22
22
|
|
|
23
|
+
function getCqnCopy(readToOneCQN) {
|
|
24
|
+
const readToOneCQNCopy = JSON.parse(JSON.stringify(readToOneCQN))
|
|
25
|
+
if (readToOneCQN[GET_KEY_VALUE] !== undefined) readToOneCQNCopy[GET_KEY_VALUE] = readToOneCQN[GET_KEY_VALUE]
|
|
26
|
+
if (readToOneCQN[TO_MANY] !== undefined) readToOneCQNCopy[TO_MANY] = readToOneCQN[TO_MANY]
|
|
27
|
+
if (readToOneCQN[TO_ACTIVE] !== undefined) readToOneCQNCopy[TO_ACTIVE] = readToOneCQN[TO_ACTIVE]
|
|
28
|
+
if (readToOneCQN[SKIP_MAPPING] !== undefined) readToOneCQNCopy[SKIP_MAPPING] = readToOneCQN[SKIP_MAPPING]
|
|
29
|
+
if (readToOneCQN[IDENTIFIER] !== undefined) readToOneCQNCopy[IDENTIFIER] = readToOneCQN[IDENTIFIER]
|
|
30
|
+
if (readToOneCQN[IS_ACTIVE] !== undefined) readToOneCQNCopy[IS_ACTIVE] = readToOneCQN[IS_ACTIVE]
|
|
31
|
+
if (readToOneCQN[IS_UNION_DRAFT] !== undefined) readToOneCQNCopy[IS_UNION_DRAFT] = readToOneCQN[IS_UNION_DRAFT]
|
|
32
|
+
return readToOneCQNCopy
|
|
33
|
+
}
|
|
34
|
+
|
|
23
35
|
class JoinCQNFromExpanded {
|
|
24
36
|
constructor(cqn, csn, locale) {
|
|
25
37
|
this._SELECT = Object.assign({}, cqn.SELECT)
|
|
@@ -91,16 +103,16 @@ class JoinCQNFromExpanded {
|
|
|
91
103
|
* @private
|
|
92
104
|
*/
|
|
93
105
|
_createJoinCQNFromExpanded(SELECT, toManyTree, defaultLanguage) {
|
|
94
|
-
const
|
|
95
|
-
const
|
|
106
|
+
const joinArgs = SELECT.from.args
|
|
107
|
+
const isJoinOfTwoSelects = joinArgs && joinArgs.every(a => a.SELECT)
|
|
96
108
|
|
|
97
109
|
const unionTableRef = this._getUnionTable(SELECT)
|
|
98
110
|
const unionTable = unionTableRef && unionTableRef.table
|
|
99
111
|
const tableAlias = this._getTableAlias(SELECT, toManyTree, unionTable)
|
|
100
112
|
|
|
101
|
-
const readToOneCQN = this._getReadToOneCQN(SELECT,
|
|
113
|
+
const readToOneCQN = this._getReadToOneCQN(SELECT, isJoinOfTwoSelects ? 'filterExpand' : tableAlias)
|
|
102
114
|
|
|
103
|
-
if (
|
|
115
|
+
if (isJoinOfTwoSelects) {
|
|
104
116
|
// mappings
|
|
105
117
|
const mappings = this._getMappingObject(toManyTree)
|
|
106
118
|
const prefix = `${tableAlias}_`
|
|
@@ -110,7 +122,7 @@ class JoinCQNFromExpanded {
|
|
|
110
122
|
mappings[c.as.replace(prefix, '')] = c.as
|
|
111
123
|
})
|
|
112
124
|
// expand to one
|
|
113
|
-
const entity = this._csn.definitions[
|
|
125
|
+
const entity = this._csn.definitions[joinArgs[0].SELECT.from.SET.args[1].SELECT.from.ref[0]]
|
|
114
126
|
const givenColumns = readToOneCQN.columns
|
|
115
127
|
readToOneCQN.columns = []
|
|
116
128
|
this._expandedToFlat({ entity, givenColumns, readToOneCQN, tableAlias, toManyTree, defaultLanguage })
|
|
@@ -128,6 +140,9 @@ class JoinCQNFromExpanded {
|
|
|
128
140
|
this._expandedToFlat({ entity, givenColumns, readToOneCQN, tableAlias, toManyTree, defaultLanguage })
|
|
129
141
|
}
|
|
130
142
|
|
|
143
|
+
// brute force hack
|
|
144
|
+
readToOneCQN.columns = readToOneCQN.columns.filter(c => c.as !== 'filterExpand_IsActiveEntity')
|
|
145
|
+
|
|
131
146
|
// Add at start, so that the deepest level is post processed first
|
|
132
147
|
this.queries.push({
|
|
133
148
|
SELECT: readToOneCQN,
|
|
@@ -480,6 +495,8 @@ class JoinCQNFromExpanded {
|
|
|
480
495
|
const toManyColumns = []
|
|
481
496
|
const mappings = this._getMappingObject(toManyTree)
|
|
482
497
|
|
|
498
|
+
const readToOneCQNCopy = getCqnCopy(readToOneCQN)
|
|
499
|
+
|
|
483
500
|
for (const column of givenColumns) {
|
|
484
501
|
let navigation
|
|
485
502
|
if (column.expand) {
|
|
@@ -523,7 +540,16 @@ class JoinCQNFromExpanded {
|
|
|
523
540
|
}
|
|
524
541
|
|
|
525
542
|
// only as second step handle expand to many, or else keys might still be unknown
|
|
526
|
-
this._toMany({
|
|
543
|
+
this._toMany({
|
|
544
|
+
entity,
|
|
545
|
+
readToOneCQN,
|
|
546
|
+
tableAlias,
|
|
547
|
+
toManyColumns,
|
|
548
|
+
toManyTree,
|
|
549
|
+
mappings,
|
|
550
|
+
defaultLanguage,
|
|
551
|
+
readToOneCQNCopy
|
|
552
|
+
})
|
|
527
553
|
}
|
|
528
554
|
|
|
529
555
|
adjustOrderBy(orderBy, mappings, column, tableAlias) {
|
|
@@ -957,7 +983,16 @@ class JoinCQNFromExpanded {
|
|
|
957
983
|
return DRAFT_COLUMNS.includes(ref[0])
|
|
958
984
|
}
|
|
959
985
|
|
|
960
|
-
_toMany({
|
|
986
|
+
_toMany({
|
|
987
|
+
entity,
|
|
988
|
+
readToOneCQN,
|
|
989
|
+
tableAlias,
|
|
990
|
+
toManyColumns,
|
|
991
|
+
toManyTree,
|
|
992
|
+
mappings,
|
|
993
|
+
defaultLanguage,
|
|
994
|
+
readToOneCQNCopy
|
|
995
|
+
}) {
|
|
961
996
|
if (toManyColumns.length === 0) {
|
|
962
997
|
return
|
|
963
998
|
}
|
|
@@ -968,7 +1003,7 @@ class JoinCQNFromExpanded {
|
|
|
968
1003
|
const select = this._buildExpandedCQN({
|
|
969
1004
|
column,
|
|
970
1005
|
entity,
|
|
971
|
-
readToOneCQN,
|
|
1006
|
+
readToOneCQN: readToOneCQNCopy,
|
|
972
1007
|
toManyTree,
|
|
973
1008
|
mappings,
|
|
974
1009
|
parentAlias,
|
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
// REVISIT: use templating mechanism (resp. results.metadata, once available) to make more efficient
|
|
2
|
-
|
|
3
1
|
const { getEntityFromCQN } = require('../../common/utils/entityFromCqn')
|
|
2
|
+
const getTemplate = require('../../common/utils/template')
|
|
3
|
+
const templateProcessor = require('../../common/utils/templateProcessor')
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// and 100% of all currently existing stakeholder projects don't.
|
|
9
|
-
// but that's not that easy to fix -> see comment about results.metadata below
|
|
10
|
-
for (const row of result) {
|
|
11
|
-
for (const column in row) {
|
|
12
|
-
if (elements[column] === undefined || row[column] === undefined) continue
|
|
5
|
+
const _pick = element => {
|
|
6
|
+
if (element.kind === 'element' && element.items) return 'arrayed'
|
|
7
|
+
}
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} else if (elements[column].is2many) {
|
|
18
|
-
_toArray(row[column], elements[column]._target.elements)
|
|
19
|
-
} else if (elements[column].is2one) {
|
|
20
|
-
_toArray([row[column]], elements[column]._target.elements)
|
|
21
|
-
} else if (elements[column].elements) {
|
|
22
|
-
_toArray([row[column]], elements[column].elements)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
9
|
+
const _processFn = ({ row, key, plain }) => {
|
|
10
|
+
if (plain === 'arrayed' && row && row[key] && (typeof row[key] === 'string' || Buffer.isBuffer(row[key]))) {
|
|
11
|
+
row[key] = JSON.parse(row[key])
|
|
25
12
|
}
|
|
26
13
|
}
|
|
27
14
|
|
|
@@ -35,12 +22,12 @@ const _toArray = (result, elements) => {
|
|
|
35
22
|
module.exports = function (result, req) {
|
|
36
23
|
if (!this.model) return
|
|
37
24
|
|
|
38
|
-
if (!Array.isArray(result)) result = [result]
|
|
39
|
-
|
|
40
|
-
// REVISIT: We need results.metadata to make that more efficient
|
|
41
|
-
// results.metadata ~= cds.infer(req.query).metadata
|
|
42
|
-
// REVISIT: No entity for sets/unions outside of common draft scenarios
|
|
43
25
|
const entity = getEntityFromCQN(req, this)
|
|
44
26
|
if (!entity) return
|
|
45
|
-
|
|
27
|
+
|
|
28
|
+
const template = getTemplate('db-arrayed', this, entity, { pick: _pick })
|
|
29
|
+
if (template.elements.size === 0) return
|
|
30
|
+
|
|
31
|
+
for (const row of Array.isArray(result) ? result : [result])
|
|
32
|
+
templateProcessor({ processFn: _processFn, row, template })
|
|
46
33
|
}
|
|
@@ -87,11 +87,11 @@ class ExpressionBuilder extends BaseBuilder {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
_isStructured(op1, comp, op2) {
|
|
90
|
-
if (op1.ref && comp === '=' && op2.val && typeof op2.val === 'object') {
|
|
90
|
+
if (op1.ref && comp === '=' && op2.val && typeof op2.val === 'object' && !(op2.val instanceof Buffer)) {
|
|
91
91
|
return true
|
|
92
92
|
}
|
|
93
93
|
// also check reverse
|
|
94
|
-
if (op1.val && typeof op1.val === 'object' && comp === '=' && op2.ref) {
|
|
94
|
+
if (op1.val && typeof op1.val === 'object' && comp === '=' && op2.ref && !(op1.val instanceof Buffer)) {
|
|
95
95
|
return true
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -106,7 +106,7 @@ const _handler = async function (req) {
|
|
|
106
106
|
// Only allows one active entity to be processed at a time, locking out other
|
|
107
107
|
// users who need to edit the same record simultaneously.
|
|
108
108
|
// .forUpdate(): lock the record, a wait of 0 is equivalent to no wait
|
|
109
|
-
const lockRecordCQN = SELECT.from(lockTargetEntity).where(lockWhere).forUpdate({ wait: 0 })
|
|
109
|
+
const lockRecordCQN = SELECT.from(lockTargetEntity, [1]).where(lockWhere).forUpdate({ wait: 0 })
|
|
110
110
|
|
|
111
111
|
const columnNames = getColumns(req.target, { onlyNames: true, filterVirtual: true })
|
|
112
112
|
const rootCQN = SELECT.from(req.target, columnNames).where(rootWhere)
|
|
@@ -257,12 +257,29 @@ const _getOuterMostColumns = (columnsFromRequest, additionalDraftColumns) => {
|
|
|
257
257
|
return columns
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
+
// adds base columns 'InProcessByUser' and 'CreatedByUser' to columns param if needed
|
|
261
|
+
// those are required for calculating 'DraftIsProcessedByMe' and 'DraftIsCreatedByMe'
|
|
262
|
+
const _ensureDraftAdminColumnsForCalculation = columns => {
|
|
263
|
+
columns.forEach((c, i) => {
|
|
264
|
+
if (c.ref && c.ref[0] === 'DraftIsCreatedByMe' && !columns.find(e => e.ref && e.ref[0] === 'CreatedByUser')) {
|
|
265
|
+
columns.push({ ref: ['CreatedByUser'] })
|
|
266
|
+
} else if (
|
|
267
|
+
c.ref &&
|
|
268
|
+
c.ref[0] === 'DraftIsProcessedByMe' &&
|
|
269
|
+
!columns.find(e => e.ref && e.ref[0] === 'InProcessByUser')
|
|
270
|
+
) {
|
|
271
|
+
columns.push({ ref: ['InProcessByUser'] })
|
|
272
|
+
}
|
|
273
|
+
})
|
|
274
|
+
}
|
|
275
|
+
|
|
260
276
|
const _draftAdminTable = req => {
|
|
261
277
|
const { table } = _getTableName(req)
|
|
262
278
|
|
|
263
279
|
let cqn = SELECT.from(table)
|
|
264
280
|
if (req.query.SELECT.columns) {
|
|
265
281
|
cqn = cqn.columns(...req.query.SELECT.columns)
|
|
282
|
+
_ensureDraftAdminColumnsForCalculation(cqn.SELECT.columns)
|
|
266
283
|
}
|
|
267
284
|
|
|
268
285
|
return {
|
|
@@ -1119,6 +1136,14 @@ const _getLocalizedEntity = (model, target, user) => {
|
|
|
1119
1136
|
return localizedEntity || model.definitions[`${prefix}.${target.name}`]
|
|
1120
1137
|
}
|
|
1121
1138
|
|
|
1139
|
+
const _adaptDraftAdminExpand = cqn => {
|
|
1140
|
+
const draftAdminExpand =
|
|
1141
|
+
cqn.SELECT.columns && cqn.SELECT.columns.find(c => c.expand && c.ref[0] === 'DraftAdministrativeData')
|
|
1142
|
+
if (draftAdminExpand) {
|
|
1143
|
+
_ensureDraftAdminColumnsForCalculation(draftAdminExpand.expand)
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1122
1147
|
/**
|
|
1123
1148
|
* Generic Handler for READ requests in the context of draft.
|
|
1124
1149
|
*
|
|
@@ -1154,6 +1179,9 @@ const _handler = async function (req) {
|
|
|
1154
1179
|
return
|
|
1155
1180
|
}
|
|
1156
1181
|
|
|
1182
|
+
// ensure base columns for calculation are selected in draft admin expand
|
|
1183
|
+
_adaptDraftAdminExpand(cqnScenario.cqn)
|
|
1184
|
+
|
|
1157
1185
|
if (cqnScenario.scenario === SCENARIO.ALL_ACTIVE && cqnScenario.cqn.SELECT.where) {
|
|
1158
1186
|
cqnScenario.cqn.SELECT.where = removeIsActiveEntityRecursively(cqnScenario.cqn.SELECT.where)
|
|
1159
1187
|
}
|
|
@@ -55,13 +55,15 @@ const _addViews = csn => {
|
|
|
55
55
|
})
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
const _needsQuotations = t => t instanceof cds.builtin.classes.string || t instanceof cds.builtin.classes.date
|
|
59
|
+
|
|
58
60
|
const _handleDefaults = async (extension, dbEntity, req, cds, draftEntity) => {
|
|
59
61
|
const ext = Object.keys(extension.elements)
|
|
60
62
|
.filter(key => extension.elements[key].default)
|
|
61
63
|
.map(key => {
|
|
62
64
|
const element = extension.elements[key]
|
|
63
65
|
const t = cds.model.definitions[element.type] || cds.builtin.types[element.type]
|
|
64
|
-
const value = t && t
|
|
66
|
+
const value = t && _needsQuotations(t) ? `"${element.default.val}"` : element.default.val
|
|
65
67
|
return `"${key}":${value}`
|
|
66
68
|
})
|
|
67
69
|
|
|
@@ -18,9 +18,14 @@ const addDataListener = (client, queue, prefix, cb) =>
|
|
|
18
18
|
.receiver(queue)
|
|
19
19
|
.attach(source)
|
|
20
20
|
.on('data', async raw => {
|
|
21
|
-
const buffer = Buffer.concat(raw.payload.chunks)
|
|
22
|
-
const payload = _JSONorString(buffer.toString())
|
|
23
|
-
const topic =
|
|
21
|
+
const buffer = raw.payload && Buffer.concat(raw.payload.chunks)
|
|
22
|
+
const payload = buffer && _JSONorString(buffer.toString())
|
|
23
|
+
const topic =
|
|
24
|
+
raw.source &&
|
|
25
|
+
raw.source.properties &&
|
|
26
|
+
raw.source.properties.to &&
|
|
27
|
+
raw.source.properties.to.replace(/^topic:\/*/, '')
|
|
28
|
+
if (!topic) return raw.done()
|
|
24
29
|
await cb(topic, payload, null, { done: raw.done, failed: raw.failed })
|
|
25
30
|
})
|
|
26
31
|
.on('subscribed', () => {
|
|
@@ -5,8 +5,12 @@ const LOG = cds.log('remote')
|
|
|
5
5
|
|
|
6
6
|
// disable sdk logger if not in debug mode
|
|
7
7
|
if (!LOG._debug) {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
try {
|
|
9
|
+
const sdkUtils = require('@sap-cloud-sdk/util')
|
|
10
|
+
sdkUtils.setGlobalLogLevel('error')
|
|
11
|
+
} catch (err) {
|
|
12
|
+
/* might fail in cds repl due to winston's exception handler, see cap/issues#10134 */
|
|
13
|
+
}
|
|
10
14
|
}
|
|
11
15
|
|
|
12
16
|
const { resolveView, getTransition, restoreLink, findQueryTarget } = require('../common/utils/resolveView')
|
package/libx/odata/index.js
CHANGED
|
@@ -39,6 +39,7 @@ module.exports = {
|
|
|
39
39
|
if (url.url) url = url.url
|
|
40
40
|
// REVISIT: for okra, remove when no longer needed
|
|
41
41
|
else if (url.getIncomingRequest) url = url.getIncomingRequest().url
|
|
42
|
+
|
|
42
43
|
url = decodeURIComponent(url)
|
|
43
44
|
|
|
44
45
|
options = options === 'strict' ? { strict } : options.strict ? { ...options, strict } : options
|
|
@@ -63,7 +64,7 @@ module.exports = {
|
|
|
63
64
|
throw err
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
if (
|
|
67
|
+
if (options.afterburner) cqn = options.afterburner(cqn)
|
|
67
68
|
|
|
68
69
|
const query = cqn.SELECT.one ? SELECT.one(cqn.SELECT.from) : SELECT.from(cqn.SELECT.from)
|
|
69
70
|
Object.assign(query.SELECT, cqn.SELECT)
|
|
@@ -59,7 +59,15 @@ function _processSegments(cqn, model) {
|
|
|
59
59
|
let base = ref[i - keyCount]
|
|
60
60
|
if (!base.id) base = { id: base, where: [] }
|
|
61
61
|
if (base.where.length) base.where.push('and')
|
|
62
|
-
|
|
62
|
+
if (ref[i].id) {
|
|
63
|
+
// > fix case key value parsed to collection with filter
|
|
64
|
+
const val = `${ref[i].id}(${Object.keys(params)
|
|
65
|
+
.map(k => `${k}='${params[k]}'`)
|
|
66
|
+
.join(',')})`
|
|
67
|
+
base.where.push({ ref: [key] }, '=', { val })
|
|
68
|
+
} else {
|
|
69
|
+
base.where.push({ ref: [key] }, '=', { val: element.type === 'cds.Integer' ? Number(seg) : seg })
|
|
70
|
+
}
|
|
63
71
|
ref[i] = null
|
|
64
72
|
ref[i - keyCount] = base
|
|
65
73
|
incompleteKeys = keyCount < keys.length
|
|
@@ -115,6 +115,22 @@
|
|
|
115
115
|
const _compareRefs = col => exp => col === exp ||
|
|
116
116
|
(col.as && exp.as && col.as === exp.as) ||
|
|
117
117
|
(col.ref && exp.ref && col.ref.join('') === exp.ref.join(''))
|
|
118
|
+
|
|
119
|
+
const _getMergedPath = (head, filter, segment) => {
|
|
120
|
+
if (!head) head = ''
|
|
121
|
+
if (filter) {
|
|
122
|
+
head += filter.reduce((acc, cur) => {
|
|
123
|
+
for (const c of cur) {
|
|
124
|
+
if (typeof c === 'string') acc += c
|
|
125
|
+
else acc += c.val ? typeof c.val === 'string' ? `'${c.val}'` : c.val : c.ref[0]
|
|
126
|
+
}
|
|
127
|
+
return acc
|
|
128
|
+
}, '')
|
|
129
|
+
filter = undefined
|
|
130
|
+
}
|
|
131
|
+
head += segment
|
|
132
|
+
return [head, filter, segment]
|
|
133
|
+
}
|
|
118
134
|
}
|
|
119
135
|
|
|
120
136
|
// ---------- Entity Paths ---------------
|
|
@@ -149,7 +165,9 @@
|
|
|
149
165
|
path
|
|
150
166
|
= "$count" {count = true}
|
|
151
167
|
/ rv:$("$ref"/"$value") {return !TECHNICAL_OPTS.includes(rv) && {from: {ref: [rv]}}}
|
|
152
|
-
/ head:(identifier/val) filter:(OPEN CLOSE/OPEN args CLOSE)? tail:( '/' p:path {return p} )? {
|
|
168
|
+
/ head:(identifier/val)? filter:(OPEN CLOSE/OPEN args CLOSE)? segment:(segment)? tail:( '/' p:path {return p} )? {
|
|
169
|
+
// OData vs. REST style
|
|
170
|
+
if (segment) [head, filter, segment] = _getMergedPath(head, filter, segment)
|
|
153
171
|
// minimal: val also as path segment
|
|
154
172
|
const ref = [
|
|
155
173
|
filter
|
|
@@ -187,6 +205,7 @@
|
|
|
187
205
|
"$orderby=" o orderby ( COMMA orderby )* /
|
|
188
206
|
"$top=" o top /
|
|
189
207
|
"$skip=" o skip /
|
|
208
|
+
"$skiptoken=" o skip /
|
|
190
209
|
"$search=" o search /
|
|
191
210
|
"$count=" o count /
|
|
192
211
|
"$apply=" o apply /
|
|
@@ -241,6 +260,9 @@
|
|
|
241
260
|
|
|
242
261
|
skip
|
|
243
262
|
= val:integer {
|
|
263
|
+
if (SELECT.limit && SELECT.limit.offset && SELECT.limit.offset.val) {
|
|
264
|
+
val += SELECT.limit.offset.val
|
|
265
|
+
}
|
|
244
266
|
(SELECT.limit || (SELECT.limit={})).offset = {val}
|
|
245
267
|
}
|
|
246
268
|
|
|
@@ -506,18 +528,19 @@
|
|
|
506
528
|
)?)
|
|
507
529
|
|
|
508
530
|
number
|
|
509
|
-
= s:$( [+-]? [0-9]+ ("."[0-9]+)? ("e"[0-9]+)? )
|
|
510
|
-
{return safeNumber(s)}
|
|
531
|
+
= s:$( [+-]? [0-9]+ ("."[0-9]+)? ("e"[0-9]+)? ) {return safeNumber(s)}
|
|
511
532
|
|
|
512
533
|
integer
|
|
513
|
-
= s:$( [+-]? [0-9]+ )
|
|
514
|
-
{return parseInt(s)}
|
|
534
|
+
= s:$( [+-]? [0-9]+ ) {return parseInt(s)}
|
|
515
535
|
|
|
516
536
|
identifier
|
|
517
537
|
= !bool !guid s:$([_a-zA-Z][_a-zA-Z0-9"."]*) {return s}
|
|
518
538
|
|
|
519
|
-
guid
|
|
520
|
-
{return {val}}
|
|
539
|
+
guid
|
|
540
|
+
= val:$([0-9a-zA-Z]+ "-" ([0-9a-zA-Z]+ "-"?)+) {return {val}}
|
|
541
|
+
|
|
542
|
+
segment
|
|
543
|
+
= s:$([a-zA-Z0-9-"."_~!$&'()*+,;=:@]+)
|
|
521
544
|
|
|
522
545
|
//
|
|
523
546
|
// ---------- Punctuation ----------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function peg$subclass(t,r){function e(){this.constructor=t}e.prototype=r.prototype,t.prototype=new e}function peg$SyntaxError(t,r,e,n){this.message=t,this.expected=r,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(t,r){r=void 0!==r?r:{};var e,n={},s={ODataRelativeURI:we},u=we,a="/",c=ve("/",!1),o=ve("?",!1),i=ve("&",!1),f="$count",l=ve("$count",!1),h="$ref",p=ve("$ref",!1),A="$value",d=ve("$value",!1),g=ve("=",!1),v="$select=",b=ve("$select=",!1),m="$expand=",x=ve("$expand=",!1),C="$filter=",y=ve("$filter=",!1),$="$orderby=",w=ve("$orderby=",!1),E="$top=",S=ve("$top=",!1),z="$skip=",Z=ve("$skip=",!1),j="$search=",O=ve("$search=",!1),B="$count=",R=ve("$count=",!1),F="$apply=",T=ve("$apply=",!1),L=ve("*",!1),N=ve(";",!1),k=function(t){return t?[t]:[]},q=function(t,r){t.push({xpr:r})},I=function(t,r){t.push({val:r})},_=function(t,r,e){t.push(r,...e)},D=function(t,r){t.push(r)},U=function(t,r,e){t.push(r,...e)},M=":",P=ve(":",!1),J="any",G=ve("any",!1),H="all",K=ve("all",!1),Q=ve("asc",!1),V="desc",W=ve("desc",!1),X=/^[a-zA-Z]/,Y=be([["a","z"],["A","Z"]],!1,!1),tt=/^[a-zA-Z0-9\-]/,rt=be([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),et=/^[^&]/,nt=be(["&"],!0,!1),st=me("a comparison"),ut=ve("eq",!1),at=ve("ne",!1),ct=ve("lt",!1),ot=ve("gt",!1),it=ve("le",!1),ft=ve("ge",!1),lt=(ve("add",!1),ve("sub",!1),ve("mul",!1),ve("div",!1),ve("mod",!1),me("an operand")),ht=me("a reference"),pt=function(t,r){return r},At=function(t){return{val:t}},dt=ve("{",!1),gt=/^[^}]/,vt=be(["}"],!0,!1),bt=ve("}",!1),mt="[",xt=ve("[",!1),Ct="]",yt=ve("]",!1),$t=/^[^\]]/,wt=be(["]"],!0,!1),Et=me("a function call"),St=/^[a-z]/,zt=be([["a","z"]],!1,!1),Zt=function(t,r,e){return e},jt=me("a boolean function"),Ot="contains",Bt=ve("contains",!1),Rt="endswith",Ft=ve("endswith",!1),Tt="startswith",Lt=ve("startswith",!1),Nt=ve("NOT",!0),kt=ve("AND",!0),qt=ve("OR",!0),It="aggregate",_t=ve("aggregate",!1),Dt="groupby",Ut=ve("groupby",!1),Mt="filter",Pt=ve("filter",!1),Jt="expand",Gt=ve("expand",!1),Ht="search",Kt=ve("search",!1),Qt="concat",Vt=ve("concat",!1),Wt="compute",Xt=ve("compute",!1),Yt="bottompercent",tr=ve("bottompercent",!1),rr="bottomsum",er=ve("bottomsum",!1),nr="toppercent",sr=ve("toppercent",!1),ur="topsum",ar=ve("topsum",!1),cr="with",or=ve("with",!1),ir="from",fr=ve("from",!1),lr=ve("as",!1),hr="rollup",pr=ve("rollup",!1),Ar="$all",dr=ve("$all",!1),gr="topcount",vr=ve("topcount",!1),br="bottomcount",mr=ve("bottomcount",!1),xr="identity",Cr=ve("identity",!1),yr="true",$r=ve("true",!1),wr="false",Er=ve("false",!1),Sr=me("Edm.String"),zr=ve("'",!1),Zr="''",jr=ve("''",!1),Or=/^[^']/,Br=be(["'"],!0,!1),Rr='"',Fr=ve('"',!1),Tr='\\"',Lr=ve('\\"',!1),Nr=/^[^"]/,kr=be(['"'],!0,!1),qr=/^[a-zA-Z0-9.+\-]/,Ir=be([["a","z"],["A","Z"],["0","9"],".","+","-"],!1,!1),_r=/^[0-9]/,Dr=be([["0","9"]],!1,!1),Ur="-",Mr=ve("-",!1),Pr=ve("T",!1),Jr=ve(".",!1),Gr=ve("Z",!1),Hr=ve("+",!1),Kr=/^[+\-]/,Qr=be(["+","-"],!1,!1),Vr=ve("e",!1),Wr=/^[_a-zA-Z]/,Xr=be(["_",["a","z"],["A","Z"]],!1,!1),Yr=/^[_a-zA-Z0-9"."]/,te=be(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),re=/^[0-9a-zA-Z]/,ee=be([["0","9"],["a","z"],["A","Z"]],!1,!1),ne=ve(",",!1),se=ve("(",!1),ue=ve(")",!1),ae=me("optional whitespaces"),ce=/^[ \t\n]/,oe=be([" ","\t","\n"],!1,!1),ie=me("mandatory whitespaces"),fe=0,le=0,he=[{line:1,column:1}],pe=0,Ae=[],de=0;if("startRule"in r){if(!(r.startRule in s))throw new Error("Can't start parsing from rule \""+r.startRule+'".');u=s[r.startRule]}function ge(t,r){throw function(t,r){return new peg$SyntaxError(t,null,null,r)}(t,r=void 0!==r?r:Ce(le,fe))}function ve(t,r){return{type:"literal",text:t,ignoreCase:r}}function be(t,r,e){return{type:"class",parts:t,inverted:r,ignoreCase:e}}function me(t){return{type:"other",description:t}}function xe(r){var e,n=he[r];if(n)return n;for(e=r-1;!he[e];)e--;for(n={line:(n=he[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return he[r]=n,n}function Ce(t,r){var e=xe(t),n=xe(r);return{start:{offset:t,line:e.line,column:e.column},end:{offset:r,line:n.line,column:n.column}}}function ye(t){fe<pe||(fe>pe&&(pe=fe,Ae=[]),Ae.push(t))}function $e(t,r,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(t,r),t,r,e)}function we(){var r,e,s,u,f,l,h,p,A,d,g,v,b,m;if(r=fe,47===t.charCodeAt(fe)?(e=a,fe++):(e=n,0===de&&ye(c)),e===n&&(e=null),e!==n)if(s=fe,(u=Ee())!==n&&(le=s,u=void(En=u)),(s=u)!==n){if(u=fe,(f=bn())!==n)if(63===t.charCodeAt(fe)?(l="?",fe++):(l=n,0===de&&ye(o)),l!==n)if((h=bn())!==n)if((p=ze())!==n){for(A=[],d=fe,(g=bn())!==n?(38===t.charCodeAt(fe)?(v="&",fe++):(v=n,0===de&&ye(i)),v!==n&&(b=bn())!==n&&(m=ze())!==n?d=g=[g,v,b,m]:(fe=d,d=n)):(fe=d,d=n);d!==n;)A.push(d),d=fe,(g=bn())!==n?(38===t.charCodeAt(fe)?(v="&",fe++):(v=n,0===de&&ye(i)),v!==n&&(b=bn())!==n&&(m=ze())!==n?d=g=[g,v,b,m]:(fe=d,d=n)):(fe=d,d=n);A!==n?u=f=[f,l,h,p,A]:(fe=u,u=n)}else fe=u,u=n;else fe=u,u=n;else fe=u,u=n;else fe=u,u=n;u===n&&(u=null),u!==n&&(f=bn())!==n?(le=r,r=e=function(){if(Sn)return En.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete En.expand,delete En.limit,delete En.orderBy,{SELECT:En};if(En.expand){En.columns||(En.columns=["*"]);for(const t of En.expand){const r=En.columns.findIndex(Bn(t));r>-1&&En.columns.splice(r,1),En.columns.push(t)}delete En.expand}return En=On(En),{SELECT:En}}()):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Ee(){var r,e,s,u,o,i,g;return r=fe,t.substr(fe,6)===f?(e=f,fe+=6):(e=n,0===de&&ye(l)),e!==n&&(le=r,e=void(Sn=!0)),(r=e)===n&&(r=fe,e=fe,t.substr(fe,4)===h?(s=h,fe+=4):(s=n,0===de&&ye(p)),s===n&&(t.substr(fe,6)===A?(s=A,fe+=6):(s=n,0===de&&ye(d))),(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,g=e,e=!zn.includes(g)&&{from:{ref:[g]}}),(r=e)===n&&(r=fe,(e=pn())===n&&(e=Ue()),e!==n?(s=fe,(u=gn())!==n&&(o=vn())!==n?s=u=[u,o]:(fe=s,s=n),s===n&&(s=fe,(u=gn())!==n&&(o=Se())!==n&&(i=vn())!==n?s=u=[u,o,i]:(fe=s,s=n)),s===n&&(s=null),s!==n?(u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=Ee())!==n?(le=u,u=o=i):(fe=u,u=n),u===n&&(u=null),u!==n?(le=r,r=e=function(t,r,e){const n=[r?r.length>2?{id:t,where:r[1].map((t=>t.val&&t.val.match&&t.val.match(/^"(.*)"$/)?{val:t.val.match(/^"(.*)"$/)[1]}:t))}:{id:t,where:[]}:$n?`${Object.prototype.hasOwnProperty.call(t,"val")?t.val:t}`:t];if(e&&e.from){const t=e.from.ref;Object.prototype.hasOwnProperty.call(t[0],"val")&&(n[n.length-1]={id:n[n.length-1],where:[t.shift()]}),n.push(...t)}const s={from:{ref:n}};return e&&e.columns&&(s.columns=e.columns),s}(e,s,u)):(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n))),r}function Se(){var r,e,s,u,a,c,o;return r=fe,(e=Ue())!==n&&(le=r,e=[e]),(r=e)===n&&(r=fe,(e=De())!==n&&bn()!==n?(61===t.charCodeAt(fe)?(s="=",fe++):(s=n,0===de&&ye(g)),s!==n&&bn()!==n?((u=Ue())===n&&(u=fe,(a=fn())!==n&&(le=u,a={val:a}),u=a),u!==n?(a=fe,(c=dn())!==n&&(o=Se())!==n?a=c=[c,o]:(fe=a,a=n),a===n&&(a=null),a!==n?(le=r,e=function(t,r,e){const n=[t,"=",r];return e&&n.push("and",...e[1]),n}(e,u,a),r=e):(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n)),r}function ze(){var r,e,s,u,a,c,o,i;if(r=fe,t.substr(fe,8)===v?(e=v,fe+=8):(e=n,0===de&&ye(b)),e!==n)if((s=bn())!==n)if((u=Ze())!==n){for(a=[],c=fe,(o=dn())!==n&&(i=Ze())!==n?c=o=[o,i]:(fe=c,c=n);c!==n;)a.push(c),c=fe,(o=dn())!==n&&(i=Ze())!==n?c=o=[o,i]:(fe=c,c=n);a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;if(r===n){if(r=fe,t.substr(fe,8)===m?(e=m,fe+=8):(e=n,0===de&&ye(x)),e!==n)if((s=bn())!==n)if((u=je())!==n){for(a=[],c=fe,(o=dn())!==n&&(i=je())!==n?c=o=[o,i]:(fe=c,c=n);c!==n;)a.push(c),c=fe,(o=dn())!==n&&(i=je())!==n?c=o=[o,i]:(fe=c,c=n);a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;if(r===n&&(r=fe,t.substr(fe,8)===C?(e=C,fe+=8):(e=n,0===de&&ye(y)),e!==n&&(s=bn())!==n&&(u=Re())!==n?r=e=[e,s,u]:(fe=r,r=n),r===n)){if(r=fe,t.substr(fe,9)===$?(e=$,fe+=9):(e=n,0===de&&ye(w)),e!==n)if((s=bn())!==n)if((u=ke())!==n){for(a=[],c=fe,(o=dn())!==n&&(i=ke())!==n?c=o=[o,i]:(fe=c,c=n);c!==n;)a.push(c),c=fe,(o=dn())!==n&&(i=ke())!==n?c=o=[o,i]:(fe=c,c=n);a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;r===n&&(r=fe,t.substr(fe,5)===E?(e=E,fe+=5):(e=n,0===de&&ye(S)),e!==n&&(s=bn())!==n?(u=function(){var t,r;t=fe,(r=hn())!==n&&(le=t,e=r,r=void((En.limit||(En.limit={})).rows={val:e}));var e;return t=r}(),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===z?(e=z,fe+=6):(e=n,0===de&&ye(Z)),e!==n&&(s=bn())!==n?(u=function(){var t,r;t=fe,(r=hn())!==n&&(le=t,e=r,r=void((En.limit||(En.limit={})).offset={val:e}));var e;return t=r}(),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,8)===j?(e=j,fe+=8):(e=n,0===de&&ye(O)),e!==n&&(s=bn())!==n&&(u=Oe())!==n?r=e=[e,s,u]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===B?(e=B,fe+=7):(e=n,0===de&&ye(R)),e!==n&&(s=bn())!==n?(u=function(){var t,r;t=fe,(r=cn())!==n&&(le=t,r=void(r&&(En.count=!0)));return t=r}(),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===F?(e=F,fe+=7):(e=n,0===de&&ye(T)),e!==n&&(s=bn())!==n&&(u=qe())!==n?r=e=[e,s,u]:(fe=r,r=n),r===n&&(r=function(){var r,e,s,u,a,c;r=fe,X.test(t.charAt(fe))?(e=t.charAt(fe),fe++):(e=n,0===de&&ye(Y));if(e!==n){for(s=[],tt.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(rt));u!==n;)s.push(u),tt.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(rt));if(s!==n)if(61===t.charCodeAt(fe)?(u="=",fe++):(u=n,0===de&&ye(g)),u!==n){for(a=[],et.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(nt));c!==n;)a.push(c),et.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(nt));a!==n?r=e=[e,s,u,a]:(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n}else fe=r,r=n;return r}()))))))}}return r}function Ze(){var r,e,s;return r=fe,42===t.charCodeAt(fe)?(e="*",fe++):(e=n,0===de&&ye(L)),e===n&&(e=De()),e!==n&&(le=r,s=e,En.columns=Array.isArray(En.columns)?En.columns:[],En.columns.find(Bn(s))||En.columns.push(s),e=s),r=e}function je(){var r,e,s,u,a,c,o,i,f,l,h;if(r=fe,e=fe,42===t.charCodeAt(fe)?(s="*",fe++):(s=n,0===de&&ye(L)),s===n&&(s=De()),s!==n&&(le=e,s=function(t){const r="*"===t?{}:t;return r.expand="*",Array.isArray(En.expand)||(En.expand=[]),En.expand.find(Bn(r))||En.expand.push(r),r}(s)),(e=s)!==n){if(s=fe,u=fe,(a=gn())!==n&&(le=u,wn.push(En),En=En.expand[En.expand.length-1],a=void(En.expand="*")),(u=a)!==n){for(a=fe,c=[],o=fe,(i=bn())!==n?(59===t.charCodeAt(fe)?(f=";",fe++):(f=n,0===de&&ye(N)),f===n&&(f=null),f!==n&&(l=bn())!==n&&(h=ze())!==n?o=i=[i,f,l,h]:(fe=o,o=n)):(fe=o,o=n);o!==n;)c.push(o),o=fe,(i=bn())!==n?(59===t.charCodeAt(fe)?(f=";",fe++):(f=n,0===de&&ye(N)),f===n&&(f=null),f!==n&&(l=bn())!==n&&(h=ze())!==n?o=i=[i,f,l,h]:(fe=o,o=n)):(fe=o,o=n);c!==n&&(le=a,c=function(t){if(En.columns){"*"===En.expand&&(En.expand=[]);for(const t of En.columns)En.expand.find(Bn(t))||En.expand.push(t);delete En.columns}else Array.isArray(En.expand)&&-1===En.expand.indexOf("*")&&En.expand.unshift("*")}()),(a=c)!==n?(c=fe,(o=vn())!==n&&(le=c,o=void(En=wn.pop())),(c=o)!==n?s=u=[u,a,c]:(fe=s,s=n)):(fe=s,s=n)}else fe=s,s=n;s===n&&(s=null),s!==n?(u=fe,(a=dn())!==n&&(c=je())!==n?u=a=[a,c]:(fe=u,u=n),u===n&&(u=null),u!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return r}function Oe(){var t,r,e;return t=fe,(r=Be())!==n&&(le=t,e=r,r=void(En.search=e)),t=r}function Be(){var r,e,s,u,a,c,o;if(r=fe,e=fe,(s=Ge())===n&&(s=null),s!==n&&(le=e,s=k(s)),(e=s)!==n)if(s=fe,(u=gn())!==n&&(a=Be())!==n&&(c=vn())!==n?(le=s,s=u=q(e,a)):(fe=s,s=n),s===n&&(s=fe,u=function(){var r,e,s,u,a;r=fe,34===t.charCodeAt(fe)?(e=Rr,fe++):(e=n,0===de&&ye(Fr));if(e!==n){for(s=fe,u=[],t.substr(fe,2)===Tr?(a=Tr,fe+=2):(a=n,0===de&&ye(Lr)),a===n&&(Nr.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(kr)));a!==n;)u.push(a),t.substr(fe,2)===Tr?(a=Tr,fe+=2):(a=n,0===de&&ye(Lr)),a===n&&(Nr.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(kr)));(s=u!==n?t.substring(s,fe):u)!==n?(34===t.charCodeAt(fe)?(u=Rr,fe++):(u=n,0===de&&ye(Fr)),u!==n?(le=r,r=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return r}(),u!==n&&(le=s,u=I(e,u)),(s=u)===n&&(s=fe,(u=on())!==n&&(le=s,u=I(e,u)),(s=u)===n&&(s=fe,(u=fn())!==n&&(le=s,u=I(e,u)),s=u))),s!==n){for(u=[],a=fe,(c=He())===n&&(c=Qe())===n&&(c=Ke()),c!==n&&(o=Be())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=He())===n&&(c=Qe())===n&&(c=Ke()),c!==n&&(o=Be())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);u!==n?(le=r,r=e=e):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Re(){var t,r,e;return t=fe,(r=Fe())!==n&&(le=t,e=r,r=void(En.where=e)),t=r}function Fe(){var r,e,s,u,a,c,o,i;if(r=fe,e=fe,(s=Ge())===n&&(s=null),s!==n&&(le=e,s=k(s)),(e=s)!==n)if(s=fe,(u=gn())!==n&&(a=Fe())!==n&&(c=vn())!==n?(le=s,s=u=q(e,a)):(fe=s,s=n),s===n&&(s=fe,(u=Ie())!==n&&(le=s,i=u,u=void e.push(...i)),(s=u)===n&&(s=fe,(u=Te())!==n&&(le=s,u=function(t,r){t.push(...r)}(e,u)),(s=u)===n&&(s=fe,u=function(){var r,e,s,u;de++,r=fe,t.substr(fe,8)===Ot?(e=Ot,fe+=8):(e=n,0===de&&ye(Bt));e===n&&(t.substr(fe,8)===Rt?(e=Rt,fe+=8):(e=n,0===de&&ye(Ft)),e===n&&(t.substr(fe,10)===Tt?(e=Tt,fe+=10):(e=n,0===de&&ye(Lt))));e!==n&&gn()!==n&&(s=_e())!==n&&dn()!==n&&(u=_e())!==n&&vn()!==n?(le=r,r=e={func:e,args:[s,u]}):(fe=r,r=n);de--,r===n&&(e=n,0===de&&ye(jt));return r}(),u!==n&&(le=s,u=function(t,r){t.push(r)}(e,u)),(s=u)===n&&(s=fe,(u=cn())!==n&&(le=s,u=I(e,u)),s=u)))),s!==n){for(u=[],a=fe,(c=He())===n&&(c=Qe()),c!==n&&(o=Fe())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=He())===n&&(c=Qe()),c!==n&&(o=Fe())!==n?(le=a,a=c=_(e,c,o)):(fe=a,a=n);u!==n?(le=r,r=e=e):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Te(){var r,e,s,u,o,i,f;if(r=fe,e=fe,(s=pn())!==n&&(le=e,s=[s]),(e=s)!==n)if(47===t.charCodeAt(fe)?(s=a,fe++):(s=n,0===de&&ye(c)),s!==n){for(u=[],o=fe,(i=pn())!==n?(47===t.charCodeAt(fe)?(f=a,fe++):(f=n,0===de&&ye(c)),f!==n?(le=o,o=i=D(e,i)):(fe=o,o=n)):(fe=o,o=n);o!==n;)u.push(o),o=fe,(i=pn())!==n?(47===t.charCodeAt(fe)?(f=a,fe++):(f=n,0===de&&ye(c)),f!==n?(le=o,o=i=D(e,i)):(fe=o,o=n)):(fe=o,o=n);u!==n?(o=fe,i=function(){var r,e,s;r=fe,t.substr(fe,3)===J?(e=J,fe+=3):(e=n,0===de&&ye(G));e!==n&&gn()!==n?((s=Ne())===n&&(s=null),s!==n&&vn()!==n?(le=r,r=e=s):(fe=r,r=n)):(fe=r,r=n);return r}(),i!==n&&(le=o,i=function(t,r){let e=t.pop();if(!r)return["exists",{ref:[...t,{id:e}]}];let n=[];for(let t=0,s=0;t<r.length;++t){let u=r[t];u.ref&&0===u.ref.length&&"="===r[t+1]?n[s++]={func:"contains",args:[{ref:e},r[t+=2]]}:n[s++]=u}return n.length<r.length?(e=t.pop(),["exists",{ref:[...t,{id:e,where:n}]}]):["exists",{ref:[...t,{id:e,where:r}]}]}(e,i)),(o=i)===n&&(o=fe,i=function(){var r,e,s;r=fe,t.substr(fe,3)===H?(e=H,fe+=3):(e=n,0===de&&ye(K));e!==n&&gn()!==n&&(s=Ne())!==n&&vn()!==n?(le=r,r=e=s):(fe=r,r=n);return r}(),i!==n&&(le=o,i=function(t,r){let e=t.pop();return["not","exists",{ref:[...t,{id:e,where:["not",{xpr:[...r]}]}]}]}(e,i)),o=i),o!==n?(le=r,r=e=o):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function Le(){var t,r,e,s,u,a,c,o,i;if(t=fe,r=fe,(e=Ge())===n&&(e=null),e!==n&&(le=r,e=(o=e)?[o]:[]),(r=e)!==n)if(e=fe,(s=gn())!==n&&(u=Le())!==n&&(a=vn())!==n?(le=e,i=u,e=s=void r.push("(",...i,")")):(fe=e,e=n),e===n&&(e=fe,(s=Ie())!==n&&(le=e,s=function(t,r){t.push(...r)}(r,s)),(e=s)===n&&(e=fe,(s=Te())!==n&&(le=e,s=function(t,r){t.push(...r)}(r,s)),e=s)),e!==n){for(s=[],u=fe,(a=He())===n&&(a=Qe()),a!==n&&(c=Le())!==n?(le=u,u=a=U(r,a,c)):(fe=u,u=n);u!==n;)s.push(u),u=fe,(a=He())===n&&(a=Qe()),a!==n&&(c=Le())!==n?(le=u,u=a=U(r,a,c)):(fe=u,u=n);s!==n?(le=t,t=r=r):(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;return t}function Ne(){var r,e,s,u;return r=fe,(e=pn())!==n?(58===t.charCodeAt(fe)?(s=M,fe++):(s=n,0===de&&ye(P)),s!==n&&(u=Le())!==n?(le=r,r=e=function(t,r){for(const e of r)e.ref&&e.ref[0]===t&&e.ref.shift();return r}(e,u)):(fe=r,r=n)):(fe=r,r=n),r}function ke(){var r,e,s,u,a;return r=fe,(e=Je())===n&&(e=De()),e!==n?(s=fe,mn()!==n?(u=fe,"asc"===t.substr(fe,3)?(a="asc",fe+=3):(a=n,0===de&&ye(Q)),a===n&&(t.substr(fe,4)===V?(a=V,fe+=4):(a=n,0===de&&ye(W))),(u=a!==n?t.substring(u,fe):a)!==n?(le=s,s=u):(fe=s,s=n)):(fe=s,s=n),s===n&&(s=null),s!==n?(le=r,r=e=function(t,r){const e=Cn(t,r&&{sort:r});En.orderBy=En.orderBy?[...En.orderBy,e]:[e]}(e,s)):(fe=r,r=n)):(fe=r,r=n),r}function qe(){var r,e,s,u,o,i;if(r=fe,(e=Ve())!==n){for(s=[],u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=Ve())!==n?u=o=[o,i]:(fe=u,u=n);u!==n;)s.push(u),u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=Ve())!==n?u=o=[o,i]:(fe=u,u=n);s!==n?r=e=[e,s]:(fe=r,r=n)}else fe=r,r=n;return r}function Ie(){var r,e,s,u,a,c;return de++,r=fe,(e=_e())!==n&&mn()!==n?(s=fe,"eq"===t.substr(fe,2)?(u="eq",fe+=2):(u=n,0===de&&ye(ut)),u===n&&("ne"===t.substr(fe,2)?(u="ne",fe+=2):(u=n,0===de&&ye(at)),u===n&&("lt"===t.substr(fe,2)?(u="lt",fe+=2):(u=n,0===de&&ye(ct)),u===n&&("gt"===t.substr(fe,2)?(u="gt",fe+=2):(u=n,0===de&&ye(ot)),u===n&&("le"===t.substr(fe,2)?(u="le",fe+=2):(u=n,0===de&&ye(it)),u===n&&("ge"===t.substr(fe,2)?(u="ge",fe+=2):(u=n,0===de&&ye(ft))))))),(s=u!==n?t.substring(s,fe):u)!==n&&(u=mn())!==n&&(a=_e())!==n?(le=r,r=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[c=s]||c,a]):(fe=r,r=n)):(fe=r,r=n),de--,r===n&&(e=n,0===de&&ye(st)),r}function _e(){var r;return de++,(r=Je())===n&&(r=De())===n&&(r=Ue())===n&&(r=Me())===n&&(r=Pe())===n&&(r=function(){var r,e,s,u,a;r=fe,91===t.charCodeAt(fe)?(e=mt,fe++):(e=n,0===de&&ye(xt));if(e!==n){for(s=fe,u=[],$t.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(wt));a!==n;)u.push(a),$t.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(wt));(s=u!==n?t.substring(s,fe):u)!==n?(93===t.charCodeAt(fe)?(u=Ct,fe++):(u=n,0===de&&ye(yt)),u!==n?(le=r,r=e={list:s.replace(/"/g,"").split(",").map((t=>({val:t})))}):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return r}()),de--,r===n&&(n,0===de&&ye(lt)),r}function De(){var r,e,s,u,o,i,f,l;if(de++,r=fe,(e=pn())!==n){for(s=[],u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=pn())!==n?(le=u,u=o=pt(0,i)):(fe=u,u=n);u!==n;)s.push(u),u=fe,47===t.charCodeAt(fe)?(o=a,fe++):(o=n,0===de&&ye(c)),o!==n&&(i=pn())!==n?(le=u,u=o=pt(0,i)):(fe=u,u=n);s!==n?(le=r,l=s,r=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(fe=r,r=n)}else fe=r,r=n;return de--,r===n&&(e=n,0===de&&ye(ht)),r}function Ue(){var r,e,s;return r=fe,(e=cn())===n&&(e=function(){var r,e,s,u,a,c,o,i,f,l,h,p,A,d,g,v,b,m,x,C,y,$,w,E;r=fe,e=fe,s=[],_r.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Dr));if(u!==n)for(;u!==n;)s.push(u),_r.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Dr));else s=n;if(s!==n)if(45===t.charCodeAt(fe)?(u=Ur,fe++):(u=n,0===de&&ye(Mr)),u!==n)if(_r.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(Dr)),a!==n)if(_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr)),c!==n)if(45===t.charCodeAt(fe)?(o=Ur,fe++):(o=n,0===de&&ye(Mr)),o!==n)if(_r.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(Dr)),i!==n)if(_r.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(Dr)),f!==n){if(l=fe,84===t.charCodeAt(fe)?(h="T",fe++):(h=n,0===de&&ye(Pr)),h!==n)if(_r.test(t.charAt(fe))?(p=t.charAt(fe),fe++):(p=n,0===de&&ye(Dr)),p!==n)if(_r.test(t.charAt(fe))?(A=t.charAt(fe),fe++):(A=n,0===de&&ye(Dr)),A!==n)if(58===t.charCodeAt(fe)?(d=M,fe++):(d=n,0===de&&ye(P)),d!==n)if(_r.test(t.charAt(fe))?(g=t.charAt(fe),fe++):(g=n,0===de&&ye(Dr)),g!==n)if(_r.test(t.charAt(fe))?(v=t.charAt(fe),fe++):(v=n,0===de&&ye(Dr)),v!==n){if(b=fe,58===t.charCodeAt(fe)?(m=M,fe++):(m=n,0===de&&ye(P)),m!==n)if(_r.test(t.charAt(fe))?(x=t.charAt(fe),fe++):(x=n,0===de&&ye(Dr)),x!==n)if(_r.test(t.charAt(fe))?(C=t.charAt(fe),fe++):(C=n,0===de&&ye(Dr)),C!==n){if(y=fe,46===t.charCodeAt(fe)?($=".",fe++):($=n,0===de&&ye(Jr)),$!==n){if(w=[],_r.test(t.charAt(fe))?(E=t.charAt(fe),fe++):(E=n,0===de&&ye(Dr)),E!==n)for(;E!==n;)w.push(E),_r.test(t.charAt(fe))?(E=t.charAt(fe),fe++):(E=n,0===de&&ye(Dr));else w=n;w!==n?y=$=[$,w]:(fe=y,y=n)}else fe=y,y=n;y===n&&(y=null),y!==n?b=m=[m,x,C,y]:(fe=b,b=n)}else fe=b,b=n;else fe=b,b=n;else fe=b,b=n;b===n&&(b=null),b!==n?(90===t.charCodeAt(fe)?(m="Z",fe++):(m=n,0===de&&ye(Gr)),m===n&&(m=fe,43===t.charCodeAt(fe)?(x="+",fe++):(x=n,0===de&&ye(Hr)),x===n&&(45===t.charCodeAt(fe)?(x=Ur,fe++):(x=n,0===de&&ye(Mr))),x!==n?(_r.test(t.charAt(fe))?(C=t.charAt(fe),fe++):(C=n,0===de&&ye(Dr)),C!==n?(_r.test(t.charAt(fe))?(y=t.charAt(fe),fe++):(y=n,0===de&&ye(Dr)),y!==n?(58===t.charCodeAt(fe)?($=M,fe++):($=n,0===de&&ye(P)),$!==n?(_r.test(t.charAt(fe))?(w=t.charAt(fe),fe++):(w=n,0===de&&ye(Dr)),w!==n?(_r.test(t.charAt(fe))?(E=t.charAt(fe),fe++):(E=n,0===de&&ye(Dr)),E!==n?m=x=[x,C,y,$,w,E]:(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)):(fe=m,m=n)),m===n&&(m=null),m!==n?l=h=[h,p,A,d,g,v,b,m]:(fe=l,l=n)):(fe=l,l=n)}else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;else fe=l,l=n;l===n&&(l=null),l!==n?e=s=[s,u,a,c,o,i,f,l]:(fe=e,e=n)}else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;r=e!==n?t.substring(r,fe):e;return r}()),e!==n&&(le=r,e=At(e)),(r=e)===n&&(r=An())===n&&(r=fe,(e=ln())!==n&&(le=r,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(r=e)===n&&(r=fe,(e=on())!==n&&(le=r,e=At(e)),r=e)),r}function Me(){var r,e,s,u,a,c;if(r=fe,e=fe,s=fe,123===t.charCodeAt(fe)?(u="{",fe++):(u=n,0===de&&ye(dt)),u!==n){for(a=[],(c=Me())===n&&(gt.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(vt)));c!==n;)a.push(c),(c=Me())===n&&(gt.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(vt)));a!==n?(125===t.charCodeAt(fe)?(c="}",fe++):(c=n,0===de&&ye(bt)),c!==n?s=u=[u,a,c]:(fe=s,s=n)):(fe=s,s=n)}else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=At(e)),r=e}function Pe(){var r,e,s,u,a,c,o,i;if(r=fe,e=fe,s=fe,91===t.charCodeAt(fe)?(u=mt,fe++):(u=n,0===de&&ye(xt)),u!==n&&(a=bn())!==n?(93===t.charCodeAt(fe)?(c=Ct,fe++):(c=n,0===de&&ye(yt)),c!==n?s=u=[u,a,c]:(fe=s,s=n)):(fe=s,s=n),s===n)if(s=fe,91===t.charCodeAt(fe)?(u=mt,fe++):(u=n,0===de&&ye(xt)),u!==n)if((a=bn())!==n)if(123===t.charCodeAt(fe)?(c="{",fe++):(c=n,0===de&&ye(dt)),c!==n){for(o=[],(i=Pe())===n&&($t.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(wt)));i!==n;)o.push(i),(i=Pe())===n&&($t.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(wt)));o!==n?(93===t.charCodeAt(fe)?(i=Ct,fe++):(i=n,0===de&&ye(yt)),i!==n?s=u=[u,a,c,o,i]:(fe=s,s=n)):(fe=s,s=n)}else fe=s,s=n;else fe=s,s=n;else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=At(e)),r=e}function Je(){var r,e,s,u,a,c,o,i,f,l;if(de++,r=fe,e=fe,s=[],St.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(zt)),u!==n)for(;u!==n;)s.push(u),St.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(zt));else s=n;if((e=s!==n?t.substring(e,fe):s)!==n)if((s=gn())!==n)if((u=_e())!==n){for(a=[],c=fe,dn()!==n&&(o=_e())!==n?(le=c,c=Zt(0,0,o)):(fe=c,c=n);c!==n;)a.push(c),c=fe,dn()!==n&&(o=_e())!==n?(le=c,c=Zt(0,0,o)):(fe=c,c=n);a!==n&&(c=vn())!==n?(le=r,i=e,f=u,l=a,yn&&!(i in yn.functions)&&xn("'"+i+"' is an unknown function in OData URL spec (strict mode)"),r=e={func:i,args:[f,...l]}):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;return de--,r===n&&(e=n,0===de&&ye(Et)),r}function Ge(){var r,e;return r=fe,bn()!==n?("not"===t.substr(fe,3).toLowerCase()?(e=t.substr(fe,3),fe+=3):(e=n,0===de&&ye(Nt)),e!==n&&mn()!==n?(le=r,r="not"):(fe=r,r=n)):(fe=r,r=n),r}function He(){var r,e;return r=fe,mn()!==n?("and"===t.substr(fe,3).toLowerCase()?(e=t.substr(fe,3),fe+=3):(e=n,0===de&&ye(kt)),e!==n&&mn()!==n?(le=r,r="and"):(fe=r,r=n)):(fe=r,r=n),r}function Ke(){var t,r;return t=fe,(r=mn())!==n&&(le=t,r="and"),t=r}function Qe(){var r,e;return r=fe,mn()!==n?("or"===t.substr(fe,2).toLowerCase()?(e=t.substr(fe,2),fe+=2):(e=n,0===de&&ye(qt)),e!==n&&mn()!==n?(le=r,r="or"):(fe=r,r=n)):(fe=r,r=n),r}function Ve(){var r,e,s;return r=fe,t.substr(fe,9)===It?(e=It,fe+=9):(e=n,0===de&&ye(_t)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=We())!==n){for(u=[],a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=We())!==n?a=c=[c,o,i,f]:(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=We())!==n?a=c=[c,o,i,f]:(fe=a,a=n);u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===Dt?(e=Dt,fe+=7):(e=n,0===de&&ye(Ut)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f,l;if(t=fe,(r=gn())!==n)if((e=bn())!==n){if(s=fe,(u=gn())!==n)if((a=en())!==n){for(c=[],o=fe,(i=dn())!==n&&(f=bn())!==n&&(l=en())!==n?o=i=[i,f,l]:(fe=o,o=n);o!==n;)c.push(o),o=fe,(i=dn())!==n&&(f=bn())!==n&&(l=en())!==n?o=i=[i,f,l]:(fe=o,o=n);c!==n&&(o=vn())!==n?s=u=[u,a,c,o]:(fe=s,s=n)}else fe=s,s=n;else fe=s,s=n;s!==n?(u=fe,(a=dn())!==n&&(c=bn())!==n&&(o=qe())!==n?u=a=[a,c,o]:(fe=u,u=n),u===n&&(u=null),u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)):(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===Mt?(e=Mt,fe+=6):(e=n,0===de&&ye(Pt)),e!==n&&(s=nn())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=function(){var r,e,s,u;r=fe,t.substr(fe,8)===gr?(e=gr,fe+=8):(e=n,0===de&&ye(vr));e===n&&(t.substr(fe,11)===br?(e=br,fe+=11):(e=n,0===de&&ye(mr)));e!==n&&gn()!==n&&bn()!==n&&(s=ln())!==n&&bn()!==n&&dn()!==n&&bn()!==n&&(u=De())!==n&&bn()!==n&&vn()!==n?(le=r,r=e=function(t,r,e){const n={...e,sort:"topcount"===t?"desc":"asc"};En.orderBy=En.orderBy?[...En.orderBy,n]:[n],(En.limit||(En.limit={})).rows={val:r}}(e,s,u)):(fe=r,r=n);return r}(),r===n&&(r=fe,t.substr(fe,6)===Jt?(e=Jt,fe+=6):(e=n,0===de&&ye(Gt)),e!==n&&(s=sn())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===Ht?(e=Ht,fe+=6):(e=n,0===de&&ye(Kt)),e!==n?(s=function(){var t,r,e,s,u,a;t=fe,(r=gn())!==n&&(e=bn())!==n&&(s=Oe())!==n&&(u=bn())!==n&&(a=vn())!==n?t=r=[r,e,s,u,a]:(fe=t,t=n);return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===Qt?(e=Qt,fe+=6):(e=n,0===de&&ye(Vt)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=qe())!==n){if(u=[],a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=qe())!==n?a=c=[c,o,i,f]:(fe=a,a=n),a!==n)for(;a!==n;)u.push(a),a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=qe())!==n?a=c=[c,o,i,f]:(fe=a,a=n);else u=n;u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,7)===Wt?(e=Wt,fe+=7):(e=n,0===de&&ye(Xt)),e!==n?(s=function(){var t,r,e,s,u,a,c,o,i,f;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=un())!==n){for(u=[],a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=un())!==n?a=c=[c,o,i,f]:(fe=a,a=n);a!==n;)u.push(a),a=fe,(c=bn())!==n&&(o=dn())!==n&&(i=bn())!==n&&(f=un())!==n?a=c=[c,o,i,f]:(fe=a,a=n);u!==n&&(a=bn())!==n&&(c=vn())!==n?t=r=[r,e,s,u,a,c]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}(),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r===n&&(r=fe,t.substr(fe,13)===Yt?(e=Yt,fe+=13):(e=n,0===de&&ye(tr)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,9)===rr?(e=rr,fe+=9):(e=n,0===de&&ye(er)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,10)===nr?(e=nr,fe+=10):(e=n,0===de&&ye(sr)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=fe,t.substr(fe,6)===ur?(e=ur,fe+=6):(e=n,0===de&&ye(ar)),e!==n&&(s=an())!==n?r=e=[e,s]:(fe=r,r=n),r===n&&(r=function(){var r;t.substr(fe,8)===xr?(r=xr,fe+=8):(r=n,0===de&&ye(Cr));return r}())))))))))))),r}function We(){var r,e,s,u,a;return r=fe,e=fe,t.substr(fe,6)===f?(s=f,fe+=6):(s=n,0===de&&ye(l)),s!==n&&(u=rn())!==n?(le=e,e=s={func:"count",args:["*"],as:u}):(fe=e,e=n),e===n&&(e=Xe()),e!==n&&(le=r,a=e,En.columns=Array.isArray(En.columns)?En.columns:[],En.columns.find(Bn(a))||En.columns.push(a),e=a),r=e}function Xe(){var t,r,e,s,u;return t=fe,(r=De())!==n&&(e=Ye())!==n?((s=tn())===n&&(s=null),s!==n&&(u=rn())!==n?(le=t,t=r={func:e,args:[r],as:u}):(fe=t,t=n)):(fe=t,t=n),t===n&&(t=fe,(r=pn())!==n&&(e=gn())!==n&&(s=Xe())!==n&&(u=vn())!==n?t=r=[r,e,s,u]:(fe=t,t=n)),t}function Ye(){var r,e,s,u,a;if(r=fe,mn()!==n)if(t.substr(fe,4)===cr?(e=cr,fe+=4):(e=n,0===de&&ye(or)),e!==n)if(mn()!==n){if(s=fe,u=[],St.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(zt)),a!==n)for(;a!==n;)u.push(a),St.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(zt));else u=n;(s=u!==n?t.substring(s,fe):u)!==n?(le=r,r=s):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;else fe=r,r=n;return r}function tn(){var r,e,s,u,a,c,o;return r=fe,(e=mn())!==n?(t.substr(fe,4)===ir?(s=ir,fe+=4):(s=n,0===de&&ye(fr)),s!==n&&(u=mn())!==n&&(a=De())!==n&&(c=Ye())!==n?((o=tn())===n&&(o=null),o!==n?r=e=[e,s,u,a,c,o]:(fe=r,r=n)):(fe=r,r=n)):(fe=r,r=n),r}function rn(){var r,e,s;return r=fe,mn()!==n?("as"===t.substr(fe,2)?(e="as",fe+=2):(e=n,0===de&&ye(lr)),e!==n&&mn()!==n&&(s=pn())!==n?(le=r,r=s):(fe=r,r=n)):(fe=r,r=n),r}function en(){var r,e,s;return r=fe,e=function(){var r,e,s,u,a,c,o,i,f,l,h;r=fe,e=fe,t.substr(fe,6)===hr?(s=hr,fe+=6):(s=n,0===de&&ye(pr));if(s!==n)if((u=gn())!==n)if((a=bn())!==n)if(t.substr(fe,4)===Ar?(c=Ar,fe+=4):(c=n,0===de&&ye(dr)),c===n&&(c=De()),c!==n){if(o=[],i=fe,(f=bn())!==n&&(l=dn())!==n&&(h=De())!==n?i=f=[f,l,h]:(fe=i,i=n),i!==n)for(;i!==n;)o.push(i),i=fe,(f=bn())!==n&&(l=dn())!==n&&(h=De())!==n?i=f=[f,l,h]:(fe=i,i=n);else o=n;o!==n&&(i=bn())!==n&&(f=vn())!==n?e=s=[s,u,a,c,o,i,f]:(fe=e,e=n)}else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;else fe=e,e=n;e!==n&&(le=r,e=function(t){const r=new Error("Rollup in groupby is not supported yet.");throw r.statusCode=501,r}());return r=e}(),e===n&&(e=De()),e!==n&&(le=r,s=e,e=void(En.groupBy||(En.groupBy=[])).push(s)),r=e}function nn(){var t,r,e,s,u,a;return t=fe,(r=gn())!==n&&(e=bn())!==n&&(s=Re())!==n&&(u=bn())!==n&&(a=vn())!==n?t=r=[r,e,s,u,a]:(fe=t,t=n),t}function sn(){var t,r,e,s,u,a,c,o,i,f,l,h,p,A;if(t=fe,(r=gn())!==n)if((e=bn())!==n)if((s=De())!==n)if((u=bn())!==n)if((a=dn())!==n)if((c=bn())!==n){if(o=fe,(i=sn())!==n){for(f=[],l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);l!==n;)f.push(l),l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);f!==n?o=i=[i,f]:(fe=o,o=n)}else fe=o,o=n;if(o===n)if(o=fe,(i=nn())!==n){for(f=[],l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);l!==n;)f.push(l),l=fe,(h=bn())!==n&&(p=dn())!==n&&(A=sn())!==n?l=h=[h,p,A]:(fe=l,l=n);f!==n?o=i=[i,f]:(fe=o,o=n)}else fe=o,o=n;o!==n&&(i=bn())!==n&&(f=vn())!==n?t=r=[r,e,s,u,a,c,o,i,f]:(fe=t,t=n)}else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;else fe=t,t=n;return t}function un(){var t,r,e;return t=fe,(r=Fe())!==n&&(e=rn())!==n?t=r=[r,e]:(fe=t,t=n),t}function an(){var t,r,e,s,u,a,c,o,i,f;return t=fe,(r=gn())!==n&&(e=bn())!==n&&(s=_e())!==n&&(u=bn())!==n&&(a=dn())!==n&&(c=bn())!==n&&(o=_e())!==n&&(i=bn())!==n&&(f=vn())!==n?t=r=[r,e,s,u,a,c,o,i,f]:(fe=t,t=n),t}function cn(){var r,e;return r=fe,t.substr(fe,4)===yr?(e=yr,fe+=4):(e=n,0===de&&ye($r)),e===n&&(t.substr(fe,5)===wr?(e=wr,fe+=5):(e=n,0===de&&ye(Er))),e!==n&&(le=r,e="true"===e),r=e}function on(){var r,e,s,u,a;if(de++,r=fe,39===t.charCodeAt(fe)?(e="'",fe++):(e=n,0===de&&ye(zr)),e!==n){for(s=fe,u=[],t.substr(fe,2)===Zr?(a=Zr,fe+=2):(a=n,0===de&&ye(jr)),a===n&&(Or.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(Br)));a!==n;)u.push(a),t.substr(fe,2)===Zr?(a=Zr,fe+=2):(a=n,0===de&&ye(jr)),a===n&&(Or.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(Br)));(s=u!==n?t.substring(s,fe):u)!==n?(39===t.charCodeAt(fe)?(u="'",fe++):(u=n,0===de&&ye(zr)),u!==n?(le=r,r=e=s.replace(/''/g,"'")):(fe=r,r=n)):(fe=r,r=n)}else fe=r,r=n;return de--,r===n&&(e=n,0===de&&ye(Sr)),r}function fn(){var r,e,s;if(r=fe,e=[],qr.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(Ir)),s!==n)for(;s!==n;)e.push(s),qr.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(Ir));else e=n;return r=e!==n?t.substring(r,fe):e}function ln(){var r,e,s,u,a,c,o,i,f,l;if(r=fe,e=fe,s=fe,Kr.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Qr)),u===n&&(u=null),u!==n){if(a=[],_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr)),c!==n)for(;c!==n;)a.push(c),_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr));else a=n;if(a!==n){if(c=fe,46===t.charCodeAt(fe)?(o=".",fe++):(o=n,0===de&&ye(Jr)),o!==n){if(i=[],_r.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(Dr)),f!==n)for(;f!==n;)i.push(f),_r.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(Dr));else i=n;i!==n?c=o=[o,i]:(fe=c,c=n)}else fe=c,c=n;if(c===n&&(c=null),c!==n){if(o=fe,101===t.charCodeAt(fe)?(i="e",fe++):(i=n,0===de&&ye(Vr)),i!==n){if(f=[],_r.test(t.charAt(fe))?(l=t.charAt(fe),fe++):(l=n,0===de&&ye(Dr)),l!==n)for(;l!==n;)f.push(l),_r.test(t.charAt(fe))?(l=t.charAt(fe),fe++):(l=n,0===de&&ye(Dr));else f=n;f!==n?o=i=[i,f]:(fe=o,o=n)}else fe=o,o=n;o===n&&(o=null),o!==n?s=u=[u,a,c,o]:(fe=s,s=n)}else fe=s,s=n}else fe=s,s=n}else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=Zn(e)),r=e}function hn(){var r,e,s,u,a,c;if(r=fe,e=fe,s=fe,Kr.test(t.charAt(fe))?(u=t.charAt(fe),fe++):(u=n,0===de&&ye(Qr)),u===n&&(u=null),u!==n){if(a=[],_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr)),c!==n)for(;c!==n;)a.push(c),_r.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Dr));else a=n;a!==n?s=u=[u,a]:(fe=s,s=n)}else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=parseInt(e)),r=e}function pn(){var r,e,s,u,a,c,o,i;if(r=fe,e=fe,de++,s=cn(),de--,s===n?e=void 0:(fe=e,e=n),e!==n)if(s=fe,de++,u=An(),de--,u===n?s=void 0:(fe=s,s=n),s!==n){if(u=fe,a=fe,Wr.test(t.charAt(fe))?(c=t.charAt(fe),fe++):(c=n,0===de&&ye(Xr)),c!==n){for(o=[],Yr.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(te));i!==n;)o.push(i),Yr.test(t.charAt(fe))?(i=t.charAt(fe),fe++):(i=n,0===de&&ye(te));o!==n?a=c=[c,o]:(fe=a,a=n)}else fe=a,a=n;(u=a!==n?t.substring(u,fe):a)!==n?(le=r,r=e=u):(fe=r,r=n)}else fe=r,r=n;else fe=r,r=n;return r}function An(){var r,e,s,u,a,c,o,i,f;if(r=fe,e=fe,s=fe,u=[],re.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(ee)),a!==n)for(;a!==n;)u.push(a),re.test(t.charAt(fe))?(a=t.charAt(fe),fe++):(a=n,0===de&&ye(ee));else u=n;if(u!==n)if(45===t.charCodeAt(fe)?(a=Ur,fe++):(a=n,0===de&&ye(Mr)),a!==n){if(c=[],o=fe,i=[],re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee)),f!==n)for(;f!==n;)i.push(f),re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee));else i=n;if(i!==n?(45===t.charCodeAt(fe)?(f=Ur,fe++):(f=n,0===de&&ye(Mr)),f===n&&(f=null),f!==n?o=i=[i,f]:(fe=o,o=n)):(fe=o,o=n),o!==n)for(;o!==n;){if(c.push(o),o=fe,i=[],re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee)),f!==n)for(;f!==n;)i.push(f),re.test(t.charAt(fe))?(f=t.charAt(fe),fe++):(f=n,0===de&&ye(ee));else i=n;i!==n?(45===t.charCodeAt(fe)?(f=Ur,fe++):(f=n,0===de&&ye(Mr)),f===n&&(f=null),f!==n?o=i=[i,f]:(fe=o,o=n)):(fe=o,o=n)}else c=n;c!==n?s=u=[u,a,c]:(fe=s,s=n)}else fe=s,s=n;else fe=s,s=n;return(e=s!==n?t.substring(e,fe):s)!==n&&(le=r,e=At(e)),r=e}function dn(){var r,e,s,u;return r=fe,(e=bn())!==n?(44===t.charCodeAt(fe)?(s=",",fe++):(s=n,0===de&&ye(ne)),s!==n&&(u=bn())!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r}function gn(){var r,e,s,u;return r=fe,(e=bn())!==n?(40===t.charCodeAt(fe)?(s="(",fe++):(s=n,0===de&&ye(se)),s!==n&&(u=bn())!==n?r=e=[e,s,u]:(fe=r,r=n)):(fe=r,r=n),r}function vn(){var r,e,s;return r=fe,(e=bn())!==n?(41===t.charCodeAt(fe)?(s=")",fe++):(s=n,0===de&&ye(ue)),s!==n?r=e=[e,s]:(fe=r,r=n)):(fe=r,r=n),r}function bn(){var r,e,s;for(de++,r=fe,e=[],ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe));s!==n;)e.push(s),ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe));return r=e!==n?t.substring(r,fe):e,de--,r===n&&(e=n,0===de&&ye(ae)),r}function mn(){var r,e,s;if(de++,r=fe,e=[],ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe)),s!==n)for(;s!==n;)e.push(s),ce.test(t.charAt(fe))?(s=t.charAt(fe),fe++):(s=n,0===de&&ye(oe));else e=n;return r=e!==n?t.substring(r,fe):e,de--,r===n&&(e=n,0===de&&ye(ie)),r}const xn=(t,r=400)=>{ge(JSON.stringify({code:r,message:t}))},Cn=Object.assign,{strict:yn,minimal:$n}=r,wn=[];let En,Sn;const zn=["$value"],Zn=r.safeNumber||function(t){const r=Number(t);return Number.isSafeInteger(r)?r:t},jn=(t,r)=>{const e=[...t];for(const t of e)t.xpr&&(t.xpr=jn(t.xpr,r)),t.args&&(t.args=jn(t.args,r)),t.ref&&r.includes(t.ref.join(""));return e},On=t=>{const r=t.groupBy,e=t.where,n=t.columns||[],s=n.filter((t=>t.as));let u=[],a=[];if(0!==s.length&&(u=n.filter((t=>!t.ref||s.includes(t.ref.join(""))))),r){const t=r.map((({ref:t})=>t&&t.join(""))),e=n.filter((r=>r.ref&&t.includes(r.ref.join(""))));a=0===e.length?[...r]:e}const c=0!==u.length||0!==a.length?[...a,...u]:t.columns;let o={...t};c&&(o.columns=c);if(e&&(r||0!==s.length)){const t=n.map((t=>t.ref&&t.ref.join("")||t.as));o={...o,where:jn(e,t)}}return o},Bn=t=>r=>t===r||t.as&&r.as&&t.as===r.as||t.ref&&r.ref&&t.ref.join("")===r.ref.join("");if((e=u())!==n&&fe===t.length)return e;throw e!==n&&fe<t.length&&ye({type:"end"}),$e(Ae,pe<t.length?t.charAt(pe):null,pe<t.length?Ce(pe,pe+1):Ce(pe,pe))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(t,r){var e={literal:function(t){return'"'+s(t.text)+'"'},class:function(t){var r,e="";for(r=0;r<t.parts.length;r++)e+=t.parts[r]instanceof Array?u(t.parts[r][0])+"-"+u(t.parts[r][1]):u(t.parts[r]);return"["+(t.inverted?"^":"")+e+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function n(t){return t.charCodeAt(0).toString(16).toUpperCase()}function s(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}function u(t){return t.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}return"Expected "+function(t){var r,n,s,u=new Array(t.length);for(r=0;r<t.length;r++)u[r]=(s=t[r],e[s.type](s));if(u.sort(),u.length>0){for(r=1,n=1;r<u.length;r++)u[r-1]!==u[r]&&(u[n]=u[r],n++);u.length=n}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}(t)+" but "+function(t){return t?'"'+s(t)+'"':"end of input"}(r)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|
|
1
|
+
"use strict";function peg$subclass(t,r){function e(){this.constructor=t}e.prototype=r.prototype,t.prototype=new e}function peg$SyntaxError(t,r,e,n){this.message=t,this.expected=r,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(t,r){r=void 0!==r?r:{};var e,n={},s={ODataRelativeURI:Ze},u=Ze,a="/",o=ye("/",!1),c=ye("?",!1),i=ye("&",!1),f="$count",l=ye("$count",!1),h="$ref",p=ye("$ref",!1),A="$value",d=ye("$value",!1),v=ye("=",!1),g="$select=",b=ye("$select=",!1),m="$expand=",x=ye("$expand=",!1),y="$filter=",C=ye("$filter=",!1),$="$orderby=",w=ye("$orderby=",!1),E="$top=",S=ye("$top=",!1),z="$skip=",Z=ye("$skip=",!1),j="$skiptoken=",O=ye("$skiptoken=",!1),B="$search=",k=ye("$search=",!1),R="$count=",F=ye("$count=",!1),T="$apply=",L=ye("$apply=",!1),N=ye("*",!1),_=ye(";",!1),q=function(t){return t?[t]:[]},I=function(t,r){t.push({xpr:r})},D=function(t,r){t.push({val:r})},U=function(t,r,e){t.push(r,...e)},M=function(t,r){t.push(r)},P=function(t,r,e){t.push(r,...e)},J=":",G=ye(":",!1),H="any",K=ye("any",!1),Q="all",V=ye("all",!1),W=ye("asc",!1),X="desc",Y=ye("desc",!1),tt=/^[a-zA-Z]/,rt=Ce([["a","z"],["A","Z"]],!1,!1),et=/^[a-zA-Z0-9\-]/,nt=Ce([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),st=/^[^&]/,ut=Ce(["&"],!0,!1),at=$e("a comparison"),ot=ye("eq",!1),ct=ye("ne",!1),it=ye("lt",!1),ft=ye("gt",!1),lt=ye("le",!1),ht=ye("ge",!1),pt=(ye("add",!1),ye("sub",!1),ye("mul",!1),ye("div",!1),ye("mod",!1),$e("an operand")),At=$e("a reference"),dt=function(t,r){return r},vt=function(t){return{val:t}},gt=ye("{",!1),bt=/^[^}]/,mt=Ce(["}"],!0,!1),xt=ye("}",!1),yt="[",Ct=ye("[",!1),$t="]",wt=ye("]",!1),Et=/^[^\]]/,St=Ce(["]"],!0,!1),zt=$e("a function call"),Zt=/^[a-z]/,jt=Ce([["a","z"]],!1,!1),Ot=function(t,r,e){return e},Bt=$e("a boolean function"),kt="contains",Rt=ye("contains",!1),Ft="endswith",Tt=ye("endswith",!1),Lt="startswith",Nt=ye("startswith",!1),_t=ye("NOT",!0),qt=ye("AND",!0),It=ye("OR",!0),Dt="aggregate",Ut=ye("aggregate",!1),Mt="groupby",Pt=ye("groupby",!1),Jt="filter",Gt=ye("filter",!1),Ht="expand",Kt=ye("expand",!1),Qt="search",Vt=ye("search",!1),Wt="concat",Xt=ye("concat",!1),Yt="compute",tr=ye("compute",!1),rr="bottompercent",er=ye("bottompercent",!1),nr="bottomsum",sr=ye("bottomsum",!1),ur="toppercent",ar=ye("toppercent",!1),or="topsum",cr=ye("topsum",!1),ir="with",fr=ye("with",!1),lr="from",hr=ye("from",!1),pr=ye("as",!1),Ar="rollup",dr=ye("rollup",!1),vr="$all",gr=ye("$all",!1),br="topcount",mr=ye("topcount",!1),xr="bottomcount",yr=ye("bottomcount",!1),Cr="identity",$r=ye("identity",!1),wr="true",Er=ye("true",!1),Sr="false",zr=ye("false",!1),Zr=$e("Edm.String"),jr=ye("'",!1),Or="''",Br=ye("''",!1),kr=/^[^']/,Rr=Ce(["'"],!0,!1),Fr='"',Tr=ye('"',!1),Lr='\\"',Nr=ye('\\"',!1),_r=/^[^"]/,qr=Ce(['"'],!0,!1),Ir=/^[a-zA-Z0-9.+\-]/,Dr=Ce([["a","z"],["A","Z"],["0","9"],".","+","-"],!1,!1),Ur=/^[0-9]/,Mr=Ce([["0","9"]],!1,!1),Pr="-",Jr=ye("-",!1),Gr=ye("T",!1),Hr=ye(".",!1),Kr=ye("Z",!1),Qr=ye("+",!1),Vr=/^[+\-]/,Wr=Ce(["+","-"],!1,!1),Xr=ye("e",!1),Yr=/^[_a-zA-Z]/,te=Ce(["_",["a","z"],["A","Z"]],!1,!1),re=/^[_a-zA-Z0-9"."]/,ee=Ce(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),ne=/^[0-9a-zA-Z]/,se=Ce([["0","9"],["a","z"],["A","Z"]],!1,!1),ue=/^[a-zA-Z0-9\-"."_~!$&'()*+,;=:@]/,ae=Ce([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","&","'","(",")","*","+",",",";","=",":","@"],!1,!1),oe=ye(",",!1),ce=ye("(",!1),ie=ye(")",!1),fe=$e("optional whitespaces"),le=/^[ \t\n]/,he=Ce([" ","\t","\n"],!1,!1),pe=$e("mandatory whitespaces"),Ae=0,de=0,ve=[{line:1,column:1}],ge=0,be=[],me=0;if("startRule"in r){if(!(r.startRule in s))throw new Error("Can't start parsing from rule \""+r.startRule+'".');u=s[r.startRule]}function xe(t,r){throw function(t,r){return new peg$SyntaxError(t,null,null,r)}(t,r=void 0!==r?r:Ee(de,Ae))}function ye(t,r){return{type:"literal",text:t,ignoreCase:r}}function Ce(t,r,e){return{type:"class",parts:t,inverted:r,ignoreCase:e}}function $e(t){return{type:"other",description:t}}function we(r){var e,n=ve[r];if(n)return n;for(e=r-1;!ve[e];)e--;for(n={line:(n=ve[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return ve[r]=n,n}function Ee(t,r){var e=we(t),n=we(r);return{start:{offset:t,line:e.line,column:e.column},end:{offset:r,line:n.line,column:n.column}}}function Se(t){Ae<ge||(Ae>ge&&(ge=Ae,be=[]),be.push(t))}function ze(t,r,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(t,r),t,r,e)}function Ze(){var r,e,s,u,f,l,h,p,A,d,v,g,b,m;if(r=Ae,47===t.charCodeAt(Ae)?(e=a,Ae++):(e=n,0===me&&Se(o)),e===n&&(e=null),e!==n)if(s=Ae,(u=je())!==n&&(de=s,u=void(On=u)),(s=u)!==n){if(u=Ae,(f=$n())!==n)if(63===t.charCodeAt(Ae)?(l="?",Ae++):(l=n,0===me&&Se(c)),l!==n)if((h=$n())!==n)if((p=Be())!==n){for(A=[],d=Ae,(v=$n())!==n?(38===t.charCodeAt(Ae)?(g="&",Ae++):(g=n,0===me&&Se(i)),g!==n&&(b=$n())!==n&&(m=Be())!==n?d=v=[v,g,b,m]:(Ae=d,d=n)):(Ae=d,d=n);d!==n;)A.push(d),d=Ae,(v=$n())!==n?(38===t.charCodeAt(Ae)?(g="&",Ae++):(g=n,0===me&&Se(i)),g!==n&&(b=$n())!==n&&(m=Be())!==n?d=v=[v,g,b,m]:(Ae=d,d=n)):(Ae=d,d=n);A!==n?u=f=[f,l,h,p,A]:(Ae=u,u=n)}else Ae=u,u=n;else Ae=u,u=n;else Ae=u,u=n;else Ae=u,u=n;u===n&&(u=null),u!==n&&(f=$n())!==n?(de=r,r=e=function(){if(Bn)return On.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete On.expand,delete On.limit,delete On.orderBy,{SELECT:On};if(On.expand){On.columns||(On.columns=["*"]);for(const t of On.expand){const r=On.columns.findIndex(Ln(t));r>-1&&On.columns.splice(r,1),On.columns.push(t)}delete On.expand}return On=Tn(On),{SELECT:On}}()):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function je(){var r,e,s,u,c,i,v,g;return r=Ae,t.substr(Ae,6)===f?(e=f,Ae+=6):(e=n,0===me&&Se(l)),e!==n&&(de=r,e=void(Bn=!0)),(r=e)===n&&(r=Ae,e=Ae,t.substr(Ae,4)===h?(s=h,Ae+=4):(s=n,0===me&&Se(p)),s===n&&(t.substr(Ae,6)===A?(s=A,Ae+=6):(s=n,0===me&&Se(d))),(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,g=e,e=!kn.includes(g)&&{from:{ref:[g]}}),(r=e)===n&&(r=Ae,(e=bn())===n&&(e=He()),e===n&&(e=null),e!==n?(s=Ae,(u=yn())!==n&&(c=Cn())!==n?s=u=[u,c]:(Ae=s,s=n),s===n&&(s=Ae,(u=yn())!==n&&(c=Oe())!==n&&(i=Cn())!==n?s=u=[u,c,i]:(Ae=s,s=n)),s===n&&(s=null),s!==n?(u=function(){var r,e,s;r=Ae,e=[],ue.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(ae));if(s!==n)for(;s!==n;)e.push(s),ue.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(ae));else e=n;r=e!==n?t.substring(r,Ae):e;return r}(),u===n&&(u=null),u!==n?(c=Ae,47===t.charCodeAt(Ae)?(i=a,Ae++):(i=n,0===me&&Se(o)),i!==n&&(v=je())!==n?(de=c,c=i=v):(Ae=c,c=n),c===n&&(c=null),c!==n?(de=r,r=e=function(t,r,e,n){e&&([t,r,e]=Nn(t,r,e));const s=[r?r.length>2?{id:t,where:r[1].map((t=>t.val&&t.val.match&&t.val.match(/^"(.*)"$/)?{val:t.val.match(/^"(.*)"$/)[1]}:t))}:{id:t,where:[]}:Zn?`${Object.prototype.hasOwnProperty.call(t,"val")?t.val:t}`:t];if(n&&n.from){const t=n.from.ref;Object.prototype.hasOwnProperty.call(t[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[t.shift()]}),s.push(...t)}const u={from:{ref:s}};return n&&n.columns&&(u.columns=n.columns),u}(e,s,u,c)):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n))),r}function Oe(){var r,e,s,u,a,o,c;return r=Ae,(e=He())!==n&&(de=r,e=[e]),(r=e)===n&&(r=Ae,(e=Ge())!==n&&$n()!==n?(61===t.charCodeAt(Ae)?(s="=",Ae++):(s=n,0===me&&Se(v)),s!==n&&$n()!==n?((u=He())===n&&(u=Ae,(a=dn())!==n&&(de=u,a={val:a}),u=a),u!==n?(a=Ae,(o=xn())!==n&&(c=Oe())!==n?a=o=[o,c]:(Ae=a,a=n),a===n&&(a=null),a!==n?(de=r,e=function(t,r,e){const n=[t,"=",r];return e&&n.push("and",...e[1]),n}(e,u,a),r=e):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n)),r}function Be(){var r,e,s,u,a,o,c,i;if(r=Ae,t.substr(Ae,8)===g?(e=g,Ae+=8):(e=n,0===me&&Se(b)),e!==n)if((s=$n())!==n)if((u=ke())!==n){for(a=[],o=Ae,(c=xn())!==n&&(i=ke())!==n?o=c=[c,i]:(Ae=o,o=n);o!==n;)a.push(o),o=Ae,(c=xn())!==n&&(i=ke())!==n?o=c=[c,i]:(Ae=o,o=n);a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;if(r===n){if(r=Ae,t.substr(Ae,8)===m?(e=m,Ae+=8):(e=n,0===me&&Se(x)),e!==n)if((s=$n())!==n)if((u=Re())!==n){for(a=[],o=Ae,(c=xn())!==n&&(i=Re())!==n?o=c=[c,i]:(Ae=o,o=n);o!==n;)a.push(o),o=Ae,(c=xn())!==n&&(i=Re())!==n?o=c=[c,i]:(Ae=o,o=n);a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;if(r===n&&(r=Ae,t.substr(Ae,8)===y?(e=y,Ae+=8):(e=n,0===me&&Se(C)),e!==n&&(s=$n())!==n&&(u=Ne())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n)){if(r=Ae,t.substr(Ae,9)===$?(e=$,Ae+=9):(e=n,0===me&&Se(w)),e!==n)if((s=$n())!==n)if((u=Ue())!==n){for(a=[],o=Ae,(c=xn())!==n&&(i=Ue())!==n?o=c=[c,i]:(Ae=o,o=n);o!==n;)a.push(o),o=Ae,(c=xn())!==n&&(i=Ue())!==n?o=c=[c,i]:(Ae=o,o=n);a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;r===n&&(r=Ae,t.substr(Ae,5)===E?(e=E,Ae+=5):(e=n,0===me&&Se(S)),e!==n&&(s=$n())!==n?(u=function(){var t,r;t=Ae,(r=gn())!==n&&(de=t,e=r,r=void((On.limit||(On.limit={})).rows={val:e}));var e;return t=r}(),u!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===z?(e=z,Ae+=6):(e=n,0===me&&Se(Z)),e!==n&&(s=$n())!==n&&(u=Fe())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,11)===j?(e=j,Ae+=11):(e=n,0===me&&Se(O)),e!==n&&(s=$n())!==n&&(u=Fe())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,8)===B?(e=B,Ae+=8):(e=n,0===me&&Se(k)),e!==n&&(s=$n())!==n&&(u=Te())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===R?(e=R,Ae+=7):(e=n,0===me&&Se(F)),e!==n&&(s=$n())!==n?(u=function(){var t,r;t=Ae,(r=pn())!==n&&(de=t,r=void(r&&(On.count=!0)));return t=r}(),u!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===T?(e=T,Ae+=7):(e=n,0===me&&Se(L)),e!==n&&(s=$n())!==n&&(u=Me())!==n?r=e=[e,s,u]:(Ae=r,r=n),r===n&&(r=function(){var r,e,s,u,a,o;r=Ae,tt.test(t.charAt(Ae))?(e=t.charAt(Ae),Ae++):(e=n,0===me&&Se(rt));if(e!==n){for(s=[],et.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(nt));u!==n;)s.push(u),et.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(nt));if(s!==n)if(61===t.charCodeAt(Ae)?(u="=",Ae++):(u=n,0===me&&Se(v)),u!==n){for(a=[],st.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(ut));o!==n;)a.push(o),st.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(ut));a!==n?r=e=[e,s,u,a]:(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n}else Ae=r,r=n;return r}())))))))}}return r}function ke(){var r,e,s;return r=Ae,42===t.charCodeAt(Ae)?(e="*",Ae++):(e=n,0===me&&Se(N)),e===n&&(e=Ge()),e!==n&&(de=r,s=e,On.columns=Array.isArray(On.columns)?On.columns:[],On.columns.find(Ln(s))||On.columns.push(s),e=s),r=e}function Re(){var r,e,s,u,a,o,c,i,f,l,h;if(r=Ae,e=Ae,42===t.charCodeAt(Ae)?(s="*",Ae++):(s=n,0===me&&Se(N)),s===n&&(s=Ge()),s!==n&&(de=e,s=function(t){const r="*"===t?{}:t;return r.expand="*",Array.isArray(On.expand)||(On.expand=[]),On.expand.find(Ln(r))||On.expand.push(r),r}(s)),(e=s)!==n){if(s=Ae,u=Ae,(a=yn())!==n&&(de=u,jn.push(On),On=On.expand[On.expand.length-1],a=void(On.expand="*")),(u=a)!==n){for(a=Ae,o=[],c=Ae,(i=$n())!==n?(59===t.charCodeAt(Ae)?(f=";",Ae++):(f=n,0===me&&Se(_)),f===n&&(f=null),f!==n&&(l=$n())!==n&&(h=Be())!==n?c=i=[i,f,l,h]:(Ae=c,c=n)):(Ae=c,c=n);c!==n;)o.push(c),c=Ae,(i=$n())!==n?(59===t.charCodeAt(Ae)?(f=";",Ae++):(f=n,0===me&&Se(_)),f===n&&(f=null),f!==n&&(l=$n())!==n&&(h=Be())!==n?c=i=[i,f,l,h]:(Ae=c,c=n)):(Ae=c,c=n);o!==n&&(de=a,o=function(t){if(On.columns){"*"===On.expand&&(On.expand=[]);for(const t of On.columns)On.expand.find(Ln(t))||On.expand.push(t);delete On.columns}else Array.isArray(On.expand)&&-1===On.expand.indexOf("*")&&On.expand.unshift("*")}()),(a=o)!==n?(o=Ae,(c=Cn())!==n&&(de=o,c=void(On=jn.pop())),(o=c)!==n?s=u=[u,a,o]:(Ae=s,s=n)):(Ae=s,s=n)}else Ae=s,s=n;s===n&&(s=null),s!==n?(u=Ae,(a=xn())!==n&&(o=Re())!==n?u=a=[a,o]:(Ae=u,u=n),u===n&&(u=null),u!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return r}function Fe(){var t,r,e;return t=Ae,(r=gn())!==n&&(de=t,e=r,On.limit&&On.limit.offset&&On.limit.offset.val&&(e+=On.limit.offset.val),r=void((On.limit||(On.limit={})).offset={val:e})),t=r}function Te(){var t,r,e;return t=Ae,(r=Le())!==n&&(de=t,e=r,r=void(On.search=e)),t=r}function Le(){var r,e,s,u,a,o,c;if(r=Ae,e=Ae,(s=We())===n&&(s=null),s!==n&&(de=e,s=q(s)),(e=s)!==n)if(s=Ae,(u=yn())!==n&&(a=Le())!==n&&(o=Cn())!==n?(de=s,s=u=I(e,a)):(Ae=s,s=n),s===n&&(s=Ae,u=function(){var r,e,s,u,a;r=Ae,34===t.charCodeAt(Ae)?(e=Fr,Ae++):(e=n,0===me&&Se(Tr));if(e!==n){for(s=Ae,u=[],t.substr(Ae,2)===Lr?(a=Lr,Ae+=2):(a=n,0===me&&Se(Nr)),a===n&&(_r.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(qr)));a!==n;)u.push(a),t.substr(Ae,2)===Lr?(a=Lr,Ae+=2):(a=n,0===me&&Se(Nr)),a===n&&(_r.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(qr)));(s=u!==n?t.substring(s,Ae):u)!==n?(34===t.charCodeAt(Ae)?(u=Fr,Ae++):(u=n,0===me&&Se(Tr)),u!==n?(de=r,r=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return r}(),u!==n&&(de=s,u=D(e,u)),(s=u)===n&&(s=Ae,(u=An())!==n&&(de=s,u=D(e,u)),(s=u)===n&&(s=Ae,(u=dn())!==n&&(de=s,u=D(e,u)),s=u))),s!==n){for(u=[],a=Ae,(o=Xe())===n&&(o=tn())===n&&(o=Ye()),o!==n&&(c=Le())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=Xe())===n&&(o=tn())===n&&(o=Ye()),o!==n&&(c=Le())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);u!==n?(de=r,r=e=e):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function Ne(){var t,r,e;return t=Ae,(r=_e())!==n&&(de=t,e=r,r=void(On.where=e)),t=r}function _e(){var r,e,s,u,a,o,c,i;if(r=Ae,e=Ae,(s=We())===n&&(s=null),s!==n&&(de=e,s=q(s)),(e=s)!==n)if(s=Ae,(u=yn())!==n&&(a=_e())!==n&&(o=Cn())!==n?(de=s,s=u=I(e,a)):(Ae=s,s=n),s===n&&(s=Ae,(u=Pe())!==n&&(de=s,i=u,u=void e.push(...i)),(s=u)===n&&(s=Ae,(u=qe())!==n&&(de=s,u=function(t,r){t.push(...r)}(e,u)),(s=u)===n&&(s=Ae,u=function(){var r,e,s,u;me++,r=Ae,t.substr(Ae,8)===kt?(e=kt,Ae+=8):(e=n,0===me&&Se(Rt));e===n&&(t.substr(Ae,8)===Ft?(e=Ft,Ae+=8):(e=n,0===me&&Se(Tt)),e===n&&(t.substr(Ae,10)===Lt?(e=Lt,Ae+=10):(e=n,0===me&&Se(Nt))));e!==n&&yn()!==n&&(s=Je())!==n&&xn()!==n&&(u=Je())!==n&&Cn()!==n?(de=r,r=e={func:e,args:[s,u]}):(Ae=r,r=n);me--,r===n&&(e=n,0===me&&Se(Bt));return r}(),u!==n&&(de=s,u=function(t,r){t.push(r)}(e,u)),(s=u)===n&&(s=Ae,(u=pn())!==n&&(de=s,u=D(e,u)),s=u)))),s!==n){for(u=[],a=Ae,(o=Xe())===n&&(o=tn()),o!==n&&(c=_e())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=Xe())===n&&(o=tn()),o!==n&&(c=_e())!==n?(de=a,a=o=U(e,o,c)):(Ae=a,a=n);u!==n?(de=r,r=e=e):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function qe(){var r,e,s,u,c,i,f;if(r=Ae,e=Ae,(s=bn())!==n&&(de=e,s=[s]),(e=s)!==n)if(47===t.charCodeAt(Ae)?(s=a,Ae++):(s=n,0===me&&Se(o)),s!==n){for(u=[],c=Ae,(i=bn())!==n?(47===t.charCodeAt(Ae)?(f=a,Ae++):(f=n,0===me&&Se(o)),f!==n?(de=c,c=i=M(e,i)):(Ae=c,c=n)):(Ae=c,c=n);c!==n;)u.push(c),c=Ae,(i=bn())!==n?(47===t.charCodeAt(Ae)?(f=a,Ae++):(f=n,0===me&&Se(o)),f!==n?(de=c,c=i=M(e,i)):(Ae=c,c=n)):(Ae=c,c=n);u!==n?(c=Ae,i=function(){var r,e,s;r=Ae,t.substr(Ae,3)===H?(e=H,Ae+=3):(e=n,0===me&&Se(K));e!==n&&yn()!==n?((s=De())===n&&(s=null),s!==n&&Cn()!==n?(de=r,r=e=s):(Ae=r,r=n)):(Ae=r,r=n);return r}(),i!==n&&(de=c,i=function(t,r){let e=t.pop();if(!r)return["exists",{ref:[...t,{id:e}]}];let n=[];for(let t=0,s=0;t<r.length;++t){let u=r[t];u.ref&&0===u.ref.length&&"="===r[t+1]?n[s++]={func:"contains",args:[{ref:e},r[t+=2]]}:n[s++]=u}return n.length<r.length?(e=t.pop(),["exists",{ref:[...t,{id:e,where:n}]}]):["exists",{ref:[...t,{id:e,where:r}]}]}(e,i)),(c=i)===n&&(c=Ae,i=function(){var r,e,s;r=Ae,t.substr(Ae,3)===Q?(e=Q,Ae+=3):(e=n,0===me&&Se(V));e!==n&&yn()!==n&&(s=De())!==n&&Cn()!==n?(de=r,r=e=s):(Ae=r,r=n);return r}(),i!==n&&(de=c,i=function(t,r){let e=t.pop();return["not","exists",{ref:[...t,{id:e,where:["not",{xpr:[...r]}]}]}]}(e,i)),c=i),c!==n?(de=r,r=e=c):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function Ie(){var t,r,e,s,u,a,o,c,i;if(t=Ae,r=Ae,(e=We())===n&&(e=null),e!==n&&(de=r,e=(c=e)?[c]:[]),(r=e)!==n)if(e=Ae,(s=yn())!==n&&(u=Ie())!==n&&(a=Cn())!==n?(de=e,i=u,e=s=void r.push("(",...i,")")):(Ae=e,e=n),e===n&&(e=Ae,(s=Pe())!==n&&(de=e,s=function(t,r){t.push(...r)}(r,s)),(e=s)===n&&(e=Ae,(s=qe())!==n&&(de=e,s=function(t,r){t.push(...r)}(r,s)),e=s)),e!==n){for(s=[],u=Ae,(a=Xe())===n&&(a=tn()),a!==n&&(o=Ie())!==n?(de=u,u=a=P(r,a,o)):(Ae=u,u=n);u!==n;)s.push(u),u=Ae,(a=Xe())===n&&(a=tn()),a!==n&&(o=Ie())!==n?(de=u,u=a=P(r,a,o)):(Ae=u,u=n);s!==n?(de=t,t=r=r):(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;return t}function De(){var r,e,s,u;return r=Ae,(e=bn())!==n?(58===t.charCodeAt(Ae)?(s=J,Ae++):(s=n,0===me&&Se(G)),s!==n&&(u=Ie())!==n?(de=r,r=e=function(t,r){for(const e of r)e.ref&&e.ref[0]===t&&e.ref.shift();return r}(e,u)):(Ae=r,r=n)):(Ae=r,r=n),r}function Ue(){var r,e,s,u,a;return r=Ae,(e=Ve())===n&&(e=Ge()),e!==n?(s=Ae,wn()!==n?(u=Ae,"asc"===t.substr(Ae,3)?(a="asc",Ae+=3):(a=n,0===me&&Se(W)),a===n&&(t.substr(Ae,4)===X?(a=X,Ae+=4):(a=n,0===me&&Se(Y))),(u=a!==n?t.substring(u,Ae):a)!==n?(de=s,s=u):(Ae=s,s=n)):(Ae=s,s=n),s===n&&(s=null),s!==n?(de=r,r=e=function(t,r){const e=Sn(t,r&&{sort:r});On.orderBy=On.orderBy?[...On.orderBy,e]:[e]}(e,s)):(Ae=r,r=n)):(Ae=r,r=n),r}function Me(){var r,e,s,u,c,i;if(r=Ae,(e=rn())!==n){for(s=[],u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=rn())!==n?u=c=[c,i]:(Ae=u,u=n);u!==n;)s.push(u),u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=rn())!==n?u=c=[c,i]:(Ae=u,u=n);s!==n?r=e=[e,s]:(Ae=r,r=n)}else Ae=r,r=n;return r}function Pe(){var r,e,s,u,a,o;return me++,r=Ae,(e=Je())!==n&&wn()!==n?(s=Ae,"eq"===t.substr(Ae,2)?(u="eq",Ae+=2):(u=n,0===me&&Se(ot)),u===n&&("ne"===t.substr(Ae,2)?(u="ne",Ae+=2):(u=n,0===me&&Se(ct)),u===n&&("lt"===t.substr(Ae,2)?(u="lt",Ae+=2):(u=n,0===me&&Se(it)),u===n&&("gt"===t.substr(Ae,2)?(u="gt",Ae+=2):(u=n,0===me&&Se(ft)),u===n&&("le"===t.substr(Ae,2)?(u="le",Ae+=2):(u=n,0===me&&Se(lt)),u===n&&("ge"===t.substr(Ae,2)?(u="ge",Ae+=2):(u=n,0===me&&Se(ht))))))),(s=u!==n?t.substring(s,Ae):u)!==n&&(u=wn())!==n&&(a=Je())!==n?(de=r,r=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[o=s]||o,a]):(Ae=r,r=n)):(Ae=r,r=n),me--,r===n&&(e=n,0===me&&Se(at)),r}function Je(){var r;return me++,(r=Ve())===n&&(r=Ge())===n&&(r=He())===n&&(r=Ke())===n&&(r=Qe())===n&&(r=function(){var r,e,s,u,a;r=Ae,91===t.charCodeAt(Ae)?(e=yt,Ae++):(e=n,0===me&&Se(Ct));if(e!==n){for(s=Ae,u=[],Et.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(St));a!==n;)u.push(a),Et.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(St));(s=u!==n?t.substring(s,Ae):u)!==n?(93===t.charCodeAt(Ae)?(u=$t,Ae++):(u=n,0===me&&Se(wt)),u!==n?(de=r,r=e={list:s.replace(/"/g,"").split(",").map((t=>({val:t})))}):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return r}()),me--,r===n&&(n,0===me&&Se(pt)),r}function Ge(){var r,e,s,u,c,i,f,l;if(me++,r=Ae,(e=bn())!==n){for(s=[],u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=bn())!==n?(de=u,u=c=dt(0,i)):(Ae=u,u=n);u!==n;)s.push(u),u=Ae,47===t.charCodeAt(Ae)?(c=a,Ae++):(c=n,0===me&&Se(o)),c!==n&&(i=bn())!==n?(de=u,u=c=dt(0,i)):(Ae=u,u=n);s!==n?(de=r,l=s,r=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ae=r,r=n)}else Ae=r,r=n;return me--,r===n&&(e=n,0===me&&Se(At)),r}function He(){var r,e,s;return r=Ae,(e=pn())===n&&(e=function(){var r,e,s,u,a,o,c,i,f,l,h,p,A,d,v,g,b,m,x,y,C,$,w,E;r=Ae,e=Ae,s=[],Ur.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Mr));if(u!==n)for(;u!==n;)s.push(u),Ur.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Mr));else s=n;if(s!==n)if(45===t.charCodeAt(Ae)?(u=Pr,Ae++):(u=n,0===me&&Se(Jr)),u!==n)if(Ur.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(Mr)),a!==n)if(Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr)),o!==n)if(45===t.charCodeAt(Ae)?(c=Pr,Ae++):(c=n,0===me&&Se(Jr)),c!==n)if(Ur.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(Mr)),i!==n)if(Ur.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(Mr)),f!==n){if(l=Ae,84===t.charCodeAt(Ae)?(h="T",Ae++):(h=n,0===me&&Se(Gr)),h!==n)if(Ur.test(t.charAt(Ae))?(p=t.charAt(Ae),Ae++):(p=n,0===me&&Se(Mr)),p!==n)if(Ur.test(t.charAt(Ae))?(A=t.charAt(Ae),Ae++):(A=n,0===me&&Se(Mr)),A!==n)if(58===t.charCodeAt(Ae)?(d=J,Ae++):(d=n,0===me&&Se(G)),d!==n)if(Ur.test(t.charAt(Ae))?(v=t.charAt(Ae),Ae++):(v=n,0===me&&Se(Mr)),v!==n)if(Ur.test(t.charAt(Ae))?(g=t.charAt(Ae),Ae++):(g=n,0===me&&Se(Mr)),g!==n){if(b=Ae,58===t.charCodeAt(Ae)?(m=J,Ae++):(m=n,0===me&&Se(G)),m!==n)if(Ur.test(t.charAt(Ae))?(x=t.charAt(Ae),Ae++):(x=n,0===me&&Se(Mr)),x!==n)if(Ur.test(t.charAt(Ae))?(y=t.charAt(Ae),Ae++):(y=n,0===me&&Se(Mr)),y!==n){if(C=Ae,46===t.charCodeAt(Ae)?($=".",Ae++):($=n,0===me&&Se(Hr)),$!==n){if(w=[],Ur.test(t.charAt(Ae))?(E=t.charAt(Ae),Ae++):(E=n,0===me&&Se(Mr)),E!==n)for(;E!==n;)w.push(E),Ur.test(t.charAt(Ae))?(E=t.charAt(Ae),Ae++):(E=n,0===me&&Se(Mr));else w=n;w!==n?C=$=[$,w]:(Ae=C,C=n)}else Ae=C,C=n;C===n&&(C=null),C!==n?b=m=[m,x,y,C]:(Ae=b,b=n)}else Ae=b,b=n;else Ae=b,b=n;else Ae=b,b=n;b===n&&(b=null),b!==n?(90===t.charCodeAt(Ae)?(m="Z",Ae++):(m=n,0===me&&Se(Kr)),m===n&&(m=Ae,43===t.charCodeAt(Ae)?(x="+",Ae++):(x=n,0===me&&Se(Qr)),x===n&&(45===t.charCodeAt(Ae)?(x=Pr,Ae++):(x=n,0===me&&Se(Jr))),x!==n?(Ur.test(t.charAt(Ae))?(y=t.charAt(Ae),Ae++):(y=n,0===me&&Se(Mr)),y!==n?(Ur.test(t.charAt(Ae))?(C=t.charAt(Ae),Ae++):(C=n,0===me&&Se(Mr)),C!==n?(58===t.charCodeAt(Ae)?($=J,Ae++):($=n,0===me&&Se(G)),$!==n?(Ur.test(t.charAt(Ae))?(w=t.charAt(Ae),Ae++):(w=n,0===me&&Se(Mr)),w!==n?(Ur.test(t.charAt(Ae))?(E=t.charAt(Ae),Ae++):(E=n,0===me&&Se(Mr)),E!==n?m=x=[x,y,C,$,w,E]:(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)):(Ae=m,m=n)),m===n&&(m=null),m!==n?l=h=[h,p,A,d,v,g,b,m]:(Ae=l,l=n)):(Ae=l,l=n)}else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;else Ae=l,l=n;l===n&&(l=null),l!==n?e=s=[s,u,a,o,c,i,f,l]:(Ae=e,e=n)}else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;r=e!==n?t.substring(r,Ae):e;return r}()),e!==n&&(de=r,e=vt(e)),(r=e)===n&&(r=mn())===n&&(r=Ae,(e=vn())!==n&&(de=r,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(r=e)===n&&(r=Ae,(e=An())!==n&&(de=r,e=vt(e)),r=e)),r}function Ke(){var r,e,s,u,a,o;if(r=Ae,e=Ae,s=Ae,123===t.charCodeAt(Ae)?(u="{",Ae++):(u=n,0===me&&Se(gt)),u!==n){for(a=[],(o=Ke())===n&&(bt.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(mt)));o!==n;)a.push(o),(o=Ke())===n&&(bt.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(mt)));a!==n?(125===t.charCodeAt(Ae)?(o="}",Ae++):(o=n,0===me&&Se(xt)),o!==n?s=u=[u,a,o]:(Ae=s,s=n)):(Ae=s,s=n)}else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=vt(e)),r=e}function Qe(){var r,e,s,u,a,o,c,i;if(r=Ae,e=Ae,s=Ae,91===t.charCodeAt(Ae)?(u=yt,Ae++):(u=n,0===me&&Se(Ct)),u!==n&&(a=$n())!==n?(93===t.charCodeAt(Ae)?(o=$t,Ae++):(o=n,0===me&&Se(wt)),o!==n?s=u=[u,a,o]:(Ae=s,s=n)):(Ae=s,s=n),s===n)if(s=Ae,91===t.charCodeAt(Ae)?(u=yt,Ae++):(u=n,0===me&&Se(Ct)),u!==n)if((a=$n())!==n)if(123===t.charCodeAt(Ae)?(o="{",Ae++):(o=n,0===me&&Se(gt)),o!==n){for(c=[],(i=Qe())===n&&(Et.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(St)));i!==n;)c.push(i),(i=Qe())===n&&(Et.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(St)));c!==n?(93===t.charCodeAt(Ae)?(i=$t,Ae++):(i=n,0===me&&Se(wt)),i!==n?s=u=[u,a,o,c,i]:(Ae=s,s=n)):(Ae=s,s=n)}else Ae=s,s=n;else Ae=s,s=n;else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=vt(e)),r=e}function Ve(){var r,e,s,u,a,o,c,i,f,l;if(me++,r=Ae,e=Ae,s=[],Zt.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(jt)),u!==n)for(;u!==n;)s.push(u),Zt.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(jt));else s=n;if((e=s!==n?t.substring(e,Ae):s)!==n)if((s=yn())!==n)if((u=Je())!==n){for(a=[],o=Ae,xn()!==n&&(c=Je())!==n?(de=o,o=Ot(0,0,c)):(Ae=o,o=n);o!==n;)a.push(o),o=Ae,xn()!==n&&(c=Je())!==n?(de=o,o=Ot(0,0,c)):(Ae=o,o=n);a!==n&&(o=Cn())!==n?(de=r,i=e,f=u,l=a,zn&&!(i in zn.functions)&&En("'"+i+"' is an unknown function in OData URL spec (strict mode)"),r=e={func:i,args:[f,...l]}):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;return me--,r===n&&(e=n,0===me&&Se(zt)),r}function We(){var r,e;return r=Ae,$n()!==n?("not"===t.substr(Ae,3).toLowerCase()?(e=t.substr(Ae,3),Ae+=3):(e=n,0===me&&Se(_t)),e!==n&&wn()!==n?(de=r,r="not"):(Ae=r,r=n)):(Ae=r,r=n),r}function Xe(){var r,e;return r=Ae,wn()!==n?("and"===t.substr(Ae,3).toLowerCase()?(e=t.substr(Ae,3),Ae+=3):(e=n,0===me&&Se(qt)),e!==n&&wn()!==n?(de=r,r="and"):(Ae=r,r=n)):(Ae=r,r=n),r}function Ye(){var t,r;return t=Ae,(r=wn())!==n&&(de=t,r="and"),t=r}function tn(){var r,e;return r=Ae,wn()!==n?("or"===t.substr(Ae,2).toLowerCase()?(e=t.substr(Ae,2),Ae+=2):(e=n,0===me&&Se(It)),e!==n&&wn()!==n?(de=r,r="or"):(Ae=r,r=n)):(Ae=r,r=n),r}function rn(){var r,e,s;return r=Ae,t.substr(Ae,9)===Dt?(e=Dt,Ae+=9):(e=n,0===me&&Se(Ut)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=en())!==n){for(u=[],a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=en())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=en())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===Mt?(e=Mt,Ae+=7):(e=n,0===me&&Se(Pt)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f,l;if(t=Ae,(r=yn())!==n)if((e=$n())!==n){if(s=Ae,(u=yn())!==n)if((a=on())!==n){for(o=[],c=Ae,(i=xn())!==n&&(f=$n())!==n&&(l=on())!==n?c=i=[i,f,l]:(Ae=c,c=n);c!==n;)o.push(c),c=Ae,(i=xn())!==n&&(f=$n())!==n&&(l=on())!==n?c=i=[i,f,l]:(Ae=c,c=n);o!==n&&(c=Cn())!==n?s=u=[u,a,o,c]:(Ae=s,s=n)}else Ae=s,s=n;else Ae=s,s=n;s!==n?(u=Ae,(a=xn())!==n&&(o=$n())!==n&&(c=Me())!==n?u=a=[a,o,c]:(Ae=u,u=n),u===n&&(u=null),u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)):(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===Jt?(e=Jt,Ae+=6):(e=n,0===me&&Se(Gt)),e!==n&&(s=cn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=function(){var r,e,s,u;r=Ae,t.substr(Ae,8)===br?(e=br,Ae+=8):(e=n,0===me&&Se(mr));e===n&&(t.substr(Ae,11)===xr?(e=xr,Ae+=11):(e=n,0===me&&Se(yr)));e!==n&&yn()!==n&&$n()!==n&&(s=vn())!==n&&$n()!==n&&xn()!==n&&$n()!==n&&(u=Ge())!==n&&$n()!==n&&Cn()!==n?(de=r,r=e=function(t,r,e){const n={...e,sort:"topcount"===t?"desc":"asc"};On.orderBy=On.orderBy?[...On.orderBy,n]:[n],(On.limit||(On.limit={})).rows={val:r}}(e,s,u)):(Ae=r,r=n);return r}(),r===n&&(r=Ae,t.substr(Ae,6)===Ht?(e=Ht,Ae+=6):(e=n,0===me&&Se(Kt)),e!==n&&(s=fn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===Qt?(e=Qt,Ae+=6):(e=n,0===me&&Se(Vt)),e!==n?(s=function(){var t,r,e,s,u,a;t=Ae,(r=yn())!==n&&(e=$n())!==n&&(s=Te())!==n&&(u=$n())!==n&&(a=Cn())!==n?t=r=[r,e,s,u,a]:(Ae=t,t=n);return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===Wt?(e=Wt,Ae+=6):(e=n,0===me&&Se(Xt)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=Me())!==n){if(u=[],a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=Me())!==n?a=o=[o,c,i,f]:(Ae=a,a=n),a!==n)for(;a!==n;)u.push(a),a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=Me())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);else u=n;u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,7)===Yt?(e=Yt,Ae+=7):(e=n,0===me&&Se(tr)),e!==n?(s=function(){var t,r,e,s,u,a,o,c,i,f;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=ln())!==n){for(u=[],a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=ln())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);a!==n;)u.push(a),a=Ae,(o=$n())!==n&&(c=xn())!==n&&(i=$n())!==n&&(f=ln())!==n?a=o=[o,c,i,f]:(Ae=a,a=n);u!==n&&(a=$n())!==n&&(o=Cn())!==n?t=r=[r,e,s,u,a,o]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}(),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,13)===rr?(e=rr,Ae+=13):(e=n,0===me&&Se(er)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,9)===nr?(e=nr,Ae+=9):(e=n,0===me&&Se(sr)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,10)===ur?(e=ur,Ae+=10):(e=n,0===me&&Se(ar)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=Ae,t.substr(Ae,6)===or?(e=or,Ae+=6):(e=n,0===me&&Se(cr)),e!==n&&(s=hn())!==n?r=e=[e,s]:(Ae=r,r=n),r===n&&(r=function(){var r;t.substr(Ae,8)===Cr?(r=Cr,Ae+=8):(r=n,0===me&&Se($r));return r}())))))))))))),r}function en(){var r,e,s,u,a;return r=Ae,e=Ae,t.substr(Ae,6)===f?(s=f,Ae+=6):(s=n,0===me&&Se(l)),s!==n&&(u=an())!==n?(de=e,e=s={func:"count",args:["*"],as:u}):(Ae=e,e=n),e===n&&(e=nn()),e!==n&&(de=r,a=e,On.columns=Array.isArray(On.columns)?On.columns:[],On.columns.find(Ln(a))||On.columns.push(a),e=a),r=e}function nn(){var t,r,e,s,u;return t=Ae,(r=Ge())!==n&&(e=sn())!==n?((s=un())===n&&(s=null),s!==n&&(u=an())!==n?(de=t,t=r={func:e,args:[r],as:u}):(Ae=t,t=n)):(Ae=t,t=n),t===n&&(t=Ae,(r=bn())!==n&&(e=yn())!==n&&(s=nn())!==n&&(u=Cn())!==n?t=r=[r,e,s,u]:(Ae=t,t=n)),t}function sn(){var r,e,s,u,a;if(r=Ae,wn()!==n)if(t.substr(Ae,4)===ir?(e=ir,Ae+=4):(e=n,0===me&&Se(fr)),e!==n)if(wn()!==n){if(s=Ae,u=[],Zt.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(jt)),a!==n)for(;a!==n;)u.push(a),Zt.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(jt));else u=n;(s=u!==n?t.substring(s,Ae):u)!==n?(de=r,r=s):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;else Ae=r,r=n;return r}function un(){var r,e,s,u,a,o,c;return r=Ae,(e=wn())!==n?(t.substr(Ae,4)===lr?(s=lr,Ae+=4):(s=n,0===me&&Se(hr)),s!==n&&(u=wn())!==n&&(a=Ge())!==n&&(o=sn())!==n?((c=un())===n&&(c=null),c!==n?r=e=[e,s,u,a,o,c]:(Ae=r,r=n)):(Ae=r,r=n)):(Ae=r,r=n),r}function an(){var r,e,s;return r=Ae,wn()!==n?("as"===t.substr(Ae,2)?(e="as",Ae+=2):(e=n,0===me&&Se(pr)),e!==n&&wn()!==n&&(s=bn())!==n?(de=r,r=s):(Ae=r,r=n)):(Ae=r,r=n),r}function on(){var r,e,s;return r=Ae,e=function(){var r,e,s,u,a,o,c,i,f,l,h;r=Ae,e=Ae,t.substr(Ae,6)===Ar?(s=Ar,Ae+=6):(s=n,0===me&&Se(dr));if(s!==n)if((u=yn())!==n)if((a=$n())!==n)if(t.substr(Ae,4)===vr?(o=vr,Ae+=4):(o=n,0===me&&Se(gr)),o===n&&(o=Ge()),o!==n){if(c=[],i=Ae,(f=$n())!==n&&(l=xn())!==n&&(h=Ge())!==n?i=f=[f,l,h]:(Ae=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ae,(f=$n())!==n&&(l=xn())!==n&&(h=Ge())!==n?i=f=[f,l,h]:(Ae=i,i=n);else c=n;c!==n&&(i=$n())!==n&&(f=Cn())!==n?e=s=[s,u,a,o,c,i,f]:(Ae=e,e=n)}else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;else Ae=e,e=n;e!==n&&(de=r,e=function(t){const r=new Error("Rollup in groupby is not supported yet.");throw r.statusCode=501,r}());return r=e}(),e===n&&(e=Ge()),e!==n&&(de=r,s=e,e=void(On.groupBy||(On.groupBy=[])).push(s)),r=e}function cn(){var t,r,e,s,u,a;return t=Ae,(r=yn())!==n&&(e=$n())!==n&&(s=Ne())!==n&&(u=$n())!==n&&(a=Cn())!==n?t=r=[r,e,s,u,a]:(Ae=t,t=n),t}function fn(){var t,r,e,s,u,a,o,c,i,f,l,h,p,A;if(t=Ae,(r=yn())!==n)if((e=$n())!==n)if((s=Ge())!==n)if((u=$n())!==n)if((a=xn())!==n)if((o=$n())!==n){if(c=Ae,(i=fn())!==n){for(f=[],l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);l!==n;)f.push(l),l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);f!==n?c=i=[i,f]:(Ae=c,c=n)}else Ae=c,c=n;if(c===n)if(c=Ae,(i=cn())!==n){for(f=[],l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);l!==n;)f.push(l),l=Ae,(h=$n())!==n&&(p=xn())!==n&&(A=fn())!==n?l=h=[h,p,A]:(Ae=l,l=n);f!==n?c=i=[i,f]:(Ae=c,c=n)}else Ae=c,c=n;c!==n&&(i=$n())!==n&&(f=Cn())!==n?t=r=[r,e,s,u,a,o,c,i,f]:(Ae=t,t=n)}else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;else Ae=t,t=n;return t}function ln(){var t,r,e;return t=Ae,(r=_e())!==n&&(e=an())!==n?t=r=[r,e]:(Ae=t,t=n),t}function hn(){var t,r,e,s,u,a,o,c,i,f;return t=Ae,(r=yn())!==n&&(e=$n())!==n&&(s=Je())!==n&&(u=$n())!==n&&(a=xn())!==n&&(o=$n())!==n&&(c=Je())!==n&&(i=$n())!==n&&(f=Cn())!==n?t=r=[r,e,s,u,a,o,c,i,f]:(Ae=t,t=n),t}function pn(){var r,e;return r=Ae,t.substr(Ae,4)===wr?(e=wr,Ae+=4):(e=n,0===me&&Se(Er)),e===n&&(t.substr(Ae,5)===Sr?(e=Sr,Ae+=5):(e=n,0===me&&Se(zr))),e!==n&&(de=r,e="true"===e),r=e}function An(){var r,e,s,u,a;if(me++,r=Ae,39===t.charCodeAt(Ae)?(e="'",Ae++):(e=n,0===me&&Se(jr)),e!==n){for(s=Ae,u=[],t.substr(Ae,2)===Or?(a=Or,Ae+=2):(a=n,0===me&&Se(Br)),a===n&&(kr.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(Rr)));a!==n;)u.push(a),t.substr(Ae,2)===Or?(a=Or,Ae+=2):(a=n,0===me&&Se(Br)),a===n&&(kr.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(Rr)));(s=u!==n?t.substring(s,Ae):u)!==n?(39===t.charCodeAt(Ae)?(u="'",Ae++):(u=n,0===me&&Se(jr)),u!==n?(de=r,r=e=s.replace(/''/g,"'")):(Ae=r,r=n)):(Ae=r,r=n)}else Ae=r,r=n;return me--,r===n&&(e=n,0===me&&Se(Zr)),r}function dn(){var r,e,s;if(r=Ae,e=[],Ir.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(Dr)),s!==n)for(;s!==n;)e.push(s),Ir.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(Dr));else e=n;return r=e!==n?t.substring(r,Ae):e}function vn(){var r,e,s,u,a,o,c,i,f,l;if(r=Ae,e=Ae,s=Ae,Vr.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Wr)),u===n&&(u=null),u!==n){if(a=[],Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr)),o!==n)for(;o!==n;)a.push(o),Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr));else a=n;if(a!==n){if(o=Ae,46===t.charCodeAt(Ae)?(c=".",Ae++):(c=n,0===me&&Se(Hr)),c!==n){if(i=[],Ur.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(Mr)),f!==n)for(;f!==n;)i.push(f),Ur.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(Mr));else i=n;i!==n?o=c=[c,i]:(Ae=o,o=n)}else Ae=o,o=n;if(o===n&&(o=null),o!==n){if(c=Ae,101===t.charCodeAt(Ae)?(i="e",Ae++):(i=n,0===me&&Se(Xr)),i!==n){if(f=[],Ur.test(t.charAt(Ae))?(l=t.charAt(Ae),Ae++):(l=n,0===me&&Se(Mr)),l!==n)for(;l!==n;)f.push(l),Ur.test(t.charAt(Ae))?(l=t.charAt(Ae),Ae++):(l=n,0===me&&Se(Mr));else f=n;f!==n?c=i=[i,f]:(Ae=c,c=n)}else Ae=c,c=n;c===n&&(c=null),c!==n?s=u=[u,a,o,c]:(Ae=s,s=n)}else Ae=s,s=n}else Ae=s,s=n}else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=Rn(e)),r=e}function gn(){var r,e,s,u,a,o;if(r=Ae,e=Ae,s=Ae,Vr.test(t.charAt(Ae))?(u=t.charAt(Ae),Ae++):(u=n,0===me&&Se(Wr)),u===n&&(u=null),u!==n){if(a=[],Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr)),o!==n)for(;o!==n;)a.push(o),Ur.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(Mr));else a=n;a!==n?s=u=[u,a]:(Ae=s,s=n)}else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=parseInt(e)),r=e}function bn(){var r,e,s,u,a,o,c,i;if(r=Ae,e=Ae,me++,s=pn(),me--,s===n?e=void 0:(Ae=e,e=n),e!==n)if(s=Ae,me++,u=mn(),me--,u===n?s=void 0:(Ae=s,s=n),s!==n){if(u=Ae,a=Ae,Yr.test(t.charAt(Ae))?(o=t.charAt(Ae),Ae++):(o=n,0===me&&Se(te)),o!==n){for(c=[],re.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(ee));i!==n;)c.push(i),re.test(t.charAt(Ae))?(i=t.charAt(Ae),Ae++):(i=n,0===me&&Se(ee));c!==n?a=o=[o,c]:(Ae=a,a=n)}else Ae=a,a=n;(u=a!==n?t.substring(u,Ae):a)!==n?(de=r,r=e=u):(Ae=r,r=n)}else Ae=r,r=n;else Ae=r,r=n;return r}function mn(){var r,e,s,u,a,o,c,i,f;if(r=Ae,e=Ae,s=Ae,u=[],ne.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(se)),a!==n)for(;a!==n;)u.push(a),ne.test(t.charAt(Ae))?(a=t.charAt(Ae),Ae++):(a=n,0===me&&Se(se));else u=n;if(u!==n)if(45===t.charCodeAt(Ae)?(a=Pr,Ae++):(a=n,0===me&&Se(Jr)),a!==n){if(o=[],c=Ae,i=[],ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se)),f!==n)for(;f!==n;)i.push(f),ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se));else i=n;if(i!==n?(45===t.charCodeAt(Ae)?(f=Pr,Ae++):(f=n,0===me&&Se(Jr)),f===n&&(f=null),f!==n?c=i=[i,f]:(Ae=c,c=n)):(Ae=c,c=n),c!==n)for(;c!==n;){if(o.push(c),c=Ae,i=[],ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se)),f!==n)for(;f!==n;)i.push(f),ne.test(t.charAt(Ae))?(f=t.charAt(Ae),Ae++):(f=n,0===me&&Se(se));else i=n;i!==n?(45===t.charCodeAt(Ae)?(f=Pr,Ae++):(f=n,0===me&&Se(Jr)),f===n&&(f=null),f!==n?c=i=[i,f]:(Ae=c,c=n)):(Ae=c,c=n)}else o=n;o!==n?s=u=[u,a,o]:(Ae=s,s=n)}else Ae=s,s=n;else Ae=s,s=n;return(e=s!==n?t.substring(e,Ae):s)!==n&&(de=r,e=vt(e)),r=e}function xn(){var r,e,s,u;return r=Ae,(e=$n())!==n?(44===t.charCodeAt(Ae)?(s=",",Ae++):(s=n,0===me&&Se(oe)),s!==n&&(u=$n())!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r}function yn(){var r,e,s,u;return r=Ae,(e=$n())!==n?(40===t.charCodeAt(Ae)?(s="(",Ae++):(s=n,0===me&&Se(ce)),s!==n&&(u=$n())!==n?r=e=[e,s,u]:(Ae=r,r=n)):(Ae=r,r=n),r}function Cn(){var r,e,s;return r=Ae,(e=$n())!==n?(41===t.charCodeAt(Ae)?(s=")",Ae++):(s=n,0===me&&Se(ie)),s!==n?r=e=[e,s]:(Ae=r,r=n)):(Ae=r,r=n),r}function $n(){var r,e,s;for(me++,r=Ae,e=[],le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he));s!==n;)e.push(s),le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he));return r=e!==n?t.substring(r,Ae):e,me--,r===n&&(e=n,0===me&&Se(fe)),r}function wn(){var r,e,s;if(me++,r=Ae,e=[],le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he)),s!==n)for(;s!==n;)e.push(s),le.test(t.charAt(Ae))?(s=t.charAt(Ae),Ae++):(s=n,0===me&&Se(he));else e=n;return r=e!==n?t.substring(r,Ae):e,me--,r===n&&(e=n,0===me&&Se(pe)),r}const En=(t,r=400)=>{xe(JSON.stringify({code:r,message:t}))},Sn=Object.assign,{strict:zn,minimal:Zn}=r,jn=[];let On,Bn;const kn=["$value"],Rn=r.safeNumber||function(t){const r=Number(t);return Number.isSafeInteger(r)?r:t},Fn=(t,r)=>{const e=[...t];for(const t of e)t.xpr&&(t.xpr=Fn(t.xpr,r)),t.args&&(t.args=Fn(t.args,r)),t.ref&&r.includes(t.ref.join(""));return e},Tn=t=>{const r=t.groupBy,e=t.where,n=t.columns||[],s=n.filter((t=>t.as));let u=[],a=[];if(0!==s.length&&(u=n.filter((t=>!t.ref||s.includes(t.ref.join(""))))),r){const t=r.map((({ref:t})=>t&&t.join(""))),e=n.filter((r=>r.ref&&t.includes(r.ref.join(""))));a=0===e.length?[...r]:e}const o=0!==u.length||0!==a.length?[...a,...u]:t.columns;let c={...t};o&&(c.columns=o);if(e&&(r||0!==s.length)){const t=n.map((t=>t.ref&&t.ref.join("")||t.as));c={...c,where:Fn(e,t)}}return c},Ln=t=>r=>t===r||t.as&&r.as&&t.as===r.as||t.ref&&r.ref&&t.ref.join("")===r.ref.join(""),Nn=(t,r,e)=>(t||(t=""),r&&(t+=r.reduce(((t,r)=>{for(const e of r)t+="string"==typeof e?e:e.val?"string"==typeof e.val?`'${e.val}'`:e.val:e.ref[0];return t}),""),r=void 0),[t+=e,r,e]);if((e=u())!==n&&Ae===t.length)return e;throw e!==n&&Ae<t.length&&Se({type:"end"}),ze(be,ge<t.length?t.charAt(ge):null,ge<t.length?Ee(ge,ge+1):Ee(ge,ge))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(t,r){var e={literal:function(t){return'"'+s(t.text)+'"'},class:function(t){var r,e="";for(r=0;r<t.parts.length;r++)e+=t.parts[r]instanceof Array?u(t.parts[r][0])+"-"+u(t.parts[r][1]):u(t.parts[r]);return"["+(t.inverted?"^":"")+e+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function n(t){return t.charCodeAt(0).toString(16).toUpperCase()}function s(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}function u(t){return t.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}return"Expected "+function(t){var r,n,s,u=new Array(t.length);for(r=0;r<t.length;r++)u[r]=(s=t[r],e[s.type](s));if(u.sort(),u.length>0){for(r=1,n=1;r<u.length;r++)u[r-1]!==u[r]&&(u[n]=u[r],n++);u.length=n}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}(t)+" but "+function(t){return t?'"'+s(t)+'"':"end of input"}(r)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -138,13 +138,17 @@ function cors (req, res, next) {
|
|
|
138
138
|
next()
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
function correlate (req,
|
|
142
|
-
|
|
143
|
-
const id =
|
|
144
|
-
|| req.headers['x-correlation-id'] || req.headers['x-correlationid']
|
|
141
|
+
function correlate (req, res, next) {
|
|
142
|
+
// derive correlation id from req
|
|
143
|
+
const id = req.headers['x-correlation-id'] || req.headers['x-correlationid']
|
|
145
144
|
|| req.headers['x-request-id'] || req.headers['x-vcap-request-id']
|
|
146
145
|
|| cds.utils.uuid()
|
|
147
|
-
cds.context
|
|
146
|
+
// new intermediate cds.context, if necessary
|
|
147
|
+
if (!cds.context) cds.context = { id }
|
|
148
|
+
// guarantee x-correlation-id going forward and set on res
|
|
149
|
+
req.headers['x-correlation-id'] = id
|
|
150
|
+
res.set('x-correlation-id', id)
|
|
151
|
+
// guaranteed access to cds.context._.req -> REVISIT
|
|
148
152
|
if (!cds.context._) cds.context._ = {}
|
|
149
153
|
if (!cds.context._.req) cds.context._.req = req
|
|
150
154
|
next()
|