@sap/cds-dk 10.1.2 → 10.2.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 +41 -0
- package/bin/add.js +7 -2
- package/bin/bind.js +0 -2
- package/bin/bindings.js +35 -0
- package/bin/build.js +11 -6
- package/bin/compile/index.js +1 -0
- package/bin/completion/index.js +10 -448
- package/bin/completion/scripts/cds.fish +24 -16
- package/bin/completion/scripts/cds.ps1 +26 -25
- package/bin/completion/scripts/cds.sh +22 -19
- package/bin/completion/scripts/cds.zsh +22 -19
- package/bin/deploy/index.js +1 -1
- package/bin/deploy/to-hana/hana.js +5 -4
- package/bin/env.js +0 -1
- package/bin/eval.js +9 -5
- package/bin/export.js +6 -4
- package/bin/help/export.md +28 -4
- package/bin/import.js +6 -5
- package/bin/inspect.js +0 -1
- package/bin/login.js +28 -3
- package/bin/repl.js +82 -26
- package/bin/run.js +6 -7
- package/bin/serve.js +6 -7
- package/bin/up.js +7 -2
- package/bin/upgrade/steps/install.js +6 -6
- package/bin/watch/index.js +1 -0
- package/lib/build/index.js +11 -7
- package/lib/build/plugins/featureToggles.js +2 -2
- package/lib/build/plugins/hana/index.js +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/_helpers.tpl +7 -0
- package/lib/build/plugins/helm/files/subcharts/web-application/templates/api-rule.yaml +1 -0
- package/lib/build/plugins/helm/files/subcharts/web-application/templates/service-binding.yaml +4 -4
- package/lib/build/plugins/helm/files/subcharts/web-application/values.schema.json +13 -0
- package/lib/build/plugins/helm/files/subcharts/web-application/values.yaml +7 -1
- package/lib/build/plugins/java/index.js +5 -1
- package/lib/build/plugins/nodejs/index.js +5 -1
- package/lib/build/util.js +4 -5
- package/lib/env/schemas/cds-rc.js +5 -0
- package/lib/import/importapi.js +2 -3
- package/lib/init/constants.js +1 -1
- package/lib/init/index.js +8 -3
- package/lib/init/plugin.js +1 -1
- package/lib/init/projectReader.js +13 -10
- package/lib/init/registries/mta.js +0 -6
- package/lib/init/template/ai/index.js +4 -4
- package/lib/init/template/ams/files/extensionDeveloper.dcl +6 -0
- package/lib/init/template/ams/files/mta.yaml.hbs +6 -0
- package/lib/init/template/ams/files/sidecar.package.json.hbs +5 -0
- package/lib/init/template/ams/index.js +42 -40
- package/lib/init/template/app-frontend/files/mta.yaml.hbs +2 -0
- package/lib/init/template/app-frontend/files/ui5.yaml.hbs +0 -4
- package/lib/init/template/app-frontend/index.js +29 -24
- package/lib/init/template/application-logging/index.js +6 -6
- package/lib/init/template/approuter/files/xs-app.json.hbs +22 -0
- package/lib/init/template/approuter/index.js +20 -13
- package/lib/init/template/attachments/index.js +3 -3
- package/lib/init/template/audit-logging/index.js +4 -4
- package/lib/init/template/cloud-logging/index.js +12 -6
- package/lib/init/template/completion/completionSetup.js +19 -6
- package/lib/init/template/connectivity/index.js +3 -3
- package/lib/init/template/data/as-csv.js +7 -4
- package/lib/init/template/data/as-json.js +77 -20
- package/lib/init/template/destination/index.js +12 -9
- package/lib/init/template/dynatrace/index.js +5 -5
- package/lib/init/template/enterprise-messaging/index.js +6 -6
- package/lib/init/template/enterprise-messaging-shared/index.js +4 -4
- package/lib/init/template/extensibility/index.js +2 -2
- package/lib/init/template/extension/index.js +26 -0
- package/lib/init/template/github-actions/index.js +3 -3
- package/lib/init/template/hana/files/package.json.hbs +3 -2
- package/lib/init/template/hana/index.js +5 -5
- package/lib/init/template/hana-serverless/index.js +3 -3
- package/lib/init/template/html5-repo/files/mta.yaml.hbs +2 -0
- package/lib/init/template/html5-repo/files/ui5.yaml.hbs +0 -4
- package/lib/init/template/html5-repo/index.js +68 -40
- package/lib/init/template/http/index.js +1 -1
- package/lib/init/template/ias/index.js +7 -7
- package/lib/init/template/initial/files/.gitignore.hbs +1 -0
- package/lib/init/template/kafka/index.js +3 -3
- package/lib/init/template/kyma/index.js +7 -9
- package/lib/init/template/malware-scanner/index.js +3 -3
- package/lib/init/template/mta/index.js +6 -3
- package/lib/init/template/multitenancy/index.js +6 -7
- package/lib/init/template/notifications/index.js +2 -2
- package/lib/init/template/portal/index.js +16 -10
- package/lib/init/template/postgres/index.js +5 -5
- package/lib/init/template/react/files/index.html.hbs +1 -1
- package/lib/init/template/react/files/package.json.hbs +3 -2
- package/lib/init/template/react/files/src/{App.jsx.hbs → App.{{jsxExtension}}.hbs} +8 -2
- package/lib/init/template/react/files/src/{main.jsx → main.{{jsxExtension}}.hbs} +2 -2
- package/lib/init/template/react/index.js +23 -4
- package/lib/init/template/react/typescript/src/vite-env.d.ts +1 -0
- package/lib/init/template/react/typescript/tsconfig.json.hbs +16 -0
- package/lib/init/template/redis/index.js +2 -2
- package/lib/init/template/side-by-side-extensibility/index.js +6 -3
- package/lib/init/template/typescript/files/tsconfig.json +3 -1
- package/lib/init/template/vue/files/index.html.hbs +1 -1
- package/lib/init/template/vue/files/package.json.hbs +2 -1
- package/lib/init/template/vue/files/src/App.vue.hbs +8 -2
- package/lib/init/template/vue/index.js +20 -4
- package/lib/init/template/vue/typescript/tsconfig.json +11 -0
- package/lib/init/template/workzone-standard/files/mta.yaml.hbs +2 -2
- package/lib/init/template/workzone-standard/index.js +29 -27
- package/lib/init/template/xsuaa/files/mta.yaml.hbs +1 -1
- package/lib/init/template/xsuaa/files/values.yaml.hbs +1 -1
- package/lib/init/template/xsuaa/index.js +34 -22
- package/lib/mtx/auth_manager.js +8 -2
- package/lib/mtx/browser_login.js +181 -0
- package/lib/mtx/params.js +6 -0
- package/lib/mtx/settings_manager.js +29 -4
- package/lib/util/cf.js +44 -8
- package/lib/util/fs.js +2 -2
- package/node_modules/@cap-js/db-service/CHANGELOG.md +10 -0
- package/node_modules/@cap-js/db-service/lib/cqn2pql.js +4 -0
- package/node_modules/@cap-js/db-service/lib/cqn2sql.js +3 -0
- package/node_modules/@cap-js/db-service/lib/cqn4sql.js +8 -23
- package/node_modules/@cap-js/db-service/lib/infer/index.js +20 -27
- package/node_modules/@cap-js/db-service/package.json +1 -1
- package/node_modules/@cap-js/openapi/cds-plugin.js +12 -0
- package/node_modules/@cap-js/openapi/index.js +3 -1
- package/node_modules/@cap-js/openapi/lib/compile/csdl2openapi.js +652 -413
- package/node_modules/@cap-js/openapi/lib/compile/diagram.js +16 -13
- package/node_modules/@cap-js/openapi/lib/compile/index.js +10 -7
- package/node_modules/@cap-js/openapi/lib/compile/property-util.js +51 -0
- package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/importOpenAPI.js +12 -9
- package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/index.js +4 -3
- package/node_modules/@cap-js/openapi/package.json +71 -3
- package/node_modules/@cap-js/sqlite/CHANGELOG.md +9 -0
- package/node_modules/@cap-js/sqlite/package.json +3 -3
- package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
- package/node_modules/@isaacs/fs-minipass/README.md +71 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
- package/node_modules/@isaacs/fs-minipass/package.json +72 -0
- package/node_modules/@sap/cds/CHANGELOG.md +52 -1
- package/node_modules/@sap/cds/_i18n/messages_ar.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_bg.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_cs.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_da.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_de.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_el.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_en.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_es.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_es_MX.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_fi.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_fr.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_he.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_hr.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_hu.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_it.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_ja.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_kk.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_ko.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_ms.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_nl.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_no.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_pl.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_pt.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_ro.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_ru.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_sh.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_sk.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_sl.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_sv.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_th.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_tr.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_uk.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_vi.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_zh_CN.properties +1 -0
- package/node_modules/@sap/cds/_i18n/messages_zh_TW.properties +1 -0
- package/node_modules/@sap/cds/app/index-client.js +164 -0
- package/node_modules/@sap/cds/app/index.css +598 -87
- package/node_modules/@sap/cds/app/index.html +54 -30
- package/node_modules/@sap/cds/app/index.js +311 -67
- package/node_modules/@sap/cds/app/table.html +226 -0
- package/node_modules/@sap/cds/app/table.js +302 -0
- package/node_modules/@sap/cds/bin/serve.js +3 -2
- package/node_modules/@sap/cds/eslint.config.mjs +2 -0
- package/node_modules/@sap/cds/lib/compile/cdsc.js +7 -0
- package/node_modules/@sap/cds/lib/compile/for/embeddings.js +27 -0
- package/node_modules/@sap/cds/lib/compile/load.js +2 -2
- package/node_modules/@sap/cds/lib/compile/minify.js +17 -4
- package/node_modules/@sap/cds/lib/compile/parse.js +3 -0
- package/node_modules/@sap/cds/lib/compile/resolve.js +16 -14
- package/node_modules/@sap/cds/lib/core/classes.js +1 -0
- package/node_modules/@sap/cds/lib/dbs/cds-deploy.js +4 -5
- package/node_modules/@sap/cds/lib/env/cds-env.js +132 -70
- package/node_modules/@sap/cds/lib/env/cds-requires/auth-strategies.js +62 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/databases.js +49 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/embeddings.js +8 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/index.js +27 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/messaging.js +82 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/platform.js +23 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/queues.js +34 -0
- package/node_modules/@sap/cds/lib/env/cds-requires/services.js +32 -0
- package/node_modules/@sap/cds/lib/env/defaults.js +9 -1
- package/node_modules/@sap/cds/lib/i18n/files.js +4 -4
- package/node_modules/@sap/cds/lib/i18n/locale.js +1 -1
- package/node_modules/@sap/cds/lib/index.js +9 -9
- package/node_modules/@sap/cds/lib/log/cds-log.js +3 -3
- package/node_modules/@sap/cds/lib/ql/SELECT.js +2 -0
- package/node_modules/@sap/cds/lib/ql/UPDATE.js +1 -1
- package/node_modules/@sap/cds/lib/ql/cds.ql-Query.js +4 -1
- package/node_modules/@sap/cds/lib/ql/core/@types/cqn.d.ts +146 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/exprs.d.ts +51 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/index.d.ts +29 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/package.json +7 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/ql/delete.d.ts +8 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/ql/insert.d.ts +19 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/ql/select.d.ts +24 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/ql/update.d.ts +10 -0
- package/node_modules/@sap/cds/lib/ql/core/@types/query.d.ts +18 -0
- package/node_modules/@sap/cds/lib/ql/core/cql/parser.min.js +1 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/index.js +69 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/ql/cache.js +34 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/ql/call-action.js +6 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/ql/delete.js +8 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/ql/insert.js +26 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/ql/select.js +22 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/ql/update.js +26 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/query.js +85 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/xl/fluent.js +47 -0
- package/node_modules/@sap/cds/lib/ql/core/lib/xl/ttl.js +24 -0
- package/node_modules/@sap/cds/lib/ql/core/license +201 -0
- package/node_modules/@sap/cds/lib/ql/core/package.json +24 -0
- package/node_modules/@sap/cds/lib/ql/core/readme.md +99 -0
- package/node_modules/@sap/cds/lib/ql/core/upstream.json +5 -0
- package/node_modules/@sap/cds/lib/req/spawn.js +1 -1
- package/node_modules/@sap/cds/lib/srv/bindings.js +111 -115
- package/node_modules/@sap/cds/lib/srv/cds-connect.js +11 -10
- package/node_modules/@sap/cds/lib/srv/cds-serve.js +16 -7
- package/node_modules/@sap/cds/lib/srv/cds.Service.js +13 -7
- package/node_modules/@sap/cds/lib/srv/factory.js +8 -10
- package/node_modules/@sap/cds/lib/srv/middlewares/auth/ias-auth.js +35 -32
- package/node_modules/@sap/cds/lib/srv/middlewares/auth/jwt-auth.js +5 -1
- package/node_modules/@sap/cds/lib/srv/middlewares/auth/mocked-users.js +1 -1
- package/node_modules/@sap/cds/lib/srv/protocols/hcql.js +230 -79
- package/node_modules/@sap/cds/lib/srv/protocols/http.js +7 -3
- package/node_modules/@sap/cds/lib/srv/protocols/index.js +7 -2
- package/node_modules/@sap/cds/lib/srv/srv-dispatch.js +2 -2
- package/node_modules/@sap/cds/lib/utils/cds-utils.js +37 -0
- package/node_modules/@sap/cds/lib/utils/csv-reader.js +2 -2
- package/node_modules/@sap/cds/libx/_runtime/common/generic/assert.js +18 -27
- package/node_modules/@sap/cds/libx/_runtime/common/generic/crud.js +1 -1
- package/node_modules/@sap/cds/libx/_runtime/common/utils/rewriteAsterisks.js +1 -1
- package/node_modules/@sap/cds/libx/_runtime/fiori/lean-draft.js +121 -84
- package/node_modules/@sap/cds/libx/_runtime/messaging/common-utils/authorizedRequest.js +24 -1
- package/node_modules/@sap/cds/libx/_runtime/remote/Service.js +2 -2
- package/node_modules/@sap/cds/libx/_runtime/remote/utils/client.js +3 -2
- package/node_modules/@sap/cds/libx/_runtime/remote/utils/query.js +11 -6
- package/node_modules/@sap/cds/libx/odata/middleware/create.js +4 -0
- package/node_modules/@sap/cds/libx/odata/middleware/metadata.js +1 -1
- package/node_modules/@sap/cds/libx/odata/middleware/operation.js +3 -0
- package/node_modules/@sap/cds/libx/odata/middleware/parse.js +9 -0
- package/node_modules/@sap/cds/libx/odata/middleware/read.js +6 -0
- package/node_modules/@sap/cds/libx/odata/middleware/update.js +5 -1
- package/node_modules/@sap/cds/libx/odata/parse/afterburner.js +3 -3
- package/node_modules/@sap/cds/libx/odata/parse/multipartToJson.js +1 -1
- package/node_modules/@sap/cds/libx/odata/utils/ieee754.js +20 -0
- package/node_modules/@sap/cds/libx/queue/api.js +1 -1
- package/node_modules/@sap/cds/libx/queue/index.js +3 -1
- package/node_modules/@sap/cds/libx/queue/processing.js +5 -0
- package/node_modules/@sap/cds/libx/rest/RestAdapter.js +1 -0
- package/node_modules/@sap/cds/package.json +2 -2
- package/node_modules/@sap/cds/server.js +1 -0
- package/node_modules/@sap/cds/srv/ucl-service.cds +1 -0
- package/node_modules/@sap/cds-compiler/CHANGELOG.md +83 -0
- package/node_modules/@sap/cds-compiler/bin/cdsse.js +1 -1
- package/node_modules/@sap/cds-compiler/doc/EffectiveCSN.md +3314 -0
- package/node_modules/@sap/cds-compiler/lib/api/main.js +9 -6
- package/node_modules/@sap/cds-compiler/lib/api/options.js +3 -3
- package/node_modules/@sap/cds-compiler/lib/{model → base}/csnUtils.js +5 -5
- package/node_modules/@sap/cds-compiler/lib/base/message-registry.js +54 -6
- package/node_modules/@sap/cds-compiler/lib/base/optionProcessor.js +4 -4
- package/node_modules/@sap/cds-compiler/lib/{model → base}/sortViews.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/assocOutsideService.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/checkForTypes.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/checkPathsInStoredCalcElement.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/elements.js +37 -3
- package/node_modules/@sap/cds-compiler/lib/checks/enricher.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/existsInForbiddenPlaces.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/hasPersistedElements.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/manyExpand.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/manyNavigations.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/onConditions.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/parameters.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/queryNoDbArtifacts.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/selectItems.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/structuredAnnoExpressions.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/typeParameters.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/types.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/checks/validator.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/compiler/assert-consistency.js +20 -12
- package/node_modules/@sap/cds-compiler/lib/compiler/builtins.js +9 -4
- package/node_modules/@sap/cds-compiler/lib/compiler/checks.js +50 -0
- package/node_modules/@sap/cds-compiler/lib/compiler/define.js +303 -323
- package/node_modules/@sap/cds-compiler/lib/compiler/dictionaries.js +5 -0
- package/node_modules/@sap/cds-compiler/lib/compiler/extend.js +1015 -1177
- package/node_modules/@sap/cds-compiler/lib/compiler/generate.js +55 -42
- package/node_modules/@sap/cds-compiler/lib/compiler/populate.js +74 -45
- package/node_modules/@sap/cds-compiler/lib/compiler/propagator.js +1 -0
- package/node_modules/@sap/cds-compiler/lib/compiler/resolve.js +6 -4
- package/node_modules/@sap/cds-compiler/lib/compiler/shared.js +30 -49
- package/node_modules/@sap/cds-compiler/lib/compiler/utils.js +32 -18
- package/node_modules/@sap/cds-compiler/lib/edm/annotations/edmJson.js +3 -3
- package/node_modules/@sap/cds-compiler/lib/edm/annotations/genericTranslation.js +2 -2
- package/node_modules/@sap/cds-compiler/lib/edm/annotations/preprocessAnnotations.js +2 -3
- package/node_modules/@sap/cds-compiler/lib/edm/csn2edm.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/edm/edm.js +6 -7
- package/node_modules/@sap/cds-compiler/lib/edm/edmAnnoPreprocessor.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/edm/edmInboundChecks.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/edm/edmPreprocessor.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/edm/edmUtils.js +12 -7
- package/node_modules/@sap/cds-compiler/lib/gen/CdlGrammar.checksum +1 -1
- package/node_modules/@sap/cds-compiler/lib/gen/CdlParser.js +15 -15
- package/node_modules/@sap/cds-compiler/lib/gen/Dictionary.json +7 -0
- package/node_modules/@sap/cds-compiler/lib/json/from-csn.js +30 -30
- package/node_modules/@sap/cds-compiler/lib/json/to-csn.js +2 -1
- package/node_modules/@sap/cds-compiler/lib/main.js +4 -1
- package/node_modules/@sap/cds-compiler/lib/parsers/AstBuildingParser.js +42 -15
- package/node_modules/@sap/cds-compiler/lib/render/DuplicateChecker.js +37 -11
- package/node_modules/@sap/cds-compiler/lib/render/manageConstraints.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/render/toCdl.js +11 -6
- package/node_modules/@sap/cds-compiler/lib/render/toRename.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/render/toSql.js +74 -24
- package/node_modules/@sap/cds-compiler/lib/render/utils/common.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/render/utils/operators.js +81 -0
- package/node_modules/@sap/cds-compiler/lib/render/utils/sql.js +17 -10
- package/node_modules/@sap/cds-compiler/lib/transform/db/assertUnique.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/associations.js +3 -4
- package/node_modules/@sap/cds-compiler/lib/transform/db/assocsToQueries/transformExists.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/backlinks.js +2 -2
- package/node_modules/@sap/cds-compiler/lib/transform/db/cdsPersistence.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/constraints.js +6 -5
- package/node_modules/@sap/cds-compiler/lib/transform/db/expansion.js +7 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/flattening.js +2 -2
- package/node_modules/@sap/cds-compiler/lib/{modelCompare/compare.js → transform/db/migration/diffModels.js} +5 -5
- package/node_modules/@sap/cds-compiler/lib/{modelCompare/utils/filter.js → transform/db/migration/filterDiff.js} +2 -2
- package/node_modules/@sap/cds-compiler/lib/transform/db/processSqlServices.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/rewriteCalculatedElements.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/temporal.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/db/views.js +2 -6
- package/node_modules/@sap/cds-compiler/lib/transform/draft/db.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/draft/odata.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/effective/annotations.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/effective/associations.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/effective/flattening.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/effective/main.js +3 -2
- package/node_modules/@sap/cds-compiler/lib/transform/effective/misc.js +2 -1
- package/node_modules/@sap/cds-compiler/lib/transform/effective/queries.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/effective/types.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/forOdata.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/forRelationalDB.js +9 -4
- package/node_modules/@sap/cds-compiler/lib/transform/localized.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/odata/adaptAnnotationRefs.js +5 -11
- package/node_modules/@sap/cds-compiler/lib/transform/odata/createForeignKeys.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/odata/flattening.js +4 -4
- package/node_modules/@sap/cds-compiler/lib/transform/odata/foreignKeyRefsInXprAnnos.js +5 -3
- package/node_modules/@sap/cds-compiler/lib/transform/odata/toFinalBaseType.js +29 -5
- package/node_modules/@sap/cds-compiler/lib/transform/odata/typesExposure.js +13 -3
- package/node_modules/@sap/cds-compiler/lib/transform/odata/utils.js +9 -0
- package/node_modules/@sap/cds-compiler/lib/transform/transformUtils.js +2 -2
- package/node_modules/@sap/cds-compiler/lib/transform/translateAssocsToJoins.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/tupleExpansion.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/coreComputed.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/universalCsnEnricher.js +1 -1
- package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/utils.js +1 -1
- package/node_modules/@sap/cds-compiler/package.json +1 -1
- package/node_modules/@sap/cds-mtxs/CHANGELOG.md +47 -0
- package/node_modules/@sap/cds-mtxs/bin/cds-mtx-migrate.js +4 -6
- package/node_modules/@sap/cds-mtxs/bin/cds-mtx.js +5 -4
- package/node_modules/@sap/cds-mtxs/cds-plugin.js +38 -2
- package/node_modules/@sap/cds-mtxs/db/t0.cds +7 -0
- package/node_modules/@sap/cds-mtxs/lib/utils.js +129 -20
- package/node_modules/@sap/cds-mtxs/package.json +15 -14
- package/node_modules/@sap/cds-mtxs/srv/cf/abstract-provisioning-service.js +13 -12
- package/node_modules/@sap/cds-mtxs/srv/cf/saas-provisioning-service.cds +1 -0
- package/node_modules/@sap/cds-mtxs/srv/cf/sms-provisioning-service.cds +1 -0
- package/node_modules/@sap/cds-mtxs/srv/extensibility/compat/update.js +5 -2
- package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/config.js +1 -2
- package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/csv-allowlist.js +64 -0
- package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/index.js +4 -2
- package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/protected-namespace.js +67 -5
- package/node_modules/@sap/cds-mtxs/srv/extensibility-service.js +179 -15
- package/node_modules/@sap/cds-mtxs/srv/jobs-service.js +12 -3
- package/node_modules/@sap/cds-mtxs/srv/plugins/common.js +33 -12
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/ctnr-mgr-base.js +24 -6
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/hdi-ctnr-mgr.js +3 -1
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/hdi-native.js +752 -0
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/serverless.js +17 -20
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/srv-mgr-v2.js +511 -0
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/srv-mgr.js +11 -4
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana/tms.js +8 -0
- package/node_modules/@sap/cds-mtxs/srv/plugins/hana.js +27 -18
- package/node_modules/@sap/cds-mtxs/srv/worker/job-worker-pool.js +1 -1
- package/node_modules/@sap/cds-mtxs/srv/worker/job-worker.js +1 -1
- package/node_modules/chownr/LICENSE.md +63 -0
- package/node_modules/chownr/README.md +3 -0
- package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
- package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/chownr/dist/commonjs/index.js +93 -0
- package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
- package/node_modules/chownr/dist/commonjs/package.json +3 -0
- package/node_modules/chownr/dist/esm/index.d.ts +3 -0
- package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
- package/node_modules/chownr/dist/esm/index.js +85 -0
- package/node_modules/chownr/dist/esm/index.js.map +1 -0
- package/node_modules/chownr/dist/esm/package.json +3 -0
- package/node_modules/chownr/package.json +69 -0
- package/node_modules/content-disposition/README.md +105 -35
- package/node_modules/content-disposition/dist/index.d.ts +72 -0
- package/node_modules/content-disposition/dist/index.js +388 -0
- package/node_modules/content-disposition/dist/index.js.map +1 -0
- package/node_modules/content-disposition/package.json +31 -19
- package/node_modules/content-type/README.md +34 -57
- package/node_modules/content-type/package.json +35 -25
- package/node_modules/express/Readme.md +15 -9
- package/node_modules/express/lib/application.js +2 -2
- package/node_modules/express/lib/request.js +32 -19
- package/node_modules/express/lib/response.js +27 -30
- package/node_modules/express/package.json +10 -10
- package/node_modules/handlebars/bin/handlebars +1 -1
- package/node_modules/handlebars/dist/amd/handlebars/base.js +2 -2
- package/node_modules/handlebars/dist/amd/handlebars/compiler/base.js +2 -59
- package/node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js +68 -5
- package/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js +160 -19
- package/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js +23 -7
- package/node_modules/handlebars/dist/amd/handlebars/compiler/node-types.js +12 -0
- package/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js +26 -7
- package/node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js +9 -4
- package/node_modules/handlebars/dist/amd/handlebars/exception.js +8 -4
- package/node_modules/handlebars/dist/amd/handlebars/helpers/each.js +40 -14
- package/node_modules/handlebars/dist/amd/handlebars/internal/proto-access.js +21 -1
- package/node_modules/handlebars/dist/amd/handlebars/runtime.js +24 -4
- package/node_modules/handlebars/dist/amd/handlebars/utils.js +4 -3
- package/node_modules/handlebars/dist/amd/precompiler.js +13 -7
- package/node_modules/handlebars/dist/cjs/handlebars/base.js +2 -2
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +1 -60
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js +64 -4
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js +161 -18
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +23 -7
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/node-types.js +10 -0
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js +29 -6
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +9 -4
- package/node_modules/handlebars/dist/cjs/handlebars/exception.js +8 -4
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js +40 -14
- package/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js +21 -1
- package/node_modules/handlebars/dist/cjs/handlebars/runtime.js +24 -4
- package/node_modules/handlebars/dist/cjs/handlebars/utils.js +4 -3
- package/node_modules/handlebars/dist/cjs/precompiler.js +14 -6
- package/node_modules/handlebars/dist/handlebars.amd.js +401 -130
- package/node_modules/handlebars/dist/handlebars.amd.min.js +4 -4
- package/node_modules/handlebars/dist/handlebars.js +396 -125
- package/node_modules/handlebars/dist/handlebars.min.js +4 -4
- package/node_modules/handlebars/dist/handlebars.runtime.amd.js +100 -29
- package/node_modules/handlebars/dist/handlebars.runtime.amd.min.js +2 -2
- package/node_modules/handlebars/dist/handlebars.runtime.js +94 -23
- package/node_modules/handlebars/dist/handlebars.runtime.min.js +2 -2
- package/node_modules/handlebars/lib/handlebars/base.js +1 -1
- package/node_modules/handlebars/lib/handlebars/compiler/base.js +0 -67
- package/node_modules/handlebars/lib/handlebars/compiler/code-gen.js +65 -11
- package/node_modules/handlebars/lib/handlebars/compiler/compiler.js +164 -23
- package/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js +23 -7
- package/node_modules/handlebars/lib/handlebars/compiler/node-types.js +24 -0
- package/node_modules/handlebars/lib/handlebars/compiler/visitor.js +29 -5
- package/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js +16 -5
- package/node_modules/handlebars/lib/handlebars/exception.js +7 -3
- package/node_modules/handlebars/lib/handlebars/helpers/each.js +39 -16
- package/node_modules/handlebars/lib/handlebars/internal/proto-access.js +22 -0
- package/node_modules/handlebars/lib/handlebars/runtime.js +36 -4
- package/node_modules/handlebars/lib/handlebars/utils.js +3 -2
- package/node_modules/handlebars/lib/precompiler.js +14 -5
- package/node_modules/handlebars/package.json +2 -2
- package/node_modules/handlebars/release-notes.md +20 -1
- package/node_modules/handlebars/types/index.d.ts +8 -0
- package/node_modules/hdb/cfg/VERSION +1 -1
- package/node_modules/hdb/lib/Client.js +6 -2
- package/node_modules/hdb/lib/protocol/ClientInfo.js +28 -15
- package/node_modules/hdb/lib/protocol/Connection.js +30 -3
- package/node_modules/hdb/lib/protocol/Writer.js +2 -2
- package/node_modules/hdb/lib/protocol/common/ConnectOption.js +2 -0
- package/node_modules/hdb/lib/protocol/common/ConnectOptionFlagSet1.js +18 -0
- package/node_modules/hdb/lib/protocol/common/ConnectOptionType.js +2 -0
- package/node_modules/hdb/lib/protocol/common/Constants.js +1 -0
- package/node_modules/hdb/lib/protocol/common/MessageType.js +3 -2
- package/node_modules/hdb/lib/protocol/common/PartKind.js +2 -1
- package/node_modules/hdb/lib/protocol/common/index.js +1 -0
- package/node_modules/hdb/lib/protocol/data/TextList.js +25 -17
- package/node_modules/hdb/lib/protocol/data/index.js +1 -0
- package/node_modules/hdb/lib/protocol/part/ConnectOptions.js +7 -0
- package/node_modules/hdb/lib/protocol/request/index.js +7 -0
- package/node_modules/hdb/package.json +1 -2
- package/node_modules/livereload-js/.github/workflows/main.yml +4 -4
- package/node_modules/livereload-js/README.md +3 -3
- package/node_modules/livereload-js/dist/livereload.js +839 -2742
- package/node_modules/livereload-js/dist/livereload.min.js +1 -1
- package/node_modules/livereload-js/package.json +11 -11
- package/node_modules/minipass/LICENSE.md +55 -0
- package/node_modules/minipass/README.md +825 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/minipass/dist/commonjs/index.js +1038 -0
- package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/node_modules/minipass/dist/esm/index.d.ts +545 -0
- package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/minipass/dist/esm/index.js +1020 -0
- package/node_modules/minipass/dist/esm/index.js.map +1 -0
- package/node_modules/minipass/dist/esm/package.json +3 -0
- package/node_modules/minipass/package.json +77 -0
- package/node_modules/minizlib/LICENSE +26 -0
- package/node_modules/minizlib/README.md +64 -0
- package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
- package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
- package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
- package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
- package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
- package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/minizlib/dist/commonjs/index.js +416 -0
- package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
- package/node_modules/minizlib/dist/commonjs/package.json +3 -0
- package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
- package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
- package/node_modules/minizlib/dist/esm/constants.js +117 -0
- package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
- package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
- package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
- package/node_modules/minizlib/dist/esm/index.js +363 -0
- package/node_modules/minizlib/dist/esm/index.js.map +1 -0
- package/node_modules/minizlib/dist/esm/package.json +3 -0
- package/node_modules/minizlib/package.json +80 -0
- package/node_modules/qs/.github/THREAT_MODEL.md +4 -2
- package/node_modules/qs/CHANGELOG.md +38 -14
- package/node_modules/qs/README.md +31 -3
- package/node_modules/qs/dist/qs.js +20 -20
- package/node_modules/qs/lib/parse.js +94 -4
- package/node_modules/qs/lib/stringify.js +4 -4
- package/node_modules/qs/lib/utils.js +130 -6
- package/node_modules/qs/package.json +4 -4
- package/node_modules/qs/test/parse.js +174 -0
- package/node_modules/qs/test/stringify.js +263 -33
- package/node_modules/qs/test/utils.js +184 -0
- package/node_modules/tar/LICENSE.md +55 -0
- package/node_modules/tar/README.md +1233 -0
- package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/create.js +82 -0
- package/node_modules/tar/dist/commonjs/create.js.map +1 -0
- package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
- package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
- package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
- package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/extract.js +88 -0
- package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
- package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
- package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/header.js +348 -0
- package/node_modules/tar/dist/commonjs/header.js.map +1 -0
- package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
- package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/index.js +64 -0
- package/node_modules/tar/dist/commonjs/index.js.map +1 -0
- package/node_modules/tar/dist/commonjs/index.min.js +4 -0
- package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
- package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
- package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
- package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
- package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/list.js +153 -0
- package/node_modules/tar/dist/commonjs/list.js.map +1 -0
- package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
- package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/make-command.js +52 -0
- package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
- package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
- package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
- package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
- package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
- package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
- package/node_modules/tar/dist/commonjs/options.d.ts +604 -0
- package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/options.js +66 -0
- package/node_modules/tar/dist/commonjs/options.js.map +1 -0
- package/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
- package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/pack.js +544 -0
- package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
- package/node_modules/tar/dist/commonjs/package.json +3 -0
- package/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
- package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/parse.js +655 -0
- package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
- package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
- package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
- package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
- package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
- package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/pax.js +182 -0
- package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
- package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
- package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
- package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
- package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
- package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
- package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/replace.js +227 -0
- package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
- package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
- package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
- package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
- package/node_modules/tar/dist/commonjs/types.d.ts +16 -0
- package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/types.js +70 -0
- package/node_modules/tar/dist/commonjs/types.js.map +1 -0
- package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
- package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/unpack.js +932 -0
- package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
- package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/update.js +33 -0
- package/node_modules/tar/dist/commonjs/update.js.map +1 -0
- package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
- package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
- package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
- package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/winchars.js +14 -0
- package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
- package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
- package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
- package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
- package/node_modules/tar/dist/esm/create.d.ts +3 -0
- package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/create.js +76 -0
- package/node_modules/tar/dist/esm/create.js.map +1 -0
- package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
- package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/cwd-error.js +14 -0
- package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
- package/node_modules/tar/dist/esm/extract.d.ts +3 -0
- package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/extract.js +49 -0
- package/node_modules/tar/dist/esm/extract.js.map +1 -0
- package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
- package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
- package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
- package/node_modules/tar/dist/esm/header.d.ts +53 -0
- package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/header.js +311 -0
- package/node_modules/tar/dist/esm/header.js.map +1 -0
- package/node_modules/tar/dist/esm/index.d.ts +20 -0
- package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/index.js +20 -0
- package/node_modules/tar/dist/esm/index.js.map +1 -0
- package/node_modules/tar/dist/esm/index.min.js +4 -0
- package/node_modules/tar/dist/esm/index.min.js.map +7 -0
- package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
- package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/large-numbers.js +94 -0
- package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
- package/node_modules/tar/dist/esm/list.d.ts +7 -0
- package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/list.js +113 -0
- package/node_modules/tar/dist/esm/list.js.map +1 -0
- package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
- package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/make-command.js +48 -0
- package/node_modules/tar/dist/esm/make-command.js.map +1 -0
- package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
- package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/mkdir.js +179 -0
- package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
- package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
- package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/mode-fix.js +25 -0
- package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
- package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
- package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
- package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
- package/node_modules/tar/dist/esm/options.d.ts +604 -0
- package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/options.js +54 -0
- package/node_modules/tar/dist/esm/options.js.map +1 -0
- package/node_modules/tar/dist/esm/pack.d.ts +105 -0
- package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/pack.js +502 -0
- package/node_modules/tar/dist/esm/pack.js.map +1 -0
- package/node_modules/tar/dist/esm/package.json +3 -0
- package/node_modules/tar/dist/esm/parse.d.ts +92 -0
- package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/parse.js +651 -0
- package/node_modules/tar/dist/esm/parse.js.map +1 -0
- package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
- package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/path-reservations.js +166 -0
- package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
- package/node_modules/tar/dist/esm/pax.d.ts +26 -0
- package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/pax.js +178 -0
- package/node_modules/tar/dist/esm/pax.js.map +1 -0
- package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
- package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/process-umask.js +3 -0
- package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
- package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
- package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/read-entry.js +132 -0
- package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
- package/node_modules/tar/dist/esm/replace.d.ts +2 -0
- package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/replace.js +221 -0
- package/node_modules/tar/dist/esm/replace.js.map +1 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
- package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
- package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/symlink-error.js +15 -0
- package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
- package/node_modules/tar/dist/esm/types.d.ts +16 -0
- package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/types.js +65 -0
- package/node_modules/tar/dist/esm/types.js.map +1 -0
- package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
- package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/unpack.js +891 -0
- package/node_modules/tar/dist/esm/unpack.js.map +1 -0
- package/node_modules/tar/dist/esm/update.d.ts +2 -0
- package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/update.js +30 -0
- package/node_modules/tar/dist/esm/update.js.map +1 -0
- package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
- package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/warn-method.js +27 -0
- package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
- package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
- package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/winchars.js +9 -0
- package/node_modules/tar/dist/esm/winchars.js.map +1 -0
- package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
- package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/write-entry.js +656 -0
- package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
- package/node_modules/tar/package.json +298 -0
- package/node_modules/ws/lib/websocket.js +17 -3
- package/node_modules/ws/package.json +1 -1
- package/node_modules/yallist/LICENSE.md +63 -0
- package/node_modules/yallist/README.md +205 -0
- package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
- package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/yallist/dist/commonjs/index.js +384 -0
- package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
- package/node_modules/yallist/dist/commonjs/package.json +3 -0
- package/node_modules/yallist/dist/esm/index.d.ts +39 -0
- package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
- package/node_modules/yallist/dist/esm/index.js +379 -0
- package/node_modules/yallist/dist/esm/index.js.map +1 -0
- package/node_modules/yallist/dist/esm/package.json +3 -0
- package/node_modules/yallist/package.json +68 -0
- package/package.json +7 -1
- package/bin/completion/templates/cds-tmpl.fish +0 -65
- package/bin/completion/templates/cds-tmpl.ps1 +0 -217
- package/bin/completion/templates/cds-tmpl.sh +0 -93
- package/bin/completion/templates/cds-tmpl.zsh +0 -74
- package/node_modules/@cap-js/db-service/lib/recursion-guard.js +0 -40
- package/node_modules/@sap/cds/lib/env/cds-requires.js +0 -327
- package/node_modules/@sap/cds-mtxs/srv/bootstrap.cds +0 -2
- package/node_modules/@sap/cds-mtxs/srv/bootstrap.js +0 -33
- package/node_modules/body-parser/node_modules/content-type/LICENSE +0 -22
- package/node_modules/body-parser/node_modules/content-type/README.md +0 -71
- package/node_modules/body-parser/node_modules/content-type/package.json +0 -52
- package/node_modules/content-disposition/index.js +0 -536
- package/node_modules/content-type/HISTORY.md +0 -29
- package/node_modules/content-type/index.js +0 -225
- package/node_modules/negotiator/node_modules/content-type/LICENSE +0 -22
- package/node_modules/negotiator/node_modules/content-type/README.md +0 -71
- package/node_modules/negotiator/node_modules/content-type/dist/index.d.ts +0 -46
- package/node_modules/negotiator/node_modules/content-type/dist/index.js +0 -176
- package/node_modules/negotiator/node_modules/content-type/dist/index.js.map +0 -1
- package/node_modules/negotiator/node_modules/content-type/package.json +0 -52
- package/node_modules/type-is/node_modules/content-type/LICENSE +0 -22
- package/node_modules/type-is/node_modules/content-type/README.md +0 -71
- package/node_modules/type-is/node_modules/content-type/dist/index.d.ts +0 -46
- package/node_modules/type-is/node_modules/content-type/dist/index.js +0 -176
- package/node_modules/type-is/node_modules/content-type/dist/index.js.map +0 -1
- package/node_modules/type-is/node_modules/content-type/package.json +0 -52
- /package/lib/init/template/react/files/{vite.config.js.hbs → vite.config.{{extension}}.hbs} +0 -0
- /package/lib/init/template/vue/files/src/{main.js → main.{{extension}}.hbs} +0 -0
- /package/lib/init/template/vue/files/{vite.config.js.hbs → vite.config.{{extension}}.hbs} +0 -0
- /package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/utilities.js +0 -0
- /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.d.ts +0 -0
- /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.js +0 -0
- /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.js.map +0 -0
|
@@ -1,6 +1,61 @@
|
|
|
1
1
|
/* global define, require */
|
|
2
2
|
import { isArray } from '../utils';
|
|
3
3
|
|
|
4
|
+
// Matches any character that quotedString may have to escape: quotes,
|
|
5
|
+
// backslashes, control characters, line separators, surrogates and "<". Most
|
|
6
|
+
// strings, e.g. lookup names, contain none of them and can skip the escaping.
|
|
7
|
+
// eslint-disable-next-line no-control-regex
|
|
8
|
+
const NEEDS_ESCAPING = /[\x00-\x1f\\"\u2028\u2029<\ud800-\udfff]/;
|
|
9
|
+
|
|
10
|
+
// Per HTML "Restrictions for contents of script elements": "<!--", "<script"
|
|
11
|
+
// and "</script" can end or change the parsing of an enclosing <script>
|
|
12
|
+
// element.
|
|
13
|
+
const SCRIPT_DELIMITERS = /<(?=!--|\/?script)/gi;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Escape the "<" of every sequence that could end or change the parsing of
|
|
17
|
+
* an enclosing <script> element.
|
|
18
|
+
*
|
|
19
|
+
* Only pass JavaScript or JSON code in which "<" can only occur inside string
|
|
20
|
+
* literals, where "\u003C" has the same value.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} code the code to escape
|
|
23
|
+
* @returns {string} the escaped code
|
|
24
|
+
*/
|
|
25
|
+
function escapeScriptDelimiters(code) {
|
|
26
|
+
return code.replace(SCRIPT_DELIMITERS, '\\u003C');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Escape a UTF-16 surrogate code unit as a "\uXXXX" escape sequence.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} surrogate a single surrogate code unit
|
|
33
|
+
* @returns {string} the escape sequence
|
|
34
|
+
*/
|
|
35
|
+
function escapeSurrogate(surrogate) {
|
|
36
|
+
return '\\u' + surrogate.charCodeAt(0).toString(16);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Convert a value to a JSON literal that is safe to write into generated
|
|
41
|
+
* code: valid in ES5, where line and paragraph separators end string literals,
|
|
42
|
+
* encodable as UTF-8 on every engine, and safe inside an enclosing <script>
|
|
43
|
+
* element.
|
|
44
|
+
*
|
|
45
|
+
* @param {*} value the value to convert
|
|
46
|
+
* @returns {string} the JavaScript literal
|
|
47
|
+
*/
|
|
48
|
+
export function safeJsonLiteral(value) {
|
|
49
|
+
return escapeScriptDelimiters(
|
|
50
|
+
JSON.stringify(value)
|
|
51
|
+
.replace(/\u2028/g, '\\u2028')
|
|
52
|
+
.replace(/\u2029/g, '\\u2029')
|
|
53
|
+
// Engines before ES2019 leave lone surrogates unescaped, and those cannot
|
|
54
|
+
// be encoded as UTF-8. Escaping paired ones as well keeps the value.
|
|
55
|
+
.replace(/[\ud800-\udfff]/g, escapeSurrogate)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
4
59
|
let SourceNode;
|
|
5
60
|
|
|
6
61
|
try {
|
|
@@ -116,17 +171,16 @@ CodeGen.prototype = {
|
|
|
116
171
|
},
|
|
117
172
|
|
|
118
173
|
quotedString: function(str) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
);
|
|
174
|
+
str = str + '';
|
|
175
|
+
// Fast path: quotedString runs for every lookup name and content string,
|
|
176
|
+
// and the chain of replacements below is much slower than a single test.
|
|
177
|
+
if (!NEEDS_ESCAPING.test(str)) {
|
|
178
|
+
return '"' + str + '"';
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// JSON.stringify escapes quotes, backslashes and control characters;
|
|
182
|
+
// safeJsonLiteral adds line separators, surrogates and script delimiters.
|
|
183
|
+
return safeJsonLiteral(str);
|
|
130
184
|
},
|
|
131
185
|
|
|
132
186
|
objectLiteral: function(obj) {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import Exception from '../exception';
|
|
4
4
|
import { isArray, indexOf, extend } from '../utils';
|
|
5
5
|
import AST from './ast';
|
|
6
|
+
import { NODE_TYPES } from './node-types';
|
|
6
7
|
|
|
7
8
|
const slice = [].slice;
|
|
8
9
|
|
|
@@ -89,8 +90,8 @@ Compiler.prototype = {
|
|
|
89
90
|
},
|
|
90
91
|
|
|
91
92
|
accept: function(node) {
|
|
92
|
-
|
|
93
|
-
if (!this[node.type]) {
|
|
93
|
+
// Dispatching on an unknown type could call an arbitrary Compiler method.
|
|
94
|
+
if (indexOf(NODE_TYPES, node.type) === -1 || !this[node.type]) {
|
|
94
95
|
throw new Exception('Unknown type: ' + node.type, node);
|
|
95
96
|
}
|
|
96
97
|
|
|
@@ -101,6 +102,7 @@ Compiler.prototype = {
|
|
|
101
102
|
},
|
|
102
103
|
|
|
103
104
|
Program: function(program) {
|
|
105
|
+
validateBlockParams(program);
|
|
104
106
|
this.options.blockParams.unshift(program.blockParams);
|
|
105
107
|
|
|
106
108
|
let body = program.body,
|
|
@@ -219,6 +221,9 @@ Compiler.prototype = {
|
|
|
219
221
|
},
|
|
220
222
|
|
|
221
223
|
ContentStatement: function(content) {
|
|
224
|
+
if (content.value != null && typeof content.value !== 'string') {
|
|
225
|
+
throw invalidAst(content, 'value must be a string');
|
|
226
|
+
}
|
|
222
227
|
if (content.value) {
|
|
223
228
|
this.opcode('appendContent', content.value);
|
|
224
229
|
}
|
|
@@ -243,7 +248,7 @@ Compiler.prototype = {
|
|
|
243
248
|
name = path.parts[0],
|
|
244
249
|
isBlock = program != null || inverse != null;
|
|
245
250
|
|
|
246
|
-
this.opcode('getContext', path
|
|
251
|
+
this.opcode('getContext', validateDepth(path));
|
|
247
252
|
|
|
248
253
|
this.opcode('pushProgram', program);
|
|
249
254
|
this.opcode('pushProgram', inverse);
|
|
@@ -288,41 +293,43 @@ Compiler.prototype = {
|
|
|
288
293
|
},
|
|
289
294
|
|
|
290
295
|
PathExpression: function(path) {
|
|
291
|
-
|
|
292
|
-
|
|
296
|
+
// Validate AST values at the compiler boundary: javascript-compiler.js
|
|
297
|
+
// trusts all opcode arguments to be safe.
|
|
298
|
+
const depth = validateDepth(path);
|
|
299
|
+
const parts = validateParts(path);
|
|
300
|
+
|
|
301
|
+
this.addDepth(depth);
|
|
302
|
+
this.opcode('getContext', depth);
|
|
293
303
|
|
|
294
|
-
let name =
|
|
304
|
+
let name = parts[0],
|
|
295
305
|
scoped = AST.helpers.scopedId(path),
|
|
296
|
-
blockParamId = !
|
|
306
|
+
blockParamId = !depth && !scoped && this.blockParamIndex(name);
|
|
297
307
|
|
|
298
308
|
if (blockParamId) {
|
|
299
|
-
this.opcode('lookupBlockParam', blockParamId,
|
|
309
|
+
this.opcode('lookupBlockParam', blockParamId, parts);
|
|
300
310
|
} else if (!name) {
|
|
301
311
|
// Context reference, i.e. `{{foo .}}` or `{{foo ..}}`
|
|
302
312
|
this.opcode('pushContext');
|
|
303
313
|
} else if (path.data) {
|
|
304
314
|
this.options.data = true;
|
|
305
|
-
this.opcode('lookupData',
|
|
315
|
+
this.opcode('lookupData', depth, parts, path.strict);
|
|
306
316
|
} else {
|
|
307
|
-
this.opcode(
|
|
308
|
-
'lookupOnContext',
|
|
309
|
-
path.parts,
|
|
310
|
-
path.falsy,
|
|
311
|
-
path.strict,
|
|
312
|
-
scoped
|
|
313
|
-
);
|
|
317
|
+
this.opcode('lookupOnContext', parts, path.falsy, path.strict, scoped);
|
|
314
318
|
}
|
|
315
319
|
},
|
|
316
320
|
|
|
317
321
|
StringLiteral: function(string) {
|
|
322
|
+
validateLiteral(string);
|
|
318
323
|
this.opcode('pushString', string.value);
|
|
319
324
|
},
|
|
320
325
|
|
|
321
326
|
NumberLiteral: function(number) {
|
|
327
|
+
validateLiteral(number);
|
|
322
328
|
this.opcode('pushLiteral', number.value);
|
|
323
329
|
},
|
|
324
330
|
|
|
325
331
|
BooleanLiteral: function(bool) {
|
|
332
|
+
validateLiteral(bool);
|
|
326
333
|
this.opcode('pushLiteral', bool.value);
|
|
327
334
|
},
|
|
328
335
|
|
|
@@ -337,7 +344,17 @@ Compiler.prototype = {
|
|
|
337
344
|
Hash: function(hash) {
|
|
338
345
|
let pairs = hash.pairs,
|
|
339
346
|
i = 0,
|
|
340
|
-
l
|
|
347
|
+
l;
|
|
348
|
+
|
|
349
|
+
if (!isArray(pairs)) {
|
|
350
|
+
throw invalidAst(hash, 'pairs must be an array');
|
|
351
|
+
}
|
|
352
|
+
l = pairs.length;
|
|
353
|
+
for (let j = 0; j < l; j++) {
|
|
354
|
+
if (!pairs[j] || typeof pairs[j].key !== 'string') {
|
|
355
|
+
throw invalidAst(hash, 'pair keys must be strings');
|
|
356
|
+
}
|
|
357
|
+
}
|
|
341
358
|
|
|
342
359
|
this.opcode('pushHash');
|
|
343
360
|
|
|
@@ -368,6 +385,9 @@ Compiler.prototype = {
|
|
|
368
385
|
},
|
|
369
386
|
|
|
370
387
|
classifySexpr: function(sexpr) {
|
|
388
|
+
// The first part is used as a helper name below, e.g. for known helpers,
|
|
389
|
+
// before the PathExpression handler gets to validate the parts.
|
|
390
|
+
validateParts(sexpr.path);
|
|
371
391
|
let isSimple = AST.helpers.simpleId(sexpr.path);
|
|
372
392
|
|
|
373
393
|
let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);
|
|
@@ -409,17 +429,26 @@ Compiler.prototype = {
|
|
|
409
429
|
},
|
|
410
430
|
|
|
411
431
|
pushParam: function(val) {
|
|
432
|
+
// Literal params are not visited by their node handlers in stringParams
|
|
433
|
+
// mode, so their values must be validated here as well.
|
|
434
|
+
validateLiteral(val);
|
|
412
435
|
let value = val.value != null ? val.value : val.original || '';
|
|
436
|
+
let depth = validateDepth(val);
|
|
413
437
|
|
|
414
438
|
if (this.stringParams) {
|
|
439
|
+
// pushStringParam emits non-string values as raw JavaScript literals.
|
|
440
|
+
// Literal values are validated above, but `original` is not, so
|
|
441
|
+
// anything that is not a number or boolean is stringified.
|
|
442
|
+
if (typeof value !== 'number' && typeof value !== 'boolean') {
|
|
443
|
+
value = String(value);
|
|
444
|
+
}
|
|
415
445
|
if (value.replace) {
|
|
416
446
|
value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.');
|
|
417
447
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
this.addDepth(val.depth);
|
|
448
|
+
if (depth) {
|
|
449
|
+
this.addDepth(depth);
|
|
421
450
|
}
|
|
422
|
-
this.opcode('getContext',
|
|
451
|
+
this.opcode('getContext', depth);
|
|
423
452
|
this.opcode('pushStringParam', value, val.type);
|
|
424
453
|
|
|
425
454
|
if (val.type === 'SubExpression') {
|
|
@@ -430,8 +459,10 @@ Compiler.prototype = {
|
|
|
430
459
|
} else {
|
|
431
460
|
if (this.trackIds) {
|
|
432
461
|
let blockParamIndex;
|
|
433
|
-
if (val.parts && !AST.helpers.scopedId(val) && !
|
|
434
|
-
|
|
462
|
+
if (val.parts && !AST.helpers.scopedId(val) && !depth) {
|
|
463
|
+
// The parts are read here before the PathExpression handler,
|
|
464
|
+
// invoked by accept() below, gets to validate them.
|
|
465
|
+
blockParamIndex = this.blockParamIndex(validateParts(val)[0]);
|
|
435
466
|
}
|
|
436
467
|
if (blockParamIndex) {
|
|
437
468
|
let blockParamChild = val.parts.slice(1).join('.');
|
|
@@ -562,6 +593,116 @@ export function compile(input, options = {}, env) {
|
|
|
562
593
|
return ret;
|
|
563
594
|
}
|
|
564
595
|
|
|
596
|
+
/**
|
|
597
|
+
* Create the exception thrown for an AST node that fails validation.
|
|
598
|
+
*
|
|
599
|
+
* @param {Object} node the offending AST node; its `type` is included in the
|
|
600
|
+
* message and its `loc`, if present, in the error location
|
|
601
|
+
* @param {string} message what is wrong with the node
|
|
602
|
+
* @returns {Exception} the exception to throw
|
|
603
|
+
*/
|
|
604
|
+
function invalidAst(node, message) {
|
|
605
|
+
return new Exception('Invalid AST: ' + node.type + ' ' + message, node);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Validate the `depth` of a path or param node.
|
|
610
|
+
*
|
|
611
|
+
* A missing depth is treated as 0, because ASTs built by hand or by other
|
|
612
|
+
* tools commonly omit it. Any depth that is present must be a non-negative
|
|
613
|
+
* integer, since it is written into the generated code.
|
|
614
|
+
*
|
|
615
|
+
* @param {Object} node the AST node whose `depth` is validated
|
|
616
|
+
* @returns {number} the validated depth, or 0 if the node has none
|
|
617
|
+
* @throws {Exception} if the depth is present but not a non-negative integer
|
|
618
|
+
*/
|
|
619
|
+
function validateDepth(node) {
|
|
620
|
+
let depth = node.depth;
|
|
621
|
+
if (depth == null) {
|
|
622
|
+
return 0;
|
|
623
|
+
}
|
|
624
|
+
if (
|
|
625
|
+
typeof depth !== 'number' ||
|
|
626
|
+
!isFinite(depth) ||
|
|
627
|
+
Math.floor(depth) !== depth ||
|
|
628
|
+
depth < 0
|
|
629
|
+
) {
|
|
630
|
+
throw invalidAst(node, 'depth must be a non-negative integer');
|
|
631
|
+
}
|
|
632
|
+
return depth;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/**
|
|
636
|
+
* Validate the `value` of a StringLiteral, NumberLiteral or BooleanLiteral.
|
|
637
|
+
*
|
|
638
|
+
* Literal values are written into the generated code, so they must have
|
|
639
|
+
* exactly the type their node promises. Nodes of any other type pass through
|
|
640
|
+
* unchanged.
|
|
641
|
+
*
|
|
642
|
+
* Numbers need not be finite: the parser produces Infinity for very long
|
|
643
|
+
* number literals, and Infinity and NaN are emitted as the read-only globals
|
|
644
|
+
* of the same name.
|
|
645
|
+
*
|
|
646
|
+
* @param {Object} node the AST node to validate
|
|
647
|
+
* @throws {Exception} if the value does not match the literal type
|
|
648
|
+
*/
|
|
649
|
+
function validateLiteral(node) {
|
|
650
|
+
let value = node.value;
|
|
651
|
+
if (node.type === 'StringLiteral' && typeof value !== 'string') {
|
|
652
|
+
throw invalidAst(node, 'value must be a string');
|
|
653
|
+
} else if (node.type === 'NumberLiteral' && typeof value !== 'number') {
|
|
654
|
+
throw invalidAst(node, 'value must be a number');
|
|
655
|
+
} else if (node.type === 'BooleanLiteral' && typeof value !== 'boolean') {
|
|
656
|
+
throw invalidAst(node, 'value must be a boolean');
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* Validate that a node property is an array containing only strings.
|
|
662
|
+
*
|
|
663
|
+
* @param {Object} node the AST node the property belongs to, for the error
|
|
664
|
+
* @param {*} value the property value to validate
|
|
665
|
+
* @param {string} name the property name, used in the error message
|
|
666
|
+
* @returns {string[]} the validated array
|
|
667
|
+
* @throws {Exception} if the value is not an array or contains non-strings
|
|
668
|
+
*/
|
|
669
|
+
function validateStringArray(node, value, name) {
|
|
670
|
+
if (!isArray(value)) {
|
|
671
|
+
throw invalidAst(node, name + ' must be an array');
|
|
672
|
+
}
|
|
673
|
+
for (let i = 0; i < value.length; i++) {
|
|
674
|
+
if (typeof value[i] !== 'string') {
|
|
675
|
+
throw invalidAst(node, name + ' must only contain strings');
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
return value;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Validate the `parts` of a PathExpression node.
|
|
683
|
+
*
|
|
684
|
+
* @param {Object} path the PathExpression node
|
|
685
|
+
* @returns {string[]} the validated parts
|
|
686
|
+
* @throws {Exception} if `parts` is not an array of strings
|
|
687
|
+
*/
|
|
688
|
+
function validateParts(path) {
|
|
689
|
+
return validateStringArray(path, path.parts, 'parts');
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/**
|
|
693
|
+
* Validate the optional `blockParams` of a Program node. Its length is
|
|
694
|
+
* written into the generated code, so it must be an array of strings when
|
|
695
|
+
* present.
|
|
696
|
+
*
|
|
697
|
+
* @param {Object} program the Program node
|
|
698
|
+
* @throws {Exception} if `blockParams` is present and not an array of strings
|
|
699
|
+
*/
|
|
700
|
+
function validateBlockParams(program) {
|
|
701
|
+
if (program.blockParams != null) {
|
|
702
|
+
validateStringArray(program, program.blockParams, 'blockParams');
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
|
|
565
706
|
function argEquals(a, b) {
|
|
566
707
|
if (a === b) {
|
|
567
708
|
return true;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { COMPILER_REVISION, REVISION_CHANGES } from '../base';
|
|
2
2
|
import Exception from '../exception';
|
|
3
3
|
import { isArray } from '../utils';
|
|
4
|
-
import CodeGen from './code-gen';
|
|
4
|
+
import CodeGen, { safeJsonLiteral } from './code-gen';
|
|
5
5
|
|
|
6
6
|
function Literal(value) {
|
|
7
7
|
this.value = value;
|
|
@@ -19,7 +19,7 @@ JavaScriptCompiler.prototype = {
|
|
|
19
19
|
return [
|
|
20
20
|
this.aliasable('container.lookup'),
|
|
21
21
|
'(depths, ',
|
|
22
|
-
|
|
22
|
+
this.quotedString(name),
|
|
23
23
|
')'
|
|
24
24
|
];
|
|
25
25
|
},
|
|
@@ -56,7 +56,7 @@ JavaScriptCompiler.prototype = {
|
|
|
56
56
|
// END PUBLIC API
|
|
57
57
|
internalNameLookup: function(parent, name) {
|
|
58
58
|
this.lookupPropertyFunctionIsUsed = true;
|
|
59
|
-
return ['lookupProperty(', parent, ',',
|
|
59
|
+
return ['lookupProperty(', parent, ',', this.quotedString(name), ')'];
|
|
60
60
|
},
|
|
61
61
|
|
|
62
62
|
lookupPropertyFunctionIsUsed: false,
|
|
@@ -832,7 +832,7 @@ JavaScriptCompiler.prototype = {
|
|
|
832
832
|
}
|
|
833
833
|
|
|
834
834
|
if (indent) {
|
|
835
|
-
options.indent =
|
|
835
|
+
options.indent = this.quotedString(indent);
|
|
836
836
|
}
|
|
837
837
|
options.helpers = 'helpers';
|
|
838
838
|
options.partials = 'partials';
|
|
@@ -894,7 +894,7 @@ JavaScriptCompiler.prototype = {
|
|
|
894
894
|
'].path[' +
|
|
895
895
|
name[1] +
|
|
896
896
|
']' +
|
|
897
|
-
(child ? ' + ' +
|
|
897
|
+
(child ? ' + ' + this.quotedString('.' + child) : '')
|
|
898
898
|
);
|
|
899
899
|
} else if (type === 'PathExpression') {
|
|
900
900
|
this.pushString(name);
|
|
@@ -1224,7 +1224,7 @@ JavaScriptCompiler.prototype = {
|
|
|
1224
1224
|
|
|
1225
1225
|
setupHelperArgs: function(helper, paramSize, params, useRegister) {
|
|
1226
1226
|
let options = this.setupParams(helper, paramSize, params);
|
|
1227
|
-
options.loc =
|
|
1227
|
+
options.loc = locationLiteral(this);
|
|
1228
1228
|
options = this.objectLiteral(options);
|
|
1229
1229
|
if (useRegister) {
|
|
1230
1230
|
this.useRegister('options');
|
|
@@ -1276,6 +1276,22 @@ JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {
|
|
|
1276
1276
|
);
|
|
1277
1277
|
};
|
|
1278
1278
|
|
|
1279
|
+
/**
|
|
1280
|
+
* The compiler's current source location as a JavaScript literal.
|
|
1281
|
+
*
|
|
1282
|
+
* Hand-built ASTs may omit `loc`; emitting the literal `undefined` then
|
|
1283
|
+
* keeps the generated code valid and drops the key from object literals.
|
|
1284
|
+
* The location's `source` is the `srcName` option, so it is escaped like
|
|
1285
|
+
* every other string in the generated code.
|
|
1286
|
+
*
|
|
1287
|
+
* @param {JavaScriptCompiler} compiler the compiler whose location is emitted
|
|
1288
|
+
* @returns {string} a JSON object literal, or the string "undefined"
|
|
1289
|
+
*/
|
|
1290
|
+
function locationLiteral(compiler) {
|
|
1291
|
+
let loc = compiler.source.currentLocation;
|
|
1292
|
+
return loc ? safeJsonLiteral(loc) : 'undefined';
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1279
1295
|
function strictLookup(requireTerminal, compiler, parts, startPartIndex, type) {
|
|
1280
1296
|
let stack = compiler.popStack(),
|
|
1281
1297
|
len = parts.length;
|
|
@@ -1295,7 +1311,7 @@ function strictLookup(requireTerminal, compiler, parts, startPartIndex, type) {
|
|
|
1295
1311
|
', ',
|
|
1296
1312
|
compiler.quotedString(parts[len]),
|
|
1297
1313
|
', ',
|
|
1298
|
-
|
|
1314
|
+
locationLiteral(compiler),
|
|
1299
1315
|
' )'
|
|
1300
1316
|
];
|
|
1301
1317
|
} else {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// AST node types produced by the parser. Visitor#accept and Compiler#accept
|
|
2
|
+
// dispatch on the untrusted `node.type`, so they must never call any other
|
|
3
|
+
// method of the visiting object. The Compiler only accepts these types; a
|
|
4
|
+
// Visitor also accepts types for which a subclass defines its own handler.
|
|
5
|
+
export const NODE_TYPES = [
|
|
6
|
+
'Program',
|
|
7
|
+
'BlockStatement',
|
|
8
|
+
'DecoratorBlock',
|
|
9
|
+
'PartialStatement',
|
|
10
|
+
'PartialBlockStatement',
|
|
11
|
+
'Decorator',
|
|
12
|
+
'MustacheStatement',
|
|
13
|
+
'ContentStatement',
|
|
14
|
+
'CommentStatement',
|
|
15
|
+
'SubExpression',
|
|
16
|
+
'PathExpression',
|
|
17
|
+
'StringLiteral',
|
|
18
|
+
'NumberLiteral',
|
|
19
|
+
'BooleanLiteral',
|
|
20
|
+
'UndefinedLiteral',
|
|
21
|
+
'NullLiteral',
|
|
22
|
+
'Hash',
|
|
23
|
+
'HashPair'
|
|
24
|
+
];
|
|
@@ -1,9 +1,34 @@
|
|
|
1
1
|
import Exception from '../exception';
|
|
2
|
+
import { indexOf } from '../utils';
|
|
3
|
+
import { NODE_TYPES } from './node-types';
|
|
2
4
|
|
|
3
5
|
function Visitor() {
|
|
4
6
|
this.parents = [];
|
|
5
7
|
}
|
|
6
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Whether a visitor may dispatch on a node type.
|
|
11
|
+
*
|
|
12
|
+
* A type is dispatchable if the parser produces it, or if the visitor
|
|
13
|
+
* (typically a subclass) defines a handler for it that is not a method of
|
|
14
|
+
* Visitor itself. `in` is used for the latter so that accept, acceptKey and
|
|
15
|
+
* everything inherited from Object.prototype (constructor, __proto__, ...)
|
|
16
|
+
* can never be reached through a crafted `type`.
|
|
17
|
+
*
|
|
18
|
+
* Subclasses that visit untrusted ASTs, such as WhitespaceControl, must
|
|
19
|
+
* therefore define nothing but node handlers as function properties.
|
|
20
|
+
*
|
|
21
|
+
* @param {Visitor} visitor the visitor that would handle the node
|
|
22
|
+
* @param {*} type the untrusted `type` of the node
|
|
23
|
+
* @returns {boolean} true if the visitor may call its `type` method
|
|
24
|
+
*/
|
|
25
|
+
function isDispatchable(visitor, type) {
|
|
26
|
+
return (
|
|
27
|
+
indexOf(NODE_TYPES, type) !== -1 ||
|
|
28
|
+
(!(type in Visitor.prototype) && typeof visitor[type] === 'function')
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
7
32
|
Visitor.prototype = {
|
|
8
33
|
constructor: Visitor,
|
|
9
34
|
mutating: false,
|
|
@@ -12,9 +37,7 @@ Visitor.prototype = {
|
|
|
12
37
|
acceptKey: function(node, name) {
|
|
13
38
|
let value = this.accept(node[name]);
|
|
14
39
|
if (this.mutating) {
|
|
15
|
-
|
|
16
|
-
// methods but will generally do the right thing without a lot of overhead.
|
|
17
|
-
if (value && !Visitor.prototype[value.type]) {
|
|
40
|
+
if (value && !isDispatchable(this, value.type)) {
|
|
18
41
|
throw new Exception(
|
|
19
42
|
'Unexpected node type "' +
|
|
20
43
|
value.type +
|
|
@@ -57,8 +80,9 @@ Visitor.prototype = {
|
|
|
57
80
|
return;
|
|
58
81
|
}
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
|
|
83
|
+
// Dispatching on an unknown type could call an arbitrary method of the
|
|
84
|
+
// visitor (e.g. `accept` itself) with an untrusted AST node.
|
|
85
|
+
if (!isDispatchable(this, object.type) || !this[object.type]) {
|
|
62
86
|
throw new Exception('Unknown type: ' + object.type, object);
|
|
63
87
|
}
|
|
64
88
|
|
|
@@ -41,7 +41,9 @@ WhitespaceControl.prototype.Program = function(program) {
|
|
|
41
41
|
// If we are on a standalone node, save the indent info for partials
|
|
42
42
|
if (current.type === 'PartialStatement') {
|
|
43
43
|
// Pull out the whitespace from the final line
|
|
44
|
-
current.indent = /([ \t]
|
|
44
|
+
current.indent = /(?:^|[^ \t])([ \t]+)$/.exec(
|
|
45
|
+
body[i - 1].original
|
|
46
|
+
)[1];
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
}
|
|
@@ -159,9 +161,12 @@ function isPrevWhitespace(body, i, isRoot) {
|
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
if (prev.type === 'ContentStatement') {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
// Matches when the trailing whitespace contains a newline (or, for the
|
|
165
|
+
// root's first node, is the whole string). See omitLeft for the anchoring.
|
|
166
|
+
return (sibling || !isRoot
|
|
167
|
+
? /(?:^|\S)[^\S\n]*\n\s*$/
|
|
168
|
+
: /^\s*$|(?:^|\S)[^\S\n]*\n\s*$/
|
|
169
|
+
).test(prev.original);
|
|
165
170
|
}
|
|
166
171
|
}
|
|
167
172
|
function isNextWhitespace(body, i, isRoot) {
|
|
@@ -226,7 +231,13 @@ function omitLeft(body, i, multiple) {
|
|
|
226
231
|
|
|
227
232
|
// We omit the last node if it's whitespace only and not preceded by a non-content node.
|
|
228
233
|
let original = current.value;
|
|
229
|
-
|
|
234
|
+
// The match must start after a non-whitespace character (or at the start):
|
|
235
|
+
// a plain /\s+$/ is retried at every position of a whitespace run, which
|
|
236
|
+
// takes quadratic time on long runs.
|
|
237
|
+
current.value = current.value.replace(
|
|
238
|
+
multiple ? /(^|\S)\s+$/ : /(^|[^ \t])[ \t]+$/,
|
|
239
|
+
'$1'
|
|
240
|
+
);
|
|
230
241
|
current.leftStripped = current.value !== original;
|
|
231
242
|
return current.leftStripped;
|
|
232
243
|
}
|
|
@@ -16,11 +16,15 @@ function Exception(message, node) {
|
|
|
16
16
|
column,
|
|
17
17
|
endColumn;
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
// Hand-built ASTs may carry a partial loc; never let the location
|
|
20
|
+
// bookkeeping mask the actual error message.
|
|
21
|
+
if (loc && loc.start) {
|
|
20
22
|
line = loc.start.line;
|
|
21
|
-
endLineNumber = loc.end.line;
|
|
22
23
|
column = loc.start.column;
|
|
23
|
-
|
|
24
|
+
if (loc.end) {
|
|
25
|
+
endLineNumber = loc.end.line;
|
|
26
|
+
endColumn = loc.end.column;
|
|
27
|
+
}
|
|
24
28
|
|
|
25
29
|
message += ' - ' + line + ':' + column;
|
|
26
30
|
}
|