@sap/cds 6.0.1 → 6.0.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 +31 -0
- package/bin/build/provider/mtx-sidecar/index.js +50 -20
- package/bin/build/util.js +6 -4
- package/bin/deploy/to-hana/hana.js +6 -3
- package/bin/serve.js +2 -10
- package/lib/deploy.js +1 -2
- package/lib/env/requires.js +1 -0
- package/lib/index.js +1 -1
- package/lib/req/cds-context.js +1 -1
- package/lib/serve/factory.js +1 -2
- package/lib/serve/index.js +1 -1
- package/lib/utils/index.js +10 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/OData.js +3 -2
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/action.js +18 -3
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/create.js +7 -7
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/request.js +1 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/update.js +7 -6
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/handlerUtils.js +2 -6
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/readAfterWrite.js +7 -2
- package/libx/_runtime/common/constants/events.js +1 -3
- package/libx/_runtime/fiori/generic/activate.js +0 -4
- package/libx/_runtime/fiori/generic/edit.js +1 -9
- package/libx/_runtime/fiori/generic/new.js +3 -17
- package/libx/_runtime/fiori/generic/patch.js +6 -7
- package/libx/_runtime/fiori/generic/prepare.js +11 -18
- package/libx/_runtime/fiori/generic/read.js +11 -1
- package/libx/_runtime/fiori/utils/handler.js +0 -17
- package/libx/_runtime/messaging/AMQPWebhookMessaging.js +18 -19
- package/libx/_runtime/messaging/file-based.js +1 -0
- package/libx/_runtime/remote/utils/client.js +6 -2
- package/libx/odata/grammar.pegjs +4 -1
- package/libx/odata/parser.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,37 @@
|
|
|
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 6.0.4 - 2022-07-20
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Local mocking of external services using `cds watch`
|
|
12
|
+
|
|
13
|
+
## Version 6.0.3 - 2022-07-14
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- On Business Application Studio, `@sap/cds` now rejects starting on Node 12, as it does locally. This avoids cryptic follow-up errors.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Generic handlers for draft-related operations will trigger a READ event afterwards
|
|
22
|
+
- `file-based-messaging` only watches the file when at least one handler is registered
|
|
23
|
+
- `--vap-file` parameter of `cds deploy` is available again
|
|
24
|
+
- `cds build` no longer throws an error if `@sap/cds-mtx` library (classic MTX) isn't installed locally.
|
|
25
|
+
- `cds.spawn` no longer tries to reuse a transaction
|
|
26
|
+
- Custom query parameter caused bad request on certain characters in rest adapter
|
|
27
|
+
- `cds-ts` no longer fails with an `ERR_UNKNOWN_FILE_EXTENSION` error
|
|
28
|
+
- Timeouts when sending string payloads to remote services
|
|
29
|
+
- `cds.context.http` for `$batch` using atomicity groups
|
|
30
|
+
|
|
31
|
+
## Version 6.0.2 - 2022-07-06
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- Jest tests do not fail any longer because of logs during app shutdown
|
|
36
|
+
- `cds build` now uses correct `mtx/sidecar` context. This avoids redundant `cds-mtxs` npm dependency for Java projects.
|
|
37
|
+
|
|
7
38
|
## Version 6.0.1 - 2022-07-05
|
|
8
39
|
|
|
9
40
|
### Added
|
|
@@ -5,6 +5,7 @@ const BuildTaskHandlerInternal = require('../buildTaskHandlerInternal')
|
|
|
5
5
|
const NodeCfModuleBuilder = require('../nodejs')
|
|
6
6
|
const ResourcesTarProvider = require('../mtx/resourcesTarBuilder')
|
|
7
7
|
const { INFO } = require('../buildTaskHandlerInternal')
|
|
8
|
+
const { relativePaths } = require('@sap/cds/bin/build/util')
|
|
8
9
|
|
|
9
10
|
const DEFAULT_MAIN_FOLDER = "_main"
|
|
10
11
|
|
|
@@ -20,47 +21,50 @@ class MtxSidecarModuleBuilder extends NodeCfModuleBuilder {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Builds the mtx sidecar app consisting of:
|
|
26
|
+
* - nodejs app model defined by the required sidecar services
|
|
27
|
+
* - main app model defined by the build task's model options including feature models and resources TAR
|
|
28
|
+
*
|
|
29
|
+
* build.target=".": 'dest' -> 'model-provider/gen'
|
|
30
|
+
* build.target="gen": 'dest' -> 'gen/model-provider'
|
|
31
|
+
*/
|
|
23
32
|
async build() {
|
|
24
|
-
//
|
|
25
|
-
// Create resources TAR AND and compiled CSN(s) for the sidecar app.
|
|
26
|
-
// build.target=".": 'dest' -> 'model-provider/gen'
|
|
27
|
-
// build.target="gen": 'dest' -> 'gen/model-provider'
|
|
33
|
+
// nodejs app parts have to be built using sidecar env
|
|
28
34
|
const sidecarEnv = this.env.for("cds", this.task.src)
|
|
29
|
-
|
|
30
|
-
// 1. build node application
|
|
31
|
-
await this._buildNodeApp(sidecarEnv)
|
|
32
|
-
|
|
33
|
-
// 2. build main application
|
|
35
|
+
// build main application
|
|
34
36
|
await this._buildMainApp(sidecarEnv)
|
|
37
|
+
// build node application
|
|
38
|
+
await this._buildNodeApp(sidecarEnv)
|
|
35
39
|
}
|
|
36
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Builds the mtx sidecar nodejs app parts.
|
|
43
|
+
* @param {object} sidecarEnv cds env based on the sidecar dir
|
|
44
|
+
*/
|
|
37
45
|
async _buildNodeApp(sidecarEnv) {
|
|
38
|
-
const sources = []
|
|
39
|
-
for (const name in sidecarEnv.requires) {
|
|
40
|
-
const service = sidecarEnv.requires[name]
|
|
41
|
-
if (service.model) {
|
|
42
|
-
sources.push(service.model)
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
const model = await this.cds.load(sources, this.options)
|
|
46
46
|
const destSidecar = this.task.dest
|
|
47
47
|
const destSidecarSrc = path.join(destSidecar, this.env.folders.srv)
|
|
48
|
-
|
|
48
|
+
const model = this._compileSidecarSync(sidecarEnv)
|
|
49
49
|
await this.compileToJson(model, destSidecarSrc)
|
|
50
50
|
await this.collectLanguageBundles(model, destSidecarSrc)
|
|
51
51
|
await this._copyProjectRootContent(this.task.src, destSidecar)
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Builds the main app parts containing base model CSN with feature CSNs and resources TAR.
|
|
56
|
+
* @param {object} sidecarEnv cds env based on the sidecar dir
|
|
57
|
+
*/
|
|
54
58
|
async _buildMainApp(sidecarEnv) {
|
|
55
59
|
let main = sidecarEnv.requires['cds.xt.ModelProviderService']?.root
|
|
56
60
|
if (!main) {
|
|
57
|
-
throw new Error("Invalid sidecar configuration - model-provider
|
|
61
|
+
throw new Error("Invalid sidecar configuration - {\"model-provider\": \"in-sidecar\"} configuration missing")
|
|
58
62
|
}
|
|
59
63
|
const profiles = this.env.get("profiles") || []
|
|
60
64
|
if (!profiles.includes("production") && !profiles.includes("prod")) {
|
|
61
65
|
main = DEFAULT_MAIN_FOLDER
|
|
62
66
|
// root should represent the production use case and not development
|
|
63
|
-
this.pushMessage(`Sidecar main application build results are created in folder '${main}'.
|
|
67
|
+
this.pushMessage(`Sidecar main application build results are created in folder '${main}'. Enable the 'production' or 'prod' profile if the folder is configured differently.`, INFO)
|
|
64
68
|
}
|
|
65
69
|
const destRoot = this.task.dest
|
|
66
70
|
const destMain = path.join(destRoot, main)
|
|
@@ -76,5 +80,31 @@ class MtxSidecarModuleBuilder extends NodeCfModuleBuilder {
|
|
|
76
80
|
// resources are determined based on available database build task, SQLite as fallback
|
|
77
81
|
await new ResourcesTarProvider(this).writeTar(destMain, csn)
|
|
78
82
|
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Synchronous compilation using the sidecar context.
|
|
86
|
+
* @param {object} sidecarEnv cds env based on the sidecar dir
|
|
87
|
+
* @returns the compiled mtx sidecar CSN
|
|
88
|
+
*/
|
|
89
|
+
_compileSidecarSync(sidecarEnv) {
|
|
90
|
+
const env = this.env
|
|
91
|
+
try {
|
|
92
|
+
this.cds.root = this.task.src
|
|
93
|
+
this.cds.env = sidecarEnv
|
|
94
|
+
let modelPaths = this.cds.resolve('*', false)
|
|
95
|
+
modelPaths = this.cds.resolve(modelPaths)
|
|
96
|
+
if (!modelPaths || modelPaths.length === 0) {
|
|
97
|
+
throw new Error("No model found for MTX sidecar app")
|
|
98
|
+
}
|
|
99
|
+
this._logger._debug && this._logger.debug(`sidecar model: ${relativePaths(this.buildOptions.root, modelPaths).join(", ")}`)
|
|
100
|
+
|
|
101
|
+
// synchronous compilation
|
|
102
|
+
return this.cds.load(modelPaths, { sync: true, ...this.options() })
|
|
103
|
+
} finally {
|
|
104
|
+
// restore project scope
|
|
105
|
+
this.cds.root = this.buildOptions.root
|
|
106
|
+
this.cds.env = env
|
|
107
|
+
}
|
|
108
|
+
}
|
|
79
109
|
}
|
|
80
110
|
module.exports = MtxSidecarModuleBuilder
|
package/bin/build/util.js
CHANGED
|
@@ -124,11 +124,13 @@ function _redacted(cred) {
|
|
|
124
124
|
* @returns
|
|
125
125
|
*/
|
|
126
126
|
function isStreamlinedMtx(cds) {
|
|
127
|
-
if (process.env.OLD_MTX)
|
|
128
|
-
|
|
127
|
+
if (hasOptionValue(process.env.OLD_MTX, true)) {
|
|
128
|
+
return false
|
|
129
|
+
}
|
|
130
|
+
return (cds.env.get("requires.toggles")
|
|
129
131
|
|| cds.env.requires['cds.xt.ModelProviderService']
|
|
130
|
-
|| cds.env.get("requires.multitenancy
|
|
131
|
-
|
|
132
|
+
|| (typeof cds.env.get("requires.multitenancy") === "object")
|
|
133
|
+
) && !(() => { try { return cds.mtx } catch (e) { /**/ } })()
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
class BuildMessage extends Error {
|
|
@@ -35,7 +35,12 @@ class HanaDeployer {
|
|
|
35
35
|
this.logger = logger;
|
|
36
36
|
|
|
37
37
|
this.logger.log(`${bold('Starting deploy to SAP HANA ...')}`);
|
|
38
|
-
if (
|
|
38
|
+
if (vcapFile) {
|
|
39
|
+
this.logger.log();
|
|
40
|
+
this.logger.log(`Using VCAP_SERVICES from file ${vcapFile} (beta feature).`);
|
|
41
|
+
bindCallback = null // credentials are given - no cds bind then
|
|
42
|
+
}
|
|
43
|
+
else if (bindCallback) {
|
|
39
44
|
this.logger.log('Using cds bind');
|
|
40
45
|
}
|
|
41
46
|
this.logger.log();
|
|
@@ -46,8 +51,6 @@ class HanaDeployer {
|
|
|
46
51
|
|
|
47
52
|
let vcapServices;
|
|
48
53
|
if (vcapFile) {
|
|
49
|
-
this.logger.log();
|
|
50
|
-
this.logger.log(`Using vcap file ${vcapFile} (beta feature).`);
|
|
51
54
|
vcapServices = await this._loadVCAPServices(vcapFile);
|
|
52
55
|
}
|
|
53
56
|
|
package/bin/serve.js
CHANGED
|
@@ -203,7 +203,7 @@ async function serve (all=[], o={}) { // NOSONAR
|
|
|
203
203
|
const shutdown = async sig => {
|
|
204
204
|
if (shutdownCalled) return
|
|
205
205
|
shutdownCalled = true
|
|
206
|
-
global.
|
|
206
|
+
global.it || cds.watched || console.log() // blank line makes the ^C look pretty in terminals
|
|
207
207
|
debug && debug(`${sig}, shutting down, calling ${cds.listeners('shutdown').length} listeners`)
|
|
208
208
|
await Promise.all(cds.listeners('shutdown').map((fn) => fn()))
|
|
209
209
|
if (process.env.NODE_ENV !== 'test' && !global.it) process.exit()
|
|
@@ -225,7 +225,7 @@ async function _local_server_js() {
|
|
|
225
225
|
let server_js = process.env.CDS_TYPESCRIPT && _local('server.ts') || _local('server.js')
|
|
226
226
|
if (server_js) {
|
|
227
227
|
log ('Loading server from', { file: local(server_js) })
|
|
228
|
-
let fn = await _import(server_js)
|
|
228
|
+
let fn = await cds.utils._import(server_js)
|
|
229
229
|
if (fn && fn.default) fn = fn.default // default ESM export
|
|
230
230
|
return typeof fn === 'function' ? fn : cds.server
|
|
231
231
|
}
|
|
@@ -320,14 +320,6 @@ function _with_mocks (o) {
|
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
-
const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
|
|
324
|
-
function _import(filePath) {
|
|
325
|
-
return typeof jest !== 'undefined'
|
|
326
|
-
? require(filePath)
|
|
327
|
-
: import (pathToFileURL(filePath).href)
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
|
|
331
323
|
const SECRETS = /(password)|(certificate)|(ca)|(secret)|(key)/i // 'certificate' and 'ca' on HANA
|
|
332
324
|
/** mascades password-like strings, also reducing clutter in output */
|
|
333
325
|
function _redacted(cred) {
|
package/lib/deploy.js
CHANGED
|
@@ -124,8 +124,7 @@ exports.init = (db, csn=db.model, log=()=>{}) => db.tx (async tx => {
|
|
|
124
124
|
const resources = await exports.resources(csn), inits=[]
|
|
125
125
|
for (let [file,e] of Object.entries(resources)) {
|
|
126
126
|
if (e === '*') { // init.js/ts
|
|
127
|
-
|
|
128
|
-
let x = typeof jest !== 'undefined' ? require(file) : await import(pathToFileURL(file).href); if (!x) continue
|
|
127
|
+
let x = await cds.utils._import(file); if (!x) continue
|
|
129
128
|
if (x.default) x = x.default // default ESM export
|
|
130
129
|
inits.push (!x.then && typeof x === 'function' ? x(db,csn) : x)
|
|
131
130
|
log (file)
|
package/lib/env/requires.js
CHANGED
package/lib/index.js
CHANGED
|
@@ -135,7 +135,7 @@ _global ('ql','SELECT','INSERT','UPDATE','DELETE','CREATE','DROP')
|
|
|
135
135
|
_global ('parse','CDL','CQL','CXL')
|
|
136
136
|
|
|
137
137
|
// Check Node.js version
|
|
138
|
-
if (process.env.CDS_STRICT_NODE_VERSION !== 'false'
|
|
138
|
+
if (process.env.CDS_STRICT_NODE_VERSION !== 'false') {
|
|
139
139
|
const v = version => { let vv = version.split('.'); return { version, major: +vv[0], minor: +vv[1] }}
|
|
140
140
|
const required = v('14.15'), given = v(process.version.match(/^v(\d+\.\d+)/)[1])
|
|
141
141
|
if (given.major < required.major || given.major === required.major && given.minor < required.minor) process.exit (process.stderr.write (`
|
package/lib/req/cds-context.js
CHANGED
|
@@ -30,7 +30,7 @@ module.exports = new class extends AsyncLocalStorage {
|
|
|
30
30
|
if (typeof o === 'function') [fn,o] = [o,fn] //> for compatibility
|
|
31
31
|
if (o instanceof EventContext) throw cds.error `The passed options must not be an instance of cds.EventContext.`
|
|
32
32
|
const fx = ()=>{
|
|
33
|
-
const tx = cds.tx(o) // create a new detached transaction for each run of the background job
|
|
33
|
+
const tx = cds.tx({...o}) // create a new detached transaction for each run of the background job
|
|
34
34
|
return cds._context.run (tx, ()=> Promise.resolve(fn(tx))
|
|
35
35
|
.then (tx.commit, e => tx.rollback(_error(e, cds)))
|
|
36
36
|
.then (res => Promise.all(em.listeners('succeeded').map(each => each(res))))
|
package/lib/serve/factory.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
|
|
2
1
|
const cds = require('..'), { path, isfile } = cds.utils
|
|
3
2
|
const paths = Array.from (new Set ([ cds.root, ...require.resolve.paths('x') ]))
|
|
4
3
|
const DEBUG = cds.debug('srv.factory'); DEBUG && DEBUG ({ 'cds.root':cds.root, paths })
|
|
@@ -48,7 +47,7 @@ const _require = (it,d) => {
|
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
DEBUG && DEBUG({resolved})
|
|
51
|
-
return
|
|
50
|
+
return cds.utils._import(resolved)
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
const _function = (impl) => !_is_class(impl) ? impl : (srv) => {
|
package/lib/serve/index.js
CHANGED
|
@@ -63,7 +63,7 @@ module.exports = function cds_serve (som, _options) { // NOSONAR
|
|
|
63
63
|
// skip all services marked to be ignored
|
|
64
64
|
d['@cds.ignore'] || d['@cds.serve.ignore'] ||
|
|
65
65
|
// skip external services, unless asked to mock them and unbound
|
|
66
|
-
d['@cds.external'] || required[d.name]?.external && (!o.mocked || required[d.name].credentials)
|
|
66
|
+
(d['@cds.external'] || required[d.name]?.external) && (!o.mocked || required[d.name].credentials)
|
|
67
67
|
))
|
|
68
68
|
if (services.length > 1 && o.at) {
|
|
69
69
|
throw cds.error `You cannot specify 'path' for multiple services`
|
package/lib/utils/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const cwd = process.env._original_cwd || process.cwd()
|
|
2
|
-
const path = require ('path'), { dirname, join, resolve, sep, relative } = path
|
|
2
|
+
const path = require ('path'), { dirname, extname, join, resolve, sep, relative } = path
|
|
3
3
|
const fs = require('fs')
|
|
4
4
|
const cds = require('../index')
|
|
5
5
|
|
|
@@ -131,6 +131,15 @@ exports.find = function find (base, patterns='*', filter=()=>true) {
|
|
|
131
131
|
return files
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
// internal utility to load a file through ESM or CommonJs. TODO find a better place.
|
|
135
|
+
const { pathToFileURL } = require('url')
|
|
136
|
+
exports._import = async function(filePath) {
|
|
137
|
+
return typeof jest !== 'undefined' || extname(filePath) === '.ts' // ts-node w/ ESM not working (cap/issues#11980)
|
|
138
|
+
? require(filePath)
|
|
139
|
+
: import (pathToFileURL(filePath).href) // on Windows, must use a file: URL for ESM import
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
134
143
|
/** @type <T>(o,p,v:T) => T */
|
|
135
144
|
const $set = (o,p,v) => { Object.defineProperty(o,p,{value:v}); return v }
|
|
136
145
|
const { mkdirp, isdir } = exports
|
|
@@ -162,10 +162,11 @@ class OData {
|
|
|
162
162
|
const txs = (data.txs = data.txs || {})
|
|
163
163
|
const {
|
|
164
164
|
req: { user },
|
|
165
|
-
req
|
|
165
|
+
req,
|
|
166
|
+
res
|
|
166
167
|
} = data
|
|
167
168
|
// REVISIT: _model should not be necessary
|
|
168
|
-
const tx = (txs[odataContext.id] = cdsService.tx({ user, req, _model: cdsService.model }))
|
|
169
|
+
const tx = (txs[odataContext.id] = cdsService.tx({ user, req, res, _model: cdsService.model }))
|
|
169
170
|
cds.context = tx.context
|
|
170
171
|
// for collecting results and errors
|
|
171
172
|
data.results = data.results || {}
|
|
@@ -7,16 +7,16 @@ const {
|
|
|
7
7
|
} = require('../okra/odata-server')
|
|
8
8
|
|
|
9
9
|
const { getSapMessages } = require('../../../../common/error/frontend')
|
|
10
|
-
const { getActionOrFunctionReturnType } = require('../utils/handlerUtils')
|
|
10
|
+
const { getActionOrFunctionReturnType, isReturnMinimal } = require('../utils/handlerUtils')
|
|
11
11
|
const { validateResourcePath } = require('../utils/request')
|
|
12
12
|
const { toODataResult, postProcess } = require('../utils/result')
|
|
13
|
-
const {
|
|
13
|
+
const { DRAFT_EVENTS } = require('../../../../common/constants/events')
|
|
14
14
|
const { readAfterWrite } = require('../utils/readAfterWrite')
|
|
15
15
|
|
|
16
16
|
const _postProcess = async (req, odataReq, odataRes, tx, result) => {
|
|
17
17
|
const returnType = getActionOrFunctionReturnType(odataReq.getUriInfo().getPathSegments(), tx.model.definitions)
|
|
18
18
|
// as of spec meeting: no generic support of $select/$expand for custom actions/functions
|
|
19
|
-
if (returnType && returnType.kind === 'entity' && req.event in
|
|
19
|
+
if (returnType && returnType.kind === 'entity' && (req.event in DRAFT_EVENTS || req.event === 'EDIT')) {
|
|
20
20
|
result = await readAfterWrite(req, tx, { operation: { result, returnType } })
|
|
21
21
|
if (result && !('IsActiveEntity' in result)) result.IsActiveEntity = req.event === 'draftActivate'
|
|
22
22
|
}
|
|
@@ -59,6 +59,21 @@ const action = service => {
|
|
|
59
59
|
} else {
|
|
60
60
|
await tx.commit(result)
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
if (isReturnMinimal(req) || result === null) odataRes.setStatusCode(204)
|
|
64
|
+
else if (req.event === 'draftActivate' || req.event === 'EDIT') {
|
|
65
|
+
odataRes.setStatusCode(201)
|
|
66
|
+
const keys = Object.keys(req.target.keys).filter(k => {
|
|
67
|
+
return k !== 'IsActiveEntity' && !req.target.keys[k]._isAssociationStrict
|
|
68
|
+
})
|
|
69
|
+
const keysString = keys.map(key => `${key}=${result[key]}`).join(',')
|
|
70
|
+
odataRes.setHeader(
|
|
71
|
+
'location',
|
|
72
|
+
`../${req.target.name.replace(`${service.name}.`, '')}(${keysString},IsActiveEntity=${
|
|
73
|
+
req.event === 'draftActivate'
|
|
74
|
+
})`
|
|
75
|
+
)
|
|
76
|
+
}
|
|
62
77
|
} catch (e) {
|
|
63
78
|
err = e
|
|
64
79
|
|
|
@@ -38,15 +38,15 @@ const create = service => {
|
|
|
38
38
|
try {
|
|
39
39
|
result = await tx.dispatch(req)
|
|
40
40
|
|
|
41
|
-
// REVISIT:
|
|
41
|
+
// REVISIT:
|
|
42
|
+
// Performance: For `isReturnMinimal` it's enough to just read the etag.
|
|
43
|
+
// Note: Without read access, one cannot return the etag.
|
|
44
|
+
if (req._.readAfterWrite) {
|
|
45
|
+
result = await readAfterWrite(req, service, { operation: { result } })
|
|
46
|
+
}
|
|
42
47
|
if (isReturnMinimal(req)) {
|
|
43
48
|
result = postProcessMinimal(req, service, result)
|
|
44
49
|
} else {
|
|
45
|
-
// REVISIT: find better solution
|
|
46
|
-
if (req._.readAfterWrite) {
|
|
47
|
-
result = await readAfterWrite(req, service)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
50
|
postProcess(req, odataRes, service, result)
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -57,7 +57,7 @@ const create = service => {
|
|
|
57
57
|
await tx.commit(result)
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
if (isReturnMinimal(req)) {
|
|
60
|
+
if (isReturnMinimal(req) || result === null) {
|
|
61
61
|
odataRes.setStatusCode(204)
|
|
62
62
|
}
|
|
63
63
|
} catch (e) {
|
|
@@ -149,12 +149,13 @@ const update = service => {
|
|
|
149
149
|
// try UPDATE and, on 404 error, try CREATE
|
|
150
150
|
;[result, req] = await _updateThenCreate(req, odataReq, odataRes, tx)
|
|
151
151
|
|
|
152
|
+
if (!primitive && req._.readAfterWrite) {
|
|
153
|
+
// REVISIT:
|
|
154
|
+
// Performance: For `isReturnMinimal` it's enough to just read the etag.
|
|
155
|
+
// Note: Without read access, one cannot return the etag.
|
|
156
|
+
result = await readAfterWrite(req, service, { operation: { result } })
|
|
157
|
+
}
|
|
152
158
|
if (!isReturnMinimal(req)) {
|
|
153
|
-
// REVISIT: find better solution
|
|
154
|
-
if (!primitive && req._.readAfterWrite) {
|
|
155
|
-
result = await readAfterWrite(req, service)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
159
|
postProcess(req, odataRes, service, result, previousResult)
|
|
159
160
|
} else {
|
|
160
161
|
result = postProcessMinimal(req, service, result)
|
|
@@ -167,7 +168,7 @@ const update = service => {
|
|
|
167
168
|
await tx.commit(result)
|
|
168
169
|
}
|
|
169
170
|
|
|
170
|
-
if (isReturnMinimal(req)) {
|
|
171
|
+
if (isReturnMinimal(req) || result === null) {
|
|
171
172
|
odataRes.setStatusCode(204)
|
|
172
173
|
}
|
|
173
174
|
} catch (e) {
|
|
@@ -16,9 +16,7 @@ const _keysOf = (row, target) => {
|
|
|
16
16
|
if (!keyElements.length) return
|
|
17
17
|
const keys = {}
|
|
18
18
|
for (const key of keyElements) {
|
|
19
|
-
if (key._isAssociationStrict
|
|
20
|
-
continue
|
|
21
|
-
}
|
|
19
|
+
if (key._isAssociationStrict) continue
|
|
22
20
|
keys[key.name] = key.elements ? { val: JSON.stringify(row[key.name]) } : row[key.name]
|
|
23
21
|
}
|
|
24
22
|
return keys
|
|
@@ -111,10 +109,8 @@ const _getColumns = (target, data, prefix = []) => {
|
|
|
111
109
|
* (depth determined by req.data)
|
|
112
110
|
*/
|
|
113
111
|
const getDeepSelect = req => {
|
|
114
|
-
|
|
115
|
-
const { target, data } = req
|
|
112
|
+
let { target, data } = req
|
|
116
113
|
const columns = _getColumns(target, data)
|
|
117
|
-
|
|
118
114
|
return getSimpleSelectCQN(target, data, columns)
|
|
119
115
|
}
|
|
120
116
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const { removeDraftUUIDIfNecessary } = require('../../../../fiori/utils/handler')
|
|
1
2
|
const cds = require('../../../../cds')
|
|
2
3
|
const {
|
|
3
4
|
Request,
|
|
@@ -8,7 +9,7 @@ const { normalizeError } = require('../../../../common/error/frontend')
|
|
|
8
9
|
|
|
9
10
|
const { getDeepSelect, getSimpleSelectCQN } = require('./handlerUtils')
|
|
10
11
|
const { hasDeepUpdate } = require('../../../../common/composition/update')
|
|
11
|
-
const { WRITE_EVENTS, CDS_EVENTS
|
|
12
|
+
const { WRITE_EVENTS, CDS_EVENTS } = require('../../../../common/constants/events')
|
|
12
13
|
|
|
13
14
|
const setLocationHeader = (req, { model }) => {
|
|
14
15
|
const { odataRes } = req._
|
|
@@ -38,7 +39,7 @@ const _getOperationQueryColumns = urlQueryOptions => {
|
|
|
38
39
|
return columns
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
const _isDraftAction = req => req.event in
|
|
42
|
+
const _isDraftAction = req => req.event in { draftActivate: 1, EDIT: 1, draftPrepare: 1 }
|
|
42
43
|
const _isActionOrFunction = req => !(req.event in CDS_EVENTS) || _isDraftAction(req)
|
|
43
44
|
const _isWriteWithResponse = req => req.event in WRITE_EVENTS && !(req.event in { CANCEL: 1, DELETE: 1 })
|
|
44
45
|
|
|
@@ -49,6 +50,9 @@ const readAfterWrite = async (req, srv, { operation, isBefore } = { isBefore: fa
|
|
|
49
50
|
const { result, returnType } = operation
|
|
50
51
|
query = getSimpleSelectCQN(returnType, result, _getOperationQueryColumns(req._queryOptions))
|
|
51
52
|
if (_isDraftAction(req)) query.where({ IsActiveEntity: req.event === 'draftActivate' })
|
|
53
|
+
} else if (req.event === 'NEW' || req.event === 'PATCH') {
|
|
54
|
+
const { result } = operation
|
|
55
|
+
query = getSimpleSelectCQN(req.target, result)
|
|
52
56
|
} else if (req.event === 'UPDATE' && !hasDeepUpdate(srv.model, req.query)) {
|
|
53
57
|
query = Array.isArray(req.data) ? SELECT.from(req.query.UPDATE.entity) : SELECT.one(req.query.UPDATE.entity)
|
|
54
58
|
} else {
|
|
@@ -60,6 +64,7 @@ const readAfterWrite = async (req, srv, { operation, isBefore } = { isBefore: fa
|
|
|
60
64
|
try {
|
|
61
65
|
const _req = new Request({ query, event: 'READ', _: req._ })
|
|
62
66
|
result = await srv.dispatch(_req)
|
|
67
|
+
if (result && req.target._isDraftEnabled) removeDraftUUIDIfNecessary(req)(result)
|
|
63
68
|
if (result === null && !isBefore && (_isWriteWithResponse(req) || _isDraftAction(req))) {
|
|
64
69
|
// > something must be written and no READ error <=> @restrict or static where
|
|
65
70
|
_req.reject({
|
|
@@ -2,7 +2,6 @@ const MOD_EVENTS = { UPDATE: 1, DELETE: 1, EDIT: 1 }
|
|
|
2
2
|
const WRITE_EVENTS = Object.assign({ CREATE: 1, NEW: 1, PATCH: 1, CANCEL: 1 }, MOD_EVENTS)
|
|
3
3
|
const CRUD_EVENTS = Object.assign({ READ: 1 }, WRITE_EVENTS)
|
|
4
4
|
const DRAFT_EVENTS = { PATCH: 1, CANCEL: 1, draftActivate: 1, draftPrepare: 1 }
|
|
5
|
-
const DRAFT_MOD_EVENTS = { draftActivate: 1, EDIT: 1 }
|
|
6
5
|
const CDS_EVENTS = Object.assign({}, CRUD_EVENTS, DRAFT_EVENTS)
|
|
7
6
|
|
|
8
7
|
module.exports = {
|
|
@@ -10,6 +9,5 @@ module.exports = {
|
|
|
10
9
|
WRITE_EVENTS,
|
|
11
10
|
CRUD_EVENTS,
|
|
12
11
|
DRAFT_EVENTS,
|
|
13
|
-
CDS_EVENTS
|
|
14
|
-
DRAFT_MOD_EVENTS
|
|
12
|
+
CDS_EVENTS
|
|
15
13
|
}
|
|
@@ -11,7 +11,6 @@ const {
|
|
|
11
11
|
const { readAndDeleteKeywords, isActiveEntityRequested, getKeyData } = require('../utils/where')
|
|
12
12
|
const { isDraftRootEntity } = require('../../fiori/utils/csn')
|
|
13
13
|
const { getColumns } = require('../../cds-services/services/utils/columns')
|
|
14
|
-
const { setStatusCodeAndHeader, getKeyProperty } = require('../utils/handler')
|
|
15
14
|
|
|
16
15
|
const { DRAFT_COLUMNS_MAP } = require('../../common/constants/draft')
|
|
17
16
|
|
|
@@ -175,9 +174,6 @@ const _handler = async function (req) {
|
|
|
175
174
|
})
|
|
176
175
|
])
|
|
177
176
|
|
|
178
|
-
const k = getKeyProperty(req.target.keys)
|
|
179
|
-
setStatusCodeAndHeader(req._.odataRes, { [k]: result[k] }, req.target.name.replace(`${this.name}.`, ''), true)
|
|
180
|
-
|
|
181
177
|
return result
|
|
182
178
|
}
|
|
183
179
|
|
|
@@ -4,14 +4,7 @@ const { INSERT, SELECT, DELETE } = cds.ql
|
|
|
4
4
|
const { getCompositionTree } = require('../../common/composition')
|
|
5
5
|
const { getColumns } = require('../../cds-services/services/utils/columns')
|
|
6
6
|
const { getTransition } = require('../../common/utils/resolveView')
|
|
7
|
-
const {
|
|
8
|
-
draftIsLocked,
|
|
9
|
-
ensureDraftsSuffix,
|
|
10
|
-
ensureNoDraftsSuffix,
|
|
11
|
-
getSubCQNs,
|
|
12
|
-
setStatusCodeAndHeader,
|
|
13
|
-
filterKeys
|
|
14
|
-
} = require('../utils/handler')
|
|
7
|
+
const { draftIsLocked, ensureDraftsSuffix, ensureNoDraftsSuffix, getSubCQNs, filterKeys } = require('../utils/handler')
|
|
15
8
|
const { isActiveEntityRequested, getKeyData } = require('../utils/where')
|
|
16
9
|
|
|
17
10
|
const _getDraftColumns = draftUUID => ({
|
|
@@ -163,7 +156,6 @@ const _handler = async function (req) {
|
|
|
163
156
|
}
|
|
164
157
|
|
|
165
158
|
await Promise.all(insertCQNs.map(CQN => dbtx.run(CQN)))
|
|
166
|
-
setStatusCodeAndHeader(req._.odataRes, rootWhere, req.target.name.replace(`${this.name}.`, ''), false)
|
|
167
159
|
return results[0][0]
|
|
168
160
|
}
|
|
169
161
|
|
|
@@ -4,7 +4,7 @@ const { INSERT, SELECT, UPDATE } = cds.ql
|
|
|
4
4
|
const onDraftActivate = require('./activate')._handler
|
|
5
5
|
const { isNavigationToMany } = require('../utils/req')
|
|
6
6
|
const { getKeysCondition } = require('../utils/where')
|
|
7
|
-
const {
|
|
7
|
+
const { ensureDraftsSuffix } = require('../utils/handler')
|
|
8
8
|
const { DRAFT_COLUMNS_MAP } = require('../../common/constants/draft')
|
|
9
9
|
|
|
10
10
|
const _getUpdateDraftAdminCQN = ({ user, timestamp }, draftUUID) => {
|
|
@@ -74,26 +74,12 @@ const _handler = async function (req, next) {
|
|
|
74
74
|
: _getInsertDraftAdminCQN(req, req.data.DraftAdministrativeData_DraftUUID)
|
|
75
75
|
const insertDataCQN = _getInsertDataCQN(req, req.data.DraftAdministrativeData_DraftUUID)
|
|
76
76
|
|
|
77
|
-
// read data as on db and return
|
|
78
|
-
const columns = Object.keys(req.target.elements)
|
|
79
|
-
.map(e => req.target.elements[e])
|
|
80
|
-
.filter(e => !e.isAssociation)
|
|
81
|
-
.map(e => e.name)
|
|
82
|
-
const readInsertDataCQN = SELECT.from(insertDataCQN.INSERT.into).columns(columns)
|
|
83
|
-
readInsertDataCQN.where(getKeysCondition(req.target, req.data))
|
|
84
|
-
|
|
85
77
|
const dbtx = cds.tx(req)
|
|
86
78
|
|
|
87
79
|
await Promise.all([dbtx.run(adminDataCQN), dbtx.run(insertDataCQN)])
|
|
88
80
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
req.reject(404)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
removeDraftUUIDIfNecessary(req)(result[0])
|
|
95
|
-
|
|
96
|
-
return result[0]
|
|
81
|
+
req._.readAfterWrite = true
|
|
82
|
+
return { ...req.data, IsActiveEntity: false }
|
|
97
83
|
}
|
|
98
84
|
|
|
99
85
|
module.exports = cds.service.impl(function (srv, entity) {
|
|
@@ -29,7 +29,7 @@ const _getSelectCQN = (model, { target: { name } }, keysCondition, checkUser = t
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// REVISIT: support navigation to one
|
|
32
|
-
return SELECT.
|
|
32
|
+
return SELECT.one(draftName)
|
|
33
33
|
.columns(columns)
|
|
34
34
|
.join('DRAFT.DraftAdministrativeData')
|
|
35
35
|
.on([
|
|
@@ -71,19 +71,18 @@ const _handler = async function (req) {
|
|
|
71
71
|
let result = await dbtx.run(_getSelectCQN(this.model, req, keysCondition))
|
|
72
72
|
|
|
73
73
|
// Potential timeout scenario supported
|
|
74
|
-
if (result
|
|
74
|
+
if (result.draftAdmin_inProcessByUser && result.draftAdmin_inProcessByUser !== req.user.id) {
|
|
75
75
|
// REVISIT: security log?
|
|
76
76
|
req.reject(403)
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
const updateDraftCQN = _getUpdateDraftCQN(req, keysCondition)
|
|
80
|
-
const updateDraftAdminCQN = getUpdateDraftAdminCQN(req, result
|
|
80
|
+
const updateDraftAdminCQN = getUpdateDraftAdminCQN(req, result.DraftAdministrativeData_DraftUUID)
|
|
81
81
|
|
|
82
82
|
await Promise.all([dbtx.run(updateDraftCQN), dbtx.run(updateDraftAdminCQN)])
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return result[0]
|
|
83
|
+
req._.readAfterWrite = true
|
|
84
|
+
|
|
85
|
+
return { ...req.data, IsActiveEntity: false }
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
module.exports = cds.service.impl(function (srv, entity) {
|
|
@@ -5,8 +5,6 @@ const { isActiveEntityRequested } = require('../utils/where')
|
|
|
5
5
|
const { ensureDraftsSuffix, ensureNoDraftsSuffix } = require('../utils/handler')
|
|
6
6
|
const { getColumns } = require('../../cds-services/services/utils/columns')
|
|
7
7
|
|
|
8
|
-
const { DRAFT_COLUMNS_CQN } = require('../../common/constants/draft')
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* Generic Handler for PreparationAction requests.
|
|
12
10
|
* In case of success it returns the prepared draft entry.
|
|
@@ -19,15 +17,14 @@ const _handler = async function (req) {
|
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
const target = ensureDraftsSuffix(req.target.name)
|
|
22
|
-
const columns = [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
]
|
|
20
|
+
const columns = getColumns(this.model.definitions[ensureNoDraftsSuffix(req.target.name)], {
|
|
21
|
+
keysOnly: true,
|
|
22
|
+
removeIgnore: true,
|
|
23
|
+
filterVirtual: true,
|
|
24
|
+
onlyNames: true
|
|
25
|
+
})
|
|
29
26
|
columns.push({ ref: ['DRAFT.DraftAdministrativeData', 'inProcessByUser'], as: 'draftAdmin_inProcessByUser' })
|
|
30
|
-
const select = SELECT.
|
|
27
|
+
const select = SELECT.one(target)
|
|
31
28
|
.columns(columns)
|
|
32
29
|
.join('DRAFT.DraftAdministrativeData')
|
|
33
30
|
.on([
|
|
@@ -36,18 +33,14 @@ const _handler = async function (req) {
|
|
|
36
33
|
{ ref: ['DRAFT.DraftAdministrativeData', 'DraftUUID'] }
|
|
37
34
|
])
|
|
38
35
|
.where(req.query.SELECT.from.ref[0].where)
|
|
39
|
-
|
|
40
36
|
const result = await cds.tx(req).run(select)
|
|
41
|
-
|
|
42
|
-
if (result.
|
|
43
|
-
|
|
44
|
-
if (result[0].draftAdmin_inProcessByUser !== req.user.id) {
|
|
37
|
+
if (!result) req.reject(404)
|
|
38
|
+
if (result.draftAdmin_inProcessByUser !== req.user.id) {
|
|
45
39
|
// REVISIT: security log?
|
|
46
40
|
req.reject(403, 'DRAFT_LOCKED_BY_ANOTHER_USER')
|
|
47
41
|
}
|
|
48
|
-
delete result
|
|
49
|
-
|
|
50
|
-
return result[0]
|
|
42
|
+
delete result.draftAdmin_inProcessByUser
|
|
43
|
+
return result
|
|
51
44
|
}
|
|
52
45
|
|
|
53
46
|
module.exports = cds.service.impl(function (srv, entity) {
|
|
@@ -120,6 +120,11 @@ const DRAFT_COLUMNS_CASTED = [
|
|
|
120
120
|
}
|
|
121
121
|
]
|
|
122
122
|
|
|
123
|
+
const DRAFT_COLUMNS_CASTED_WITH_DRAFTADMIN_UUID = [
|
|
124
|
+
...DRAFT_COLUMNS_CASTED,
|
|
125
|
+
{ ref: ['DraftAdministrativeData_DraftUUID'] }
|
|
126
|
+
]
|
|
127
|
+
|
|
123
128
|
// default draft values for active entities
|
|
124
129
|
const _getDefaultDraftProperties = ({ hasDraft, isActive = true, withDraftUUID = true }) => {
|
|
125
130
|
const columns = [
|
|
@@ -442,7 +447,10 @@ const _activeWithoutDraft = (req, draftWhere, columns) => {
|
|
|
442
447
|
|
|
443
448
|
const _draftOfWhichIAmOwner = (req, draftWhere, columns) => {
|
|
444
449
|
const { table, name } = _getTableName(req, true)
|
|
445
|
-
const outerMostColumns = _getOuterMostColumns(
|
|
450
|
+
const outerMostColumns = _getOuterMostColumns(
|
|
451
|
+
addColumnAlias(columns, name),
|
|
452
|
+
DRAFT_COLUMNS_CASTED_WITH_DRAFTADMIN_UUID
|
|
453
|
+
)
|
|
446
454
|
|
|
447
455
|
const cqn = SELECT.from(table)
|
|
448
456
|
.columns(...outerMostColumns)
|
|
@@ -1277,6 +1285,8 @@ const _handler = async function (req) {
|
|
|
1277
1285
|
const query4sql = cqn2cqn4sql(req.query, this.model, { _4fiori: true })
|
|
1278
1286
|
|
|
1279
1287
|
// Clone the request. Do not clone with Object.assign as that would skip all non-enumerable properties.
|
|
1288
|
+
// REVISIT: query4sql.clone() doesn't really clone the original query, hence _generateCQN will heavily modify
|
|
1289
|
+
// it, e.g. IsActiveEntity is stripped. This is a problem for subsequent handlers which rely on this information.
|
|
1280
1290
|
const reqClone = { __proto__: req, query: query4sql.clone() }
|
|
1281
1291
|
// Clone draft restrictions to the cloned query.
|
|
1282
1292
|
reqClone.query._draftRestrictions = query._draftRestrictions
|
|
@@ -183,15 +183,6 @@ const _aliased = (arr, columns, alias) =>
|
|
|
183
183
|
})
|
|
184
184
|
|
|
185
185
|
// Only works for root entity, otherwise the relative position needs to be adapted
|
|
186
|
-
const setStatusCodeAndHeader = (response, keys, entityName, isActiveEntity) => {
|
|
187
|
-
response.setStatusCode(201)
|
|
188
|
-
|
|
189
|
-
const keysString = Object.keys(keys)
|
|
190
|
-
.map(key => `${key}=${keys[key]}`)
|
|
191
|
-
.join(',')
|
|
192
|
-
response.setHeader('location', `../${entityName}(${keysString},IsActiveEntity=${isActiveEntity})`)
|
|
193
|
-
}
|
|
194
|
-
|
|
195
186
|
const removeDraftUUIDIfNecessary = req =>
|
|
196
187
|
req._.req && req._.req.headers && req._.req.headers['x-cds-odata-version'] === 'v2'
|
|
197
188
|
? () => {}
|
|
@@ -255,12 +246,6 @@ const draftIsLocked = lastChangedAt => {
|
|
|
255
246
|
return DRAFT_CANCEL_TIMEOUT_IN_MS > Date.now() - Date.parse(lastChangedAt)
|
|
256
247
|
}
|
|
257
248
|
|
|
258
|
-
const getKeyProperty = keys => {
|
|
259
|
-
return Object.keys(keys).find(k => {
|
|
260
|
-
return k !== 'IsActiveEntity' && !keys[k]._isAssociationStrict
|
|
261
|
-
})
|
|
262
|
-
}
|
|
263
|
-
|
|
264
249
|
const filterKeys = keys => {
|
|
265
250
|
return Object.keys(keys).filter(key => {
|
|
266
251
|
return key !== 'IsActiveEntity' && !keys[key]._isAssociationStrict
|
|
@@ -273,7 +258,6 @@ module.exports = {
|
|
|
273
258
|
getUpdateDraftAdminCQN,
|
|
274
259
|
getEnrichedCQN,
|
|
275
260
|
removeDraftUUIDIfNecessary,
|
|
276
|
-
setStatusCodeAndHeader,
|
|
277
261
|
isDraftActivateAction,
|
|
278
262
|
ensureDraftsSuffix,
|
|
279
263
|
ensureNoDraftsSuffix,
|
|
@@ -282,7 +266,6 @@ module.exports = {
|
|
|
282
266
|
proxifyToNoDraftsName,
|
|
283
267
|
addColumnAlias,
|
|
284
268
|
replaceRefWithDraft,
|
|
285
|
-
getKeyProperty,
|
|
286
269
|
filterKeys,
|
|
287
270
|
getDeleteDraftAdminCqn,
|
|
288
271
|
getCompositionTargets
|
|
@@ -38,26 +38,25 @@ class AMQPWebhookMessaging extends MessagingService {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
startListening(opt = {}) {
|
|
41
|
-
if (this.subscribedTopics.size)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
if (!this.subscribedTopics.size) return
|
|
42
|
+
const management = this.getManagement()
|
|
43
|
+
if (!opt.doNotDeploy) this.queued(management.createQueueAndSubscriptions.bind(management))()
|
|
44
|
+
this.queued(this.listenToClient.bind(this))(async (_topic, _payload, _other, { done, failed }) => {
|
|
45
|
+
const msg = Object.assign(normalizeIncomingMessage(_payload), _other || {})
|
|
46
|
+
msg.event = _topic
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
48
|
+
if (!msg._) msg._ = {}
|
|
49
|
+
msg._.topic = _topic
|
|
50
|
+
try {
|
|
51
|
+
await super.emit(msg)
|
|
52
|
+
done()
|
|
53
|
+
} catch (e) {
|
|
54
|
+
// In case of AMQP and Solace, the `failed` callback must be called
|
|
55
|
+
// with an error, otherwise there are problems with the redelivery count.
|
|
56
|
+
failed(new Error('processing failed'))
|
|
57
|
+
this.LOG.error('ERROR occured in asynchronous event processing:', e)
|
|
58
|
+
}
|
|
59
|
+
})
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
listenToClient(cb) {
|
|
@@ -35,6 +35,7 @@ class FileBasedMessaging extends MessagingService {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
startWatching() {
|
|
38
|
+
if (!this.subscribedTopics.size) return
|
|
38
39
|
const watcher = async () => {
|
|
39
40
|
if (!(await touched(this.file, this.recent))) return // > not touched since last check
|
|
40
41
|
// REVISIT: Bad if lock file wasn't cleaned up (due to crashes...)
|
|
@@ -450,8 +450,12 @@ const getReqOptions = (req, query, service) => {
|
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
if (reqOptions.data && reqOptions.method !== 'GET' && reqOptions.method !== 'HEAD') {
|
|
453
|
-
reqOptions.
|
|
454
|
-
|
|
453
|
+
if (typeof reqOptions.data === 'object' && !Buffer.isBuffer(reqOptions.data)) {
|
|
454
|
+
reqOptions.headers['content-type'] = 'application/json'
|
|
455
|
+
reqOptions.headers['content-length'] = Buffer.byteLength(JSON.stringify(reqOptions.data))
|
|
456
|
+
} else if (typeof reqOptions.data === 'string' || Buffer.isBuffer(reqOptions.data)) {
|
|
457
|
+
reqOptions.headers['content-length'] = Buffer.byteLength(reqOptions.data)
|
|
458
|
+
}
|
|
455
459
|
}
|
|
456
460
|
reqOptions.url = formatPath(reqOptions.url)
|
|
457
461
|
|
package/libx/odata/grammar.pegjs
CHANGED
|
@@ -520,7 +520,10 @@
|
|
|
520
520
|
}
|
|
521
521
|
return {apply: mainTransformation}
|
|
522
522
|
}
|
|
523
|
-
|
|
523
|
+
|
|
524
|
+
custom
|
|
525
|
+
= [a-zA-Z0-9-_.~]+ "=" [^&]*
|
|
526
|
+
|
|
524
527
|
format = "$format=" f:$([^&]*) {
|
|
525
528
|
if (f.toLowerCase() !== "json") {
|
|
526
529
|
const err = new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED")
|
package/libx/odata/parser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function peg$subclass(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}function peg$SyntaxError(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(r,t){t=void 0!==t?t:{};var e,n={},s={ODataRelativeURI:Ye},o=Ye,u="/",a=De("/",!1),c=De("?",!1),i=De("&",!1),f="$count",l=De("$count",!1),h="$ref",p=De("$ref",!1),A="$value",d=De("$value",!1),g=function(r){return[r]},m="=",v=De("=",!1),b="$skiptoken=",y=De("$skiptoken=",!1),C="$select=",w=De("$select=",!1),x="$expand=",E=De("$expand=",!1),$="$filter=",L=De("$filter=",!1),B="$orderby=",S=De("$orderby=",!1),T=function(r,t){os(t)},O="$top=",_=De("$top=",!1),R="$skip=",Z=De("$skip=",!1),j="$search=",N=De("$search=",!1),k="$count=",z=De("$count=",!1),D="$apply=",P=De("$apply=",!1),F=De("*",!1),U=De(";",!1),M="/$count",q=De("/$count",!1),I=function(r){return r?[r]:[]},Y=function(r,t){r.push({xpr:t})},X=function(r,t){r.push({val:t})},J=function(r,t,e){r.push(t,...e)},Q=function(r,t){r.push(t)},W=function(r,t,e){r.push(t,...e)},G=":",H=De(":",!1),K="any",V=De("any",!1),rr="all",tr=De("all",!1),er=De("asc",!1),nr="desc",sr=De("desc",!1),or=function(r,t){return t},ur=/^[a-zA-Z]/,ar=Pe([["a","z"],["A","Z"]],!1,!1),cr=/^[a-zA-Z0-9\-]/,ir=Pe([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),fr=/^[^&]/,lr=Pe(["&"],!0,!1),hr="$format=",pr=De("$format=",!1),Ar=Fe("a comparison"),dr=De("eq",!1),gr=De("ne",!1),mr=De("lt",!1),vr=De("gt",!1),br=De("le",!1),yr=De("ge",!1),Cr=(De("add",!1),De("sub",!1),De("mul",!1),De("div",!1),De("mod",!1),Fe("an operand")),wr=Fe("navigation with $count"),xr=function(r,t){return t},Er=function(r,t){return t?{id:r,where:t}:r},$r=Fe("a reference"),Lr=function(r,t){return t},Br=function(r){return{val:r}},Sr=De("{",!1),Tr=/^[^}]/,Or=Pe(["}"],!0,!1),_r=De("}",!1),Rr="[",Zr=De("[",!1),jr="]",Nr=De("]",!1),kr=/^[^\]]/,zr=Pe(["]"],!0,!1),Dr=Fe("a function call"),Pr=function(r,t,e){return e},Fr=Fe("a boolean function"),Ur="contains",Mr=De("contains",!0),qr="endswith",Ir=De("endswith",!0),Yr="startswith",Xr=De("startswith",!0),Jr=De("NOT",!0),Qr=De("AND",!0),Wr=De("OR",!0),Gr="aggregate",Hr=De("aggregate",!1),Kr="groupby",Vr=De("groupby",!1),rt="filter",tt=De("filter",!1),et="search",nt=De("search",!1),st="concat",ot=De("concat",!1),ut="compute",at=De("compute",!1),ct=De("top",!1),it="skip",ft=De("skip",!1),lt="orderby",ht=De("orderby",!1),pt=De("topcount",!0),At=De("bottomcount",!0),dt=De("topsum",!0),gt=De("bottomsum",!0),mt=De("toppercent",!0),vt=De("bottompercent",!0),bt=function(r,t){return t},yt="with",Ct=De("with",!1),wt="from",xt=De("from",!1),Et=De("as",!1),$t="rollup",Lt=De("rollup",!1),Bt="$all",St=De("$all",!1),Tt=function(r,t){return t},Ot="identity",_t=De("identity",!1),Rt=function(r,t){return t},Zt="true",jt=De("true",!1),Nt="false",kt=De("false",!1),zt=Fe("Edm.String"),Dt="'",Pt=De("'",!1),Ft="''",Ut=De("''",!1),Mt=/^[^']/,qt=Pe(["'"],!0,!1),It='"',Yt=De('"',!1),Xt='\\"',Jt=De('\\"',!1),Qt=/^[^"]/,Wt=Pe(['"'],!0,!1),Gt=/^[^ \t\n()"&;]/,Ht=Pe([" ","\t","\n","(",")",'"',"&",";"],!0,!1),Kt=/^[0-9]/,Vt=Pe([["0","9"]],!1,!1),re="-",te=De("-",!1),ee=De("T",!1),ne=".",se=De(".",!1),oe=De("Z",!1),ue=De("+",!1),ae=/^[+\-]/,ce=Pe(["+","-"],!1,!1),ie=De("e",!1),fe=/^[_a-zA-Z]/,le=Pe(["_",["a","z"],["A","Z"]],!1,!1),he=/^[_a-zA-Z0-9"."]/,pe=Pe(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),Ae=/^[0-9a-fA-F]/,de=Pe([["0","9"],["a","f"],["A","F"]],!1,!1),ge=/^[^\/?]/,me=Pe(["/","?"],!0,!1),ve=/^[a-zA-Z0-9\-"."_~!$'()*+,;=:@"\/""?"]/,be=Pe([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","'","(",")","*","+",",",";","=",":","@",'"',"/",'"','"',"?",'"'],!1,!1),ye="binary'",Ce=De("binary'",!1),we=/^[a-zA-Z0-9\-_]/,xe=Pe([["a","z"],["A","Z"],["0","9"],"-","_"],!1,!1),Ee="==",$e=De("==",!1),Le=De(",",!1),Be=De("(",!1),Se=De(")",!1),Te=Fe("optional whitespaces"),Oe=/^[ \t\n]/,_e=Pe([" ","\t","\n"],!1,!1),Re=Fe("mandatory whitespaces"),Ze=0,je=[{line:1,column:1}],Ne=0,ke=[],ze=0;if("startRule"in t){if(!(t.startRule in s))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=s[t.startRule]}function De(r,t){return{type:"literal",text:r,ignoreCase:t}}function Pe(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function Fe(r){return{type:"other",description:r}}function Ue(t){var e,n=je[t];if(n)return n;for(e=t-1;!je[e];)e--;for(n={line:(n=je[e]).line,column:n.column};e<t;)10===r.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return je[t]=n,n}function Me(r,t){var e=Ue(r),n=Ue(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function qe(r){Ze<Ne||(Ze>Ne&&(Ne=Ze,ke=[]),ke.push(r))}function Ie(r,t,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(r,t),r,t,e)}function Ye(){var t,e,s,o,f,l,h,p,A,d,g,m,v,b;if(t=Ze,47===r.charCodeAt(Ze)?(e=u,Ze++):(e=n,0===ze&&qe(a)),e===n&&(e=null),e!==n)if(s=Ze,(o=Xe())!==n&&(s,o=void(Yn=o)),(s=o)!==n){if(o=Ze,(f=Pn())!==n)if(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l!==n)if((h=Pn())!==n)if((p=Qe())!==n){for(A=[],d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);d!==n;)A.push(d),d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);A!==n?o=f=[f,l,h,p,A]:(Ze=o,o=n)}else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;o===n&&(o=null),o!==n&&(f=Pn())!==n?(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l===n&&(l=null),l!==n&&(h=Pn())!==n?(t,t=e=function(){if(Xn)return Yn.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete Yn.expand,delete Yn.limit,delete Yn.orderBy,Yn.apply?rs(Yn,Yn.apply):{SELECT:Yn};let r;if(Yn.expand){Yn.columns||(Yn.columns=["*"],r=!0);for(const r of Yn.expand){const t=Yn.columns.findIndex(Gn(r));t>-1&&Yn.columns.splice(t,1),Yn.columns.push(r)}delete Yn.expand}return Yn.count&&Yn.apply&&(Yn.__countAggregated=!0),Yn.apply?rs(Yn,Yn.apply,r):{SELECT:Yn}}()):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Xe(){var t,e,s,o,c,i,m,v;return t=Ze,r.substr(Ze,6)===f?(e=f,Ze+=6):(e=n,0===ze&&qe(l)),e!==n&&(t,e=void(Xn=!0)),(t=e)===n&&(t=Ze,e=Ze,r.substr(Ze,4)===h?(s=h,Ze+=4):(s=n,0===ze&&qe(p)),s===n&&(r.substr(Ze,6)===A?(s=A,Ze+=6):(s=n,0===ze&&qe(d))),(e=s!==n?r.substring(e,Ze):s)!==n&&(t,v=e,e=!Jn.includes(v)&&{from:{ref:[v]}}),(t=e)===n&&(t=Ze,e=Ze,(s=Rn())!==n?(o=Ze,(c=zn())!==n&&(i=Dn())!==n?o=c=[c,i]:(Ze=o,o=n),o===n&&(o=Ze,(c=zn())!==n&&(i=Je())!==n&&(m=Dn())!==n?o=c=[c,i,m]:(Ze=o,o=n)),o===n&&(o=null),o!==n?(c=Ze,ze++,i=Nn(),ze--,i===n?c=void 0:(Ze=c,c=n),c!==n?e=s=[s,o,c]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),e===n&&(e=Ze,(s=Nn())!==n&&(e,s=g(s)),e=s),e===n&&(e=null),e!==n?(s=Ze,o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(o,c=c),(o=c)!==n?((c=Xe())===n&&(c=null),c!==n?s=o=[o,c]:(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=function(r,t){if(t=t&&t[1],!r&&!t)return{from:{ref:[""]}};if(!r&&t&&t.from)return t.from.ref.unshift(""),t;const[e,n]=r,s=[];if(n?n.length>2?s.push({id:e,where:n[1].map((r=>r.val&&r.val.match&&r.val.match(/^"(.*)"$/)?{val:r.val.match(/^"(.*)"$/)[1]}:r))}):s.push({id:e,where:[]}):qn?s.push(`${"object"==typeof e&&"val"in e?e.val:e}`):"object"==typeof e&&"string"==typeof e.val&&e.val.match(/^[1-9]\d*$|^0$/)?s.push({val:Qn(e.val)}):s.push(e),t&&t.from){const r=t.from.ref;Object.prototype.hasOwnProperty.call(r[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[r.shift()]}),s.push(...r)}const o={from:{ref:s}};return t&&t.columns&&(o.columns=t.columns),o}(e,s)):(Ze=t,t=n)):(Ze=t,t=n))),t}function Je(){var t,e,s,o,u,a,c;return t=Ze,(e=pn())!==n&&(t,e=g(e)),(t=e)===n&&(t=Ze,(e=hn())!==n&&Pn()!==n?(61===r.charCodeAt(Ze)?(s="=",Ze++):(s=n,0===ze&&qe(v)),s!==n&&Pn()!==n&&(o=pn())!==n?(u=Ze,(a=kn())!==n&&(c=Je())!==n?u=a=[a,c]:(Ze=u,u=n),u===n&&(u=null),u!==n?(t,t=e=function(r,t,e){const n=[r,"=",t];return e&&n.push("and",...e[1]),n}(e,o,u)):(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)),t}function Qe(){var t,e,s,o,u;return t=Ze,(e=We())!==n&&(t,e=void((u=e)&&u.apply&&(Yn.apply=u.apply))),(t=e)===n&&(t=Ze,r.substr(Ze,11)===b?(e=b,Ze+=11):(e=n,0===ze&&qe(y)),e!==n&&(s=Pn())!==n?(o=function(){var t,e,s;t=Ze,(e=_n())===n&&(e=null);e!==n?(s=function(){var t,e,s;t=Ze,e=[],ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));if(s!==n)for(;s!==n;)e.push(s),ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),s===n&&(s=null),s!==n?(t,o=e,t=e=void(s||ss(o))):(Ze=t,t=n)):(Ze=t,t=n);var o;return t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=function(){var t,e,s,o,u;t=Ze,r.substr(Ze,8)===hr?(e=hr,Ze+=8):(e=n,0===ze&&qe(pr));if(e!==n){for(s=Ze,o=[],fr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(lr));u!==n;)o.push(u),fr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(lr));(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=e=function(r){if("json"!==r.toLowerCase()){const r=new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED");throw r.statusCode=501,r}}(s)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),t===n&&(t=function(){var t,e,s,o,u,a;t=Ze,ur.test(r.charAt(Ze))?(e=r.charAt(Ze),Ze++):(e=n,0===ze&&qe(ar));if(e!==n){for(s=[],cr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ir));o!==n;)s.push(o),cr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ir));if(s!==n)if(61===r.charCodeAt(Ze)?(o=m,Ze++):(o=n,0===ze&&qe(v)),o!==n){for(u=[],fr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(lr));a!==n;)u.push(a),fr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(lr));u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n}else Ze=t,t=n;return t}()))),t}function We(){var t,e,s,o,u,a,c,i,f,l,h;if(t=Ze,r.substr(Ze,8)===C?(e=C,Ze+=8):(e=n,0===ze&&qe(w)),e!==n)if((s=Pn())!==n)if((o=Ge())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n){if(t=Ze,r.substr(Ze,8)===x?(e=x,Ze+=8):(e=n,0===ze&&qe(E)),e!==n)if((s=Pn())!==n)if((o=He())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n&&(t=Ze,r.substr(Ze,8)===$?(e=$,Ze+=8):(e=n,0===ze&&qe(L)),e!==n&&(s=Pn())!==n&&(o=en())!==n?(t,h=o,t=e=void(Yn.where=h)):(Ze=t,t=n),t===n)){if(t=Ze,r.substr(Ze,9)===B?(e=B,Ze+=9):(e=n,0===ze&&qe(S)),e!==n)if((s=Pn())!==n)if((o=an())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);u!==n?(t,t=e=void os(o,!0)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;t===n&&(t=Ze,r.substr(Ze,5)===O?(e=O,Ze+=5):(e=n,0===ze&&qe(_)),e!==n&&(s=Pn())!==n&&(o=Ke())!==n?(t,l=o,t=e=void((Yn.limit||(Yn.limit={})).rows={val:l})):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===R?(e=R,Ze+=6):(e=n,0===ze&&qe(Z)),e!==n&&(s=Pn())!==n&&(o=Ve())!==n?(t,e=function(r){ss(r)}(o),t=e):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,8)===j?(e=j,Ze+=8):(e=n,0===ze&&qe(N)),e!==n&&(s=Pn())!==n&&(o=rn())!==n?(t,t=e=void((f=o)&&(Yn.search=f))):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===k?(e=k,Ze+=7):(e=n,0===ze&&qe(z)),e!==n&&(s=Pn())!==n?(o=function(){var r,t;r=Ze,(t=Tn())!==n&&(r,t=function(r){r&&(Yn.count=!0)}(t));return r=t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===D?(e=D,Ze+=7):(e=n,0===ze&&qe(P)),e!==n&&(s=Pn())!==n&&(o=cn())!==n?(t,t=e=o):(Ze=t,t=n))))))}}return t}function Ge(){var t,e,s;return t=Ze,42===r.charCodeAt(Ze)?(e="*",Ze++):(e=n,0===ze&&qe(F)),e===n&&(e=hn()),e!==n&&(t,s=e,Yn.columns=Array.isArray(Yn.columns)?Yn.columns:[],Yn.columns.find(Gn(s))||Yn.columns.push(s),e=s),t=e}function He(){var t,e,s,o,u,a,c,i,f;if(t=Ze,e=Ze,42===r.charCodeAt(Ze)?(s="*",Ze++):(s=n,0===ze&&qe(F)),s===n&&(s=hn()),s!==n&&(e,s=function(r){const t="*"===r?{}:r;return t.expand="*",Array.isArray(Yn.expand)||(Yn.expand=[]),Yn.expand.find(Gn(t))||Yn.expand.push(t),t}(s)),(e=s)!==n){if(s=Ze,o=Ze,(u=zn())!==n&&(o,In.push(Yn),Yn=Yn.expand[Yn.expand.length-1],u=void(Yn.expand="*")),(o=u)!==n){for(u=Ze,a=[],c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)a.push(c),c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);a!==n&&(u,a=function(r){if(r.find((r=>r&&void 0!==r.apply))){const r=new Error("EXPAND_APPLY_UNSUPPORTED");throw r.statusCode=501,r}if(Yn.columns){"*"===Yn.expand&&(Yn.expand=[]);for(const r of Yn.columns)Yn.expand.find(Gn(r))||Yn.expand.push(r);delete Yn.columns}else Array.isArray(Yn.expand)&&-1===Yn.expand.indexOf("*")&&Yn.expand.unshift("*")}(a)),(u=a)!==n?(a=Ze,(c=Dn())!==n&&(a,c=void(Yn=In.pop())),(a=c)!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;s===n&&(s=null),s!==n?(o=Ze,(u=kn())!==n&&(a=He())!==n?o=u=[u,a]:(Ze=o,o=n),o===n&&(o=null),o!==n?(u=Ze,r.substr(Ze,7)===M?(a=M,Ze+=7):(a=n,0===ze&&qe(q)),a!==n&&(u,a=function(){const r=new Error("EXPAND_COUNT_UNSUPPORTED");throw r.statusCode=501,r}()),(u=a)===n&&(u=null),u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}function Ke(){var r,t;return r=Ze,(t=_n())!==n&&(r,t=t),r=t}function Ve(){var r,t;return r=Ze,(t=_n())!==n&&(r,t=t),r=t}function rn(){var r,t;return r=Ze,(t=tn())!==n&&(r,t=t),(r=t)===n&&(r=Pn()),r}function tn(){var t,e,s,o,u,a,c;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=tn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,o=function(){var t,e,s,o,u;t=Ze,34===r.charCodeAt(Ze)?(e=It,Ze++):(e=n,0===ze&&qe(Yt));if(e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));u!==n;)o.push(u),r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));(s=o!==n?r.substring(s,Ze):o)!==n?(34===r.charCodeAt(Ze)?(o=It,Ze++):(o=n,0===ze&&qe(Yt)),o!==n?(t,t=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),o!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,(o=On())!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s;t=Ze,e=[],Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));if(s!==n)for(;s!==n;)e.push(s),Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),o!==n&&(s,o=X(e,o)),s=o))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function en(){var r,t;return r=Ze,(t=nn())!==n&&(r,t=t),r=t}function nn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=nn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,(o=fn())!==n&&(s,i=o,o=void e.push(...i)),(s=o)===n&&(s=Ze,(o=sn())!==n&&(s,o=function(r,t){"not"===r[r.length-1]&&"not"===t[0]?r.push("(",...t,")"):r.push(...t)}(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s,o;ze++,t=Ze,r.substr(Ze,8).toLowerCase()===Ur?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Mr));e===n&&(r.substr(Ze,8).toLowerCase()===qr?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Ir)),e===n&&(r.substr(Ze,10).toLowerCase()===Yr?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(Xr))));e!==n&&zn()!==n&&(s=ln())!==n&&kn()!==n&&(o=ln())!==n&&Dn()!==n?(t,u=s,a=o,t=e={func:e.toLowerCase(),args:[u,a]}):(Ze=t,t=n);var u,a;ze--,t===n&&(e=n,0===ze&&qe(Fr));return t}(),o!==n&&(s,o=function(r,t){r.push(t)}(e,o)),(s=o)===n&&(s=Ze,(o=Tn())!==n&&(s,o=X(e,o)),s=o)))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function sn(){var t,e,s,o,c,i,f;if(t=Ze,e=Ze,(s=Rn())!==n&&(e,s=[s]),(e=s)!==n)if(47===r.charCodeAt(Ze)?(s=u,Ze++):(s=n,0===ze&&qe(a)),s!==n){for(o=[],c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)o.push(c),c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);o!==n?(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===K?(e=K,Ze+=3):(e=n,0===ze&&qe(V));e!==n&&zn()!==n?((s=un())===n&&(s=null),s!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();if(!t)return["exists",{ref:[...r,{id:e}]}];let n=[];for(let r=0,s=0;r<t.length;++r){let o=t[r];o.ref&&0===o.ref.length&&"="===t[r+1]?n[s++]={func:"contains",args:[{ref:e},t[r+=2]]}:n[s++]=o}return n.length<t.length?(e=r.pop(),["exists",{ref:[...r,{id:e,where:n}]}]):["exists",{ref:[...r,{id:e,where:t}]}]}(e,i)),(c=i)===n&&(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===rr?(e=rr,Ze+=3):(e=n,0===ze&&qe(tr));e!==n&&zn()!==n&&(s=un())!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();return["not","exists",{ref:[...r,{id:e,where:["not",{xpr:[...t]}]}]}]}(e,i)),c=i),c!==n?(t,t=e=c):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function on(){var r,t,e,s,o,u,a,c,i;if(r=Ze,t=Ze,(e=mn())===n&&(e=null),e!==n&&(t,e=(c=e)?[c]:[]),(t=e)!==n)if(e=Ze,(s=zn())!==n&&(o=on())!==n&&(u=Dn())!==n?(e,i=o,e=s=void t.push("(",...i,")")):(Ze=e,e=n),e===n&&(e=Ze,(s=fn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),(e=s)===n&&(e=Ze,(s=gn())!==n&&(e,s=function(r,t){r.push(t)}(t,s)),(e=s)===n&&(e=Ze,(s=sn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),e=s))),e!==n){for(s=[],o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);s!==n?(r,r=t=t):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;return r}function un(){var t,e,s,o;return t=Ze,(e=Rn())!==n?(58===r.charCodeAt(Ze)?(s=G,Ze++):(s=n,0===ze&&qe(H)),s!==n&&(o=on())!==n?(t,t=e=us(e,o)):(Ze=t,t=n)):(Ze=t,t=n),t}function an(){var t,e,s,o,u,a;return t=Ze,e=Ze,(s=sn())!==n&&(e,s=function(){const r=new Error("ORDERBY_LAMBDA_UNSUPPORTED");throw r.statusCode=501,r}()),(e=s)===n&&(e=gn())===n&&(e=hn()),e!==n?(s=Ze,Fn()!==n?(o=Ze,"asc"===r.substr(Ze,3)?(u="asc",Ze+=3):(u=n,0===ze&&qe(er)),u===n&&(r.substr(Ze,4)===nr?(u=nr,Ze+=4):(u=n,0===ze&&qe(sr))),(o=u!==n?r.substring(o,Ze):u)!==n?(s,s=o):(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=Un(e,(a=s)&&{sort:a})):(Ze=t,t=n)):(Ze=t,t=n),t}function cn(){var t,e,s,o,c,i;if(t=Ze,(e=Cn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);s!==n?(t,t=e=function(r,t){if(void 0!==r){t=Array.isArray(t)?t:[t];for(let e of t)for(const t in e)if("limit"===t&&e.limit&&r.limit&&r.limit.offset&&e.limit.rows)r.limit.rows=e.limit.rows;else if(r[t]||"groupBy"===t&&(r.where||r.search)||"aggregate"===t&&"groupBy"in r&&!("groupBy"in e)){let n=r;r={apply:n},"limit"===t&&e[t].offset&&n.limit&&n.limit.offset&&n.limit.offset.val&&(e[t].offset+=n.limit.offset.val),n=r,n[t]=e[t]}else r[t]=e[t];return{apply:r}}}(e,s)):(Ze=t,t=n)}else Ze=t,t=n;return t}function fn(){var t,e,s,o,u,a;return ze++,t=Ze,(e=ln())!==n&&Fn()!==n?(s=Ze,"eq"===r.substr(Ze,2)?(o="eq",Ze+=2):(o=n,0===ze&&qe(dr)),o===n&&("ne"===r.substr(Ze,2)?(o="ne",Ze+=2):(o=n,0===ze&&qe(gr)),o===n&&("lt"===r.substr(Ze,2)?(o="lt",Ze+=2):(o=n,0===ze&&qe(mr)),o===n&&("gt"===r.substr(Ze,2)?(o="gt",Ze+=2):(o=n,0===ze&&qe(vr)),o===n&&("le"===r.substr(Ze,2)?(o="le",Ze+=2):(o=n,0===ze&&qe(br)),o===n&&("ge"===r.substr(Ze,2)?(o="ge",Ze+=2):(o=n,0===ze&&qe(yr))))))),(s=o!==n?r.substring(s,Ze):o)!==n&&(o=Fn())!==n&&(u=ln())!==n?(t,t=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[a=s]||a,u]):(Ze=t,t=n)):(Ze=t,t=n),ze--,t===n&&(e=n,0===ze&&qe(Ar)),t}function ln(){var t;return ze++,t=function(){var t,e,s,o,c,i,h;ze++,t=Ze,e=[],s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=xr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=Er(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);if(s!==n)for(;s!==n;)e.push(s),s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=xr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=Er(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);else e=n;e!==n?(r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n?(t,t=e={func:"count",as:"$count",args:[{ref:e}]}):(Ze=t,t=n)):(Ze=t,t=n);ze--,t===n&&(e=n,0===ze&&qe(wr));return t}(),t===n&&(t=gn())===n&&(t=pn())===n&&(t=hn())===n&&(t=An())===n&&(t=dn())===n&&(t=function(){var t,e,s,o,u;t=Ze,91===r.charCodeAt(Ze)?(e=Rr,Ze++):(e=n,0===ze&&qe(Zr));if(e!==n){for(s=Ze,o=[],kr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(zr));u!==n;)o.push(u),kr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(zr));(s=o!==n?r.substring(s,Ze):o)!==n?(93===r.charCodeAt(Ze)?(o=jr,Ze++):(o=n,0===ze&&qe(Nr)),o!==n?(t,t=e={list:s.replace(/"/g,"").split(",").map((r=>({val:r})))}):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}()),ze--,t===n&&(n,0===ze&&qe(Cr)),t}function hn(){var t,e,s,o,c,i,f,l;if(ze++,t=Ze,(e=Rn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Lr(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Lr(0,i)):(Ze=o,o=n);s!==n?(t,l=s,t=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe($r)),t}function pn(){var t,e,s;return t=Ze,(e=Tn())===n&&(e=function(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d,g,m,v,b,y,C,w,x,E,$,L;t=Ze,e=Ze,s=Ze,o=[],Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));if(u!==n)for(;u!==n;)o.push(u),Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));else o=n;if(o!==n)if(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u!==n)if(Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)if(Kt.test(r.charAt(Ze))?(c=r.charAt(Ze),Ze++):(c=n,0===ze&&qe(Vt)),c!==n)if(45===r.charCodeAt(Ze)?(i=re,Ze++):(i=n,0===ze&&qe(te)),i!==n)if(Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)if(Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n){if(h=Ze,84===r.charCodeAt(Ze)?(p="T",Ze++):(p=n,0===ze&&qe(ee)),p!==n)if(Kt.test(r.charAt(Ze))?(A=r.charAt(Ze),Ze++):(A=n,0===ze&&qe(Vt)),A!==n)if(Kt.test(r.charAt(Ze))?(d=r.charAt(Ze),Ze++):(d=n,0===ze&&qe(Vt)),d!==n)if(58===r.charCodeAt(Ze)?(g=G,Ze++):(g=n,0===ze&&qe(H)),g!==n)if(Kt.test(r.charAt(Ze))?(m=r.charAt(Ze),Ze++):(m=n,0===ze&&qe(Vt)),m!==n)if(Kt.test(r.charAt(Ze))?(v=r.charAt(Ze),Ze++):(v=n,0===ze&&qe(Vt)),v!==n){if(b=Ze,58===r.charCodeAt(Ze)?(y=G,Ze++):(y=n,0===ze&&qe(H)),y!==n)if(Kt.test(r.charAt(Ze))?(C=r.charAt(Ze),Ze++):(C=n,0===ze&&qe(Vt)),C!==n)if(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n){if(x=Ze,46===r.charCodeAt(Ze)?(E=".",Ze++):(E=n,0===ze&&qe(se)),E!==n){if($=[],Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n)for(;L!==n;)$.push(L),Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt));else $=n;$!==n?x=E=[E,$]:(Ze=x,x=n)}else Ze=x,x=n;x===n&&(x=null),x!==n?b=y=[y,C,w,x]:(Ze=b,b=n)}else Ze=b,b=n;else Ze=b,b=n;else Ze=b,b=n;b===n&&(b=null),b!==n?(90===r.charCodeAt(Ze)?(y="Z",Ze++):(y=n,0===ze&&qe(oe)),y===n&&(y=Ze,43===r.charCodeAt(Ze)?(C="+",Ze++):(C=n,0===ze&&qe(ue)),C===n&&(45===r.charCodeAt(Ze)?(C=re,Ze++):(C=n,0===ze&&qe(te))),C!==n?(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n?(Kt.test(r.charAt(Ze))?(x=r.charAt(Ze),Ze++):(x=n,0===ze&&qe(Vt)),x!==n?(58===r.charCodeAt(Ze)?(E=G,Ze++):(E=n,0===ze&&qe(H)),E!==n?(Kt.test(r.charAt(Ze))?($=r.charAt(Ze),Ze++):($=n,0===ze&&qe(Vt)),$!==n?(Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n?y=C=[C,w,x,E,$,L]:(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)),y===n&&(y=null),y!==n?h=p=[p,A,d,g,m,v,b,y]:(Ze=h,h=n)):(Ze=h,h=n)}else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;h===n&&(h=null),h!==n?s=o=[o,u,a,c,i,f,l,h]:(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=function(r){if(r.split("-")[0].length>4)throw Object.assign(new Error(`The type 'Edm.DateTimeOffset' is not compatible with '${r}'`),{statusCode:400});return r}(e));return t=e}()),e!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,(e=Zn())!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l;t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce));o===n&&(o=null);if(o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;if(u!==n){if(a=Ze,46===r.charCodeAt(Ze)?(c=ne,Ze++):(c=n,0===ze&&qe(se)),c!==n){if(i=[],Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)for(;f!==n;)i.push(f),Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt));else i=n;i!==n?a=c=[c,i]:(Ze=a,a=n)}else Ze=a,a=n;if(a===n&&(a=null),a!==n){if(c=Ze,101===r.charCodeAt(Ze)?(i="e",Ze++):(i=n,0===ze&&qe(ie)),i!==n){if(f=[],Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n)for(;l!==n;)f.push(l),Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt));else f=n;f!==n?c=i=[i,f]:(Ze=c,c=n)}else Ze=c,c=n;c===n&&(c=null),c!==n?s=o=[o,u,a,c]:(Ze=s,s=n)}else Ze=s,s=n}else Ze=s,s=n}else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=Qn(e));return t=e}(),e!==n&&(t,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(t=e)===n&&(t=Ze,(e=On())!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a;t=Ze,r.substr(Ze,7)===ye?(e=ye,Ze+=7):(e=n,0===ze&&qe(Ce));if(e!==n){if(s=Ze,o=Ze,u=[],we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe)),a!==n)for(;a!==n;)u.push(a),we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe));else u=n;u!==n?(r.substr(Ze,2)===Ee?(a=Ee,Ze+=2):(a=n,0===ze&&qe($e)),a===n&&(61===r.charCodeAt(Ze)?(a=m,Ze++):(a=n,0===ze&&qe(v))),a===n&&(a=null),a!==n?o=u=[u,a]:(Ze=o,o=n)):(Ze=o,o=n),(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=Wn(s)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),e!==n&&(t,e=Br(e)),t=e)))),t}function An(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,123===r.charCodeAt(Ze)?(o="{",Ze++):(o=n,0===ze&&qe(Sr)),o!==n){for(u=[],(a=An())===n&&(Tr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Or)));a!==n;)u.push(a),(a=An())===n&&(Tr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Or)));u!==n?(125===r.charCodeAt(Ze)?(a="}",Ze++):(a=n,0===ze&&qe(_r)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=Br(e)),t=e}function dn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,s=Ze,91===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n&&(u=Pn())!==n?(93===r.charCodeAt(Ze)?(a=jr,Ze++):(a=n,0===ze&&qe(Nr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n),s===n)if(s=Ze,91===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n)if((u=Pn())!==n)if(123===r.charCodeAt(Ze)?(a="{",Ze++):(a=n,0===ze&&qe(Sr)),a!==n){for(c=[],(i=dn())===n&&(kr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(zr)));i!==n;)c.push(i),(i=dn())===n&&(kr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(zr)));c!==n?(93===r.charCodeAt(Ze)?(i=jr,Ze++):(i=n,0===ze&&qe(Nr)),i!==n?s=o=[o,u,a,c,i]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=Br(e)),t=e}function gn(){var t,e,s,o,u,a,c;if(ze++,t=Ze,e=Ze,s=[],ur.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ar)),o!==n)for(;o!==n;)s.push(o),ur.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ar));else s=n;if((e=s!==n?r.substring(e,Ze):s)!==n)if((s=zn())!==n)if((o=ln())!==n){for(u=[],a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);u!==n&&(a=Dn())!==n?(t,t=e=function(r,t,e){if(Mn&&!(r.toLowerCase()in Mn.functions))throw Object.assign(new Error(`"${r}" is an unknown function in OData URL spec (strict mode)`),{statusCode:400});return{func:r.toLowerCase(),args:[t,...e]}}(e,o,u)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(Dr)),t}function mn(){var t,e;return t=Ze,Pn()!==n?("not"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Jr)),e!==n&&Fn()!==n?(t,t="not"):(Ze=t,t=n)):(Ze=t,t=n),t}function vn(){var t,e;return t=Ze,Fn()!==n?("and"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Qr)),e!==n&&Fn()!==n?(t,t="and"):(Ze=t,t=n)):(Ze=t,t=n),t}function bn(){var r,t;return r=Ze,(t=Fn())!==n&&(r,t="and"),r=t}function yn(){var t,e;return t=Ze,Fn()!==n?("or"===r.substr(Ze,2).toLowerCase()?(e=r.substr(Ze,2),Ze+=2):(e=n,0===ze&&qe(Wr)),e!==n&&Fn()!==n?(t,t="or"):(Ze=t,t=n)):(Ze=t,t=n),t}function Cn(){var t,e,s;return t=Ze,r.substr(Ze,9)===Gr?(e=Gr,Ze+=9):(e=n,0===ze&&qe(Hr)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=wn())!==n){for(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={aggregate:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===Kr?(e=Kr,Ze+=7):(e=n,0===ze&&qe(Vr)),e!==n?(s=function(){var r,t,e,s,o,u,a,c;if(r=Ze,(t=zn())!==n)if(zn()!==n)if((e=Bn())!==n){for(s=[],o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);s!==n?(o=Ze,(u=Dn())!==n&&(o,i=s,u={groupBy:[e,...i]}),(o=u)!==n?(u=Ze,(a=kn())!==n&&(c=cn())!==n?(u,u=a=c):(Ze=u,u=n),u===n&&(u=null),u!==n&&(a=Dn())!==n?(r,t=function(r,t,e){let n={};return n=e?{groupBy:[r,...t],...e.apply}:{groupBy:[r,...t]},n}(e,s,u),r=t):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var i;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===rt?(e=rt,Ze+=6):(e=n,0===ze&&qe(tt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=en())!==n&&(t,e=e),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={where:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===et?(e=et,Ze+=6):(e=n,0===ze&&qe(nt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=rn())!==n&&(t,e=function(r){if(r)return r}(e)),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={search:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===st?(e=st,Ze+=6):(e=n,0===ze&&qe(ot)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=cn())!==n){if(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n),s!==n)for(;s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n);else e=n;e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={concat:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===ut?(e=ut,Ze+=7):(e=n,0===ze&&qe(at)),e!==n?(s=function(){var r,t,e,s,o,u,a,c,i,f;if(r=Ze,(t=zn())!==n)if((e=Pn())!==n)if((s=Sn())!==n){for(o=[],u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);o!==n&&(u=Pn())!==n&&(a=Dn())!==n?r=t=[t,e,s,o,u,a]:(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"top"===r.substr(Ze,3)?(e="top",Ze+=3):(e=n,0===ze&&qe(ct)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ke())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{rows:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,4)===it?(e=it,Ze+=4):(e=n,0===ze&&qe(ft)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ve())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{offset:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===lt?(e=lt,Ze+=7):(e=n,0===ze&&qe(ht)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=an())!==n){for(e=[],s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={orderBy:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"topcount"===r.substr(Ze,8).toLowerCase()?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(pt)),e===n&&("bottomcount"===r.substr(Ze,11).toLowerCase()?(e=r.substr(Ze,11),Ze+=11):(e=n,0===ze&&qe(At)),e===n&&("topsum"===r.substr(Ze,6).toLowerCase()?(e=r.substr(Ze,6),Ze+=6):(e=n,0===ze&&qe(dt)),e===n&&("bottomsum"===r.substr(Ze,9).toLowerCase()?(e=r.substr(Ze,9),Ze+=9):(e=n,0===ze&&qe(gt)),e===n&&("toppercent"===r.substr(Ze,10).toLowerCase()?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(mt)),e===n&&("bottompercent"===r.substr(Ze,13).toLowerCase()?(e=r.substr(Ze,13),Ze+=13):(e=n,0===ze&&qe(vt))))))),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n&&(t=ln())!==n&&Pn()!==n&&kn()!==n&&Pn()!==n&&(e=ln())!==n&&Pn()!==n&&Dn()!==n?(r,r=[t,e]):(Ze=r,r=n);return r}(),s!==n?(t,t=e=function(r,t){if(!{topcount:!0,bottomcount:!0,topsum:!1,bottomsum:!1,toppercent:!1,bottompercent:!1}[r=r.toLowerCase()])throw Object.assign(new Error(`Transformation "${r}" in $apply is not yet supported.`),{statusCode:501});return{aggregate:[{func:r,args:t}]}}(e,s)):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,e=function(){var t,e;t=Ze,r.substr(Ze,8)===Ot?(e=Ot,Ze+=8):(e=n,0===ze&&qe(_t));e!==n&&(t,e={identity:!0});return t=e}(),e!==n&&(t,e=e),t=e)))))))))),t}function wn(){var t,e,s,o;return t=Ze,e=Ze,r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n&&(o=Ln())!==n?(e,e=s={func:"count",args:[{val:1}],as:o}):(Ze=e,e=n),e===n&&(e=xn()),e!==n&&(t,e=e),t=e}function xn(){var r,t,e,s,o;return r=Ze,(t=hn())!==n?((e=En())===n&&(e=null),e!==n?((s=$n())===n&&(s=null),s!==n?((o=Ln())===n&&(o=null),o!==n?(r,r=t={func:e,args:[t],as:o}):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n),r===n&&(r=Ze,(t=Rn())!==n&&(e=zn())!==n&&(s=xn())!==n&&(o=Dn())!==n?r=t=[t,e,s,o]:(Ze=r,r=n)),r}function En(){var t,e,s,o,u;if(t=Ze,Fn()!==n)if(r.substr(Ze,4)===yt?(e=yt,Ze+=4):(e=n,0===ze&&qe(Ct)),e!==n)if(Fn()!==n){if(s=Ze,o=[],ur.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ar)),u!==n)for(;u!==n;)o.push(u),ur.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ar));else o=n;(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=s.toLowerCase()):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return t}function $n(){var t,e,s,o,u,a,c;return t=Ze,(e=Fn())!==n?(r.substr(Ze,4)===wt?(s=wt,Ze+=4):(s=n,0===ze&&qe(xt)),s!==n&&(o=Fn())!==n&&(u=hn())!==n&&(a=En())!==n?((c=$n())===n&&(c=null),c!==n?t=e=[e,s,o,u,a,c]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n),t}function Ln(){var t,e,s;return t=Ze,Fn()!==n?("as"===r.substr(Ze,2)?(e="as",Ze+=2):(e=n,0===ze&&qe(Et)),e!==n&&Fn()!==n&&(s=Rn())!==n?(t,t=s):(Ze=t,t=n)):(Ze=t,t=n),t}function Bn(){var t,e;return t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l,h;t=Ze,e=Ze,r.substr(Ze,6)===$t?(s=$t,Ze+=6):(s=n,0===ze&&qe(Lt));if(s!==n)if((o=zn())!==n)if((u=Pn())!==n)if(r.substr(Ze,4)===Bt?(a=Bt,Ze+=4):(a=n,0===ze&&qe(St)),a===n&&(a=hn()),a!==n){if(c=[],i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n);else c=n;c!==n&&(i=Pn())!==n&&(f=Dn())!==n?e=s=[s,o,u,a,c,i,f]:(Ze=e,e=n)}else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;e!==n&&(t,e=function(r){const t=new Error("Rollup in groupby is not supported yet.");throw t.statusCode=501,t}());return t=e}(),e===n&&(e=hn()),e!==n&&(t,e=e),t=e}function Sn(){var r,t,e;return r=Ze,(t=nn())!==n&&(e=Ln())!==n?r=t=[t,e]:(Ze=r,r=n),r}function Tn(){var t,e;return t=Ze,r.substr(Ze,4)===Zt?(e=Zt,Ze+=4):(e=n,0===ze&&qe(jt)),e===n&&(r.substr(Ze,5)===Nt?(e=Nt,Ze+=5):(e=n,0===ze&&qe(kt))),e!==n&&(t,e="true"===e),t=e}function On(){var t,e,s,o,u;if(ze++,t=Ze,39===r.charCodeAt(Ze)?(e=Dt,Ze++):(e=n,0===ze&&qe(Pt)),e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));u!==n;)o.push(u),r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=s.replace(/''/g,"'")):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(zt)),t}function _n(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce)),o===n&&(o=null),o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;u!==n?s=o=[o,u]:(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=parseInt(e)),t=e}function Rn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,ze++,s=Tn(),ze--,s===n?e=void 0:(Ze=e,e=n),e!==n)if(s=Ze,ze++,o=Zn(),ze--,o===n?s=void 0:(Ze=s,s=n),s!==n){if(o=Ze,u=Ze,fe.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(le)),a!==n){for(c=[],he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));i!==n;)c.push(i),he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));c!==n?u=a=[a,c]:(Ze=u,u=n)}else Ze=u,u=n;(o=u!==n?r.substring(o,Ze):u)!==n?(t,t=e=o):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Zn(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d;return t=Ze,e=Ze,(s=jn())!==n&&(o=jn())!==n?(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u===n&&(u=null),u!==n&&(a=jn())!==n?(45===r.charCodeAt(Ze)?(c=re,Ze++):(c=n,0===ze&&qe(te)),c===n&&(c=null),c!==n&&(i=jn())!==n?(45===r.charCodeAt(Ze)?(f=re,Ze++):(f=n,0===ze&&qe(te)),f===n&&(f=null),f!==n&&(l=jn())!==n?(45===r.charCodeAt(Ze)?(h=re,Ze++):(h=n,0===ze&&qe(te)),h===n&&(h=null),h!==n&&(p=jn())!==n&&(A=jn())!==n&&(d=jn())!==n?e=s=[s,o,u,a,c,i,f,l,h,p,A,d]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function jn(){var t,e,s,o,u,a;return t=Ze,e=Ze,Ae.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(de)),s!==n?(Ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(de)),o!==n?(Ae.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(de)),u!==n?(Ae.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(de)),a!==n?e=s=[s,o,u,a]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function Nn(){var t,e,s,o;if(t=Ze,e=Ze,s=[],ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me)),o!==n)for(;o!==n;)s.push(o),ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me));else s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e={val:e}),t=e}function kn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(44===r.charCodeAt(Ze)?(s=",",Ze++):(s=n,0===ze&&qe(Le)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function zn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(40===r.charCodeAt(Ze)?(s="(",Ze++):(s=n,0===ze&&qe(Be)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function Dn(){var t,e,s;return t=Ze,(e=Pn())!==n?(41===r.charCodeAt(Ze)?(s=")",Ze++):(s=n,0===ze&&qe(Se)),s!==n?t=e=[e,s]:(Ze=t,t=n)):(Ze=t,t=n),t}function Pn(){var t,e,s;for(ze++,t=Ze,e=[],Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));s!==n;)e.push(s),Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Te)),t}function Fn(){var t,e,s;if(ze++,t=Ze,e=[],Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e)),s!==n)for(;s!==n;)e.push(s),Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));else e=n;return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Re)),t}const Un=Object.assign,{strict:Mn,minimal:qn}=t,In=[];let Yn,Xn;const Jn=["$value"],Qn=t.safeNumber||function(r){const t=Number(r);return Number.isSafeInteger(t)?t:r},Wn=t.standardBase64||function(r){return Buffer.from(r,"base64").toString("base64")},Gn=r=>t=>r===t||r.as&&t.as&&r.as===t.as||t.as&&r.ref&&t.as===r.ref[r.ref.length-1]||r.ref&&t.ref&&r.ref.join("")===t.ref.join(""),Hn=r=>t=>{if(Array.isArray(t))return t.map(Hn(r));const e=t.ref&&r.find((r=>r.as&&r.func&&r.as===t.ref[0]));return e||t},Kn=r=>t=>Array.isArray(t)?t.map(Kn(r)):t.ref&&!r.find(Gn(t))?{val:null}:t,Vn=(r,t)=>{if(1===t.ref.length)r.find(Gn(t))||r.push(t);else{const e=t.ref.shift(),n=r.find((r=>r.ref&&r.ref[0]===e));if(n)Vn(n.expand,t);else{const n={ref:[e],expand:[]};Vn(n.expand,t),r.push(n)}}},rs=(r,t,e=!1)=>{let n=ns({from:r.from},t,e);if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ts(n[t],r,e);else n=ts(n,r,e);return n},ts=(r,t,e)=>{if(!t)return r;t.apply&&delete t.apply;let n={};t.columns&&"$count"===t.columns[0].as||r.SELECT.where&&t.where||r.SELECT.limit&&t.limit||r.SELECT.orderBy&&t.orderBy||r.SELECT.search&&t.search?n.from=r:n=r.SELECT;for(const r in t)"columns"===r?(t.columns=t.columns.map((r=>n.columns&&n.columns.find((t=>r.ref&&r.ref[0]===t.as||t.ref&&r.ref&&r.ref[0]===t.ref[0]&&!r.expand))||r)),n.columns&&n.groupBy&&t.columns.push(...n.columns.filter((r=>e&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))&&!t.columns.some((t=>t.ref&&t.ref[0]===r.as||t.ref&&r.ref&&t.ref[0]===r.ref[0]||t.as&&t.as===r.as))))||[]),n.columns=t.columns):"from"!==r&&(n[r]=t[r]);const s=[...n.columns&&n.columns.filter((r=>n.groupBy&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))))||[],...n.columns&&n.columns.filter((r=>r&&"object"==typeof r&&"func"in r))||[]];return es(n,s,e),{SELECT:n}},es=(r,t,e)=>{t.length&&(r.columns=r.columns&&!e?r.columns.reduce(((r,e)=>{const n=t.find(Gn(e));return n&&r.push(n),r}),[]):t,r.where&&(r.where=r.where.map(Hn(r.columns)),r.groupBy&&(r.having=r.where.map(Kn(r.groupBy)),delete r.where)),r.columns=r.columns.reduce(((r,e)=>(e.ref&&e.ref.length>1&&t.find(Gn(e))?Vn(r,{ref:[...e.ref]}):r.push(e),r)),[]))},ns=(r,t,e)=>{if(!t)return;if(r.apply&&delete r.apply,t.identity&&r.from.SELECT&&(r=r.from.SELECT),(t.apply||t.where&&r.where||t.search&&r.search||t.limit&&r.limit||t.orderBy&&r.orderBy)&&(r.from={SELECT:{...r}}),t.where&&(r.where=t.where),t.search&&(r.search=t.search),t.groupBy){r.groupBy=[];for(const e of t.groupBy)r.groupBy.find(Gn(e))||r.groupBy.push(e)}t.limit&&(r.limit=t.limit),t.orderBy&&(r.orderBy=t.orderBy);const n=[...r.groupBy||[],...t.aggregate||[]];if(es(r,n,e),t.apply&&r.from&&ns(r.from.SELECT,t.apply),t.concat&&Array.isArray(t.concat)){const e=[];for(let n of t.concat){n.from=1===Object.keys(r).length?r.from:{SELECT:r};const t=ns(n,n.apply);Array.isArray(t)?e.push(...t):e.push(t)}r=e}return Array.isArray(r)?r:{SELECT:r}},ss=r=>{Yn.limit&&Yn.limit.offset&&Yn.limit.offset.val&&(r+=Yn.limit.offset.val),(Yn.limit||(Yn.limit={})).offset={val:r}},os=(r,t=!1)=>{Yn.orderBy=Yn.orderBy?t?[r,...Yn.orderBy]:[...Yn.orderBy,r]:[r]},us=(r,t)=>{for(const e of t)e.ref&&e.ref[0]===r&&e.ref.shift(),e.func&&us(r,e.args);return t};if((e=o())!==n&&Ze===r.length)return e;throw e!==n&&Ze<r.length&&qe({type:"end"}),Ie(ke,Ne<r.length?r.charAt(Ne):null,Ne<r.length?Me(Ne,Ne+1):Me(Ne,Ne))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(r){return'"'+s(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?o(r.parts[t][0])+"-"+o(r.parts[t][1]):o(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function s(r){return r.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(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}function o(r){return r.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(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}return"Expected "+function(r){var t,n,s,o=new Array(r.length);for(t=0;t<r.length;t++)o[t]=(s=r[t],e[s.type](s));if(o.sort(),o.length>0){for(t=1,n=1;t<o.length;t++)o[t-1]!==o[t]&&(o[n]=o[t],n++);o.length=n}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(r)+" but "+function(r){return r?'"'+s(r)+'"':"end of input"}(t)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|
|
1
|
+
"use strict";function peg$subclass(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}function peg$SyntaxError(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(r,t){t=void 0!==t?t:{};var e,n={},s={ODataRelativeURI:Ye},o=Ye,u="/",a=De("/",!1),c=De("?",!1),i=De("&",!1),f="$count",l=De("$count",!1),h="$ref",p=De("$ref",!1),A="$value",d=De("$value",!1),g=function(r){return[r]},m="=",v=De("=",!1),b="$skiptoken=",y=De("$skiptoken=",!1),C="$select=",w=De("$select=",!1),x="$expand=",E=De("$expand=",!1),$="$filter=",L=De("$filter=",!1),B="$orderby=",S=De("$orderby=",!1),T=function(r,t){os(t)},_="$top=",O=De("$top=",!1),R="$skip=",Z=De("$skip=",!1),j="$search=",N=De("$search=",!1),k="$count=",z=De("$count=",!1),D="$apply=",P=De("$apply=",!1),F=De("*",!1),U=De(";",!1),M="/$count",q=De("/$count",!1),I=function(r){return r?[r]:[]},Y=function(r,t){r.push({xpr:t})},X=function(r,t){r.push({val:t})},J=function(r,t,e){r.push(t,...e)},Q=function(r,t){r.push(t)},W=function(r,t,e){r.push(t,...e)},G=":",H=De(":",!1),K="any",V=De("any",!1),rr="all",tr=De("all",!1),er=De("asc",!1),nr="desc",sr=De("desc",!1),or=function(r,t){return t},ur=/^[a-zA-Z0-9\-_.~]/,ar=Pe([["a","z"],["A","Z"],["0","9"],"-","_",".","~"],!1,!1),cr=/^[^&]/,ir=Pe(["&"],!0,!1),fr="$format=",lr=De("$format=",!1),hr=Fe("a comparison"),pr=De("eq",!1),Ar=De("ne",!1),dr=De("lt",!1),gr=De("gt",!1),mr=De("le",!1),vr=De("ge",!1),br=(De("add",!1),De("sub",!1),De("mul",!1),De("div",!1),De("mod",!1),Fe("an operand")),yr=Fe("navigation with $count"),Cr=function(r,t){return t},wr=function(r,t){return t?{id:r,where:t}:r},xr=Fe("a reference"),Er=function(r,t){return t},$r=function(r){return{val:r}},Lr=De("{",!1),Br=/^[^}]/,Sr=Pe(["}"],!0,!1),Tr=De("}",!1),_r="[",Or=De("[",!1),Rr="]",Zr=De("]",!1),jr=/^[^\]]/,Nr=Pe(["]"],!0,!1),kr=Fe("a function call"),zr=/^[a-zA-Z]/,Dr=Pe([["a","z"],["A","Z"]],!1,!1),Pr=function(r,t,e){return e},Fr=Fe("a boolean function"),Ur="contains",Mr=De("contains",!0),qr="endswith",Ir=De("endswith",!0),Yr="startswith",Xr=De("startswith",!0),Jr=De("NOT",!0),Qr=De("AND",!0),Wr=De("OR",!0),Gr="aggregate",Hr=De("aggregate",!1),Kr="groupby",Vr=De("groupby",!1),rt="filter",tt=De("filter",!1),et="search",nt=De("search",!1),st="concat",ot=De("concat",!1),ut="compute",at=De("compute",!1),ct=De("top",!1),it="skip",ft=De("skip",!1),lt="orderby",ht=De("orderby",!1),pt=De("topcount",!0),At=De("bottomcount",!0),dt=De("topsum",!0),gt=De("bottomsum",!0),mt=De("toppercent",!0),vt=De("bottompercent",!0),bt=function(r,t){return t},yt="with",Ct=De("with",!1),wt="from",xt=De("from",!1),Et=De("as",!1),$t="rollup",Lt=De("rollup",!1),Bt="$all",St=De("$all",!1),Tt=function(r,t){return t},_t="identity",Ot=De("identity",!1),Rt=function(r,t){return t},Zt="true",jt=De("true",!1),Nt="false",kt=De("false",!1),zt=Fe("Edm.String"),Dt="'",Pt=De("'",!1),Ft="''",Ut=De("''",!1),Mt=/^[^']/,qt=Pe(["'"],!0,!1),It='"',Yt=De('"',!1),Xt='\\"',Jt=De('\\"',!1),Qt=/^[^"]/,Wt=Pe(['"'],!0,!1),Gt=/^[^ \t\n()"&;]/,Ht=Pe([" ","\t","\n","(",")",'"',"&",";"],!0,!1),Kt=/^[0-9]/,Vt=Pe([["0","9"]],!1,!1),re="-",te=De("-",!1),ee=De("T",!1),ne=".",se=De(".",!1),oe=De("Z",!1),ue=De("+",!1),ae=/^[+\-]/,ce=Pe(["+","-"],!1,!1),ie=De("e",!1),fe=/^[_a-zA-Z]/,le=Pe(["_",["a","z"],["A","Z"]],!1,!1),he=/^[_a-zA-Z0-9"."]/,pe=Pe(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),Ae=/^[0-9a-fA-F]/,de=Pe([["0","9"],["a","f"],["A","F"]],!1,!1),ge=/^[^\/?]/,me=Pe(["/","?"],!0,!1),ve=/^[a-zA-Z0-9\-"."_~!$'()*+,;=:@"\/""?"]/,be=Pe([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","'","(",")","*","+",",",";","=",":","@",'"',"/",'"','"',"?",'"'],!1,!1),ye="binary'",Ce=De("binary'",!1),we=/^[a-zA-Z0-9\-_]/,xe=Pe([["a","z"],["A","Z"],["0","9"],"-","_"],!1,!1),Ee="==",$e=De("==",!1),Le=De(",",!1),Be=De("(",!1),Se=De(")",!1),Te=Fe("optional whitespaces"),_e=/^[ \t\n]/,Oe=Pe([" ","\t","\n"],!1,!1),Re=Fe("mandatory whitespaces"),Ze=0,je=[{line:1,column:1}],Ne=0,ke=[],ze=0;if("startRule"in t){if(!(t.startRule in s))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=s[t.startRule]}function De(r,t){return{type:"literal",text:r,ignoreCase:t}}function Pe(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function Fe(r){return{type:"other",description:r}}function Ue(t){var e,n=je[t];if(n)return n;for(e=t-1;!je[e];)e--;for(n={line:(n=je[e]).line,column:n.column};e<t;)10===r.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return je[t]=n,n}function Me(r,t){var e=Ue(r),n=Ue(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function qe(r){Ze<Ne||(Ze>Ne&&(Ne=Ze,ke=[]),ke.push(r))}function Ie(r,t,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(r,t),r,t,e)}function Ye(){var t,e,s,o,f,l,h,p,A,d,g,m,v,b;if(t=Ze,47===r.charCodeAt(Ze)?(e=u,Ze++):(e=n,0===ze&&qe(a)),e===n&&(e=null),e!==n)if(s=Ze,(o=Xe())!==n&&(s,o=void(Yn=o)),(s=o)!==n){if(o=Ze,(f=Pn())!==n)if(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l!==n)if((h=Pn())!==n)if((p=Qe())!==n){for(A=[],d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);d!==n;)A.push(d),d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);A!==n?o=f=[f,l,h,p,A]:(Ze=o,o=n)}else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;o===n&&(o=null),o!==n&&(f=Pn())!==n?(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l===n&&(l=null),l!==n&&(h=Pn())!==n?(t,t=e=function(){if(Xn)return Yn.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete Yn.expand,delete Yn.limit,delete Yn.orderBy,Yn.apply?rs(Yn,Yn.apply):{SELECT:Yn};let r;if(Yn.expand){Yn.columns||(Yn.columns=["*"],r=!0);for(const r of Yn.expand){const t=Yn.columns.findIndex(Gn(r));t>-1&&Yn.columns.splice(t,1),Yn.columns.push(r)}delete Yn.expand}return Yn.count&&Yn.apply&&(Yn.__countAggregated=!0),Yn.apply?rs(Yn,Yn.apply,r):{SELECT:Yn}}()):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Xe(){var t,e,s,o,c,i,m,v;return t=Ze,r.substr(Ze,6)===f?(e=f,Ze+=6):(e=n,0===ze&&qe(l)),e!==n&&(t,e=void(Xn=!0)),(t=e)===n&&(t=Ze,e=Ze,r.substr(Ze,4)===h?(s=h,Ze+=4):(s=n,0===ze&&qe(p)),s===n&&(r.substr(Ze,6)===A?(s=A,Ze+=6):(s=n,0===ze&&qe(d))),(e=s!==n?r.substring(e,Ze):s)!==n&&(t,v=e,e=!Jn.includes(v)&&{from:{ref:[v]}}),(t=e)===n&&(t=Ze,e=Ze,(s=Rn())!==n?(o=Ze,(c=zn())!==n&&(i=Dn())!==n?o=c=[c,i]:(Ze=o,o=n),o===n&&(o=Ze,(c=zn())!==n&&(i=Je())!==n&&(m=Dn())!==n?o=c=[c,i,m]:(Ze=o,o=n)),o===n&&(o=null),o!==n?(c=Ze,ze++,i=Nn(),ze--,i===n?c=void 0:(Ze=c,c=n),c!==n?e=s=[s,o,c]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),e===n&&(e=Ze,(s=Nn())!==n&&(e,s=g(s)),e=s),e===n&&(e=null),e!==n?(s=Ze,o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(o,c=c),(o=c)!==n?((c=Xe())===n&&(c=null),c!==n?s=o=[o,c]:(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=function(r,t){if(t=t&&t[1],!r&&!t)return{from:{ref:[""]}};if(!r&&t&&t.from)return t.from.ref.unshift(""),t;const[e,n]=r,s=[];if(n?n.length>2?s.push({id:e,where:n[1].map((r=>r.val&&r.val.match&&r.val.match(/^"(.*)"$/)?{val:r.val.match(/^"(.*)"$/)[1]}:r))}):s.push({id:e,where:[]}):qn?s.push(`${"object"==typeof e&&"val"in e?e.val:e}`):"object"==typeof e&&"string"==typeof e.val&&e.val.match(/^[1-9]\d*$|^0$/)?s.push({val:Qn(e.val)}):s.push(e),t&&t.from){const r=t.from.ref;Object.prototype.hasOwnProperty.call(r[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[r.shift()]}),s.push(...r)}const o={from:{ref:s}};return t&&t.columns&&(o.columns=t.columns),o}(e,s)):(Ze=t,t=n)):(Ze=t,t=n))),t}function Je(){var t,e,s,o,u,a,c;return t=Ze,(e=pn())!==n&&(t,e=g(e)),(t=e)===n&&(t=Ze,(e=hn())!==n&&Pn()!==n?(61===r.charCodeAt(Ze)?(s="=",Ze++):(s=n,0===ze&&qe(v)),s!==n&&Pn()!==n&&(o=pn())!==n?(u=Ze,(a=kn())!==n&&(c=Je())!==n?u=a=[a,c]:(Ze=u,u=n),u===n&&(u=null),u!==n?(t,t=e=function(r,t,e){const n=[r,"=",t];return e&&n.push("and",...e[1]),n}(e,o,u)):(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)),t}function Qe(){var t,e,s,o,u;return t=Ze,(e=We())!==n&&(t,e=void((u=e)&&u.apply&&(Yn.apply=u.apply))),(t=e)===n&&(t=Ze,r.substr(Ze,11)===b?(e=b,Ze+=11):(e=n,0===ze&&qe(y)),e!==n&&(s=Pn())!==n?(o=function(){var t,e,s;t=Ze,(e=On())===n&&(e=null);e!==n?(s=function(){var t,e,s;t=Ze,e=[],ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));if(s!==n)for(;s!==n;)e.push(s),ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),s===n&&(s=null),s!==n?(t,o=e,t=e=void(s||ss(o))):(Ze=t,t=n)):(Ze=t,t=n);var o;return t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=function(){var t,e,s,o,u;t=Ze,r.substr(Ze,8)===fr?(e=fr,Ze+=8):(e=n,0===ze&&qe(lr));if(e!==n){for(s=Ze,o=[],cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));u!==n;)o.push(u),cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=e=function(r){if("json"!==r.toLowerCase()){const r=new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED");throw r.statusCode=501,r}}(s)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),t===n&&(t=function(){var t,e,s,o,u;t=Ze,e=[],ur.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(ar));if(s!==n)for(;s!==n;)e.push(s),ur.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(ar));else e=n;if(e!==n)if(61===r.charCodeAt(Ze)?(s=m,Ze++):(s=n,0===ze&&qe(v)),s!==n){for(o=[],cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));u!==n;)o.push(u),cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));o!==n?t=e=[e,s,o]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}()))),t}function We(){var t,e,s,o,u,a,c,i,f,l,h;if(t=Ze,r.substr(Ze,8)===C?(e=C,Ze+=8):(e=n,0===ze&&qe(w)),e!==n)if((s=Pn())!==n)if((o=Ge())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n){if(t=Ze,r.substr(Ze,8)===x?(e=x,Ze+=8):(e=n,0===ze&&qe(E)),e!==n)if((s=Pn())!==n)if((o=He())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n&&(t=Ze,r.substr(Ze,8)===$?(e=$,Ze+=8):(e=n,0===ze&&qe(L)),e!==n&&(s=Pn())!==n&&(o=en())!==n?(t,h=o,t=e=void(Yn.where=h)):(Ze=t,t=n),t===n)){if(t=Ze,r.substr(Ze,9)===B?(e=B,Ze+=9):(e=n,0===ze&&qe(S)),e!==n)if((s=Pn())!==n)if((o=an())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);u!==n?(t,t=e=void os(o,!0)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;t===n&&(t=Ze,r.substr(Ze,5)===_?(e=_,Ze+=5):(e=n,0===ze&&qe(O)),e!==n&&(s=Pn())!==n&&(o=Ke())!==n?(t,l=o,t=e=void((Yn.limit||(Yn.limit={})).rows={val:l})):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===R?(e=R,Ze+=6):(e=n,0===ze&&qe(Z)),e!==n&&(s=Pn())!==n&&(o=Ve())!==n?(t,e=function(r){ss(r)}(o),t=e):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,8)===j?(e=j,Ze+=8):(e=n,0===ze&&qe(N)),e!==n&&(s=Pn())!==n&&(o=rn())!==n?(t,t=e=void((f=o)&&(Yn.search=f))):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===k?(e=k,Ze+=7):(e=n,0===ze&&qe(z)),e!==n&&(s=Pn())!==n?(o=function(){var r,t;r=Ze,(t=Tn())!==n&&(r,t=function(r){r&&(Yn.count=!0)}(t));return r=t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===D?(e=D,Ze+=7):(e=n,0===ze&&qe(P)),e!==n&&(s=Pn())!==n&&(o=cn())!==n?(t,t=e=o):(Ze=t,t=n))))))}}return t}function Ge(){var t,e,s;return t=Ze,42===r.charCodeAt(Ze)?(e="*",Ze++):(e=n,0===ze&&qe(F)),e===n&&(e=hn()),e!==n&&(t,s=e,Yn.columns=Array.isArray(Yn.columns)?Yn.columns:[],Yn.columns.find(Gn(s))||Yn.columns.push(s),e=s),t=e}function He(){var t,e,s,o,u,a,c,i,f;if(t=Ze,e=Ze,42===r.charCodeAt(Ze)?(s="*",Ze++):(s=n,0===ze&&qe(F)),s===n&&(s=hn()),s!==n&&(e,s=function(r){const t="*"===r?{}:r;return t.expand="*",Array.isArray(Yn.expand)||(Yn.expand=[]),Yn.expand.find(Gn(t))||Yn.expand.push(t),t}(s)),(e=s)!==n){if(s=Ze,o=Ze,(u=zn())!==n&&(o,In.push(Yn),Yn=Yn.expand[Yn.expand.length-1],u=void(Yn.expand="*")),(o=u)!==n){for(u=Ze,a=[],c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)a.push(c),c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);a!==n&&(u,a=function(r){if(r.find((r=>r&&void 0!==r.apply))){const r=new Error("EXPAND_APPLY_UNSUPPORTED");throw r.statusCode=501,r}if(Yn.columns){"*"===Yn.expand&&(Yn.expand=[]);for(const r of Yn.columns)Yn.expand.find(Gn(r))||Yn.expand.push(r);delete Yn.columns}else Array.isArray(Yn.expand)&&-1===Yn.expand.indexOf("*")&&Yn.expand.unshift("*")}(a)),(u=a)!==n?(a=Ze,(c=Dn())!==n&&(a,c=void(Yn=In.pop())),(a=c)!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;s===n&&(s=null),s!==n?(o=Ze,(u=kn())!==n&&(a=He())!==n?o=u=[u,a]:(Ze=o,o=n),o===n&&(o=null),o!==n?(u=Ze,r.substr(Ze,7)===M?(a=M,Ze+=7):(a=n,0===ze&&qe(q)),a!==n&&(u,a=function(){const r=new Error("EXPAND_COUNT_UNSUPPORTED");throw r.statusCode=501,r}()),(u=a)===n&&(u=null),u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}function Ke(){var r,t;return r=Ze,(t=On())!==n&&r,r=t}function Ve(){var r,t;return r=Ze,(t=On())!==n&&r,r=t}function rn(){var r,t;return r=Ze,(t=tn())!==n&&r,(r=t)===n&&(r=Pn()),r}function tn(){var t,e,s,o,u,a,c;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=tn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,o=function(){var t,e,s,o,u;t=Ze,34===r.charCodeAt(Ze)?(e=It,Ze++):(e=n,0===ze&&qe(Yt));if(e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));u!==n;)o.push(u),r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));(s=o!==n?r.substring(s,Ze):o)!==n?(34===r.charCodeAt(Ze)?(o=It,Ze++):(o=n,0===ze&&qe(Yt)),o!==n?(t,t=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),o!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,(o=_n())!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s;t=Ze,e=[],Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));if(s!==n)for(;s!==n;)e.push(s),Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),o!==n&&(s,o=X(e,o)),s=o))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function en(){var r,t;return r=Ze,(t=nn())!==n&&r,r=t}function nn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=nn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,(o=fn())!==n&&(s,i=o,o=void e.push(...i)),(s=o)===n&&(s=Ze,(o=sn())!==n&&(s,o=function(r,t){"not"===r[r.length-1]&&"not"===t[0]?r.push("(",...t,")"):r.push(...t)}(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s,o;ze++,t=Ze,r.substr(Ze,8).toLowerCase()===Ur?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Mr));e===n&&(r.substr(Ze,8).toLowerCase()===qr?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Ir)),e===n&&(r.substr(Ze,10).toLowerCase()===Yr?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(Xr))));e!==n&&zn()!==n&&(s=ln())!==n&&kn()!==n&&(o=ln())!==n&&Dn()!==n?(t,u=s,a=o,t=e={func:e.toLowerCase(),args:[u,a]}):(Ze=t,t=n);var u,a;ze--,t===n&&(e=n,0===ze&&qe(Fr));return t}(),o!==n&&(s,o=function(r,t){r.push(t)}(e,o)),(s=o)===n&&(s=Ze,(o=Tn())!==n&&(s,o=X(e,o)),s=o)))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function sn(){var t,e,s,o,c,i,f;if(t=Ze,e=Ze,(s=Rn())!==n&&(e,s=[s]),(e=s)!==n)if(47===r.charCodeAt(Ze)?(s=u,Ze++):(s=n,0===ze&&qe(a)),s!==n){for(o=[],c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)o.push(c),c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);o!==n?(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===K?(e=K,Ze+=3):(e=n,0===ze&&qe(V));e!==n&&zn()!==n?((s=un())===n&&(s=null),s!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();if(!t)return["exists",{ref:[...r,{id:e}]}];let n=[];for(let r=0,s=0;r<t.length;++r){let o=t[r];o.ref&&0===o.ref.length&&"="===t[r+1]?n[s++]={func:"contains",args:[{ref:e},t[r+=2]]}:n[s++]=o}return n.length<t.length?(e=r.pop(),["exists",{ref:[...r,{id:e,where:n}]}]):["exists",{ref:[...r,{id:e,where:t}]}]}(e,i)),(c=i)===n&&(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===rr?(e=rr,Ze+=3):(e=n,0===ze&&qe(tr));e!==n&&zn()!==n&&(s=un())!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();return["not","exists",{ref:[...r,{id:e,where:["not",{xpr:[...t]}]}]}]}(e,i)),c=i),c!==n?(t,t=e=c):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function on(){var r,t,e,s,o,u,a,c,i;if(r=Ze,t=Ze,(e=mn())===n&&(e=null),e!==n&&(t,e=(c=e)?[c]:[]),(t=e)!==n)if(e=Ze,(s=zn())!==n&&(o=on())!==n&&(u=Dn())!==n?(e,i=o,e=s=void t.push("(",...i,")")):(Ze=e,e=n),e===n&&(e=Ze,(s=fn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),(e=s)===n&&(e=Ze,(s=gn())!==n&&(e,s=function(r,t){r.push(t)}(t,s)),(e=s)===n&&(e=Ze,(s=sn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),e=s))),e!==n){for(s=[],o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);s!==n?(r,r=t):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;return r}function un(){var t,e,s,o;return t=Ze,(e=Rn())!==n?(58===r.charCodeAt(Ze)?(s=G,Ze++):(s=n,0===ze&&qe(H)),s!==n&&(o=on())!==n?(t,t=e=us(e,o)):(Ze=t,t=n)):(Ze=t,t=n),t}function an(){var t,e,s,o,u,a;return t=Ze,e=Ze,(s=sn())!==n&&(e,s=function(){const r=new Error("ORDERBY_LAMBDA_UNSUPPORTED");throw r.statusCode=501,r}()),(e=s)===n&&(e=gn())===n&&(e=hn()),e!==n?(s=Ze,Fn()!==n?(o=Ze,"asc"===r.substr(Ze,3)?(u="asc",Ze+=3):(u=n,0===ze&&qe(er)),u===n&&(r.substr(Ze,4)===nr?(u=nr,Ze+=4):(u=n,0===ze&&qe(sr))),(o=u!==n?r.substring(o,Ze):u)!==n?(s,s=o):(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=Un(e,(a=s)&&{sort:a})):(Ze=t,t=n)):(Ze=t,t=n),t}function cn(){var t,e,s,o,c,i;if(t=Ze,(e=Cn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);s!==n?(t,t=e=function(r,t){if(void 0!==r){t=Array.isArray(t)?t:[t];for(let e of t)for(const t in e)if("limit"===t&&e.limit&&r.limit&&r.limit.offset&&e.limit.rows)r.limit.rows=e.limit.rows;else if(r[t]||"groupBy"===t&&(r.where||r.search)||"aggregate"===t&&"groupBy"in r&&!("groupBy"in e)){let n=r;r={apply:n},"limit"===t&&e[t].offset&&n.limit&&n.limit.offset&&n.limit.offset.val&&(e[t].offset+=n.limit.offset.val),n=r,n[t]=e[t]}else r[t]=e[t];return{apply:r}}}(e,s)):(Ze=t,t=n)}else Ze=t,t=n;return t}function fn(){var t,e,s,o,u,a;return ze++,t=Ze,(e=ln())!==n&&Fn()!==n?(s=Ze,"eq"===r.substr(Ze,2)?(o="eq",Ze+=2):(o=n,0===ze&&qe(pr)),o===n&&("ne"===r.substr(Ze,2)?(o="ne",Ze+=2):(o=n,0===ze&&qe(Ar)),o===n&&("lt"===r.substr(Ze,2)?(o="lt",Ze+=2):(o=n,0===ze&&qe(dr)),o===n&&("gt"===r.substr(Ze,2)?(o="gt",Ze+=2):(o=n,0===ze&&qe(gr)),o===n&&("le"===r.substr(Ze,2)?(o="le",Ze+=2):(o=n,0===ze&&qe(mr)),o===n&&("ge"===r.substr(Ze,2)?(o="ge",Ze+=2):(o=n,0===ze&&qe(vr))))))),(s=o!==n?r.substring(s,Ze):o)!==n&&(o=Fn())!==n&&(u=ln())!==n?(t,t=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[a=s]||a,u]):(Ze=t,t=n)):(Ze=t,t=n),ze--,t===n&&(e=n,0===ze&&qe(hr)),t}function ln(){var t;return ze++,t=function(){var t,e,s,o,c,i,h;ze++,t=Ze,e=[],s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=Cr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=wr(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);if(s!==n)for(;s!==n;)e.push(s),s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=Cr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=wr(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);else e=n;e!==n?(r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n?(t,t=e={func:"count",as:"$count",args:[{ref:e}]}):(Ze=t,t=n)):(Ze=t,t=n);ze--,t===n&&(e=n,0===ze&&qe(yr));return t}(),t===n&&(t=gn())===n&&(t=pn())===n&&(t=hn())===n&&(t=An())===n&&(t=dn())===n&&(t=function(){var t,e,s,o,u;t=Ze,91===r.charCodeAt(Ze)?(e=_r,Ze++):(e=n,0===ze&&qe(Or));if(e!==n){for(s=Ze,o=[],jr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Nr));u!==n;)o.push(u),jr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Nr));(s=o!==n?r.substring(s,Ze):o)!==n?(93===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n?(t,t=e={list:s.replace(/"/g,"").split(",").map((r=>({val:r})))}):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}()),ze--,t===n&&(n,0===ze&&qe(br)),t}function hn(){var t,e,s,o,c,i,f,l;if(ze++,t=Ze,(e=Rn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Er(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Er(0,i)):(Ze=o,o=n);s!==n?(t,l=s,t=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(xr)),t}function pn(){var t,e,s;return t=Ze,(e=Tn())===n&&(e=function(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d,g,m,v,b,y,C,w,x,E,$,L;t=Ze,e=Ze,s=Ze,o=[],Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));if(u!==n)for(;u!==n;)o.push(u),Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));else o=n;if(o!==n)if(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u!==n)if(Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)if(Kt.test(r.charAt(Ze))?(c=r.charAt(Ze),Ze++):(c=n,0===ze&&qe(Vt)),c!==n)if(45===r.charCodeAt(Ze)?(i=re,Ze++):(i=n,0===ze&&qe(te)),i!==n)if(Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)if(Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n){if(h=Ze,84===r.charCodeAt(Ze)?(p="T",Ze++):(p=n,0===ze&&qe(ee)),p!==n)if(Kt.test(r.charAt(Ze))?(A=r.charAt(Ze),Ze++):(A=n,0===ze&&qe(Vt)),A!==n)if(Kt.test(r.charAt(Ze))?(d=r.charAt(Ze),Ze++):(d=n,0===ze&&qe(Vt)),d!==n)if(58===r.charCodeAt(Ze)?(g=G,Ze++):(g=n,0===ze&&qe(H)),g!==n)if(Kt.test(r.charAt(Ze))?(m=r.charAt(Ze),Ze++):(m=n,0===ze&&qe(Vt)),m!==n)if(Kt.test(r.charAt(Ze))?(v=r.charAt(Ze),Ze++):(v=n,0===ze&&qe(Vt)),v!==n){if(b=Ze,58===r.charCodeAt(Ze)?(y=G,Ze++):(y=n,0===ze&&qe(H)),y!==n)if(Kt.test(r.charAt(Ze))?(C=r.charAt(Ze),Ze++):(C=n,0===ze&&qe(Vt)),C!==n)if(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n){if(x=Ze,46===r.charCodeAt(Ze)?(E=".",Ze++):(E=n,0===ze&&qe(se)),E!==n){if($=[],Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n)for(;L!==n;)$.push(L),Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt));else $=n;$!==n?x=E=[E,$]:(Ze=x,x=n)}else Ze=x,x=n;x===n&&(x=null),x!==n?b=y=[y,C,w,x]:(Ze=b,b=n)}else Ze=b,b=n;else Ze=b,b=n;else Ze=b,b=n;b===n&&(b=null),b!==n?(90===r.charCodeAt(Ze)?(y="Z",Ze++):(y=n,0===ze&&qe(oe)),y===n&&(y=Ze,43===r.charCodeAt(Ze)?(C="+",Ze++):(C=n,0===ze&&qe(ue)),C===n&&(45===r.charCodeAt(Ze)?(C=re,Ze++):(C=n,0===ze&&qe(te))),C!==n?(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n?(Kt.test(r.charAt(Ze))?(x=r.charAt(Ze),Ze++):(x=n,0===ze&&qe(Vt)),x!==n?(58===r.charCodeAt(Ze)?(E=G,Ze++):(E=n,0===ze&&qe(H)),E!==n?(Kt.test(r.charAt(Ze))?($=r.charAt(Ze),Ze++):($=n,0===ze&&qe(Vt)),$!==n?(Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n?y=C=[C,w,x,E,$,L]:(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)),y===n&&(y=null),y!==n?h=p=[p,A,d,g,m,v,b,y]:(Ze=h,h=n)):(Ze=h,h=n)}else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;h===n&&(h=null),h!==n?s=o=[o,u,a,c,i,f,l,h]:(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=function(r){if(r.split("-")[0].length>4)throw Object.assign(new Error(`The type 'Edm.DateTimeOffset' is not compatible with '${r}'`),{statusCode:400});return r}(e));return t=e}()),e!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,(e=Zn())!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l;t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce));o===n&&(o=null);if(o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;if(u!==n){if(a=Ze,46===r.charCodeAt(Ze)?(c=ne,Ze++):(c=n,0===ze&&qe(se)),c!==n){if(i=[],Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)for(;f!==n;)i.push(f),Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt));else i=n;i!==n?a=c=[c,i]:(Ze=a,a=n)}else Ze=a,a=n;if(a===n&&(a=null),a!==n){if(c=Ze,101===r.charCodeAt(Ze)?(i="e",Ze++):(i=n,0===ze&&qe(ie)),i!==n){if(f=[],Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n)for(;l!==n;)f.push(l),Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt));else f=n;f!==n?c=i=[i,f]:(Ze=c,c=n)}else Ze=c,c=n;c===n&&(c=null),c!==n?s=o=[o,u,a,c]:(Ze=s,s=n)}else Ze=s,s=n}else Ze=s,s=n}else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=Qn(e));return t=e}(),e!==n&&(t,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(t=e)===n&&(t=Ze,(e=_n())!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a;t=Ze,r.substr(Ze,7)===ye?(e=ye,Ze+=7):(e=n,0===ze&&qe(Ce));if(e!==n){if(s=Ze,o=Ze,u=[],we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe)),a!==n)for(;a!==n;)u.push(a),we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe));else u=n;u!==n?(r.substr(Ze,2)===Ee?(a=Ee,Ze+=2):(a=n,0===ze&&qe($e)),a===n&&(61===r.charCodeAt(Ze)?(a=m,Ze++):(a=n,0===ze&&qe(v))),a===n&&(a=null),a!==n?o=u=[u,a]:(Ze=o,o=n)):(Ze=o,o=n),(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=Wn(s)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),e!==n&&(t,e=$r(e)),t=e)))),t}function An(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,123===r.charCodeAt(Ze)?(o="{",Ze++):(o=n,0===ze&&qe(Lr)),o!==n){for(u=[],(a=An())===n&&(Br.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Sr)));a!==n;)u.push(a),(a=An())===n&&(Br.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Sr)));u!==n?(125===r.charCodeAt(Ze)?(a="}",Ze++):(a=n,0===ze&&qe(Tr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=$r(e)),t=e}function dn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,s=Ze,91===r.charCodeAt(Ze)?(o=_r,Ze++):(o=n,0===ze&&qe(Or)),o!==n&&(u=Pn())!==n?(93===r.charCodeAt(Ze)?(a=Rr,Ze++):(a=n,0===ze&&qe(Zr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n),s===n)if(s=Ze,91===r.charCodeAt(Ze)?(o=_r,Ze++):(o=n,0===ze&&qe(Or)),o!==n)if((u=Pn())!==n)if(123===r.charCodeAt(Ze)?(a="{",Ze++):(a=n,0===ze&&qe(Lr)),a!==n){for(c=[],(i=dn())===n&&(jr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(Nr)));i!==n;)c.push(i),(i=dn())===n&&(jr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(Nr)));c!==n?(93===r.charCodeAt(Ze)?(i=Rr,Ze++):(i=n,0===ze&&qe(Zr)),i!==n?s=o=[o,u,a,c,i]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=$r(e)),t=e}function gn(){var t,e,s,o,u,a,c;if(ze++,t=Ze,e=Ze,s=[],zr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(Dr)),o!==n)for(;o!==n;)s.push(o),zr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(Dr));else s=n;if((e=s!==n?r.substring(e,Ze):s)!==n)if((s=zn())!==n)if((o=ln())!==n){for(u=[],a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);u!==n&&(a=Dn())!==n?(t,t=e=function(r,t,e){if(Mn&&!(r.toLowerCase()in Mn.functions))throw Object.assign(new Error(`"${r}" is an unknown function in OData URL spec (strict mode)`),{statusCode:400});return{func:r.toLowerCase(),args:[t,...e]}}(e,o,u)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(kr)),t}function mn(){var t,e;return t=Ze,Pn()!==n?("not"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Jr)),e!==n&&Fn()!==n?(t,t="not"):(Ze=t,t=n)):(Ze=t,t=n),t}function vn(){var t,e;return t=Ze,Fn()!==n?("and"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Qr)),e!==n&&Fn()!==n?(t,t="and"):(Ze=t,t=n)):(Ze=t,t=n),t}function bn(){var r,t;return r=Ze,(t=Fn())!==n&&(r,t="and"),r=t}function yn(){var t,e;return t=Ze,Fn()!==n?("or"===r.substr(Ze,2).toLowerCase()?(e=r.substr(Ze,2),Ze+=2):(e=n,0===ze&&qe(Wr)),e!==n&&Fn()!==n?(t,t="or"):(Ze=t,t=n)):(Ze=t,t=n),t}function Cn(){var t,e,s;return t=Ze,r.substr(Ze,9)===Gr?(e=Gr,Ze+=9):(e=n,0===ze&&qe(Hr)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=wn())!==n){for(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={aggregate:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===Kr?(e=Kr,Ze+=7):(e=n,0===ze&&qe(Vr)),e!==n?(s=function(){var r,t,e,s,o,u,a,c;if(r=Ze,(t=zn())!==n)if(zn()!==n)if((e=Bn())!==n){for(s=[],o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);s!==n?(o=Ze,(u=Dn())!==n&&(o,i=s,u={groupBy:[e,...i]}),(o=u)!==n?(u=Ze,(a=kn())!==n&&(c=cn())!==n?(u,u=a=c):(Ze=u,u=n),u===n&&(u=null),u!==n&&(a=Dn())!==n?(r,t=function(r,t,e){let n={};return n=e?{groupBy:[r,...t],...e.apply}:{groupBy:[r,...t]},n}(e,s,u),r=t):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var i;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===rt?(e=rt,Ze+=6):(e=n,0===ze&&qe(tt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=en())!==n&&t,(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={where:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===et?(e=et,Ze+=6):(e=n,0===ze&&qe(nt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=rn())!==n&&(t,e=function(r){if(r)return r}(e)),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={search:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===st?(e=st,Ze+=6):(e=n,0===ze&&qe(ot)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=cn())!==n){if(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n),s!==n)for(;s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n);else e=n;e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={concat:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===ut?(e=ut,Ze+=7):(e=n,0===ze&&qe(at)),e!==n?(s=function(){var r,t,e,s,o,u,a,c,i,f;if(r=Ze,(t=zn())!==n)if((e=Pn())!==n)if((s=Sn())!==n){for(o=[],u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);o!==n&&(u=Pn())!==n&&(a=Dn())!==n?r=t=[t,e,s,o,u,a]:(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"top"===r.substr(Ze,3)?(e="top",Ze+=3):(e=n,0===ze&&qe(ct)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ke())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{rows:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,4)===it?(e=it,Ze+=4):(e=n,0===ze&&qe(ft)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ve())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{offset:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===lt?(e=lt,Ze+=7):(e=n,0===ze&&qe(ht)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=an())!==n){for(e=[],s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={orderBy:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"topcount"===r.substr(Ze,8).toLowerCase()?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(pt)),e===n&&("bottomcount"===r.substr(Ze,11).toLowerCase()?(e=r.substr(Ze,11),Ze+=11):(e=n,0===ze&&qe(At)),e===n&&("topsum"===r.substr(Ze,6).toLowerCase()?(e=r.substr(Ze,6),Ze+=6):(e=n,0===ze&&qe(dt)),e===n&&("bottomsum"===r.substr(Ze,9).toLowerCase()?(e=r.substr(Ze,9),Ze+=9):(e=n,0===ze&&qe(gt)),e===n&&("toppercent"===r.substr(Ze,10).toLowerCase()?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(mt)),e===n&&("bottompercent"===r.substr(Ze,13).toLowerCase()?(e=r.substr(Ze,13),Ze+=13):(e=n,0===ze&&qe(vt))))))),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n&&(t=ln())!==n&&Pn()!==n&&kn()!==n&&Pn()!==n&&(e=ln())!==n&&Pn()!==n&&Dn()!==n?(r,r=[t,e]):(Ze=r,r=n);return r}(),s!==n?(t,t=e=function(r,t){if(!{topcount:!0,bottomcount:!0,topsum:!1,bottomsum:!1,toppercent:!1,bottompercent:!1}[r=r.toLowerCase()])throw Object.assign(new Error(`Transformation "${r}" in $apply is not yet supported.`),{statusCode:501});return{aggregate:[{func:r,args:t}]}}(e,s)):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,e=function(){var t,e;t=Ze,r.substr(Ze,8)===_t?(e=_t,Ze+=8):(e=n,0===ze&&qe(Ot));e!==n&&(t,e={identity:!0});return t=e}(),e!==n&&t,t=e)))))))))),t}function wn(){var t,e,s,o;return t=Ze,e=Ze,r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n&&(o=Ln())!==n?(e,e=s={func:"count",args:[{val:1}],as:o}):(Ze=e,e=n),e===n&&(e=xn()),e!==n&&t,t=e}function xn(){var r,t,e,s,o;return r=Ze,(t=hn())!==n?((e=En())===n&&(e=null),e!==n?((s=$n())===n&&(s=null),s!==n?((o=Ln())===n&&(o=null),o!==n?(r,r=t={func:e,args:[t],as:o}):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n),r===n&&(r=Ze,(t=Rn())!==n&&(e=zn())!==n&&(s=xn())!==n&&(o=Dn())!==n?r=t=[t,e,s,o]:(Ze=r,r=n)),r}function En(){var t,e,s,o,u;if(t=Ze,Fn()!==n)if(r.substr(Ze,4)===yt?(e=yt,Ze+=4):(e=n,0===ze&&qe(Ct)),e!==n)if(Fn()!==n){if(s=Ze,o=[],zr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Dr)),u!==n)for(;u!==n;)o.push(u),zr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Dr));else o=n;(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=s.toLowerCase()):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return t}function $n(){var t,e,s,o,u,a,c;return t=Ze,(e=Fn())!==n?(r.substr(Ze,4)===wt?(s=wt,Ze+=4):(s=n,0===ze&&qe(xt)),s!==n&&(o=Fn())!==n&&(u=hn())!==n&&(a=En())!==n?((c=$n())===n&&(c=null),c!==n?t=e=[e,s,o,u,a,c]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n),t}function Ln(){var t,e,s;return t=Ze,Fn()!==n?("as"===r.substr(Ze,2)?(e="as",Ze+=2):(e=n,0===ze&&qe(Et)),e!==n&&Fn()!==n&&(s=Rn())!==n?(t,t=s):(Ze=t,t=n)):(Ze=t,t=n),t}function Bn(){var t,e;return t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l,h;t=Ze,e=Ze,r.substr(Ze,6)===$t?(s=$t,Ze+=6):(s=n,0===ze&&qe(Lt));if(s!==n)if((o=zn())!==n)if((u=Pn())!==n)if(r.substr(Ze,4)===Bt?(a=Bt,Ze+=4):(a=n,0===ze&&qe(St)),a===n&&(a=hn()),a!==n){if(c=[],i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n);else c=n;c!==n&&(i=Pn())!==n&&(f=Dn())!==n?e=s=[s,o,u,a,c,i,f]:(Ze=e,e=n)}else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;e!==n&&(t,e=function(r){const t=new Error("Rollup in groupby is not supported yet.");throw t.statusCode=501,t}());return t=e}(),e===n&&(e=hn()),e!==n&&t,t=e}function Sn(){var r,t,e;return r=Ze,(t=nn())!==n&&(e=Ln())!==n?r=t=[t,e]:(Ze=r,r=n),r}function Tn(){var t,e;return t=Ze,r.substr(Ze,4)===Zt?(e=Zt,Ze+=4):(e=n,0===ze&&qe(jt)),e===n&&(r.substr(Ze,5)===Nt?(e=Nt,Ze+=5):(e=n,0===ze&&qe(kt))),e!==n&&(t,e="true"===e),t=e}function _n(){var t,e,s,o,u;if(ze++,t=Ze,39===r.charCodeAt(Ze)?(e=Dt,Ze++):(e=n,0===ze&&qe(Pt)),e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));u!==n;)o.push(u),r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=s.replace(/''/g,"'")):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(zt)),t}function On(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce)),o===n&&(o=null),o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;u!==n?s=o=[o,u]:(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=parseInt(e)),t=e}function Rn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,ze++,s=Tn(),ze--,s===n?e=void 0:(Ze=e,e=n),e!==n)if(s=Ze,ze++,o=Zn(),ze--,o===n?s=void 0:(Ze=s,s=n),s!==n){if(o=Ze,u=Ze,fe.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(le)),a!==n){for(c=[],he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));i!==n;)c.push(i),he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));c!==n?u=a=[a,c]:(Ze=u,u=n)}else Ze=u,u=n;(o=u!==n?r.substring(o,Ze):u)!==n?(t,t=e=o):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Zn(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d;return t=Ze,e=Ze,(s=jn())!==n&&(o=jn())!==n?(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u===n&&(u=null),u!==n&&(a=jn())!==n?(45===r.charCodeAt(Ze)?(c=re,Ze++):(c=n,0===ze&&qe(te)),c===n&&(c=null),c!==n&&(i=jn())!==n?(45===r.charCodeAt(Ze)?(f=re,Ze++):(f=n,0===ze&&qe(te)),f===n&&(f=null),f!==n&&(l=jn())!==n?(45===r.charCodeAt(Ze)?(h=re,Ze++):(h=n,0===ze&&qe(te)),h===n&&(h=null),h!==n&&(p=jn())!==n&&(A=jn())!==n&&(d=jn())!==n?e=s=[s,o,u,a,c,i,f,l,h,p,A,d]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function jn(){var t,e,s,o,u,a;return t=Ze,e=Ze,Ae.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(de)),s!==n?(Ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(de)),o!==n?(Ae.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(de)),u!==n?(Ae.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(de)),a!==n?e=s=[s,o,u,a]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function Nn(){var t,e,s,o;if(t=Ze,e=Ze,s=[],ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me)),o!==n)for(;o!==n;)s.push(o),ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me));else s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e={val:e}),t=e}function kn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(44===r.charCodeAt(Ze)?(s=",",Ze++):(s=n,0===ze&&qe(Le)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function zn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(40===r.charCodeAt(Ze)?(s="(",Ze++):(s=n,0===ze&&qe(Be)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function Dn(){var t,e,s;return t=Ze,(e=Pn())!==n?(41===r.charCodeAt(Ze)?(s=")",Ze++):(s=n,0===ze&&qe(Se)),s!==n?t=e=[e,s]:(Ze=t,t=n)):(Ze=t,t=n),t}function Pn(){var t,e,s;for(ze++,t=Ze,e=[],_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));s!==n;)e.push(s),_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Te)),t}function Fn(){var t,e,s;if(ze++,t=Ze,e=[],_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe)),s!==n)for(;s!==n;)e.push(s),_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));else e=n;return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Re)),t}const Un=Object.assign,{strict:Mn,minimal:qn}=t,In=[];let Yn,Xn;const Jn=["$value"],Qn=t.safeNumber||function(r){const t=Number(r);return Number.isSafeInteger(t)?t:r},Wn=t.standardBase64||function(r){return Buffer.from(r,"base64").toString("base64")},Gn=r=>t=>r===t||r.as&&t.as&&r.as===t.as||t.as&&r.ref&&t.as===r.ref[r.ref.length-1]||r.ref&&t.ref&&r.ref.join("")===t.ref.join(""),Hn=r=>t=>{if(Array.isArray(t))return t.map(Hn(r));const e=t.ref&&r.find((r=>r.as&&r.func&&r.as===t.ref[0]));return e||t},Kn=r=>t=>Array.isArray(t)?t.map(Kn(r)):t.ref&&!r.find(Gn(t))?{val:null}:t,Vn=(r,t)=>{if(1===t.ref.length)r.find(Gn(t))||r.push(t);else{const e=t.ref.shift(),n=r.find((r=>r.ref&&r.ref[0]===e));if(n)Vn(n.expand,t);else{const n={ref:[e],expand:[]};Vn(n.expand,t),r.push(n)}}},rs=(r,t,e=!1)=>{let n=ns({from:r.from},t,e);if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ts(n[t],r,e);else n=ts(n,r,e);return n},ts=(r,t,e)=>{if(!t)return r;t.apply&&delete t.apply;let n={};t.columns&&"$count"===t.columns[0].as||r.SELECT.where&&t.where||r.SELECT.limit&&t.limit||r.SELECT.orderBy&&t.orderBy||r.SELECT.search&&t.search?n.from=r:n=r.SELECT;for(const r in t)"columns"===r?(t.columns=t.columns.map((r=>n.columns&&n.columns.find((t=>r.ref&&r.ref[0]===t.as||t.ref&&r.ref&&r.ref[0]===t.ref[0]&&!r.expand))||r)),n.columns&&n.groupBy&&t.columns.push(...n.columns.filter((r=>e&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))&&!t.columns.some((t=>t.ref&&t.ref[0]===r.as||t.ref&&r.ref&&t.ref[0]===r.ref[0]||t.as&&t.as===r.as))))||[]),n.columns=t.columns):"from"!==r&&(n[r]=t[r]);const s=[...n.columns&&n.columns.filter((r=>n.groupBy&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))))||[],...n.columns&&n.columns.filter((r=>r&&"object"==typeof r&&"func"in r))||[]];return es(n,s,e),{SELECT:n}},es=(r,t,e)=>{t.length&&(r.columns=r.columns&&!e?r.columns.reduce(((r,e)=>{const n=t.find(Gn(e));return n&&r.push(n),r}),[]):t,r.where&&(r.where=r.where.map(Hn(r.columns)),r.groupBy&&(r.having=r.where.map(Kn(r.groupBy)),delete r.where)),r.columns=r.columns.reduce(((r,e)=>(e.ref&&e.ref.length>1&&t.find(Gn(e))?Vn(r,{ref:[...e.ref]}):r.push(e),r)),[]))},ns=(r,t,e)=>{if(!t)return;if(r.apply&&delete r.apply,t.identity&&r.from.SELECT&&(r=r.from.SELECT),(t.apply||t.where&&r.where||t.search&&r.search||t.limit&&r.limit||t.orderBy&&r.orderBy)&&(r.from={SELECT:{...r}}),t.where&&(r.where=t.where),t.search&&(r.search=t.search),t.groupBy){r.groupBy=[];for(const e of t.groupBy)r.groupBy.find(Gn(e))||r.groupBy.push(e)}t.limit&&(r.limit=t.limit),t.orderBy&&(r.orderBy=t.orderBy);const n=[...r.groupBy||[],...t.aggregate||[]];if(es(r,n,e),t.apply&&r.from&&ns(r.from.SELECT,t.apply),t.concat&&Array.isArray(t.concat)){const e=[];for(let n of t.concat){n.from=1===Object.keys(r).length?r.from:{SELECT:r};const t=ns(n,n.apply);Array.isArray(t)?e.push(...t):e.push(t)}r=e}return Array.isArray(r)?r:{SELECT:r}},ss=r=>{Yn.limit&&Yn.limit.offset&&Yn.limit.offset.val&&(r+=Yn.limit.offset.val),(Yn.limit||(Yn.limit={})).offset={val:r}},os=(r,t=!1)=>{Yn.orderBy=Yn.orderBy?t?[r,...Yn.orderBy]:[...Yn.orderBy,r]:[r]},us=(r,t)=>{for(const e of t)e.ref&&e.ref[0]===r&&e.ref.shift(),e.func&&us(r,e.args);return t};if((e=o())!==n&&Ze===r.length)return e;throw e!==n&&Ze<r.length&&qe({type:"end"}),Ie(ke,Ne<r.length?r.charAt(Ne):null,Ne<r.length?Me(Ne,Ne+1):Me(Ne,Ne))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(r){return'"'+s(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?o(r.parts[t][0])+"-"+o(r.parts[t][1]):o(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function s(r){return r.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(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}function o(r){return r.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(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}return"Expected "+function(r){var t,n,s,o=new Array(r.length);for(t=0;t<r.length;t++)o[t]=(s=r[t],e[s.type](s));if(o.sort(),o.length>0){for(t=1,n=1;t<o.length;t++)o[t-1]!==o[t]&&(o[n]=o[t],n++);o.length=n}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(r)+" but "+function(r){return r?'"'+s(r)+'"':"end of input"}(t)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|