@sap/cds-dk 10.1.1 → 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 +53 -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/internal.js +0 -26
- package/lib/build/plugins/java/index.js +5 -1
- package/lib/build/plugins/nodejs/index.js +13 -4
- package/lib/build/util.js +4 -5
- package/lib/cds.js +8 -2
- 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/merge.js +21 -17
- 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 +10 -7
- package/lib/init/template/enterprise-messaging-shared/index.js +4 -4
- package/lib/init/template/event-mesh/index.js +3 -0
- 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 +30 -28
- 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 +23 -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 +17 -28
- 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 +18 -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 +71 -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/common.cds +3 -3
- 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 -2
- 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 +8 -2
- package/node_modules/@sap/cds/libx/_runtime/common/utils/cqn.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 +122 -85
- package/node_modules/@sap/cds/libx/_runtime/messaging/common-utils/authorizedRequest.js +24 -1
- package/node_modules/@sap/cds/libx/_runtime/messaging/common-utils/normalizeIncomingMessage.js +1 -1
- package/node_modules/@sap/cds/libx/_runtime/messaging/kafka.js +1 -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/http/location.js +10 -11
- 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 +7 -1
- 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/SchedulingService.js +4 -0
- package/node_modules/@sap/cds/libx/queue/api.js +1 -1
- package/node_modules/@sap/cds/libx/queue/index.js +46 -10
- package/node_modules/@sap/cds/libx/queue/processing.js +52 -16
- package/node_modules/@sap/cds/libx/queue/utils.js +3 -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/tasks/enterprise-messaging-deploy.js +13 -5
- 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/proxy-addr/HISTORY.md +60 -54
- package/node_modules/proxy-addr/README.md +1 -1
- package/node_modules/proxy-addr/index.js +32 -0
- package/node_modules/proxy-addr/package.json +8 -4
- 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/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +19 -18
- package/node_modules/yaml/browser/dist/nodes/Alias.js +25 -23
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +19 -18
- package/node_modules/yaml/dist/nodes/Alias.js +25 -23
- package/node_modules/yaml/package.json +1 -1
- 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 -326
- 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
|
@@ -14,84 +14,12 @@
|
|
|
14
14
|
// The 'define' phase is the only compile() phase which is also called for
|
|
15
15
|
// parse.cdl. See file ./finalize-parse-cdl.js for details.
|
|
16
16
|
|
|
17
|
-
// --------- TODO: begin in extra markdown document -----------------------------
|
|
18
|
-
|
|
19
|
-
// An XSN for a source looks like
|
|
20
|
-
// { kind: 'source', artifacts: <dictionary of artifact defs>, namespace: {}, ... }
|
|
21
|
-
//
|
|
22
|
-
// The property `artifacts` of a source contains the top-level definitions.
|
|
23
|
-
// Definitions inside a context are not listed here (as opposed to
|
|
24
|
-
// `definitions`, see below), but inside the property `artifacts` of that context.
|
|
25
|
-
|
|
26
|
-
// The 'define' phase (function 'define' below) enriches a dictionary of
|
|
27
|
-
// (file names to) AST-like XSNs and restructure them a little bit, the result
|
|
28
|
-
// is called XSN ("augmented CSN"):
|
|
29
|
-
// { sources: <dictionary of ASTs>, definitions: <dictionary of artifact defs> }
|
|
30
|
-
//
|
|
31
|
-
// The property `sources` is the input argument (dictionary of source ASTs).
|
|
32
|
-
//
|
|
33
|
-
// The property `definitions` is set by this compiler phase. It contains the
|
|
34
|
-
// definitions of all main artifacts (i.e. not elements) from all sources, the
|
|
35
|
-
// key is the absolute name of that artifact. These definitions are the same
|
|
36
|
-
// objects as the definitions accessible via `sources` and `artifacts` of the
|
|
37
|
-
// corresponding source/context.
|
|
38
|
-
//
|
|
39
|
-
// You get the compact "official" CSN format by applying the function exported
|
|
40
|
-
// by "../json/to-csn.js" to the XSN.
|
|
41
|
-
|
|
42
|
-
// Example 'file.cds':
|
|
43
|
-
// namespace A;
|
|
44
|
-
// context B {
|
|
45
|
-
// type C { elem: String(4); }
|
|
46
|
-
// }
|
|
47
|
-
// Check the augmented CSN by compiling it with
|
|
48
|
-
// cdsc --raw-output + file.cds
|
|
49
|
-
//
|
|
50
|
-
// ┌───────────────┐ ┌───────────────────────────────────────────┐
|
|
51
|
-
// │ sources │ │ definitions │
|
|
52
|
-
// └──┬────────────┘ └──┬────────────────────────────┬───────────┘
|
|
53
|
-
// │ │ │
|
|
54
|
-
// │ ['file.cds'] │ ['A.B'] │ ['A.B.C']
|
|
55
|
-
// ↓ ↓ ↓
|
|
56
|
-
// ┌───────────────┐ _parent ┌────────────────┐ _parent ┌──────────────┐
|
|
57
|
-
// │ kind:'source' │←──────────┤ kind:'context' │←──────────┤ kind: 'type' │
|
|
58
|
-
// │ artifacts: ───┼──────────→│ artifacts: ────┼──────────→│ ... │
|
|
59
|
-
// └───────────────┘ ['B'] └────────────────┘ ['C'] └──────────────┘
|
|
60
|
-
//
|
|
61
|
-
// The _parent properties are not shown in the JSON - they are used for name
|
|
62
|
-
// resolution, see file './resolver.js'.
|
|
63
|
-
|
|
64
|
-
// An artifact definition looks as follows (example: context "A.B" above):
|
|
65
|
-
// {
|
|
66
|
-
// kind: 'context',
|
|
67
|
-
// name: { path: [ { id: 'B'} ], absolute: 'A.B', location: { <for the id "B"> } },
|
|
68
|
-
// artifacts: <for contexts, a dictionary of artifacts defined within>,
|
|
69
|
-
// location: { <of the complete artifact definition> } },
|
|
70
|
-
// _parent: <the parent artifact, here the source 'file.cds'>
|
|
71
|
-
// }
|
|
72
|
-
// The properties `name.absolute`, `name.component` and `_parent` are set
|
|
73
|
-
// during this compiler phase.
|
|
74
|
-
|
|
75
|
-
// The definition of an entity or a structured type would contain an `elements`
|
|
76
|
-
// property instead of an `artifacts` property.
|
|
77
|
-
|
|
78
|
-
// An element definition looks as follows (example: "elem" above):
|
|
79
|
-
// {
|
|
80
|
-
// kind: 'element',
|
|
81
|
-
// name: { id: 'elem', component: 'elem', location: { <for the id "elem"> } }
|
|
82
|
-
// type: { path: [ { id: 'String', location: ... } ] },
|
|
83
|
-
// $typeArgs: [ { number: '4', location: ... } ]
|
|
84
|
-
// location: { <of the complete element definition> } },
|
|
85
|
-
// _parent: <the parent artifact, here the type "A.B.C">
|
|
86
|
-
// }
|
|
87
|
-
// --------- TODO: end in extra markdown document -------------------------------
|
|
88
|
-
|
|
89
17
|
// Sub phase 1 (addXYZ) - only for main artifacts
|
|
90
18
|
// - set _block links for main definitions, vocabulary, extensions and
|
|
91
19
|
// annotations on those
|
|
92
20
|
// - store definitions (including context extensions), NO duplicate check
|
|
93
21
|
// - artifact name check
|
|
94
|
-
// - Note: the only
|
|
22
|
+
// - Note: the only allowed name resolving is resolveUncheckedPath(),
|
|
95
23
|
// TODO: make sure that _no_ _artifact link is set
|
|
96
24
|
// - POST: all user-written definitions are in model.definitions
|
|
97
25
|
|
|
@@ -103,8 +31,6 @@
|
|
|
103
31
|
// - annotation assignments
|
|
104
32
|
// - POST: resolvePath() can be called for artifact references (if complete model)
|
|
105
33
|
|
|
106
|
-
// More sub phases...
|
|
107
|
-
|
|
108
34
|
// The main difficulty is the correct behavior concerning duplicate definitions
|
|
109
35
|
// - For code completion, all duplicate definitions must be further checked.
|
|
110
36
|
// - We need a unique object for the _subArtifacts dictionary.
|
|
@@ -118,9 +44,19 @@
|
|
|
118
44
|
// dictionary, `_combined` dictionary for query search, `$tableAliases`
|
|
119
45
|
// of JOIN restrictions, `vocabulary` dictionary of a CDL input source.
|
|
120
46
|
|
|
47
|
+
// Sections in this file:
|
|
48
|
+
// - Phase 1 add
|
|
49
|
+
// - i18n
|
|
50
|
+
// - Phase 2 init artifacts (ex queries)
|
|
51
|
+
// - Phase 2 init helpers (ex queries)
|
|
52
|
+
// - Phase 2 init queries
|
|
53
|
+
// - Create (add + init) for other compiler phases
|
|
54
|
+
// - Late syntax checks
|
|
55
|
+
|
|
56
|
+
|
|
121
57
|
'use strict';
|
|
122
58
|
|
|
123
|
-
const { weakLocation, builtinLocation } = require('../base/location');
|
|
59
|
+
const { emptyLocation, weakLocation, builtinLocation } = require('../base/location');
|
|
124
60
|
|
|
125
61
|
const shuffleGen = require('../utils/shuffle');
|
|
126
62
|
const {
|
|
@@ -128,6 +64,7 @@ const {
|
|
|
128
64
|
} = require('./dictionaries');
|
|
129
65
|
const { kindProperties } = require('./base');
|
|
130
66
|
const { CompilerAssertion } = require('../base/error');
|
|
67
|
+
const { XsnArtifact, XsnName } = require('./xsn-model');
|
|
131
68
|
const {
|
|
132
69
|
setLink,
|
|
133
70
|
initItemsLinks,
|
|
@@ -141,6 +78,8 @@ const {
|
|
|
141
78
|
pathName,
|
|
142
79
|
forEachGeneric,
|
|
143
80
|
forEachInOrder,
|
|
81
|
+
isDirectComposition,
|
|
82
|
+
targetCantBeAspect,
|
|
144
83
|
} = require('./utils');
|
|
145
84
|
const { compareLayer } = require('./moduleLayers');
|
|
146
85
|
const { initBuiltins } = require('./builtins');
|
|
@@ -149,14 +88,7 @@ const { isInReservedNamespace } = require('../base/builtins');
|
|
|
149
88
|
const $location = Symbol.for( 'cds.$location' );
|
|
150
89
|
|
|
151
90
|
/**
|
|
152
|
-
* Export function of this file.
|
|
153
|
-
* AST-like CSNs into augmented CSN. If a vector is provided for argument
|
|
154
|
-
* `messages` (usually the combined messages from `parse` for all sources), do
|
|
155
|
-
* not throw an exception in case of an error, but push the corresponding error
|
|
156
|
-
* object to that vector. If at least one AST does not exist due to a parse
|
|
157
|
-
* error, set property `lintMode` of `options` to `true`. Then, the resolver
|
|
158
|
-
* does not report errors for using directives pointing to non-existing
|
|
159
|
-
* artifacts.
|
|
91
|
+
* Export function of this file.
|
|
160
92
|
*
|
|
161
93
|
* @param {XSN.Model} model Model with `sources` property that contain AST-like CSNs.
|
|
162
94
|
*/
|
|
@@ -176,7 +108,6 @@ function define( model ) {
|
|
|
176
108
|
shuffleArray,
|
|
177
109
|
initMainArtifact,
|
|
178
110
|
initArtifactParentLink,
|
|
179
|
-
checkRedefinition,
|
|
180
111
|
createGapArtifact,
|
|
181
112
|
} );
|
|
182
113
|
return doDefine();
|
|
@@ -195,7 +126,7 @@ function define( model ) {
|
|
|
195
126
|
} );
|
|
196
127
|
}
|
|
197
128
|
model.definitions = Object.create( null );
|
|
198
|
-
setLink( model, '_entities', [] ); // for
|
|
129
|
+
setLink( model, '_entities', [] ); // helper property for propagation of keys
|
|
199
130
|
model.$compositionTargets = Object.create( null );
|
|
200
131
|
model.$collectedExtensions = Object.create( null );
|
|
201
132
|
|
|
@@ -241,7 +172,7 @@ function define( model ) {
|
|
|
241
172
|
}
|
|
242
173
|
if (isInReservedNamespace( prefix )) {
|
|
243
174
|
error( 'reserved-namespace-cds', [ src.namespace.name.location, src.namespace.name ],
|
|
244
|
-
{ name: 'cds' },
|
|
175
|
+
{ name: 'cds' }, // TODO: 'name-reserved-prefix'
|
|
245
176
|
'The namespace $(NAME) is reserved for CDS builtins' );
|
|
246
177
|
namespace = null; // TODO: reconsider
|
|
247
178
|
}
|
|
@@ -292,7 +223,6 @@ function define( model ) {
|
|
|
292
223
|
*/
|
|
293
224
|
function addMainArtifact( art, block, prefix ) {
|
|
294
225
|
setLink( art, '_block', block );
|
|
295
|
-
initExprAnnoBlock( art, block, error ); // TODO: why also here?
|
|
296
226
|
art.name.id ??= prefix + pathName( art.name.path );
|
|
297
227
|
const absolute = art.name.id;
|
|
298
228
|
// TODO: check reserved, see checkName()/checkLocalizedObjects() of checks.js
|
|
@@ -364,8 +294,11 @@ function define( model ) {
|
|
|
364
294
|
const location = a.name.path?.[0]?.location || a.location;
|
|
365
295
|
const absolute = prefix + using;
|
|
366
296
|
artifacts[using] = {
|
|
297
|
+
__proto__: XsnArtifact.prototype,
|
|
367
298
|
kind: 'using', // !, not namespace - we do not know artifact yet
|
|
368
|
-
name: {
|
|
299
|
+
name: {
|
|
300
|
+
__proto__: XsnName.prototype, id: using, location, $inferred: 'as',
|
|
301
|
+
},
|
|
369
302
|
extern: { location, id: absolute },
|
|
370
303
|
location,
|
|
371
304
|
$inferred: 'path-prefix',
|
|
@@ -393,7 +326,7 @@ function define( model ) {
|
|
|
393
326
|
return;
|
|
394
327
|
decl.extern.id = pathName( path );
|
|
395
328
|
if (!decl.name)
|
|
396
|
-
decl.name = { ...path.at(-1), $inferred: 'as' };
|
|
329
|
+
decl.name = { __proto__: XsnName.prototype, ...path.at(-1), $inferred: 'as' };
|
|
397
330
|
const name = decl.name.id;
|
|
398
331
|
// TODO: check name: no "."
|
|
399
332
|
const found = src.artifacts[name];
|
|
@@ -421,8 +354,11 @@ function define( model ) {
|
|
|
421
354
|
// not used as we have a definition/using with that name, or dotted last path id
|
|
422
355
|
return;
|
|
423
356
|
src.artifacts[id] = {
|
|
357
|
+
__proto__: XsnArtifact.prototype,
|
|
424
358
|
kind: 'using',
|
|
425
|
-
name: {
|
|
359
|
+
name: {
|
|
360
|
+
__proto__: XsnName.prototype, id, location: last.location, $inferred: 'as',
|
|
361
|
+
},
|
|
426
362
|
extern: namespace,
|
|
427
363
|
location: namespace.location,
|
|
428
364
|
$inferred: 'namespace',
|
|
@@ -440,7 +376,6 @@ function define( model ) {
|
|
|
440
376
|
*/
|
|
441
377
|
function addExtension( ext, block ) {
|
|
442
378
|
setLink( ext, '_block', block );
|
|
443
|
-
initExprAnnoBlock( ext, block, error );
|
|
444
379
|
const absolute = ext.name && resolveUncheckedPath( ext.name, '_uncheckedExtension', ext );
|
|
445
380
|
if (!absolute) // broken path
|
|
446
381
|
return;
|
|
@@ -462,11 +397,12 @@ function define( model ) {
|
|
|
462
397
|
ext.name.id = absolute; // definition might not be there yet, no _artifact link
|
|
463
398
|
delete ext.name.path[0]._artifact; // might point to wrong JS object in phase 1 - TODO: still?
|
|
464
399
|
|
|
465
|
-
const location =
|
|
400
|
+
const location = emptyLocation( '' ); // stupid required location
|
|
466
401
|
const late = model.$collectedExtensions[absolute] ||
|
|
467
402
|
(model.$collectedExtensions[absolute] = {
|
|
403
|
+
__proto__: XsnArtifact.prototype,
|
|
468
404
|
kind: 'annotate',
|
|
469
|
-
name: { id: absolute, location },
|
|
405
|
+
name: { __proto__: XsnName.prototype, id: absolute, location },
|
|
470
406
|
$inferred: '',
|
|
471
407
|
location,
|
|
472
408
|
});
|
|
@@ -534,7 +470,7 @@ function define( model ) {
|
|
|
534
470
|
}
|
|
535
471
|
}
|
|
536
472
|
|
|
537
|
-
// Phase 2
|
|
473
|
+
// Phase 2: init artifacts (ex queries) ---------------------------------------
|
|
538
474
|
// Functions called from top-level: initNamespaceAndUsing(), initMainArtifact(),
|
|
539
475
|
// initVocabulary(), initExtension()
|
|
540
476
|
|
|
@@ -555,7 +491,9 @@ function define( model ) {
|
|
|
555
491
|
return;
|
|
556
492
|
if (!model.definitions[decl.id]) {
|
|
557
493
|
// TODO: make it possible to have no location
|
|
558
|
-
const ns = {
|
|
494
|
+
const ns = {
|
|
495
|
+
__proto__: XsnArtifact.prototype, kind: 'namespace', name: decl, location: decl.location,
|
|
496
|
+
};
|
|
559
497
|
model.definitions[decl.id] = ns;
|
|
560
498
|
initArtifactParentLink( ns, model.definitions );
|
|
561
499
|
}
|
|
@@ -601,7 +539,7 @@ function define( model ) {
|
|
|
601
539
|
initDollarSelf( art ); // $self, TODO: also for 'namespace'?
|
|
602
540
|
if (art.params)
|
|
603
541
|
initDollarParameters( art ); // $parameters
|
|
604
|
-
|
|
542
|
+
initCommonAndMembers( art );
|
|
605
543
|
|
|
606
544
|
if (art.query) {
|
|
607
545
|
initArtifactQuery( art );
|
|
@@ -619,7 +557,7 @@ function define( model ) {
|
|
|
619
557
|
function initVocabulary( art ) {
|
|
620
558
|
initArtifactParentLink( art, model.vocabularies );
|
|
621
559
|
checkRedefinition( art );
|
|
622
|
-
|
|
560
|
+
initCommonAndMembers( art );
|
|
623
561
|
|
|
624
562
|
if (art.query) {
|
|
625
563
|
initArtifactQuery( art );
|
|
@@ -635,14 +573,76 @@ function define( model ) {
|
|
|
635
573
|
* @param {XSN.Extension} ext The collected super-extension node
|
|
636
574
|
*/
|
|
637
575
|
function initExtension( ext ) {
|
|
638
|
-
|
|
576
|
+
initCommonAndMembers( ext );
|
|
639
577
|
if (ext.columns)
|
|
640
578
|
initSelectItems( ext, ext.columns, ext, true );
|
|
641
579
|
// there are no sub queries in extensions yet
|
|
642
580
|
// Remark: sub queries not yet allowed in `extend … with columns`
|
|
643
581
|
}
|
|
644
582
|
|
|
645
|
-
|
|
583
|
+
/**
|
|
584
|
+
* Initialise for a single member (element, enum value, foreign key, action,
|
|
585
|
+
* function, or parameter). Infers a missing name from the last path component
|
|
586
|
+
* of `targetElement`/`value`, sets `_block`/`_parent`/`_main` links, checks for
|
|
587
|
+
* duplicates, recurses into sub-members, and — for action/function params —
|
|
588
|
+
* sets up the bound `$self` parameter. Also promotes elements with a `value`
|
|
589
|
+
* expression to calculated elements (`$syntax: 'calc'`) and creates the
|
|
590
|
+
* companion `$calcDepElement`.
|
|
591
|
+
*
|
|
592
|
+
* @param {XSN.Artifact|XSN.Element|XSN.Query} parent Enclosing node
|
|
593
|
+
* @param {XSN.Element} elem
|
|
594
|
+
* @param {string} name Relative member name (empty string `''` for RETURNS)
|
|
595
|
+
*/
|
|
596
|
+
function initMemberArtifact( parent, elem, name ) {
|
|
597
|
+
if (!elem.name && !elem._outer) {
|
|
598
|
+
const ref = elem.targetElement || elem.kind === 'element' && elem.value;
|
|
599
|
+
if (ref && ref.path) {
|
|
600
|
+
elem.name = {
|
|
601
|
+
__proto__: XsnName.prototype,
|
|
602
|
+
$inferred: 'as',
|
|
603
|
+
...ref.path[ref.path.length - 1],
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
else { // RETURNS, parser robustness
|
|
607
|
+
elem.name = { __proto__: XsnName.prototype, id: name, location: elem.location };
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
if (!elem._block)
|
|
612
|
+
setLink( elem, '_block', parent._block );
|
|
613
|
+
|
|
614
|
+
// don't dump with `entity T {}; extend T with { extend e {}; e {}; e {} };`:
|
|
615
|
+
setMemberParent( elem, name, parent );
|
|
616
|
+
checkRedefinition( elem );
|
|
617
|
+
initCommonAndMembers( elem );
|
|
618
|
+
if (elem.kind === 'action' || elem.kind === 'function')
|
|
619
|
+
initBoundSelfParam( elem.params, elem._main );
|
|
620
|
+
|
|
621
|
+
// for a correct home path, setMemberParent needed to be called
|
|
622
|
+
|
|
623
|
+
if (!elem.value || elem.kind !== 'element' || elem.$syntax === 'or-enum')
|
|
624
|
+
return; // not an element with value
|
|
625
|
+
// remark: $syntax: 'or-enum' is set in CDL+CSN parser for potential enums
|
|
626
|
+
// -> it's a calculated element
|
|
627
|
+
if (!elem.type && elem.value.type) { // top-level CAST( expr AS type )
|
|
628
|
+
if (!elem.target)
|
|
629
|
+
elem.type = { ...elem.value.type, $inferred: 'cast' };
|
|
630
|
+
}
|
|
631
|
+
elem.$syntax = 'calc';
|
|
632
|
+
// TODO: it is not just "syntax" - maybe better test for `$calcDepElement`?
|
|
633
|
+
createAndLinkCalcDepElement( elem );
|
|
634
|
+
|
|
635
|
+
// Special case (hack) for calculated elements that use composition+filter:
|
|
636
|
+
// See "Notes on `$enclosed`" in `ExposingAssocWithFilter.md` for details.
|
|
637
|
+
// TODO: hm, only for inferred type - then just do not infer it in that case
|
|
638
|
+
if (elem.target && elem.value.path?.[elem.value.path.length - 1]?.where) {
|
|
639
|
+
delete elem.type;
|
|
640
|
+
delete elem.on;
|
|
641
|
+
delete elem.target;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
// Phase 2: init helpers = set parent links, common init, … ------------------
|
|
646
646
|
|
|
647
647
|
/**
|
|
648
648
|
* Make the `_parent` pointer of artifact `A.B.C` point to `A.B`. If no `A.B`
|
|
@@ -664,7 +664,12 @@ function define( model ) {
|
|
|
664
664
|
pathIndex ??= path?.length - 1; // just used for location
|
|
665
665
|
const pathItemOrName = (path && pathIndex) ? path[--pathIndex] : art.name;
|
|
666
666
|
const location = weakLocation( pathItemOrName.location );
|
|
667
|
-
parent = {
|
|
667
|
+
parent = {
|
|
668
|
+
__proto__: XsnArtifact.prototype,
|
|
669
|
+
kind: 'namespace',
|
|
670
|
+
name: { __proto__: XsnName.prototype, id: prefix, location },
|
|
671
|
+
location,
|
|
672
|
+
};
|
|
668
673
|
definitions[prefix] = parent;
|
|
669
674
|
initArtifactParentLink( parent, definitions, path, pathIndex );
|
|
670
675
|
}
|
|
@@ -677,6 +682,119 @@ function define( model ) {
|
|
|
677
682
|
parent._subArtifacts[id.substring( dot + 1 )] = art; // not dictAdd()
|
|
678
683
|
}
|
|
679
684
|
|
|
685
|
+
/**
|
|
686
|
+
* Do some common initialization for any artifact `art` (following
|
|
687
|
+
* `items`/`many` wrappers via `initItemsLinks`):
|
|
688
|
+
*
|
|
689
|
+
* - init annotations (needed for checked references)
|
|
690
|
+
* - init associations/compositions and perform late syntax check for type props
|
|
691
|
+
* - init all members (element, enum value, foreign key, action, param, and RETURNS),
|
|
692
|
+
* including elements of anonymous aspect (managed compositions)
|
|
693
|
+
*
|
|
694
|
+
* Queries and columns are not traversed by this function.
|
|
695
|
+
*
|
|
696
|
+
* @param {XSN.Artifact|XSN.Element|XSN.Query|XSN.Extension} art
|
|
697
|
+
*/
|
|
698
|
+
function initCommonAndMembers( art ) {
|
|
699
|
+
const block = art._block;
|
|
700
|
+
initExprAnnoBlock( art, block, error );
|
|
701
|
+
const obj = initItemsLinks( art, block ); // down many / array of
|
|
702
|
+
|
|
703
|
+
if (obj.scale && !obj.precision &&
|
|
704
|
+
(art._main || art).kind === 'extend') { // TODO v7: why just with extend?
|
|
705
|
+
// TODO: where could we store the location of the name?
|
|
706
|
+
error( 'syntax-missing-type-property', [ obj.scale.location ],
|
|
707
|
+
{ prop: 'scale', otherprop: 'precision' },
|
|
708
|
+
'Type extension with property $(PROP) must also have property $(OTHERPROP)' );
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
if (obj.target?.elements || initCompositionTarget( obj )) {
|
|
712
|
+
obj.targetAspect = obj.target;
|
|
713
|
+
delete obj.target;
|
|
714
|
+
}
|
|
715
|
+
if (obj.targetAspect?.elements) {
|
|
716
|
+
initAnonymousAspect( art, obj, obj.targetAspect );
|
|
717
|
+
forEachInOrder( obj.targetAspect, 'elements',
|
|
718
|
+
(...args) => initMemberArtifact( obj.targetAspect, ...args ) );
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
forEachInOrder( obj, 'elements', (...args) => initMemberArtifact( art, ...args ) );
|
|
722
|
+
forEachGeneric( obj, 'enum', (...args) => initMemberArtifact( art, ...args ) );
|
|
723
|
+
forEachInOrder( obj, 'foreignKeys', (...args) => initMemberArtifact( art, ...args ) );
|
|
724
|
+
forEachGeneric( art, 'actions', (...args) => initMemberArtifact( art, ...args ) );
|
|
725
|
+
forEachInOrder( art, 'params', (...args) => initMemberArtifact( art, ...args ) );
|
|
726
|
+
|
|
727
|
+
const { returns } = art;
|
|
728
|
+
if (returns) {
|
|
729
|
+
const { kind } = art;
|
|
730
|
+
returns.kind = (kind === 'extend' || kind === 'annotate') ? kind : 'param';
|
|
731
|
+
initMemberArtifact( art, returns, '' ); // '' is special name for returns parameter
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
function initCompositionTarget( assoc ) {
|
|
736
|
+
const name = assoc.target &&
|
|
737
|
+
assoc.kind !== 'param' && assoc._main?.kind !== 'annotation' &&
|
|
738
|
+
// TODO v8: forbid associations/compositions in parameter and annotation defs
|
|
739
|
+
// Remark: compositions in anonymous structs for params are now tagged
|
|
740
|
+
isDirectComposition( assoc ) &&
|
|
741
|
+
resolveUncheckedPath( assoc.target, 'target', assoc );
|
|
742
|
+
if (!name)
|
|
743
|
+
return null;
|
|
744
|
+
model.$compositionTargets[name] = true; // does not hurt if set on aspect
|
|
745
|
+
const target = model.definitions[name];
|
|
746
|
+
return target?.kind in { aspect: 1, type: 1 } && // type is sloppy
|
|
747
|
+
target.elements && assoc.kind === 'element' &&
|
|
748
|
+
!targetCantBeAspect( assoc, false, model.definitions );
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* Initialise the inline aspect that appears as the `targetAspect` of a managed
|
|
753
|
+
* composition element. Sets up `_outer`, `_parent`, `_block`, `_main`, and
|
|
754
|
+
* `$self` links on `targetAspect`, promotes its kind to `'aspect'`, and injects
|
|
755
|
+
* a synthetic `up_` `$navElement` when the composition is directly inside an
|
|
756
|
+
* entity (so that references to `up_` inside the aspect resolve correctly).
|
|
757
|
+
*
|
|
758
|
+
* @param {XSN.Element} parent The composition element that owns the inline aspect
|
|
759
|
+
* @param {XSN.Element} obj The resolved composition element (may differ via `items`)
|
|
760
|
+
* (should always be equal to `parent`, because there is no `many composition of Aspect`)
|
|
761
|
+
* @param {XSN.InlineAspect} targetAspect The inline aspect node to initialise
|
|
762
|
+
* @returns {XSN.InlineAspect}
|
|
763
|
+
*/
|
|
764
|
+
function initAnonymousAspect( parent, obj, targetAspect ) {
|
|
765
|
+
// TODO: main?
|
|
766
|
+
const inEntity = parent._main?.kind === 'entity';
|
|
767
|
+
// TODO: also allow indirectly (component in component in entity)?
|
|
768
|
+
setLink( targetAspect, '_outer', obj );
|
|
769
|
+
setLink( targetAspect, '_parent', parent._parent );
|
|
770
|
+
setLink( targetAspect, '_main', null ); // for name resolution
|
|
771
|
+
|
|
772
|
+
targetAspect.kind = 'aspect'; // TODO: probably '$aspect' to detect
|
|
773
|
+
setLink( targetAspect, '_block', parent._block );
|
|
774
|
+
initDollarSelf( targetAspect ); // not with extend
|
|
775
|
+
// allow ref of up_ in anonymous aspect inside entity
|
|
776
|
+
// (TODO: complain if used and the managed composition is included into
|
|
777
|
+
// another entity - might induce auto-redirection):
|
|
778
|
+
if (inEntity && !targetAspect.elements.up_) {
|
|
779
|
+
const up = {
|
|
780
|
+
name: { __proto__: XsnName.prototype, id: 'up_' },
|
|
781
|
+
kind: '$navElement',
|
|
782
|
+
location: obj.location,
|
|
783
|
+
};
|
|
784
|
+
setLink( up, '_parent', targetAspect );
|
|
785
|
+
setLink( up, '_main', targetAspect ); // used on main artifact
|
|
786
|
+
// recompilation case: both target and targetAspect → allow up_ in that case, too:
|
|
787
|
+
const name = obj.target && resolveUncheckedPath( obj.target, 'target', obj );
|
|
788
|
+
const entity = name && model.definitions[name];
|
|
789
|
+
if (entity && entity.elements)
|
|
790
|
+
setLink( up, '_origin', entity.elements.up_ );
|
|
791
|
+
// processAspectComposition/expand() sets _origin to element of
|
|
792
|
+
// generated target entity
|
|
793
|
+
targetAspect.$tableAliases.up_ = up;
|
|
794
|
+
}
|
|
795
|
+
return targetAspect;
|
|
796
|
+
}
|
|
797
|
+
|
|
680
798
|
/**
|
|
681
799
|
* Report a duplicate-definition error for `art` if it was flagged as a redefinition
|
|
682
800
|
* during phase 1. Extensions (`extend`/`annotate`) are silently skipped because
|
|
@@ -688,7 +806,7 @@ function define( model ) {
|
|
|
688
806
|
if (art.kind === 'annotate' || art.kind === 'extend') // move this check to call in extend.js?
|
|
689
807
|
return; // extensions are merged into a super-annotate; $duplicates are only kept for LSP
|
|
690
808
|
if (!art.$duplicates || !art.name.id ||
|
|
691
|
-
art.$errorReported === 'syntax-duplicate-extend')
|
|
809
|
+
art.$errorReported === 'syntax-duplicate-extend') // set by CDL parser
|
|
692
810
|
return;
|
|
693
811
|
if (art._main) {
|
|
694
812
|
error( 'duplicate-definition', [ art.name.location, art ], {
|
|
@@ -708,52 +826,6 @@ function define( model ) {
|
|
|
708
826
|
|
|
709
827
|
// Phase 2, init queries ------------------------------------------------------
|
|
710
828
|
|
|
711
|
-
/**
|
|
712
|
-
* Restrict the query of `art` to only simple projections, i.e. those without 'group by', etc.
|
|
713
|
-
*
|
|
714
|
-
* TODO v8 and for `type`: do in parsers
|
|
715
|
-
*
|
|
716
|
-
* @param {XSN.Artifact} art
|
|
717
|
-
*/
|
|
718
|
-
function restrictToSimpleProjection( art ) {
|
|
719
|
-
const { query } = art;
|
|
720
|
-
|
|
721
|
-
if (art.kind !== 'type')
|
|
722
|
-
return; // TODO(v6): Also for event
|
|
723
|
-
|
|
724
|
-
if (!query.from?.path)
|
|
725
|
-
return; // union, sub-select, etc. should already be rejected
|
|
726
|
-
|
|
727
|
-
const check = (prop, keyword) => (query[prop] && { prop: query[prop], keyword });
|
|
728
|
-
const unexpectedQueryProp = check( 'where', 'where' ) ||
|
|
729
|
-
check( 'groupBy', 'group by' ) ||
|
|
730
|
-
check( 'limit', 'limit' ) ||
|
|
731
|
-
check( 'having', 'having' ) ||
|
|
732
|
-
check( 'orderBy', 'order by' ) ||
|
|
733
|
-
null;
|
|
734
|
-
|
|
735
|
-
if (unexpectedQueryProp) {
|
|
736
|
-
error( 'query-unexpected-prop', [ unexpectedQueryProp.prop.location, query ], {
|
|
737
|
-
'#': art.kind,
|
|
738
|
-
keyword: unexpectedQueryProp.keyword,
|
|
739
|
-
}, {
|
|
740
|
-
std: 'Unexpected $(KEYWORD) for projection clause used as type expression',
|
|
741
|
-
type: 'Unexpected $(KEYWORD) for type definition',
|
|
742
|
-
event: 'Unexpected $(KEYWORD) for event definition',
|
|
743
|
-
} );
|
|
744
|
-
return;
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
const firstCondition = query.from.path.find(step => step.where)?.where;
|
|
748
|
-
if (firstCondition) {
|
|
749
|
-
error( 'query-unexpected-filter', [ firstCondition.location, query ], { '#': art.kind }, {
|
|
750
|
-
std: 'Unexpected filter in query source for projection clause used as type expression',
|
|
751
|
-
type: 'Unexpected filter in projection clause of type definition',
|
|
752
|
-
event: 'Unexpected filter in projection clause of event definition',
|
|
753
|
-
} );
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
|
|
757
829
|
/**
|
|
758
830
|
* Initialise all queries of a query-bearing artifact and store them in `$queries`.
|
|
759
831
|
*
|
|
@@ -811,7 +883,7 @@ function define( model ) {
|
|
|
811
883
|
initMixins( query, art );
|
|
812
884
|
if (!query.$tableAliases.$self) { // same as $projection
|
|
813
885
|
const self = {
|
|
814
|
-
name: { id: '$self', location: query.location },
|
|
886
|
+
name: { __proto__: XsnName.prototype, id: '$self', location: query.location },
|
|
815
887
|
kind: '$self',
|
|
816
888
|
location: query.location,
|
|
817
889
|
};
|
|
@@ -872,7 +944,11 @@ function define( model ) {
|
|
|
872
944
|
(art.kind === '$tableAlias' ? art._parent._$next : art ) );
|
|
873
945
|
setLink( query, '_origin', null ); // set later in initTableExpression → addAsAlias
|
|
874
946
|
query.kind = 'select';
|
|
875
|
-
query.name = {
|
|
947
|
+
query.name = {
|
|
948
|
+
__proto__: XsnName.prototype,
|
|
949
|
+
location: query.location,
|
|
950
|
+
id: main.$queries.length + 1,
|
|
951
|
+
};
|
|
876
952
|
setMemberParent( query, null, main );
|
|
877
953
|
// console.log(art.kind,art.name,query.name,query._$next.name)
|
|
878
954
|
main.$queries.push( query );
|
|
@@ -905,7 +981,9 @@ function define( model ) {
|
|
|
905
981
|
const dot = last?.id?.lastIndexOf( '.' );
|
|
906
982
|
const id = (dot >= 0) ? last.id.substring( dot + 1 ) : last.id || '';
|
|
907
983
|
// TODO: if we have too much time, we can calculate the real location with '.'
|
|
908
|
-
table.name = {
|
|
984
|
+
table.name = {
|
|
985
|
+
__proto__: XsnName.prototype, $inferred: 'as', id, location: last.location,
|
|
986
|
+
};
|
|
909
987
|
}
|
|
910
988
|
addAsAlias( table, query, joinParents );
|
|
911
989
|
// _origin is set when we resolve the ref
|
|
@@ -914,7 +992,9 @@ function define( model ) {
|
|
|
914
992
|
if (!table.name?.id) {
|
|
915
993
|
// We don't worry about duplicate names here.
|
|
916
994
|
const id = `$_select_${ query._main.$queries.length + 1 }__`;
|
|
917
|
-
table.name = {
|
|
995
|
+
table.name = {
|
|
996
|
+
__proto__: XsnName.prototype, id, location: table.location, $inferred: '$internal',
|
|
997
|
+
};
|
|
918
998
|
}
|
|
919
999
|
addAsAlias( table, query, joinParents );
|
|
920
1000
|
// Store _origin to leading query of table.query for name resolution
|
|
@@ -925,7 +1005,7 @@ function define( model ) {
|
|
|
925
1005
|
setLink( table, '_$next', query ); // or query._$next?
|
|
926
1006
|
setLink( table, '_block', query._block );
|
|
927
1007
|
table.kind = '$join';
|
|
928
|
-
table.name = { location: query.location }; //
|
|
1008
|
+
table.name = { __proto__: XsnName.prototype, location: query.location }; // later
|
|
929
1009
|
table.$tableAliases = Object.create( null ); // table aliases and mixin definitions
|
|
930
1010
|
joinParents = [ ...joinParents, table ];
|
|
931
1011
|
}
|
|
@@ -1016,7 +1096,7 @@ function define( model ) {
|
|
|
1016
1096
|
initExprForQuery( query.where, query );
|
|
1017
1097
|
if (query.having)
|
|
1018
1098
|
initExprForQuery( query.having, query );
|
|
1019
|
-
|
|
1099
|
+
initCommonAndMembers( query );
|
|
1020
1100
|
}
|
|
1021
1101
|
|
|
1022
1102
|
/**
|
|
@@ -1060,9 +1140,8 @@ function define( model ) {
|
|
|
1060
1140
|
setMemberParent( mixin, name, query );
|
|
1061
1141
|
checkRedefinition( mixin );
|
|
1062
1142
|
if (!(mixin.$duplicates)) {
|
|
1063
|
-
//
|
|
1064
|
-
//
|
|
1065
|
-
// with generated values)
|
|
1143
|
+
// Currently, both CDL and CSN parser forbid annos for mixin
|
|
1144
|
+
// Otherwise, we would need to initialize them here
|
|
1066
1145
|
dictAdd( query.$tableAliases, name, query.mixin[name], ( dupName, loc ) => {
|
|
1067
1146
|
error( 'duplicate-definition', [ loc, query ], { name: dupName, '#': 'alias' } );
|
|
1068
1147
|
} );
|
|
@@ -1071,6 +1150,7 @@ function define( model ) {
|
|
|
1071
1150
|
{ '#': 'mixin', name: '$' } );
|
|
1072
1151
|
}
|
|
1073
1152
|
}
|
|
1153
|
+
initCompositionTarget( mixin );
|
|
1074
1154
|
}
|
|
1075
1155
|
}
|
|
1076
1156
|
|
|
@@ -1158,7 +1238,7 @@ function define( model ) {
|
|
|
1158
1238
|
if (col.expand || col.inline)
|
|
1159
1239
|
initSelectItems( col, null, user ); // TODO: use col, remove 3rd param?
|
|
1160
1240
|
|
|
1161
|
-
|
|
1241
|
+
initCommonAndMembers( col ); // with #13933, TODO: only for enums
|
|
1162
1242
|
checkCdlTypeCast( col );
|
|
1163
1243
|
}
|
|
1164
1244
|
}
|
|
@@ -1192,7 +1272,9 @@ function define( model ) {
|
|
|
1192
1272
|
(col.value.path || !col.value.args && col.value.func?.path);
|
|
1193
1273
|
const last = path?.length && path[path.length - 1];
|
|
1194
1274
|
if (last) {
|
|
1195
|
-
col.name = {
|
|
1275
|
+
col.name = {
|
|
1276
|
+
__proto__: XsnName.prototype, id: last.id || '', location: last.location, $inferred: 'as',
|
|
1277
|
+
};
|
|
1196
1278
|
return col.name.id;
|
|
1197
1279
|
}
|
|
1198
1280
|
else if ((col.expand || col.value) &&
|
|
@@ -1205,6 +1287,7 @@ function define( model ) {
|
|
|
1205
1287
|
'Alias name is required for this select item' );
|
|
1206
1288
|
}
|
|
1207
1289
|
col.name = {
|
|
1290
|
+
__proto__: XsnName.prototype,
|
|
1208
1291
|
// NOTE: If the alias is changed, corresponding name-clash tests must be updated as well!
|
|
1209
1292
|
id: `$_column_${ colIndex }`,
|
|
1210
1293
|
location: (col.value || col).location,
|
|
@@ -1213,6 +1296,34 @@ function define( model ) {
|
|
|
1213
1296
|
return col.name.id;
|
|
1214
1297
|
}
|
|
1215
1298
|
|
|
1299
|
+
// Create (add + init) for other compiler phases: -----------------------------
|
|
1300
|
+
|
|
1301
|
+
/**
|
|
1302
|
+
* Create "gap" artifact (kind: "namespace") for references which might turn out
|
|
1303
|
+
* to refer to a compiler-generated texts or target entity later.
|
|
1304
|
+
*
|
|
1305
|
+
* A _parent link is set as usual, but the parent does not list the gap artifact
|
|
1306
|
+
* in its _subArtifacts (to allow more precise and processing
|
|
1307
|
+
* sequence-independent resolve errors). When the gap artifact is replaced by
|
|
1308
|
+
* the generated entity, it is added to the _subArtifacts of the parent.
|
|
1309
|
+
*/
|
|
1310
|
+
function createGapArtifact( name, location = builtinLocation() ) {
|
|
1311
|
+
// TODO: make it work without location (or value undefined/null)
|
|
1312
|
+
const art = {
|
|
1313
|
+
__proto__: XsnArtifact.prototype,
|
|
1314
|
+
kind: 'namespace',
|
|
1315
|
+
name: { __proto__: XsnName.prototype, id: name, location },
|
|
1316
|
+
location,
|
|
1317
|
+
};
|
|
1318
|
+
model.definitions[name] = art;
|
|
1319
|
+
// set _parent link, but do not add in _subArtifacts
|
|
1320
|
+
// (TODO: in the future, test better for "valid" completion, and add anyway.)
|
|
1321
|
+
initArtifactParentLink( art, model.definitions, undefined, undefined, true );
|
|
1322
|
+
return art;
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
// Late syntax checks: --------------------------------------------------------
|
|
1326
|
+
|
|
1216
1327
|
/**
|
|
1217
1328
|
* Report a CDL-style type cast to an anonymous structure or an expand with an
|
|
1218
1329
|
* explicit type as a syntax error. Called for every column during select-item
|
|
@@ -1235,182 +1346,51 @@ function define( model ) {
|
|
|
1235
1346
|
// Remark: there are quite a few consequential error, TODO: avoid them
|
|
1236
1347
|
}
|
|
1237
1348
|
|
|
1238
|
-
// Members (elements, enum, actions, params): ---------------------------------
|
|
1239
|
-
|
|
1240
|
-
/**
|
|
1241
|
-
* Initialise for all members of `parent`: resolves the concrete member container
|
|
1242
|
-
* (following `items`/`many` wrappers via `initItemsLinks`), reports a scale-without-
|
|
1243
|
-
* precision error on type extensions, detects inline aspects on managed compositions
|
|
1244
|
-
* (delegating to `initAnonymousAspect`), and then calls `initArtifact` for every
|
|
1245
|
-
* element, enum value, foreign key, action, param, and RETURNS declaration.
|
|
1246
|
-
*
|
|
1247
|
-
* @param {XSN.Artifact|XSN.Element|XSN.Query|XSN.Extension} parent
|
|
1248
|
-
*/
|
|
1249
|
-
function initMembers( parent ) {
|
|
1250
|
-
// TODO: combine with initMembers() - better structuring
|
|
1251
|
-
const block = parent._block;
|
|
1252
|
-
initExprAnnoBlock( parent, block, error );
|
|
1253
|
-
const obj = initItemsLinks( parent, block ); // down many / array of
|
|
1254
|
-
|
|
1255
|
-
if (obj.scale && !obj.precision &&
|
|
1256
|
-
(parent._main || parent).kind === 'extend') { // TODO v7: why just with extend?
|
|
1257
|
-
// TODO: where could we store the location of the name?
|
|
1258
|
-
error( 'syntax-missing-type-property', [ obj.scale.location ],
|
|
1259
|
-
{ prop: 'scale', otherprop: 'precision' },
|
|
1260
|
-
'Type extension with property $(PROP) must also have property $(OTHERPROP)' );
|
|
1261
|
-
}
|
|
1262
|
-
|
|
1263
|
-
if (obj.target?.elements) {
|
|
1264
|
-
// in kick-start.js, we consider a target refererence to an aspect
|
|
1265
|
-
obj.targetAspect = obj.target;
|
|
1266
|
-
delete obj.target;
|
|
1267
|
-
}
|
|
1268
|
-
if (obj.targetAspect?.elements) {
|
|
1269
|
-
initAnonymousAspect( parent, obj, obj.targetAspect );
|
|
1270
|
-
forEachInOrder( obj.targetAspect, 'elements',
|
|
1271
|
-
(...args) => initArtifact( obj.targetAspect, ...args ) );
|
|
1272
|
-
return;
|
|
1273
|
-
}
|
|
1274
|
-
forEachInOrder( obj, 'elements', (...args) => initArtifact( parent, ...args ) );
|
|
1275
|
-
forEachGeneric( obj, 'enum', (...args) => initArtifact( parent, ...args ) );
|
|
1276
|
-
forEachInOrder( obj, 'foreignKeys', (...args) => initArtifact( parent, ...args ) );
|
|
1277
|
-
forEachGeneric( parent, 'actions', (...args) => initArtifact( parent, ...args ) );
|
|
1278
|
-
forEachInOrder( parent, 'params', (...args) => initArtifact( parent, ...args ) );
|
|
1279
|
-
|
|
1280
|
-
const { returns } = parent;
|
|
1281
|
-
if (returns) {
|
|
1282
|
-
const { kind } = parent;
|
|
1283
|
-
returns.kind = (kind === 'extend' || kind === 'annotate') ? kind : 'param';
|
|
1284
|
-
initArtifact( parent, returns, '' ); // '' is special name for returns parameter
|
|
1285
|
-
}
|
|
1286
|
-
}
|
|
1287
|
-
|
|
1288
1349
|
/**
|
|
1289
|
-
*
|
|
1290
|
-
* composition element. Sets up `_outer`, `_parent`, `_block`, `_main`, and
|
|
1291
|
-
* `$self` links on `targetAspect`, promotes its kind to `'aspect'`, and injects
|
|
1292
|
-
* a synthetic `up_` `$navElement` when the composition is directly inside an
|
|
1293
|
-
* entity (so that references to `up_` inside the aspect resolve correctly).
|
|
1350
|
+
* Restrict the query of `art` to only simple projections, i.e. those without 'group by', etc.
|
|
1294
1351
|
*
|
|
1295
|
-
*
|
|
1296
|
-
* @param {XSN.Element} obj The resolved composition element (may differ via `items`)
|
|
1297
|
-
* @param {XSN.InlineAspect} targetAspect The inline aspect node to initialise
|
|
1298
|
-
* @returns {XSN.InlineAspect}
|
|
1299
|
-
*/
|
|
1300
|
-
function initAnonymousAspect( parent, obj, targetAspect ) {
|
|
1301
|
-
// TODO: main?
|
|
1302
|
-
const inEntity = parent._main?.kind === 'entity';
|
|
1303
|
-
// TODO: also allow indirectly (component in component in entity)?
|
|
1304
|
-
setLink( targetAspect, '_outer', obj );
|
|
1305
|
-
setLink( targetAspect, '_parent', parent._parent );
|
|
1306
|
-
setLink( targetAspect, '_main', null ); // for name resolution
|
|
1307
|
-
|
|
1308
|
-
targetAspect.kind = 'aspect'; // TODO: probably '$aspect' to detect
|
|
1309
|
-
setLink( targetAspect, '_block', parent._block );
|
|
1310
|
-
initDollarSelf( targetAspect ); // not with extend
|
|
1311
|
-
// allow ref of up_ in anonymous aspect inside entity
|
|
1312
|
-
// (TODO: complain if used and the managed composition is included into
|
|
1313
|
-
// another entity - might induce auto-redirection):
|
|
1314
|
-
if (inEntity && !targetAspect.elements.up_) {
|
|
1315
|
-
const up = {
|
|
1316
|
-
name: { id: 'up_' },
|
|
1317
|
-
kind: '$navElement',
|
|
1318
|
-
location: obj.location,
|
|
1319
|
-
};
|
|
1320
|
-
setLink( up, '_parent', targetAspect );
|
|
1321
|
-
setLink( up, '_main', targetAspect ); // used on main artifact
|
|
1322
|
-
// recompilation case: both target and targetAspect → allow up_ in that case, too:
|
|
1323
|
-
const name = obj.target && resolveUncheckedPath( obj.target, 'target', obj );
|
|
1324
|
-
const entity = name && model.definitions[name];
|
|
1325
|
-
if (entity && entity.elements)
|
|
1326
|
-
setLink( up, '_origin', entity.elements.up_ );
|
|
1327
|
-
// processAspectComposition/expand() sets _origin to element of
|
|
1328
|
-
// generated target entity
|
|
1329
|
-
targetAspect.$tableAliases.up_ = up;
|
|
1330
|
-
}
|
|
1331
|
-
return targetAspect;
|
|
1332
|
-
}
|
|
1333
|
-
|
|
1334
|
-
/**
|
|
1335
|
-
* Initialise for a single member (element, enum value, foreign key, action,
|
|
1336
|
-
* function, or parameter). Infers a missing name from the last path component
|
|
1337
|
-
* of `targetElement`/`value`, sets `_block`/`_parent`/`_main` links, checks for
|
|
1338
|
-
* duplicates, recurses into sub-members, and — for action/function params —
|
|
1339
|
-
* sets up the bound `$self` parameter. Also promotes elements with a `value`
|
|
1340
|
-
* expression to calculated elements (`$syntax: 'calc'`) and creates the
|
|
1341
|
-
* companion `$calcDepElement`.
|
|
1352
|
+
* Late syntax check. TODO v8 and for `type`: do in parsers.
|
|
1342
1353
|
*
|
|
1343
|
-
* @param {XSN.Artifact
|
|
1344
|
-
* @param {XSN.Element} elem
|
|
1345
|
-
* @param {string} name Relative member name (empty string `''` for RETURNS)
|
|
1354
|
+
* @param {XSN.Artifact} art
|
|
1346
1355
|
*/
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
if (!elem.name && !elem._outer) {
|
|
1350
|
-
const ref = elem.targetElement || elem.kind === 'element' && elem.value;
|
|
1351
|
-
if (ref && ref.path) {
|
|
1352
|
-
elem.name = Object.assign( { $inferred: 'as' },
|
|
1353
|
-
ref.path[ref.path.length - 1] );
|
|
1354
|
-
}
|
|
1355
|
-
else { // RETURNS, parser robustness
|
|
1356
|
-
elem.name = { id: name, location: elem.location };
|
|
1357
|
-
}
|
|
1358
|
-
}
|
|
1356
|
+
function restrictToSimpleProjection( art ) {
|
|
1357
|
+
const { query } = art;
|
|
1359
1358
|
|
|
1360
|
-
if (
|
|
1361
|
-
|
|
1359
|
+
if (art.kind !== 'type')
|
|
1360
|
+
return; // TODO(v6): Also for event
|
|
1362
1361
|
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
checkRedefinition( elem );
|
|
1366
|
-
initMembers( elem );
|
|
1367
|
-
if (elem.kind === 'action' || elem.kind === 'function')
|
|
1368
|
-
initBoundSelfParam( elem.params, elem._main );
|
|
1362
|
+
if (!query.from?.path)
|
|
1363
|
+
return; // union, sub-select, etc. should already be rejected
|
|
1369
1364
|
|
|
1370
|
-
|
|
1365
|
+
const check = (prop, keyword) => (query[prop] && { prop: query[prop], keyword });
|
|
1366
|
+
const unexpectedQueryProp = check( 'where', 'where' ) ||
|
|
1367
|
+
check( 'groupBy', 'group by' ) ||
|
|
1368
|
+
check( 'limit', 'limit' ) ||
|
|
1369
|
+
check( 'having', 'having' ) ||
|
|
1370
|
+
check( 'orderBy', 'order by' ) ||
|
|
1371
|
+
null;
|
|
1371
1372
|
|
|
1372
|
-
if (
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1373
|
+
if (unexpectedQueryProp) {
|
|
1374
|
+
error( 'query-unexpected-prop', [ unexpectedQueryProp.prop.location, query ], {
|
|
1375
|
+
'#': art.kind,
|
|
1376
|
+
keyword: unexpectedQueryProp.keyword,
|
|
1377
|
+
}, {
|
|
1378
|
+
std: 'Unexpected $(KEYWORD) for projection clause used as type expression',
|
|
1379
|
+
type: 'Unexpected $(KEYWORD) for type definition',
|
|
1380
|
+
event: 'Unexpected $(KEYWORD) for event definition',
|
|
1381
|
+
} );
|
|
1382
|
+
return;
|
|
1379
1383
|
}
|
|
1380
|
-
elem.$syntax = 'calc';
|
|
1381
|
-
// TODO: it is not just "syntax" - maybe better test for `$calcDepElement`?
|
|
1382
|
-
createAndLinkCalcDepElement( elem );
|
|
1383
1384
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1385
|
+
const firstCondition = query.from.path.find(step => step.where)?.where;
|
|
1386
|
+
if (firstCondition) {
|
|
1387
|
+
error( 'query-unexpected-filter', [ firstCondition.location, query ], { '#': art.kind }, {
|
|
1388
|
+
std: 'Unexpected filter in query source for projection clause used as type expression',
|
|
1389
|
+
type: 'Unexpected filter in projection clause of type definition',
|
|
1390
|
+
event: 'Unexpected filter in projection clause of event definition',
|
|
1391
|
+
} );
|
|
1391
1392
|
}
|
|
1392
1393
|
}
|
|
1393
|
-
|
|
1394
|
-
/**
|
|
1395
|
-
* Create "gap" artifact (kind: "namespace") for references which might turn out
|
|
1396
|
-
* to refer to a compiler-generated texts or target entity later.
|
|
1397
|
-
*
|
|
1398
|
-
* A _parent link is set as usual, but the parent does not list the gap artifact
|
|
1399
|
-
* in its _subArtifacts (to allow more precise and processing
|
|
1400
|
-
* sequence-independent resolve errors). When the gap artifact is replaced by
|
|
1401
|
-
* the generated entity, it is added to the _subArtifacts of the parent.
|
|
1402
|
-
*/
|
|
1403
|
-
function createGapArtifact( name, location = builtinLocation() ) {
|
|
1404
|
-
// TODO: make it work without location (or value undefined/null)
|
|
1405
|
-
const art = {
|
|
1406
|
-
kind: 'namespace', name: { id: name, location }, location,
|
|
1407
|
-
};
|
|
1408
|
-
model.definitions[name] = art;
|
|
1409
|
-
// set _parent link, but do not add in _subArtifacts
|
|
1410
|
-
// (TODO: in the future, test better for "valid" completion, and add anyway.)
|
|
1411
|
-
initArtifactParentLink( art, model.definitions, undefined, undefined, true );
|
|
1412
|
-
return art;
|
|
1413
|
-
}
|
|
1414
1394
|
}
|
|
1415
1395
|
|
|
1416
1396
|
module.exports = define;
|