@sap/cds-dk 8.2.3 → 8.4.0
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 +66 -11
- package/bin/build.js +1 -1
- package/bin/cds.js +17 -4
- package/bin/compile/index.js +12 -3
- package/bin/deploy/index.js +22 -3
- package/bin/env.js +3 -2
- package/bin/import.js +24 -14
- package/bin/init.js +8 -4
- package/bin/repl.js +21 -8
- package/bin/util/fuzzySearch.js +8 -5
- package/lib/build/plugins/helm/files/subcharts/content-deployment/Chart.yaml +1 -1
- package/lib/build/plugins/helm/files/subcharts/content-deployment/values.schema.json +1 -1
- package/lib/build/plugins/helm/files/subcharts/content-deployment/values.yaml +1 -1
- package/lib/build/plugins/helm/files/subcharts/web-application/Chart.yaml +1 -1
- package/lib/build/plugins/helm/files/subcharts/web-application/templates/virtual-service.yaml +23 -12
- package/lib/build/plugins/helm/files/subcharts/web-application/values.schema.json +1 -1
- package/lib/build/plugins/helm/files/subcharts/web-application/values.yaml +2 -2
- package/lib/build/util.js +32 -20
- package/lib/compile/to-mermaid.js +87 -0
- package/lib/deploy/to-hana/hana.js +2 -21
- package/lib/env/schemas/cds-rc.js +174 -2
- package/lib/import/asyncapi/parserContext.js +4 -30
- package/lib/import/common.js +2 -2
- package/lib/import/importapi.js +3 -3
- package/lib/import/odata/v2parser.js +3 -2
- package/lib/import/openapi/importOpenAPI.js +622 -537
- package/lib/import/openapi/utilities.js +7 -2
- package/lib/init/constants.js +2 -1
- package/lib/init/index.js +4 -0
- package/lib/init/merge.js +2 -2
- package/lib/init/mvn.js +2 -2
- package/lib/init/projectReader.js +2 -1
- package/lib/init/registries/mta.js +8 -1
- package/lib/init/registries/xs-app.js +10 -0
- package/lib/init/template/approuter/files/package.json +1 -1
- package/lib/init/template/cf-manifest/files/manifest.yml.hbs +3 -1
- package/lib/init/template/cf-manifest/index.js +2 -0
- package/lib/init/template/cloud-logging/files/mta.yaml.hbs +13 -2
- package/lib/init/template/cloud-logging/files/{package.json → package.json.hbs} +5 -1
- package/lib/init/template/cloud-logging/index.js +4 -3
- package/lib/init/template/data/as-csv.js +6 -0
- package/lib/init/template/data/as-json.js +8 -1
- package/lib/init/template/data/index.js +1 -1
- package/lib/init/template/destination/files/mta.yaml.hbs +5 -5
- package/lib/init/template/dynatrace/files/mta.yaml.hbs +22 -6
- package/lib/init/template/dynatrace/files/package.json.hbs +5 -2
- package/lib/init/template/dynatrace/files/values.yaml +15 -0
- package/lib/init/template/dynatrace/index.js +10 -5
- package/lib/init/template/enterprise-messaging-shared/index.js +1 -1
- package/lib/init/template/file-based-messaging/index.js +1 -1
- package/lib/init/template/hana/files/package.json.hbs +2 -0
- package/lib/init/template/hana/index.js +1 -1
- package/lib/init/template/handler/index.js +16 -1
- package/lib/init/template/helm/files/values.yaml.hbs +2 -2
- package/lib/init/template/helm/index.js +6 -1
- package/lib/init/template/html5-repo/files/app-package.json.hbs +3 -1
- package/lib/init/template/html5-repo/files/ui5-deploy.yaml.hbs +7 -0
- package/lib/init/template/html5-repo/index.js +3 -1
- package/lib/init/template/local-messaging/index.js +1 -1
- package/lib/init/template/mta/files/mta.yaml.hbs +1 -1
- package/lib/init/template/mta/index.js +2 -0
- package/lib/init/template/nodejs/files/.vscode/extensions.json +0 -5
- package/lib/init/template/nodejs/files/.vscode/settings.json +1 -1
- package/lib/init/template/nodejs/files/.vscode/tasks.json +0 -2
- package/lib/init/template/nodejs/files/package.json.hbs +1 -1
- package/lib/init/template/postgres/index.js +1 -1
- package/lib/init/template/redis-messaging/index.js +1 -1
- package/lib/init/template/side-by-side-extensibility/files/mta.yaml.hbs +40 -0
- package/lib/init/template/side-by-side-extensibility/files/package.json.hbs +17 -0
- package/lib/init/template/side-by-side-extensibility/index.js +34 -0
- package/lib/init/template/typer/index.js +2 -1
- package/lib/init/template/typescript/files/package.json +2 -2
- package/lib/init/template/workzone-standard/files/manifest.json.hbs +15 -1
- package/lib/init/template/workzone-standard/files/mta.yaml.hbs +11 -2
- package/lib/init/template/workzone-standard/files/xs-app.json.hbs +18 -0
- package/lib/init/template/workzone-standard/index.js +25 -7
- package/lib/init/template/xsuaa/index.js +1 -1
- package/lib/mtx/auth_manager.js +7 -5
- package/lib/mtx/util/errors.js +4 -4
- package/lib/util/fs.js +1 -1
- package/lib/util/jsonc.js +1 -1
- package/lib/util/jsonc.pegjs +6 -2
- package/npm-shrinkwrap.json +78 -149
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ module.exports = class PostgresTemplate extends require('../../plugin') {
|
|
|
24
24
|
async run() {
|
|
25
25
|
const project = readProject()
|
|
26
26
|
const { configFile, isJava } = project
|
|
27
|
-
project.shortcut =
|
|
27
|
+
project.shortcut = typeof (await read(configFile)).cds?.requires?.db !== 'object'
|
|
28
28
|
await merge(__dirname, 'files/package.json.hbs').into('package.json', { project })
|
|
29
29
|
if (isJava) await mvn.add('postgresql')
|
|
30
30
|
}
|
|
@@ -28,7 +28,7 @@ module.exports = class RedisMessagingTemplate extends require('../../plugin') {
|
|
|
28
28
|
async run() {
|
|
29
29
|
const project = readProject()
|
|
30
30
|
const { configFile } = project
|
|
31
|
-
project.shortcut =
|
|
31
|
+
project.shortcut = typeof (await read(configFile)).cds?.requires?.messaging !== 'object'
|
|
32
32
|
await merge(__dirname, 'files/package.json.hbs').into(configFile, { project })
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
modules:
|
|
3
|
+
- name: {{appName}}-srv
|
|
4
|
+
type: {{language}}
|
|
5
|
+
path: {{& srvPath}}
|
|
6
|
+
provides:
|
|
7
|
+
- name: srv-api # required by consumers of CAP services (e.g. approuter)
|
|
8
|
+
properties:
|
|
9
|
+
srv-url: ${default-url}
|
|
10
|
+
|
|
11
|
+
- name: {{appName}}-destinations
|
|
12
|
+
type: com.sap.application.content
|
|
13
|
+
requires:
|
|
14
|
+
- name: {{appName}}-auth
|
|
15
|
+
parameters:
|
|
16
|
+
service-key:
|
|
17
|
+
name: {{appName}}-auth-key
|
|
18
|
+
- name: srv-api
|
|
19
|
+
- name: {{appName}}-destination
|
|
20
|
+
parameters:
|
|
21
|
+
content-target: true
|
|
22
|
+
build-parameters:
|
|
23
|
+
no-source: true
|
|
24
|
+
parameters:
|
|
25
|
+
content:
|
|
26
|
+
subaccount:
|
|
27
|
+
existing_destinations_policy: update
|
|
28
|
+
destinations:
|
|
29
|
+
- Name: {{appName}}-side-by-side-extensibility
|
|
30
|
+
URL: ~{srv-api/srv-url}
|
|
31
|
+
Authentication: OAuth2ClientCredentials
|
|
32
|
+
TokenServiceInstanceName: {{appName}}-auth
|
|
33
|
+
TokenServiceKeyName: {{appName}}-auth-key
|
|
34
|
+
|
|
35
|
+
resources:
|
|
36
|
+
- name: {{appName}}-destination
|
|
37
|
+
type: org.cloudfoundry.managed-service
|
|
38
|
+
parameters:
|
|
39
|
+
service: destination
|
|
40
|
+
service-plan: lite
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const { readProject } = require('../../projectReader')
|
|
2
|
+
const { merge } = require('../../merge')
|
|
3
|
+
const { destinations, destinationSideBySideExtensibility } = require('../../registries/mta')
|
|
4
|
+
|
|
5
|
+
module.exports = class extends require('../../plugin') {
|
|
6
|
+
|
|
7
|
+
requires() {
|
|
8
|
+
return ['destination']
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
static help() {
|
|
12
|
+
return 'logic extensibility via extension points'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static hasInProduction(env) {
|
|
16
|
+
return !!env.requires['side-by-side-extensibility']
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
canRun() {
|
|
20
|
+
const { isNodejs } = readProject()
|
|
21
|
+
if (isNodejs) throw 'Side-by-side extensibility is not supported for Node.js yet.'
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async run() {
|
|
25
|
+
const project = readProject()
|
|
26
|
+
const { configFile } = project
|
|
27
|
+
await merge(__dirname, 'files/package.json.hbs').into(configFile, { with: project })
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async combine() {
|
|
31
|
+
const project = readProject()
|
|
32
|
+
await merge(__dirname, 'files/mta.yaml.hbs').into('mta.yaml', { with: project, additions: [destinations, destinationSideBySideExtensibility]})
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { join } = require('path')
|
|
2
2
|
const { readProject } = require('../../projectReader')
|
|
3
3
|
const { merge, mergeGitignore } = require('../../merge')
|
|
4
|
-
const { warn, dim } = require('../../../util/term')
|
|
4
|
+
const { warn, dim, bold } = require('../../../util/term')
|
|
5
5
|
const { TYPER } = require('../../constants').OPTIONS
|
|
6
6
|
const { exists, read } = require('../../../cds').utils
|
|
7
7
|
|
|
@@ -30,6 +30,7 @@ module.exports = class TyperTemplate extends require('../../plugin') {
|
|
|
30
30
|
await merge(template('package.json')).into('package.json')
|
|
31
31
|
await mergeGitignore('.gitignore', template('gitignore'))
|
|
32
32
|
console.log(dim(` Adding '@cds-models' to .gitignore to ignore generated types`)) // REVISIT: other facets are silent wrt. what they change
|
|
33
|
+
console.log(dim(' Added new dependencies to the project. Run ') + bold('npm i') + dim(' to install.'))
|
|
33
34
|
try {
|
|
34
35
|
await merge(source).into(target)
|
|
35
36
|
} catch (e) {
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
+
"sap.app": {
|
|
3
|
+
"crossNavigation": {
|
|
4
|
+
"inbounds": {
|
|
5
|
+
"{{uiApp}}-display": {
|
|
6
|
+
"semanticObject": "{{uiApp}}",
|
|
7
|
+
"action": "display",
|
|
8
|
+
"signature": {
|
|
9
|
+
"parameters": {},
|
|
10
|
+
"additionalParameters": "allowed"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
2
16
|
"sap.cloud": {
|
|
3
17
|
"public": true,
|
|
4
|
-
"service": "{{
|
|
18
|
+
"service": "{{strippedAppName}}.service"
|
|
5
19
|
}
|
|
6
20
|
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
modules:
|
|
3
|
+
- name: {{appName}}-srv
|
|
4
|
+
type: {{language}}
|
|
5
|
+
path: {{& srvPath}}
|
|
6
|
+
provides:
|
|
7
|
+
- name: srv-api # required by consumers of CAP services (e.g. approuter)
|
|
8
|
+
properties:
|
|
9
|
+
srv-url: ${default-url}
|
|
10
|
+
|
|
3
11
|
- name: {{appName}}-destinations
|
|
4
12
|
type: com.sap.application.content
|
|
5
13
|
requires:
|
|
@@ -25,13 +33,14 @@ modules:
|
|
|
25
33
|
- Name: {{appName}}-html5-repository
|
|
26
34
|
ServiceInstanceName: {{appName}}-html5-repo-host
|
|
27
35
|
ServiceKeyName: {{appName}}-html5-repo-host-key
|
|
28
|
-
sap.cloud.service: {{
|
|
36
|
+
sap.cloud.service: {{strippedAppName}}.service
|
|
29
37
|
- Name: {{appName}}-auth
|
|
30
38
|
Authentication: OAuth2UserTokenExchange
|
|
31
39
|
ServiceInstanceName: {{appName}}-auth
|
|
32
40
|
ServiceKeyName: {{appName}}-auth-key
|
|
33
|
-
sap.cloud.service: {{
|
|
41
|
+
sap.cloud.service: {{strippedAppName}}.service
|
|
34
42
|
|
|
43
|
+
resources:
|
|
35
44
|
- name: {{appName}}-destination
|
|
36
45
|
type: org.cloudfoundry.managed-service
|
|
37
46
|
parameters:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"authenticationMethod": "route",
|
|
3
|
+
"routes": [
|
|
4
|
+
{
|
|
5
|
+
"source": "^/?odata/(.*)$",
|
|
6
|
+
"target": "/odata/$1",
|
|
7
|
+
"destination": "{{appName}}-srv-api",
|
|
8
|
+
{{#hasXsuaa}}"authenticationType": "xsuaa",{{/hasXsuaa}}
|
|
9
|
+
"csrfProtection": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"source": "^(.*)$",
|
|
13
|
+
"target": "$1",
|
|
14
|
+
"service": "html5-apps-repo-rt"{{#hasXsuaa}},
|
|
15
|
+
"authenticationType": "xsuaa"{{/hasXsuaa}}
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -2,7 +2,8 @@ const cds = require('../../../cds')
|
|
|
2
2
|
const { readProject } = require('../../projectReader')
|
|
3
3
|
const { merge } = require('../../merge')
|
|
4
4
|
const { join } = require('path')
|
|
5
|
-
const { destination, destinations } = require('../../registries/mta')
|
|
5
|
+
const { destination, destinations, srv4 } = require('../../registries/mta')
|
|
6
|
+
const { odataApi } = require('../../registries/xs-app')
|
|
6
7
|
|
|
7
8
|
module.exports = class extends require('../../plugin') {
|
|
8
9
|
|
|
@@ -28,19 +29,36 @@ module.exports = class extends require('../../plugin') {
|
|
|
28
29
|
async run() {
|
|
29
30
|
const project = readProject()
|
|
30
31
|
const { appUIPaths, appPath } = project
|
|
31
|
-
await Promise.all(appUIPaths.map(p =>
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
await Promise.all(appUIPaths.map(p => {
|
|
33
|
+
project.uiApp = p
|
|
34
|
+
return merge(__dirname, 'files/manifest.json.hbs').into(join(appPath, p, 'webapp/manifest.json'), { project })
|
|
35
|
+
}))
|
|
34
36
|
await merge({ cds: { requires: { workzone: true } } }).into('package.json')
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
async combine() {
|
|
38
40
|
const project = readProject()
|
|
39
|
-
const { hasMta } = project
|
|
41
|
+
const { hasMta, srvPath, apps, appPath } = project
|
|
42
|
+
|
|
43
|
+
await Promise.all(apps.map(async ({app}) => {
|
|
44
|
+
const additions = [odataApi]
|
|
45
|
+
const overwrites = [{
|
|
46
|
+
item: [odataApi, 'destination'],
|
|
47
|
+
withValue: `${project.appName}-srv-api`
|
|
48
|
+
}]
|
|
49
|
+
project.app = app
|
|
50
|
+
await merge(__dirname, 'files/xs-app.json.hbs').into(join(appPath, app, 'xs-app.json'), { with: project, additions, overwrites })
|
|
51
|
+
}))
|
|
40
52
|
|
|
41
53
|
if (hasMta) {
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
const srv = srv4(srvPath)
|
|
55
|
+
const additions = [srv, destinations, destination,
|
|
56
|
+
{
|
|
57
|
+
in: [destination, 'requires'],
|
|
58
|
+
where: { name: 'srv-api' }
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
await merge(__dirname, 'files/mta.yaml.hbs').into('mta.yaml', { with: project, additions })
|
|
44
62
|
}
|
|
45
63
|
}
|
|
46
64
|
}
|
|
@@ -17,7 +17,7 @@ module.exports = class XsuaaTemplate extends require('../../plugin') {
|
|
|
17
17
|
async run() {
|
|
18
18
|
const project = readProject()
|
|
19
19
|
const { configFile } = project
|
|
20
|
-
project.shortcut =
|
|
20
|
+
project.shortcut = typeof (await read(configFile)).cds?.requires?.auth !== 'object'
|
|
21
21
|
await merge(__dirname, 'files/package.json.hbs').into(configFile, { project, forceOverwrite: true })
|
|
22
22
|
}
|
|
23
23
|
|
package/lib/mtx/auth_manager.js
CHANGED
|
@@ -67,7 +67,7 @@ function reqParams(method, params) {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
async function fetchToken(params) {
|
|
70
|
-
if (params.has('token') || !(params.has('refreshToken') || params.has('passcode') || !params.has('passcodeUrl'))) {
|
|
70
|
+
if (params.has('token') || !(params.has('refreshToken') || params.has('passcode') || params.has('clientid') || !params.has('passcodeUrl'))) {
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -99,18 +99,20 @@ async function fetchToken(params) {
|
|
|
99
99
|
if (error) {
|
|
100
100
|
let message;
|
|
101
101
|
if (REASONS.invalid_scope.test(error.message)) {
|
|
102
|
-
message = 'token has invalid scope.
|
|
102
|
+
message = 'token has invalid scope. Ensure your user has the required roles';
|
|
103
103
|
} else if (error.status === 404) {
|
|
104
|
-
message = 'token endpoint not found.
|
|
104
|
+
message = 'token endpoint not found. Ensure that MTX is running with extensibility enabled';
|
|
105
105
|
} else if (error.message.includes('<html')) { // should already be caught when fetching passcode URL
|
|
106
|
-
message = 'HTML response received.
|
|
106
|
+
message = 'HTML response received. Ensure the route to MTX is configured correctly in App Router';
|
|
107
107
|
} else if (error.status === 401) {
|
|
108
108
|
message = `invalid credentials`;
|
|
109
109
|
if (params.has('passcode')) {
|
|
110
|
-
message += `.
|
|
110
|
+
message += `. Ensure the passcode is correct`;
|
|
111
111
|
if (params.has('passcodeUrl')) {
|
|
112
112
|
message += `. Passcode URL: ${params.get('passcodeUrl')}`;
|
|
113
113
|
}
|
|
114
|
+
} else if (params.has('clientid')) {
|
|
115
|
+
message += `. Ensure the client credentials are correct`;
|
|
114
116
|
}
|
|
115
117
|
} else {
|
|
116
118
|
message = 'error on token request';
|
package/lib/mtx/util/errors.js
CHANGED
|
@@ -5,11 +5,11 @@ function handleHttpError(error, params, { url, command } = {}) {
|
|
|
5
5
|
const prefix = `Request to ${url} failed`;
|
|
6
6
|
switch (error.status) {
|
|
7
7
|
case 401:
|
|
8
|
-
throw getMessage(`${prefix}: invalid authentication
|
|
9
|
-
params.has('
|
|
10
|
-
|
|
8
|
+
throw getMessage(`${prefix}: invalid authentication` + (
|
|
9
|
+
params.has('username') ? `. Ensure that username and password are correct` : ''
|
|
10
|
+
), { error, command });
|
|
11
11
|
case 403:
|
|
12
|
-
throw getMessage(prefix + ': insufficient authorization. Ensure
|
|
12
|
+
throw getMessage(prefix + ': insufficient authorization. Ensure the user has all necessary roles.', { error, command });
|
|
13
13
|
case 404:
|
|
14
14
|
throw getMessage(prefix + ': resource not found.', { error, command });
|
|
15
15
|
case 422:
|
package/lib/util/fs.js
CHANGED
|
@@ -27,7 +27,7 @@ module.exports = new class FsUtil {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
async writeYAML(dst, yaml) {
|
|
30
|
-
const content = YAML.stringify(yaml, { collectionStyle: 'block', lineWidth: 150 })
|
|
30
|
+
const content = YAML.stringify(yaml, { collectionStyle: 'block', lineWidth: 150, directives: false })
|
|
31
31
|
await write(content).to(dst)
|
|
32
32
|
}
|
|
33
33
|
|
package/lib/util/jsonc.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function peg$subclass(t,r){function e(){this.constructor=t}e.prototype=r.prototype,t.prototype=new e}function peg$SyntaxError(t,r,e,n){this.message=t,this.expected=r,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(t,r){r=void 0!==r?r:{};var e,n={},a={JSON:it},c=it,u=nt("{",!1),o=function(t,r,e){t[r]=e},s=nt("}",!1),h=nt("[",!1),i=function(t,r){t.push(r)},l=nt("]",!1),f=/^[+\-]/,A=at(["+","-"],!1,!1),p=/^[0-9]/,g=at([["0","9"]],!1,!1),d=nt(".",!1),C=nt("e",!1),v=ct("string"),x='"',b=nt('"',!1),y="\\",m=nt("\\",!1),E=nt("/",!1),S=nt("n",!1),$=nt("r",!1),F=nt("t",!1),w=nt("b",!1),R=nt("f",!1),j=nt("u",!1),k=/^[0-9a-f]/,M=at([["0","9"],["a","f"]],!1,!1),N=function(t){return String.fromCharCode(parseInt(t,16))},T=/^[^"]/,I=at(['"'],!0,!1),J="null",O=nt("null",!1),U="true",q=nt("true",!1),z="false",B=nt("false",!1),D=nt(":",!1),G=nt(",",!1),H=/^[ \t\n\r]/,K=at([" ","\t","\n","\r"],!1,!1),L=nt("//",!1),P=/^[\n\r\u2028\u2029]/,Q=at(["\n","\r","\u2028","\u2029"],!1,!1),V={type:"any"},W=nt("/*",!1),X="*/",Y=nt("*/",!1),Z=0,_=[{line:1,column:1}],tt=0,rt=[],et=0;if("startRule"in r){if(!(r.startRule in a))throw new Error("Can't start parsing from rule \""+r.startRule+'".');c=a[r.startRule]}function nt(t,r){return{type:"literal",text:t,ignoreCase:r}}function at(t,r,e){return{type:"class",parts:t,inverted:r,ignoreCase:e}}function ct(t){return{type:"other",description:t}}function ut(r){var e,n=_[r];if(n)return n;for(e=r-1;!_[e];)e--;for(n={line:(n=_[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return _[r]=n,n}function ot(t,r){var e=ut(t),n=ut(r);return{start:{offset:t,line:e.line,column:e.column},end:{offset:r,line:n.line,column:n.column}}}function st(t){Z<tt||(Z>tt&&(tt=Z,rt=[]),rt.push(t))}function ht(t,r,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(t,r),t,r,e)}function it(){var t,r;return t=Z,gt()!==n&&(r=lt())!==n&>()!==n?(t,t=r):(Z=t,t=n),t}function lt(){var r;return(r=function(){var r,e,a,c,h,i,l,f,A;r=Z,e=Z,(a=gt())!==n?(123===t.charCodeAt(Z)?(c="{",Z++):(c=n,0===et&&st(u)),c!==n&&(h=gt())!==n?(e,e=a={}):(Z=e,e=n)):(Z=e,e=n);if(e!==n){if(a=Z,c=Z,(h=ft())!==n&&(i=At())!==n&&(l=lt())!==n?(c,c=h=o(e,h,l)):(Z=c,c=n),c!==n){for(h=[],i=Z,(l=pt())!==n&&(f=ft())!==n&&At()!==n&&(A=lt())!==n?(i,i=l=o(e,f,A)):(Z=i,i=n);i!==n;)h.push(i),i=Z,(l=pt())!==n&&(f=ft())!==n&&At()!==n&&(A=lt())!==n?(i,i=l=o(e,f,A)):(Z=i,i=n);h!==n?((i=pt())===n&&(i=null),i!==n?a=c=[c,h,i]:(Z=a,a=n)):(Z=a,a=n)}else Z=a,a=n;a===n&&(a=null),a!==n&&(c=gt())!==n?(125===t.charCodeAt(Z)?(h="}",Z++):(h=n,0===et&&st(s)),h!==n&&(i=gt())!==n?(r,r=e=e):(Z=r,r=n)):(Z=r,r=n)}else Z=r,r=n;return r}())===n&&(r=function(){var r,e,a,c,u,o,s;r=Z,e=Z,(a=gt())!==n?(91===t.charCodeAt(Z)?(c="[",Z++):(c=n,0===et&&st(h)),c!==n&&(u=gt())!==n?(e,e=a=[]):(Z=e,e=n)):(Z=e,e=n);if(e!==n){if(a=Z,c=Z,(u=lt())!==n&&(c,u=i(e,u)),(c=u)!==n){for(u=[],o=Z,pt()!==n&&(s=lt())!==n?(o,o=i(e,s)):(Z=o,o=n);o!==n;)u.push(o),o=Z,pt()!==n&&(s=lt())!==n?(o,o=i(e,s)):(Z=o,o=n);u!==n?((o=pt())===n&&(o=null),o!==n?a=c=[c,u,o]:(Z=a,a=n)):(Z=a,a=n)}else Z=a,a=n;a===n&&(a=null),a!==n&&(c=gt())!==n?(93===t.charCodeAt(Z)?(u="]",Z++):(u=n,0===et&&st(l)),u!==n&&(o=gt())!==n?(r,r=e=e):(Z=r,r=n)):(Z=r,r=n)}else Z=r,r=n;return r}())===n&&(r=function(){var r,e;r=Z,t.substr(Z,4)===J?(e=J,Z+=4):(e=n,0===et&&st(O));e!==n&&(r,e=null);return r=e}())===n&&(r=function(){var r,e;r=Z,t.substr(Z,4)===U?(e=U,Z+=4):(e=n,0===et&&st(q));e!==n&&(r,e=!0);return r=e}())===n&&(r=function(){var r,e;r=Z,t.substr(Z,5)===z?(e=z,Z+=5):(e=n,0===et&&st(B));e!==n&&(r,e=!1);return r=e}())===n&&(r=function(){var r,e,a,c,u,o,s,h,i,l,v;r=Z,e=Z,a=Z,f.test(t.charAt(Z))?(c=t.charAt(Z),Z++):(c=n,0===et&&st(A));c===n&&(c=null);if(c!==n){if(u=[],p.test(t.charAt(Z))?(o=t.charAt(Z),Z++):(o=n,0===et&&st(g)),o!==n)for(;o!==n;)u.push(o),p.test(t.charAt(Z))?(o=t.charAt(Z),Z++):(o=n,0===et&&st(g));else u=n;if(u!==n){if(o=Z,46===t.charCodeAt(Z)?(s=".",Z++):(s=n,0===et&&st(d)),s!==n){if(h=[],p.test(t.charAt(Z))?(i=t.charAt(Z),Z++):(i=n,0===et&&st(g)),i!==n)for(;i!==n;)h.push(i),p.test(t.charAt(Z))?(i=t.charAt(Z),Z++):(i=n,0===et&&st(g));else h=n;h!==n?o=s=[s,h]:(Z=o,o=n)}else Z=o,o=n;if(o===n&&(o=null),o!==n){if(s=Z,101===t.charCodeAt(Z)?(h="e",Z++):(h=n,0===et&&st(C)),h!==n)if(f.test(t.charAt(Z))?(i=t.charAt(Z),Z++):(i=n,0===et&&st(A)),i===n&&(i=null),i!==n){if(l=[],p.test(t.charAt(Z))?(v=t.charAt(Z),Z++):(v=n,0===et&&st(g)),v!==n)for(;v!==n;)l.push(v),p.test(t.charAt(Z))?(v=t.charAt(Z),Z++):(v=n,0===et&&st(g));else l=n;l!==n?s=h=[h,i,l]:(Z=s,s=n)}else Z=s,s=n;else Z=s,s=n;s===n&&(s=null),s!==n?a=c=[c,u,o,s]:(Z=a,a=n)}else Z=a,a=n}else Z=a,a=n}else Z=a,a=n;e=a!==n?t.substring(e,Z):a;e!==n&&(r,e=Number(e));return r=e}())===n&&(r=ft()),r}function ft(){var r,e,a,c,u,o,s,h,i,l,f,A,p;if(et++,r=Z,34===t.charCodeAt(Z)?(e=x,Z++):(e=n,0===et&&st(b)),e!==n){for(a=[],c=Z,92===t.charCodeAt(Z)?(u=y,Z++):(u=n,0===et&&st(m)),u!==n?(34===t.charCodeAt(Z)?(o=x,Z++):(o=n,0===et&&st(b)),o===n&&(92===t.charCodeAt(Z)?(o=y,Z++):(o=n,0===et&&st(m)),o===n&&(47===t.charCodeAt(Z)?(o="/",Z++):(o=n,0===et&&st(E)),o===n&&(o=Z,110===t.charCodeAt(Z)?(s="n",Z++):(s=n,0===et&&st(S)),s!==n&&(o,s="\n"),(o=s)===n&&(o=Z,114===t.charCodeAt(Z)?(s="r",Z++):(s=n,0===et&&st($)),s!==n&&(o,s="\r"),(o=s)===n&&(o=Z,116===t.charCodeAt(Z)?(s="t",Z++):(s=n,0===et&&st(F)),s!==n&&(o,s="\t"),(o=s)===n&&(o=Z,98===t.charCodeAt(Z)?(s="b",Z++):(s=n,0===et&&st(w)),s!==n&&(o,s="\b"),(o=s)===n&&(o=Z,102===t.charCodeAt(Z)?(s="f",Z++):(s=n,0===et&&st(R)),s!==n&&(o,s="\f"),(o=s)===n&&(o=Z,117===t.charCodeAt(Z)?(s="u",Z++):(s=n,0===et&&st(j)),s!==n?(h=Z,i=Z,k.test(t.charAt(Z))?(l=t.charAt(Z),Z++):(l=n,0===et&&st(M)),l!==n?(k.test(t.charAt(Z))?(f=t.charAt(Z),Z++):(f=n,0===et&&st(M)),f!==n?(k.test(t.charAt(Z))?(A=t.charAt(Z),Z++):(A=n,0===et&&st(M)),A!==n?(k.test(t.charAt(Z))?(p=t.charAt(Z),Z++):(p=n,0===et&&st(M)),p!==n?i=l=[l,f,A,p]:(Z=i,i=n)):(Z=i,i=n)):(Z=i,i=n)):(Z=i,i=n),(h=i!==n?t.substring(h,Z):i)!==n?(o,o=s=N(h)):(Z=o,o=n)):(Z=o,o=n))))))))),o!==n?(c,c=u=o):(Z=c,c=n)):(Z=c,c=n),c===n&&(T.test(t.charAt(Z))?(c=t.charAt(Z),Z++):(c=n,0===et&&st(I)));c!==n;)a.push(c),c=Z,92===t.charCodeAt(Z)?(u=y,Z++):(u=n,0===et&&st(m)),u!==n?(34===t.charCodeAt(Z)?(o=x,Z++):(o=n,0===et&&st(b)),o===n&&(92===t.charCodeAt(Z)?(o=y,Z++):(o=n,0===et&&st(m)),o===n&&(47===t.charCodeAt(Z)?(o="/",Z++):(o=n,0===et&&st(E)),o===n&&(o=Z,110===t.charCodeAt(Z)?(s="n",Z++):(s=n,0===et&&st(S)),s!==n&&(o,s="\n"),(o=s)===n&&(o=Z,114===t.charCodeAt(Z)?(s="r",Z++):(s=n,0===et&&st($)),s!==n&&(o,s="\r"),(o=s)===n&&(o=Z,116===t.charCodeAt(Z)?(s="t",Z++):(s=n,0===et&&st(F)),s!==n&&(o,s="\t"),(o=s)===n&&(o=Z,98===t.charCodeAt(Z)?(s="b",Z++):(s=n,0===et&&st(w)),s!==n&&(o,s="\b"),(o=s)===n&&(o=Z,102===t.charCodeAt(Z)?(s="f",Z++):(s=n,0===et&&st(R)),s!==n&&(o,s="\f"),(o=s)===n&&(o=Z,117===t.charCodeAt(Z)?(s="u",Z++):(s=n,0===et&&st(j)),s!==n?(h=Z,i=Z,k.test(t.charAt(Z))?(l=t.charAt(Z),Z++):(l=n,0===et&&st(M)),l!==n?(k.test(t.charAt(Z))?(f=t.charAt(Z),Z++):(f=n,0===et&&st(M)),f!==n?(k.test(t.charAt(Z))?(A=t.charAt(Z),Z++):(A=n,0===et&&st(M)),A!==n?(k.test(t.charAt(Z))?(p=t.charAt(Z),Z++):(p=n,0===et&&st(M)),p!==n?i=l=[l,f,A,p]:(Z=i,i=n)):(Z=i,i=n)):(Z=i,i=n)):(Z=i,i=n),(h=i!==n?t.substring(h,Z):i)!==n?(o,o=s=N(h)):(Z=o,o=n)):(Z=o,o=n))))))))),o!==n?(c,c=u=o):(Z=c,c=n)):(Z=c,c=n),c===n&&(T.test(t.charAt(Z))?(c=t.charAt(Z),Z++):(c=n,0===et&&st(I)));a!==n?(34===t.charCodeAt(Z)?(c=x,Z++):(c=n,0===et&&st(b)),c!==n?(r,r=e=a.join("")):(Z=r,r=n)):(Z=r,r=n)}else Z=r,r=n;return et--,r===n&&(e=n,0===et&&st(v)),r}function At(){var r,e;return r=Z,gt()!==n?(58===t.charCodeAt(Z)?(e=":",Z++):(e=n,0===et&&st(D)),e!==n&>()!==n?(r,r=void 0):(Z=r,r=n)):(Z=r,r=n),r}function pt(){var r,e;return r=Z,gt()!==n?(44===t.charCodeAt(Z)?(e=",",Z++):(e=n,0===et&&st(G)),e!==n&>()!==n?(r,r=void 0):(Z=r,r=n)):(Z=r,r=n),r}function gt(){var r,e,a;for(r=Z,e=[],H.test(t.charAt(Z))?(a=t.charAt(Z),Z++):(a=n,0===et&&st(K)),a===n&&(a=dt())===n&&(a=Ct());a!==n;)e.push(a),H.test(t.charAt(Z))?(a=t.charAt(Z),Z++):(a=n,0===et&&st(K)),a===n&&(a=dt())===n&&(a=Ct());return e!==n&&(r,e=void 0),r=e}function dt(){var r,e,a,c,u,o,s;if(r=Z,e=Z,"//"===t.substr(Z,2)?(a="//",Z+=2):(a=n,0===et&&st(L)),a!==n){for(c=[],u=Z,o=Z,et++,P.test(t.charAt(Z))?(s=t.charAt(Z),Z++):(s=n,0===et&&st(Q)),et--,s===n?o=void 0:(Z=o,o=n),o!==n?(t.length>Z?(s=t.charAt(Z),Z++):(s=n,0===et&&st(V)),s!==n?u=o=[o,s]:(Z=u,u=n)):(Z=u,u=n);u!==n;)c.push(u),u=Z,o=Z,et++,P.test(t.charAt(Z))?(s=t.charAt(Z),Z++):(s=n,0===et&&st(Q)),et--,s===n?o=void 0:(Z=o,o=n),o!==n?(t.length>Z?(s=t.charAt(Z),Z++):(s=n,0===et&&st(V)),s!==n?u=o=[o,s]:(Z=u,u=n)):(Z=u,u=n);c!==n?e=a=[a,c]:(Z=e,e=n)}else Z=e,e=n;return r=e!==n?t.substring(r,Z):e}function Ct(){var r,e,a,c,u,o,s;if(r=Z,e=Z,"/*"===t.substr(Z,2)?(a="/*",Z+=2):(a=n,0===et&&st(W)),a!==n){for(c=[],u=Z,o=Z,et++,t.substr(Z,2)===X?(s=X,Z+=2):(s=n,0===et&&st(Y)),et--,s===n?o=void 0:(Z=o,o=n),o!==n?(t.length>Z?(s=t.charAt(Z),Z++):(s=n,0===et&&st(V)),s!==n?u=o=[o,s]:(Z=u,u=n)):(Z=u,u=n);u!==n;)c.push(u),u=Z,o=Z,et++,t.substr(Z,2)===X?(s=X,Z+=2):(s=n,0===et&&st(Y)),et--,s===n?o=void 0:(Z=o,o=n),o!==n?(t.length>Z?(s=t.charAt(Z),Z++):(s=n,0===et&&st(V)),s!==n?u=o=[o,s]:(Z=u,u=n)):(Z=u,u=n);c!==n?(t.substr(Z,2)===X?(u=X,Z+=2):(u=n,0===et&&st(Y)),u!==n?e=a=[a,c,u]:(Z=e,e=n)):(Z=e,e=n)}else Z=e,e=n;return r=e!==n?t.substring(r,Z):e}if((e=c())!==n&&Z===t.length)return e;throw e!==n&&Z<t.length&&st({type:"end"}),ht(rt,tt<t.length?t.charAt(tt):null,tt<t.length?ot(tt,tt+1):ot(tt,tt))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(t,r){var e={literal:function(t){return'"'+a(t.text)+'"'},class:function(t){var r,e="";for(r=0;r<t.parts.length;r++)e+=t.parts[r]instanceof Array?c(t.parts[r][0])+"-"+c(t.parts[r][1]):c(t.parts[r]);return"["+(t.inverted?"^":"")+e+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function n(t){return t.charCodeAt(0).toString(16).toUpperCase()}function a(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}function c(t){return t.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}return"Expected "+function(t){var r,n,a,c=new Array(t.length);for(r=0;r<t.length;r++)c[r]=(a=t[r],e[a.type](a));if(c.sort(),c.length>0){for(r=1,n=1;r<c.length;r++)c[r-1]!==c[r]&&(c[n]=c[r],n++);c.length=n}switch(c.length){case 1:return c[0];case 2:return c[0]+" or "+c[1];default:return c.slice(0,-1).join(", ")+", or "+c[c.length-1]}}(t)+" but "+function(t){return t?'"'+a(t)+'"':"end of input"}(r)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|
|
1
|
+
"use strict";function peg$subclass(t,r){function e(){this.constructor=t}e.prototype=r.prototype,t.prototype=new e}function peg$SyntaxError(t,r,e,n){this.message=t,this.expected=r,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(t,r){r=void 0!==r?r:{};var e,n={},c={JSON:Lt},u=Lt,a=function(t){return t},o="{",s=qt("{",!1),i=function(){return{}},h=function(t,r,e){t[r]=e},f="}",l=qt("}",!1),A=function(t){return t},p="[",g=qt("[",!1),d=function(){return[]},C=function(t,r){t.push(r)},x="]",v=qt("]",!1),y=function(t){return t},b=/^[+\-]/,E=zt(["+","-"],!1,!1),m=/^[0-9]/,S=zt([["0","9"]],!1,!1),$=".",F=qt(".",!1),w=/^[eE]/,R=zt(["e","E"],!1,!1),j=function(t){return Number(t)},k=Bt("string"),M='"',N=qt('"',!1),T="\\",I=qt("\\",!1),J="/",O=qt("/",!1),U="n",q=qt("n",!1),z=function(){return"\n"},B="r",D=qt("r",!1),G=function(){return"\r"},H="t",K=qt("t",!1),L=function(){return"\t"},P="b",Q=qt("b",!1),V=function(){return"\b"},W="f",X=qt("f",!1),Y=function(){return"\f"},Z="u",_=qt("u",!1),tt=/^[0-9a-fA-F]/,rt=zt([["0","9"],["a","f"],["A","F"]],!1,!1),et=function(t){return String.fromCharCode(parseInt(t,16))},nt=function(t){return t},ct=/^[^"]/,ut=zt(['"'],!0,!1),at=function(t){return t.join("")},ot="null",st=qt("null",!1),it=function(){return null},ht="true",ft=qt("true",!1),lt=function(){return!0},At="false",pt=qt("false",!1),gt=function(){return!1},dt=":",Ct=qt(":",!1),xt=function(){},vt=",",yt=qt(",",!1),bt=/^[ \t\n\r]/,Et=zt([" ","\t","\n","\r"],!1,!1),mt=function(){},St="//",$t=qt("//",!1),Ft=/^[\n\r\u2028\u2029]/,wt=zt(["\n","\r","\u2028","\u2029"],!1,!1),Rt={type:"any"},jt="/*",kt=qt("/*",!1),Mt="*/",Nt=qt("*/",!1),Tt=0,It=[{line:1,column:1}],Jt=0,Ot=[],Ut=0;if("startRule"in r){if(!(r.startRule in c))throw new Error("Can't start parsing from rule \""+r.startRule+'".');u=c[r.startRule]}function qt(t,r){return{type:"literal",text:t,ignoreCase:r}}function zt(t,r,e){return{type:"class",parts:t,inverted:r,ignoreCase:e}}function Bt(t){return{type:"other",description:t}}function Dt(r){var e,n=It[r];if(n)return n;for(e=r-1;!It[e];)e--;for(n={line:(n=It[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return It[r]=n,n}function Gt(t,r){var e=Dt(t),n=Dt(r);return{start:{offset:t,line:e.line,column:e.column},end:{offset:r,line:n.line,column:n.column}}}function Ht(t){Tt<Jt||(Tt>Jt&&(Jt=Tt,Ot=[]),Ot.push(t))}function Kt(t,r,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(t,r),t,r,e)}function Lt(){var t,r;return t=Tt,Xt()!==n&&(r=Pt())!==n&&Xt()!==n?t=a(r):(Tt=t,t=n),t}function Pt(){var r;return(r=function(){var r,e,c,u,a,p,g,d,C;r=Tt,e=Tt,(c=Xt())!==n?(123===t.charCodeAt(Tt)?(u=o,Tt++):(u=n,0===Ut&&Ht(s)),u!==n&&(a=Xt())!==n?e=c=i():(Tt=e,e=n)):(Tt=e,e=n);if(e!==n){if(c=Tt,u=Tt,(a=Qt())!==n&&(p=Vt())!==n&&(g=Pt())!==n?u=a=h(e,a,g):(Tt=u,u=n),u!==n){for(a=[],p=Tt,(g=Wt())!==n&&(d=Qt())!==n&&Vt()!==n&&(C=Pt())!==n?p=g=h(e,d,C):(Tt=p,p=n);p!==n;)a.push(p),p=Tt,(g=Wt())!==n&&(d=Qt())!==n&&Vt()!==n&&(C=Pt())!==n?p=g=h(e,d,C):(Tt=p,p=n);a!==n?((p=Wt())===n&&(p=null),p!==n?c=u=[u,a,p]:(Tt=c,c=n)):(Tt=c,c=n)}else Tt=c,c=n;c===n&&(c=null),c!==n&&(u=Xt())!==n?(125===t.charCodeAt(Tt)?(a=f,Tt++):(a=n,0===Ut&&Ht(l)),a!==n&&(p=Xt())!==n?r=e=A(e):(Tt=r,r=n)):(Tt=r,r=n)}else Tt=r,r=n;return r}())===n&&(r=function(){var r,e,c,u,a,o,s;r=Tt,e=Tt,(c=Xt())!==n?(91===t.charCodeAt(Tt)?(u=p,Tt++):(u=n,0===Ut&&Ht(g)),u!==n&&(a=Xt())!==n?e=c=d():(Tt=e,e=n)):(Tt=e,e=n);if(e!==n){if(c=Tt,u=Tt,(a=Pt())!==n&&(a=C(e,a)),(u=a)!==n){for(a=[],o=Tt,Wt()!==n&&(s=Pt())!==n?o=C(e,s):(Tt=o,o=n);o!==n;)a.push(o),o=Tt,Wt()!==n&&(s=Pt())!==n?o=C(e,s):(Tt=o,o=n);a!==n?((o=Wt())===n&&(o=null),o!==n?c=u=[u,a,o]:(Tt=c,c=n)):(Tt=c,c=n)}else Tt=c,c=n;c===n&&(c=null),c!==n&&(u=Xt())!==n?(93===t.charCodeAt(Tt)?(a=x,Tt++):(a=n,0===Ut&&Ht(v)),a!==n&&(o=Xt())!==n?r=e=y(e):(Tt=r,r=n)):(Tt=r,r=n)}else Tt=r,r=n;return r}())===n&&(r=function(){var r,e;r=Tt,t.substr(Tt,4)===ot?(e=ot,Tt+=4):(e=n,0===Ut&&Ht(st));e!==n&&(e=it());return r=e,r}())===n&&(r=function(){var r,e;r=Tt,t.substr(Tt,4)===ht?(e=ht,Tt+=4):(e=n,0===Ut&&Ht(ft));e!==n&&(e=lt());return r=e,r}())===n&&(r=function(){var r,e;r=Tt,t.substr(Tt,5)===At?(e=At,Tt+=5):(e=n,0===Ut&&Ht(pt));e!==n&&(e=gt());return r=e,r}())===n&&(r=function(){var r,e,c,u,a,o,s,i,h,f,l;r=Tt,e=Tt,c=Tt,b.test(t.charAt(Tt))?(u=t.charAt(Tt),Tt++):(u=n,0===Ut&&Ht(E));u===n&&(u=null);if(u!==n){if(a=[],m.test(t.charAt(Tt))?(o=t.charAt(Tt),Tt++):(o=n,0===Ut&&Ht(S)),o!==n)for(;o!==n;)a.push(o),m.test(t.charAt(Tt))?(o=t.charAt(Tt),Tt++):(o=n,0===Ut&&Ht(S));else a=n;if(a!==n){if(o=Tt,46===t.charCodeAt(Tt)?(s=$,Tt++):(s=n,0===Ut&&Ht(F)),s!==n){if(i=[],m.test(t.charAt(Tt))?(h=t.charAt(Tt),Tt++):(h=n,0===Ut&&Ht(S)),h!==n)for(;h!==n;)i.push(h),m.test(t.charAt(Tt))?(h=t.charAt(Tt),Tt++):(h=n,0===Ut&&Ht(S));else i=n;i!==n?o=s=[s,i]:(Tt=o,o=n)}else Tt=o,o=n;if(o===n&&(o=null),o!==n){if(s=Tt,w.test(t.charAt(Tt))?(i=t.charAt(Tt),Tt++):(i=n,0===Ut&&Ht(R)),i!==n)if(b.test(t.charAt(Tt))?(h=t.charAt(Tt),Tt++):(h=n,0===Ut&&Ht(E)),h===n&&(h=null),h!==n){if(f=[],m.test(t.charAt(Tt))?(l=t.charAt(Tt),Tt++):(l=n,0===Ut&&Ht(S)),l!==n)for(;l!==n;)f.push(l),m.test(t.charAt(Tt))?(l=t.charAt(Tt),Tt++):(l=n,0===Ut&&Ht(S));else f=n;f!==n?s=i=[i,h,f]:(Tt=s,s=n)}else Tt=s,s=n;else Tt=s,s=n;s===n&&(s=null),s!==n?c=u=[u,a,o,s]:(Tt=c,c=n)}else Tt=c,c=n}else Tt=c,c=n}else Tt=c,c=n;e=c!==n?t.substring(e,Tt):c;e!==n&&(e=j(e));return r=e,r}())===n&&(r=Qt()),r}function Qt(){var r,e,c,u,a,o,s,i,h,f,l,A,p;if(Ut++,r=Tt,34===t.charCodeAt(Tt)?(e=M,Tt++):(e=n,0===Ut&&Ht(N)),e!==n){for(c=[],u=Tt,92===t.charCodeAt(Tt)?(a=T,Tt++):(a=n,0===Ut&&Ht(I)),a!==n?(34===t.charCodeAt(Tt)?(o=M,Tt++):(o=n,0===Ut&&Ht(N)),o===n&&(92===t.charCodeAt(Tt)?(o=T,Tt++):(o=n,0===Ut&&Ht(I)),o===n&&(47===t.charCodeAt(Tt)?(o=J,Tt++):(o=n,0===Ut&&Ht(O)),o===n&&(o=Tt,110===t.charCodeAt(Tt)?(s=U,Tt++):(s=n,0===Ut&&Ht(q)),s!==n&&(s=z()),(o=s)===n&&(o=Tt,114===t.charCodeAt(Tt)?(s=B,Tt++):(s=n,0===Ut&&Ht(D)),s!==n&&(s=G()),(o=s)===n&&(o=Tt,116===t.charCodeAt(Tt)?(s=H,Tt++):(s=n,0===Ut&&Ht(K)),s!==n&&(s=L()),(o=s)===n&&(o=Tt,98===t.charCodeAt(Tt)?(s=P,Tt++):(s=n,0===Ut&&Ht(Q)),s!==n&&(s=V()),(o=s)===n&&(o=Tt,102===t.charCodeAt(Tt)?(s=W,Tt++):(s=n,0===Ut&&Ht(X)),s!==n&&(s=Y()),(o=s)===n&&(o=Tt,117===t.charCodeAt(Tt)?(s=Z,Tt++):(s=n,0===Ut&&Ht(_)),s!==n?(i=Tt,h=Tt,tt.test(t.charAt(Tt))?(f=t.charAt(Tt),Tt++):(f=n,0===Ut&&Ht(rt)),f!==n?(tt.test(t.charAt(Tt))?(l=t.charAt(Tt),Tt++):(l=n,0===Ut&&Ht(rt)),l!==n?(tt.test(t.charAt(Tt))?(A=t.charAt(Tt),Tt++):(A=n,0===Ut&&Ht(rt)),A!==n?(tt.test(t.charAt(Tt))?(p=t.charAt(Tt),Tt++):(p=n,0===Ut&&Ht(rt)),p!==n?h=f=[f,l,A,p]:(Tt=h,h=n)):(Tt=h,h=n)):(Tt=h,h=n)):(Tt=h,h=n),(i=h!==n?t.substring(i,Tt):h)!==n?o=s=et(i):(Tt=o,o=n)):(Tt=o,o=n))))))))),o!==n?u=a=nt(o):(Tt=u,u=n)):(Tt=u,u=n),u===n&&(ct.test(t.charAt(Tt))?(u=t.charAt(Tt),Tt++):(u=n,0===Ut&&Ht(ut)));u!==n;)c.push(u),u=Tt,92===t.charCodeAt(Tt)?(a=T,Tt++):(a=n,0===Ut&&Ht(I)),a!==n?(34===t.charCodeAt(Tt)?(o=M,Tt++):(o=n,0===Ut&&Ht(N)),o===n&&(92===t.charCodeAt(Tt)?(o=T,Tt++):(o=n,0===Ut&&Ht(I)),o===n&&(47===t.charCodeAt(Tt)?(o=J,Tt++):(o=n,0===Ut&&Ht(O)),o===n&&(o=Tt,110===t.charCodeAt(Tt)?(s=U,Tt++):(s=n,0===Ut&&Ht(q)),s!==n&&(s=z()),(o=s)===n&&(o=Tt,114===t.charCodeAt(Tt)?(s=B,Tt++):(s=n,0===Ut&&Ht(D)),s!==n&&(s=G()),(o=s)===n&&(o=Tt,116===t.charCodeAt(Tt)?(s=H,Tt++):(s=n,0===Ut&&Ht(K)),s!==n&&(s=L()),(o=s)===n&&(o=Tt,98===t.charCodeAt(Tt)?(s=P,Tt++):(s=n,0===Ut&&Ht(Q)),s!==n&&(s=V()),(o=s)===n&&(o=Tt,102===t.charCodeAt(Tt)?(s=W,Tt++):(s=n,0===Ut&&Ht(X)),s!==n&&(s=Y()),(o=s)===n&&(o=Tt,117===t.charCodeAt(Tt)?(s=Z,Tt++):(s=n,0===Ut&&Ht(_)),s!==n?(i=Tt,h=Tt,tt.test(t.charAt(Tt))?(f=t.charAt(Tt),Tt++):(f=n,0===Ut&&Ht(rt)),f!==n?(tt.test(t.charAt(Tt))?(l=t.charAt(Tt),Tt++):(l=n,0===Ut&&Ht(rt)),l!==n?(tt.test(t.charAt(Tt))?(A=t.charAt(Tt),Tt++):(A=n,0===Ut&&Ht(rt)),A!==n?(tt.test(t.charAt(Tt))?(p=t.charAt(Tt),Tt++):(p=n,0===Ut&&Ht(rt)),p!==n?h=f=[f,l,A,p]:(Tt=h,h=n)):(Tt=h,h=n)):(Tt=h,h=n)):(Tt=h,h=n),(i=h!==n?t.substring(i,Tt):h)!==n?o=s=et(i):(Tt=o,o=n)):(Tt=o,o=n))))))))),o!==n?u=a=nt(o):(Tt=u,u=n)):(Tt=u,u=n),u===n&&(ct.test(t.charAt(Tt))?(u=t.charAt(Tt),Tt++):(u=n,0===Ut&&Ht(ut)));c!==n?(34===t.charCodeAt(Tt)?(u=M,Tt++):(u=n,0===Ut&&Ht(N)),u!==n?r=e=at(c):(Tt=r,r=n)):(Tt=r,r=n)}else Tt=r,r=n;return Ut--,r===n&&(e=n,0===Ut&&Ht(k)),r}function Vt(){var r,e;return r=Tt,Xt()!==n?(58===t.charCodeAt(Tt)?(e=dt,Tt++):(e=n,0===Ut&&Ht(Ct)),e!==n&&Xt()!==n?r=xt():(Tt=r,r=n)):(Tt=r,r=n),r}function Wt(){var r,e;return r=Tt,Xt()!==n?(44===t.charCodeAt(Tt)?(e=vt,Tt++):(e=n,0===Ut&&Ht(yt)),e!==n&&Xt()!==n?r=xt():(Tt=r,r=n)):(Tt=r,r=n),r}function Xt(){var r,e,c;for(r=Tt,e=[],bt.test(t.charAt(Tt))?(c=t.charAt(Tt),Tt++):(c=n,0===Ut&&Ht(Et)),c===n&&(c=Yt())===n&&(c=Zt());c!==n;)e.push(c),bt.test(t.charAt(Tt))?(c=t.charAt(Tt),Tt++):(c=n,0===Ut&&Ht(Et)),c===n&&(c=Yt())===n&&(c=Zt());return e!==n&&(e=mt()),r=e}function Yt(){var r,e,c,u,a,o,s;if(r=Tt,e=Tt,t.substr(Tt,2)===St?(c=St,Tt+=2):(c=n,0===Ut&&Ht($t)),c!==n){for(u=[],a=Tt,o=Tt,Ut++,Ft.test(t.charAt(Tt))?(s=t.charAt(Tt),Tt++):(s=n,0===Ut&&Ht(wt)),Ut--,s===n?o=void 0:(Tt=o,o=n),o!==n?(t.length>Tt?(s=t.charAt(Tt),Tt++):(s=n,0===Ut&&Ht(Rt)),s!==n?a=o=[o,s]:(Tt=a,a=n)):(Tt=a,a=n);a!==n;)u.push(a),a=Tt,o=Tt,Ut++,Ft.test(t.charAt(Tt))?(s=t.charAt(Tt),Tt++):(s=n,0===Ut&&Ht(wt)),Ut--,s===n?o=void 0:(Tt=o,o=n),o!==n?(t.length>Tt?(s=t.charAt(Tt),Tt++):(s=n,0===Ut&&Ht(Rt)),s!==n?a=o=[o,s]:(Tt=a,a=n)):(Tt=a,a=n);u!==n?e=c=[c,u]:(Tt=e,e=n)}else Tt=e,e=n;return r=e!==n?t.substring(r,Tt):e}function Zt(){var r,e,c,u,a,o,s;if(r=Tt,e=Tt,t.substr(Tt,2)===jt?(c=jt,Tt+=2):(c=n,0===Ut&&Ht(kt)),c!==n){for(u=[],a=Tt,o=Tt,Ut++,t.substr(Tt,2)===Mt?(s=Mt,Tt+=2):(s=n,0===Ut&&Ht(Nt)),Ut--,s===n?o=void 0:(Tt=o,o=n),o!==n?(t.length>Tt?(s=t.charAt(Tt),Tt++):(s=n,0===Ut&&Ht(Rt)),s!==n?a=o=[o,s]:(Tt=a,a=n)):(Tt=a,a=n);a!==n;)u.push(a),a=Tt,o=Tt,Ut++,t.substr(Tt,2)===Mt?(s=Mt,Tt+=2):(s=n,0===Ut&&Ht(Nt)),Ut--,s===n?o=void 0:(Tt=o,o=n),o!==n?(t.length>Tt?(s=t.charAt(Tt),Tt++):(s=n,0===Ut&&Ht(Rt)),s!==n?a=o=[o,s]:(Tt=a,a=n)):(Tt=a,a=n);u!==n?(t.substr(Tt,2)===Mt?(a=Mt,Tt+=2):(a=n,0===Ut&&Ht(Nt)),a!==n?e=c=[c,u,a]:(Tt=e,e=n)):(Tt=e,e=n)}else Tt=e,e=n;return r=e!==n?t.substring(r,Tt):e}if((e=u())!==n&&Tt===t.length)return e;throw e!==n&&Tt<t.length&&Ht({type:"end"}),Kt(Ot,Jt<t.length?t.charAt(Jt):null,Jt<t.length?Gt(Jt,Jt+1):Gt(Jt,Jt))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(t,r){var e={literal:function(t){return'"'+c(t.text)+'"'},class:function(t){var r,e="";for(r=0;r<t.parts.length;r++)e+=t.parts[r]instanceof Array?u(t.parts[r][0])+"-"+u(t.parts[r][1]):u(t.parts[r]);return"["+(t.inverted?"^":"")+e+"]"},any:function(t){return"any character"},end:function(t){return"end of input"},other:function(t){return t.description}};function n(t){return t.charCodeAt(0).toString(16).toUpperCase()}function c(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}function u(t){return t.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(t){return"\\x0"+n(t)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(t){return"\\x"+n(t)}))}return"Expected "+function(t){var r,n,c,u=new Array(t.length);for(r=0;r<t.length;r++)u[r]=(c=t[r],e[c.type](c));if(u.sort(),u.length>0){for(r=1,n=1;r<u.length;r++)u[r-1]!==u[r]&&(u[n]=u[r],n++);u.length=n}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}(t)+" but "+function(t){return t?'"'+c(t)+'"':"end of input"}(r)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
|
package/lib/util/jsonc.pegjs
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// Generate via:
|
|
2
|
+
// npm i -g pegjs terser
|
|
3
|
+
// pegjs < ./lib/util/jsonc.pegjs | terser -cm > ./lib/util/jsonc.js
|
|
4
|
+
|
|
1
5
|
JSON = _ v:value _ { return v }
|
|
2
6
|
value = object / array / null / true / false / number / string
|
|
3
7
|
|
|
@@ -16,7 +20,7 @@ array
|
|
|
16
20
|
{ return a }
|
|
17
21
|
|
|
18
22
|
number
|
|
19
|
-
= x:$( [+-]? [0-9]+ ("." [0-9]+)? (
|
|
23
|
+
= x:$( [+-]? [0-9]+ ("." [0-9]+)? ([eE] [+-]? [0-9]+)? )
|
|
20
24
|
{ return Number(x) }
|
|
21
25
|
|
|
22
26
|
string "string"
|
|
@@ -27,7 +31,7 @@ string "string"
|
|
|
27
31
|
/ "t" { return "\t" }
|
|
28
32
|
/ "b" { return "\b" }
|
|
29
33
|
/ "f" { return "\f" }
|
|
30
|
-
/ "u" u:$([0-9a-
|
|
34
|
+
/ "u" u:$([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]) {
|
|
31
35
|
return String.fromCharCode(parseInt(u,16))
|
|
32
36
|
}
|
|
33
37
|
) {return x}) / [^"]
|