@sap/cds-dk 10.1.2 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (849) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/bin/add.js +7 -2
  3. package/bin/bind.js +0 -2
  4. package/bin/bindings.js +35 -0
  5. package/bin/build.js +11 -6
  6. package/bin/compile/index.js +1 -0
  7. package/bin/completion/index.js +10 -448
  8. package/bin/completion/scripts/cds.fish +24 -16
  9. package/bin/completion/scripts/cds.ps1 +26 -25
  10. package/bin/completion/scripts/cds.sh +22 -19
  11. package/bin/completion/scripts/cds.zsh +22 -19
  12. package/bin/deploy/index.js +1 -1
  13. package/bin/deploy/to-hana/hana.js +5 -4
  14. package/bin/env.js +0 -1
  15. package/bin/eval.js +9 -5
  16. package/bin/export.js +6 -4
  17. package/bin/help/export.md +28 -4
  18. package/bin/import.js +6 -5
  19. package/bin/inspect.js +0 -1
  20. package/bin/login.js +28 -3
  21. package/bin/repl.js +82 -26
  22. package/bin/run.js +6 -7
  23. package/bin/serve.js +6 -7
  24. package/bin/up.js +7 -2
  25. package/bin/upgrade/steps/install.js +6 -6
  26. package/bin/watch/index.js +1 -0
  27. package/lib/build/index.js +11 -7
  28. package/lib/build/plugins/featureToggles.js +2 -2
  29. package/lib/build/plugins/hana/index.js +1 -1
  30. package/lib/build/plugins/helm/files/subcharts/web-application/Chart.yaml +1 -1
  31. package/lib/build/plugins/helm/files/subcharts/web-application/templates/_helpers.tpl +7 -0
  32. package/lib/build/plugins/helm/files/subcharts/web-application/templates/api-rule.yaml +1 -0
  33. package/lib/build/plugins/helm/files/subcharts/web-application/templates/service-binding.yaml +4 -4
  34. package/lib/build/plugins/helm/files/subcharts/web-application/values.schema.json +13 -0
  35. package/lib/build/plugins/helm/files/subcharts/web-application/values.yaml +7 -1
  36. package/lib/build/plugins/java/index.js +5 -1
  37. package/lib/build/plugins/nodejs/index.js +5 -1
  38. package/lib/build/util.js +4 -5
  39. package/lib/env/schemas/cds-rc.js +5 -0
  40. package/lib/import/importapi.js +2 -3
  41. package/lib/init/constants.js +1 -1
  42. package/lib/init/index.js +8 -3
  43. package/lib/init/plugin.js +1 -1
  44. package/lib/init/projectReader.js +13 -10
  45. package/lib/init/registries/mta.js +0 -6
  46. package/lib/init/template/ai/index.js +4 -4
  47. package/lib/init/template/ams/files/extensionDeveloper.dcl +6 -0
  48. package/lib/init/template/ams/files/mta.yaml.hbs +6 -0
  49. package/lib/init/template/ams/files/sidecar.package.json.hbs +5 -0
  50. package/lib/init/template/ams/index.js +42 -40
  51. package/lib/init/template/app-frontend/files/mta.yaml.hbs +2 -0
  52. package/lib/init/template/app-frontend/files/ui5.yaml.hbs +0 -4
  53. package/lib/init/template/app-frontend/index.js +29 -24
  54. package/lib/init/template/application-logging/index.js +6 -6
  55. package/lib/init/template/approuter/files/xs-app.json.hbs +22 -0
  56. package/lib/init/template/approuter/index.js +20 -13
  57. package/lib/init/template/attachments/index.js +3 -3
  58. package/lib/init/template/audit-logging/index.js +4 -4
  59. package/lib/init/template/cloud-logging/index.js +12 -6
  60. package/lib/init/template/completion/completionSetup.js +19 -6
  61. package/lib/init/template/connectivity/index.js +3 -3
  62. package/lib/init/template/data/as-csv.js +7 -4
  63. package/lib/init/template/data/as-json.js +77 -20
  64. package/lib/init/template/destination/index.js +12 -9
  65. package/lib/init/template/dynatrace/index.js +5 -5
  66. package/lib/init/template/enterprise-messaging/index.js +6 -6
  67. package/lib/init/template/enterprise-messaging-shared/index.js +4 -4
  68. package/lib/init/template/extensibility/index.js +2 -2
  69. package/lib/init/template/extension/index.js +26 -0
  70. package/lib/init/template/github-actions/index.js +3 -3
  71. package/lib/init/template/hana/files/package.json.hbs +3 -2
  72. package/lib/init/template/hana/index.js +5 -5
  73. package/lib/init/template/hana-serverless/index.js +3 -3
  74. package/lib/init/template/html5-repo/files/mta.yaml.hbs +2 -0
  75. package/lib/init/template/html5-repo/files/ui5.yaml.hbs +0 -4
  76. package/lib/init/template/html5-repo/index.js +68 -40
  77. package/lib/init/template/http/index.js +1 -1
  78. package/lib/init/template/ias/index.js +7 -7
  79. package/lib/init/template/initial/files/.gitignore.hbs +1 -0
  80. package/lib/init/template/kafka/index.js +3 -3
  81. package/lib/init/template/kyma/index.js +7 -9
  82. package/lib/init/template/malware-scanner/index.js +3 -3
  83. package/lib/init/template/mta/index.js +6 -3
  84. package/lib/init/template/multitenancy/index.js +6 -7
  85. package/lib/init/template/notifications/index.js +2 -2
  86. package/lib/init/template/portal/index.js +16 -10
  87. package/lib/init/template/postgres/index.js +5 -5
  88. package/lib/init/template/react/files/index.html.hbs +1 -1
  89. package/lib/init/template/react/files/package.json.hbs +3 -2
  90. package/lib/init/template/react/files/src/{App.jsx.hbs → App.{{jsxExtension}}.hbs} +8 -2
  91. package/lib/init/template/react/files/src/{main.jsx → main.{{jsxExtension}}.hbs} +2 -2
  92. package/lib/init/template/react/index.js +23 -4
  93. package/lib/init/template/react/typescript/src/vite-env.d.ts +1 -0
  94. package/lib/init/template/react/typescript/tsconfig.json.hbs +16 -0
  95. package/lib/init/template/redis/index.js +2 -2
  96. package/lib/init/template/side-by-side-extensibility/index.js +6 -3
  97. package/lib/init/template/typescript/files/tsconfig.json +3 -1
  98. package/lib/init/template/vue/files/index.html.hbs +1 -1
  99. package/lib/init/template/vue/files/package.json.hbs +2 -1
  100. package/lib/init/template/vue/files/src/App.vue.hbs +8 -2
  101. package/lib/init/template/vue/index.js +20 -4
  102. package/lib/init/template/vue/typescript/tsconfig.json +11 -0
  103. package/lib/init/template/workzone-standard/files/mta.yaml.hbs +2 -2
  104. package/lib/init/template/workzone-standard/index.js +29 -27
  105. package/lib/init/template/xsuaa/files/mta.yaml.hbs +1 -1
  106. package/lib/init/template/xsuaa/files/values.yaml.hbs +1 -1
  107. package/lib/init/template/xsuaa/index.js +34 -22
  108. package/lib/mtx/auth_manager.js +8 -2
  109. package/lib/mtx/browser_login.js +181 -0
  110. package/lib/mtx/params.js +6 -0
  111. package/lib/mtx/settings_manager.js +29 -4
  112. package/lib/util/cf.js +44 -8
  113. package/lib/util/fs.js +2 -2
  114. package/node_modules/@cap-js/db-service/CHANGELOG.md +10 -0
  115. package/node_modules/@cap-js/db-service/lib/cqn2pql.js +4 -0
  116. package/node_modules/@cap-js/db-service/lib/cqn2sql.js +3 -0
  117. package/node_modules/@cap-js/db-service/lib/cqn4sql.js +8 -23
  118. package/node_modules/@cap-js/db-service/lib/infer/index.js +20 -27
  119. package/node_modules/@cap-js/db-service/package.json +1 -1
  120. package/node_modules/@cap-js/openapi/cds-plugin.js +12 -0
  121. package/node_modules/@cap-js/openapi/index.js +3 -1
  122. package/node_modules/@cap-js/openapi/lib/compile/csdl2openapi.js +652 -413
  123. package/node_modules/@cap-js/openapi/lib/compile/diagram.js +16 -13
  124. package/node_modules/@cap-js/openapi/lib/compile/index.js +10 -7
  125. package/node_modules/@cap-js/openapi/lib/compile/property-util.js +51 -0
  126. package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/importOpenAPI.js +12 -9
  127. package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/index.js +4 -3
  128. package/node_modules/@cap-js/openapi/package.json +71 -3
  129. package/node_modules/@cap-js/sqlite/CHANGELOG.md +9 -0
  130. package/node_modules/@cap-js/sqlite/package.json +3 -3
  131. package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  132. package/node_modules/@isaacs/fs-minipass/README.md +71 -0
  133. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
  134. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
  135. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  136. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
  137. package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  138. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
  139. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
  140. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  141. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
  142. package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  143. package/node_modules/@isaacs/fs-minipass/package.json +72 -0
  144. package/node_modules/@sap/cds/CHANGELOG.md +52 -1
  145. package/node_modules/@sap/cds/_i18n/messages_ar.properties +1 -0
  146. package/node_modules/@sap/cds/_i18n/messages_bg.properties +1 -0
  147. package/node_modules/@sap/cds/_i18n/messages_cs.properties +1 -0
  148. package/node_modules/@sap/cds/_i18n/messages_da.properties +1 -0
  149. package/node_modules/@sap/cds/_i18n/messages_de.properties +1 -0
  150. package/node_modules/@sap/cds/_i18n/messages_el.properties +1 -0
  151. package/node_modules/@sap/cds/_i18n/messages_en.properties +1 -0
  152. package/node_modules/@sap/cds/_i18n/messages_es.properties +1 -0
  153. package/node_modules/@sap/cds/_i18n/messages_es_MX.properties +1 -0
  154. package/node_modules/@sap/cds/_i18n/messages_fi.properties +1 -0
  155. package/node_modules/@sap/cds/_i18n/messages_fr.properties +1 -0
  156. package/node_modules/@sap/cds/_i18n/messages_he.properties +1 -0
  157. package/node_modules/@sap/cds/_i18n/messages_hr.properties +1 -0
  158. package/node_modules/@sap/cds/_i18n/messages_hu.properties +1 -0
  159. package/node_modules/@sap/cds/_i18n/messages_it.properties +1 -0
  160. package/node_modules/@sap/cds/_i18n/messages_ja.properties +1 -0
  161. package/node_modules/@sap/cds/_i18n/messages_kk.properties +1 -0
  162. package/node_modules/@sap/cds/_i18n/messages_ko.properties +1 -0
  163. package/node_modules/@sap/cds/_i18n/messages_ms.properties +1 -0
  164. package/node_modules/@sap/cds/_i18n/messages_nl.properties +1 -0
  165. package/node_modules/@sap/cds/_i18n/messages_no.properties +1 -0
  166. package/node_modules/@sap/cds/_i18n/messages_pl.properties +1 -0
  167. package/node_modules/@sap/cds/_i18n/messages_pt.properties +1 -0
  168. package/node_modules/@sap/cds/_i18n/messages_ro.properties +1 -0
  169. package/node_modules/@sap/cds/_i18n/messages_ru.properties +1 -0
  170. package/node_modules/@sap/cds/_i18n/messages_sh.properties +1 -0
  171. package/node_modules/@sap/cds/_i18n/messages_sk.properties +1 -0
  172. package/node_modules/@sap/cds/_i18n/messages_sl.properties +1 -0
  173. package/node_modules/@sap/cds/_i18n/messages_sv.properties +1 -0
  174. package/node_modules/@sap/cds/_i18n/messages_th.properties +1 -0
  175. package/node_modules/@sap/cds/_i18n/messages_tr.properties +1 -0
  176. package/node_modules/@sap/cds/_i18n/messages_uk.properties +1 -0
  177. package/node_modules/@sap/cds/_i18n/messages_vi.properties +1 -0
  178. package/node_modules/@sap/cds/_i18n/messages_zh_CN.properties +1 -0
  179. package/node_modules/@sap/cds/_i18n/messages_zh_TW.properties +1 -0
  180. package/node_modules/@sap/cds/app/index-client.js +164 -0
  181. package/node_modules/@sap/cds/app/index.css +598 -87
  182. package/node_modules/@sap/cds/app/index.html +54 -30
  183. package/node_modules/@sap/cds/app/index.js +311 -67
  184. package/node_modules/@sap/cds/app/table.html +226 -0
  185. package/node_modules/@sap/cds/app/table.js +302 -0
  186. package/node_modules/@sap/cds/bin/serve.js +3 -2
  187. package/node_modules/@sap/cds/eslint.config.mjs +2 -0
  188. package/node_modules/@sap/cds/lib/compile/cdsc.js +7 -0
  189. package/node_modules/@sap/cds/lib/compile/for/embeddings.js +27 -0
  190. package/node_modules/@sap/cds/lib/compile/load.js +2 -2
  191. package/node_modules/@sap/cds/lib/compile/minify.js +17 -4
  192. package/node_modules/@sap/cds/lib/compile/parse.js +3 -0
  193. package/node_modules/@sap/cds/lib/compile/resolve.js +16 -14
  194. package/node_modules/@sap/cds/lib/core/classes.js +1 -0
  195. package/node_modules/@sap/cds/lib/dbs/cds-deploy.js +4 -5
  196. package/node_modules/@sap/cds/lib/env/cds-env.js +132 -70
  197. package/node_modules/@sap/cds/lib/env/cds-requires/auth-strategies.js +62 -0
  198. package/node_modules/@sap/cds/lib/env/cds-requires/databases.js +49 -0
  199. package/node_modules/@sap/cds/lib/env/cds-requires/embeddings.js +8 -0
  200. package/node_modules/@sap/cds/lib/env/cds-requires/index.js +27 -0
  201. package/node_modules/@sap/cds/lib/env/cds-requires/messaging.js +82 -0
  202. package/node_modules/@sap/cds/lib/env/cds-requires/platform.js +23 -0
  203. package/node_modules/@sap/cds/lib/env/cds-requires/queues.js +34 -0
  204. package/node_modules/@sap/cds/lib/env/cds-requires/services.js +32 -0
  205. package/node_modules/@sap/cds/lib/env/defaults.js +9 -1
  206. package/node_modules/@sap/cds/lib/i18n/files.js +4 -4
  207. package/node_modules/@sap/cds/lib/i18n/locale.js +1 -1
  208. package/node_modules/@sap/cds/lib/index.js +9 -9
  209. package/node_modules/@sap/cds/lib/log/cds-log.js +3 -3
  210. package/node_modules/@sap/cds/lib/ql/SELECT.js +2 -0
  211. package/node_modules/@sap/cds/lib/ql/UPDATE.js +1 -1
  212. package/node_modules/@sap/cds/lib/ql/cds.ql-Query.js +4 -1
  213. package/node_modules/@sap/cds/lib/ql/core/@types/cqn.d.ts +146 -0
  214. package/node_modules/@sap/cds/lib/ql/core/@types/exprs.d.ts +51 -0
  215. package/node_modules/@sap/cds/lib/ql/core/@types/index.d.ts +29 -0
  216. package/node_modules/@sap/cds/lib/ql/core/@types/package.json +7 -0
  217. package/node_modules/@sap/cds/lib/ql/core/@types/ql/delete.d.ts +8 -0
  218. package/node_modules/@sap/cds/lib/ql/core/@types/ql/insert.d.ts +19 -0
  219. package/node_modules/@sap/cds/lib/ql/core/@types/ql/select.d.ts +24 -0
  220. package/node_modules/@sap/cds/lib/ql/core/@types/ql/update.d.ts +10 -0
  221. package/node_modules/@sap/cds/lib/ql/core/@types/query.d.ts +18 -0
  222. package/node_modules/@sap/cds/lib/ql/core/cql/parser.min.js +1 -0
  223. package/node_modules/@sap/cds/lib/ql/core/lib/index.js +69 -0
  224. package/node_modules/@sap/cds/lib/ql/core/lib/ql/cache.js +34 -0
  225. package/node_modules/@sap/cds/lib/ql/core/lib/ql/call-action.js +6 -0
  226. package/node_modules/@sap/cds/lib/ql/core/lib/ql/delete.js +8 -0
  227. package/node_modules/@sap/cds/lib/ql/core/lib/ql/insert.js +26 -0
  228. package/node_modules/@sap/cds/lib/ql/core/lib/ql/select.js +22 -0
  229. package/node_modules/@sap/cds/lib/ql/core/lib/ql/update.js +26 -0
  230. package/node_modules/@sap/cds/lib/ql/core/lib/query.js +85 -0
  231. package/node_modules/@sap/cds/lib/ql/core/lib/xl/fluent.js +47 -0
  232. package/node_modules/@sap/cds/lib/ql/core/lib/xl/ttl.js +24 -0
  233. package/node_modules/@sap/cds/lib/ql/core/license +201 -0
  234. package/node_modules/@sap/cds/lib/ql/core/package.json +24 -0
  235. package/node_modules/@sap/cds/lib/ql/core/readme.md +99 -0
  236. package/node_modules/@sap/cds/lib/ql/core/upstream.json +5 -0
  237. package/node_modules/@sap/cds/lib/req/spawn.js +1 -1
  238. package/node_modules/@sap/cds/lib/srv/bindings.js +111 -115
  239. package/node_modules/@sap/cds/lib/srv/cds-connect.js +11 -10
  240. package/node_modules/@sap/cds/lib/srv/cds-serve.js +16 -7
  241. package/node_modules/@sap/cds/lib/srv/cds.Service.js +13 -7
  242. package/node_modules/@sap/cds/lib/srv/factory.js +8 -10
  243. package/node_modules/@sap/cds/lib/srv/middlewares/auth/ias-auth.js +35 -32
  244. package/node_modules/@sap/cds/lib/srv/middlewares/auth/jwt-auth.js +5 -1
  245. package/node_modules/@sap/cds/lib/srv/middlewares/auth/mocked-users.js +1 -1
  246. package/node_modules/@sap/cds/lib/srv/protocols/hcql.js +230 -79
  247. package/node_modules/@sap/cds/lib/srv/protocols/http.js +7 -3
  248. package/node_modules/@sap/cds/lib/srv/protocols/index.js +7 -2
  249. package/node_modules/@sap/cds/lib/srv/srv-dispatch.js +2 -2
  250. package/node_modules/@sap/cds/lib/utils/cds-utils.js +37 -0
  251. package/node_modules/@sap/cds/lib/utils/csv-reader.js +2 -2
  252. package/node_modules/@sap/cds/libx/_runtime/common/generic/assert.js +18 -27
  253. package/node_modules/@sap/cds/libx/_runtime/common/generic/crud.js +1 -1
  254. package/node_modules/@sap/cds/libx/_runtime/common/utils/rewriteAsterisks.js +1 -1
  255. package/node_modules/@sap/cds/libx/_runtime/fiori/lean-draft.js +121 -84
  256. package/node_modules/@sap/cds/libx/_runtime/messaging/common-utils/authorizedRequest.js +24 -1
  257. package/node_modules/@sap/cds/libx/_runtime/remote/Service.js +2 -2
  258. package/node_modules/@sap/cds/libx/_runtime/remote/utils/client.js +3 -2
  259. package/node_modules/@sap/cds/libx/_runtime/remote/utils/query.js +11 -6
  260. package/node_modules/@sap/cds/libx/odata/middleware/create.js +4 -0
  261. package/node_modules/@sap/cds/libx/odata/middleware/metadata.js +1 -1
  262. package/node_modules/@sap/cds/libx/odata/middleware/operation.js +3 -0
  263. package/node_modules/@sap/cds/libx/odata/middleware/parse.js +9 -0
  264. package/node_modules/@sap/cds/libx/odata/middleware/read.js +6 -0
  265. package/node_modules/@sap/cds/libx/odata/middleware/update.js +5 -1
  266. package/node_modules/@sap/cds/libx/odata/parse/afterburner.js +3 -3
  267. package/node_modules/@sap/cds/libx/odata/parse/multipartToJson.js +1 -1
  268. package/node_modules/@sap/cds/libx/odata/utils/ieee754.js +20 -0
  269. package/node_modules/@sap/cds/libx/queue/api.js +1 -1
  270. package/node_modules/@sap/cds/libx/queue/index.js +3 -1
  271. package/node_modules/@sap/cds/libx/queue/processing.js +5 -0
  272. package/node_modules/@sap/cds/libx/rest/RestAdapter.js +1 -0
  273. package/node_modules/@sap/cds/package.json +2 -2
  274. package/node_modules/@sap/cds/server.js +1 -0
  275. package/node_modules/@sap/cds/srv/ucl-service.cds +1 -0
  276. package/node_modules/@sap/cds-compiler/CHANGELOG.md +83 -0
  277. package/node_modules/@sap/cds-compiler/bin/cdsse.js +1 -1
  278. package/node_modules/@sap/cds-compiler/doc/EffectiveCSN.md +3314 -0
  279. package/node_modules/@sap/cds-compiler/lib/api/main.js +9 -6
  280. package/node_modules/@sap/cds-compiler/lib/api/options.js +3 -3
  281. package/node_modules/@sap/cds-compiler/lib/{model → base}/csnUtils.js +5 -5
  282. package/node_modules/@sap/cds-compiler/lib/base/message-registry.js +54 -6
  283. package/node_modules/@sap/cds-compiler/lib/base/optionProcessor.js +4 -4
  284. package/node_modules/@sap/cds-compiler/lib/{model → base}/sortViews.js +1 -1
  285. package/node_modules/@sap/cds-compiler/lib/checks/assocOutsideService.js +1 -1
  286. package/node_modules/@sap/cds-compiler/lib/checks/checkForTypes.js +1 -1
  287. package/node_modules/@sap/cds-compiler/lib/checks/checkPathsInStoredCalcElement.js +1 -1
  288. package/node_modules/@sap/cds-compiler/lib/checks/elements.js +37 -3
  289. package/node_modules/@sap/cds-compiler/lib/checks/enricher.js +1 -1
  290. package/node_modules/@sap/cds-compiler/lib/checks/existsInForbiddenPlaces.js +1 -1
  291. package/node_modules/@sap/cds-compiler/lib/checks/hasPersistedElements.js +1 -1
  292. package/node_modules/@sap/cds-compiler/lib/checks/manyExpand.js +1 -1
  293. package/node_modules/@sap/cds-compiler/lib/checks/manyNavigations.js +1 -1
  294. package/node_modules/@sap/cds-compiler/lib/checks/onConditions.js +1 -1
  295. package/node_modules/@sap/cds-compiler/lib/checks/parameters.js +1 -1
  296. package/node_modules/@sap/cds-compiler/lib/checks/queryNoDbArtifacts.js +1 -1
  297. package/node_modules/@sap/cds-compiler/lib/checks/selectItems.js +1 -1
  298. package/node_modules/@sap/cds-compiler/lib/checks/structuredAnnoExpressions.js +1 -1
  299. package/node_modules/@sap/cds-compiler/lib/checks/typeParameters.js +1 -1
  300. package/node_modules/@sap/cds-compiler/lib/checks/types.js +1 -1
  301. package/node_modules/@sap/cds-compiler/lib/checks/validator.js +1 -1
  302. package/node_modules/@sap/cds-compiler/lib/compiler/assert-consistency.js +20 -12
  303. package/node_modules/@sap/cds-compiler/lib/compiler/builtins.js +9 -4
  304. package/node_modules/@sap/cds-compiler/lib/compiler/checks.js +50 -0
  305. package/node_modules/@sap/cds-compiler/lib/compiler/define.js +303 -323
  306. package/node_modules/@sap/cds-compiler/lib/compiler/dictionaries.js +5 -0
  307. package/node_modules/@sap/cds-compiler/lib/compiler/extend.js +1015 -1177
  308. package/node_modules/@sap/cds-compiler/lib/compiler/generate.js +55 -42
  309. package/node_modules/@sap/cds-compiler/lib/compiler/populate.js +74 -45
  310. package/node_modules/@sap/cds-compiler/lib/compiler/propagator.js +1 -0
  311. package/node_modules/@sap/cds-compiler/lib/compiler/resolve.js +6 -4
  312. package/node_modules/@sap/cds-compiler/lib/compiler/shared.js +30 -49
  313. package/node_modules/@sap/cds-compiler/lib/compiler/utils.js +32 -18
  314. package/node_modules/@sap/cds-compiler/lib/edm/annotations/edmJson.js +3 -3
  315. package/node_modules/@sap/cds-compiler/lib/edm/annotations/genericTranslation.js +2 -2
  316. package/node_modules/@sap/cds-compiler/lib/edm/annotations/preprocessAnnotations.js +2 -3
  317. package/node_modules/@sap/cds-compiler/lib/edm/csn2edm.js +1 -1
  318. package/node_modules/@sap/cds-compiler/lib/edm/edm.js +6 -7
  319. package/node_modules/@sap/cds-compiler/lib/edm/edmAnnoPreprocessor.js +1 -1
  320. package/node_modules/@sap/cds-compiler/lib/edm/edmInboundChecks.js +1 -1
  321. package/node_modules/@sap/cds-compiler/lib/edm/edmPreprocessor.js +1 -1
  322. package/node_modules/@sap/cds-compiler/lib/edm/edmUtils.js +12 -7
  323. package/node_modules/@sap/cds-compiler/lib/gen/CdlGrammar.checksum +1 -1
  324. package/node_modules/@sap/cds-compiler/lib/gen/CdlParser.js +15 -15
  325. package/node_modules/@sap/cds-compiler/lib/gen/Dictionary.json +7 -0
  326. package/node_modules/@sap/cds-compiler/lib/json/from-csn.js +30 -30
  327. package/node_modules/@sap/cds-compiler/lib/json/to-csn.js +2 -1
  328. package/node_modules/@sap/cds-compiler/lib/main.js +4 -1
  329. package/node_modules/@sap/cds-compiler/lib/parsers/AstBuildingParser.js +42 -15
  330. package/node_modules/@sap/cds-compiler/lib/render/DuplicateChecker.js +37 -11
  331. package/node_modules/@sap/cds-compiler/lib/render/manageConstraints.js +1 -1
  332. package/node_modules/@sap/cds-compiler/lib/render/toCdl.js +11 -6
  333. package/node_modules/@sap/cds-compiler/lib/render/toRename.js +1 -1
  334. package/node_modules/@sap/cds-compiler/lib/render/toSql.js +74 -24
  335. package/node_modules/@sap/cds-compiler/lib/render/utils/common.js +1 -1
  336. package/node_modules/@sap/cds-compiler/lib/render/utils/operators.js +81 -0
  337. package/node_modules/@sap/cds-compiler/lib/render/utils/sql.js +17 -10
  338. package/node_modules/@sap/cds-compiler/lib/transform/db/assertUnique.js +1 -1
  339. package/node_modules/@sap/cds-compiler/lib/transform/db/associations.js +3 -4
  340. package/node_modules/@sap/cds-compiler/lib/transform/db/assocsToQueries/transformExists.js +1 -1
  341. package/node_modules/@sap/cds-compiler/lib/transform/db/backlinks.js +2 -2
  342. package/node_modules/@sap/cds-compiler/lib/transform/db/cdsPersistence.js +1 -1
  343. package/node_modules/@sap/cds-compiler/lib/transform/db/constraints.js +6 -5
  344. package/node_modules/@sap/cds-compiler/lib/transform/db/expansion.js +7 -1
  345. package/node_modules/@sap/cds-compiler/lib/transform/db/flattening.js +2 -2
  346. package/node_modules/@sap/cds-compiler/lib/{modelCompare/compare.js → transform/db/migration/diffModels.js} +5 -5
  347. package/node_modules/@sap/cds-compiler/lib/{modelCompare/utils/filter.js → transform/db/migration/filterDiff.js} +2 -2
  348. package/node_modules/@sap/cds-compiler/lib/transform/db/processSqlServices.js +1 -1
  349. package/node_modules/@sap/cds-compiler/lib/transform/db/rewriteCalculatedElements.js +1 -1
  350. package/node_modules/@sap/cds-compiler/lib/transform/db/temporal.js +1 -1
  351. package/node_modules/@sap/cds-compiler/lib/transform/db/views.js +2 -6
  352. package/node_modules/@sap/cds-compiler/lib/transform/draft/db.js +1 -1
  353. package/node_modules/@sap/cds-compiler/lib/transform/draft/odata.js +1 -1
  354. package/node_modules/@sap/cds-compiler/lib/transform/effective/annotations.js +1 -1
  355. package/node_modules/@sap/cds-compiler/lib/transform/effective/associations.js +1 -1
  356. package/node_modules/@sap/cds-compiler/lib/transform/effective/flattening.js +1 -1
  357. package/node_modules/@sap/cds-compiler/lib/transform/effective/main.js +3 -2
  358. package/node_modules/@sap/cds-compiler/lib/transform/effective/misc.js +2 -1
  359. package/node_modules/@sap/cds-compiler/lib/transform/effective/queries.js +1 -1
  360. package/node_modules/@sap/cds-compiler/lib/transform/effective/types.js +1 -1
  361. package/node_modules/@sap/cds-compiler/lib/transform/forOdata.js +1 -1
  362. package/node_modules/@sap/cds-compiler/lib/transform/forRelationalDB.js +9 -4
  363. package/node_modules/@sap/cds-compiler/lib/transform/localized.js +1 -1
  364. package/node_modules/@sap/cds-compiler/lib/transform/odata/adaptAnnotationRefs.js +5 -11
  365. package/node_modules/@sap/cds-compiler/lib/transform/odata/createForeignKeys.js +1 -1
  366. package/node_modules/@sap/cds-compiler/lib/transform/odata/flattening.js +4 -4
  367. package/node_modules/@sap/cds-compiler/lib/transform/odata/foreignKeyRefsInXprAnnos.js +5 -3
  368. package/node_modules/@sap/cds-compiler/lib/transform/odata/toFinalBaseType.js +29 -5
  369. package/node_modules/@sap/cds-compiler/lib/transform/odata/typesExposure.js +13 -3
  370. package/node_modules/@sap/cds-compiler/lib/transform/odata/utils.js +9 -0
  371. package/node_modules/@sap/cds-compiler/lib/transform/transformUtils.js +2 -2
  372. package/node_modules/@sap/cds-compiler/lib/transform/translateAssocsToJoins.js +1 -1
  373. package/node_modules/@sap/cds-compiler/lib/transform/tupleExpansion.js +1 -1
  374. package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/coreComputed.js +1 -1
  375. package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/universalCsnEnricher.js +1 -1
  376. package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/utils.js +1 -1
  377. package/node_modules/@sap/cds-compiler/package.json +1 -1
  378. package/node_modules/@sap/cds-mtxs/CHANGELOG.md +47 -0
  379. package/node_modules/@sap/cds-mtxs/bin/cds-mtx-migrate.js +4 -6
  380. package/node_modules/@sap/cds-mtxs/bin/cds-mtx.js +5 -4
  381. package/node_modules/@sap/cds-mtxs/cds-plugin.js +38 -2
  382. package/node_modules/@sap/cds-mtxs/db/t0.cds +7 -0
  383. package/node_modules/@sap/cds-mtxs/lib/utils.js +129 -20
  384. package/node_modules/@sap/cds-mtxs/package.json +15 -14
  385. package/node_modules/@sap/cds-mtxs/srv/cf/abstract-provisioning-service.js +13 -12
  386. package/node_modules/@sap/cds-mtxs/srv/cf/saas-provisioning-service.cds +1 -0
  387. package/node_modules/@sap/cds-mtxs/srv/cf/sms-provisioning-service.cds +1 -0
  388. package/node_modules/@sap/cds-mtxs/srv/extensibility/compat/update.js +5 -2
  389. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/config.js +1 -2
  390. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/csv-allowlist.js +64 -0
  391. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/index.js +4 -2
  392. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/protected-namespace.js +67 -5
  393. package/node_modules/@sap/cds-mtxs/srv/extensibility-service.js +179 -15
  394. package/node_modules/@sap/cds-mtxs/srv/jobs-service.js +12 -3
  395. package/node_modules/@sap/cds-mtxs/srv/plugins/common.js +33 -12
  396. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/ctnr-mgr-base.js +24 -6
  397. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/hdi-ctnr-mgr.js +3 -1
  398. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/hdi-native.js +752 -0
  399. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/serverless.js +17 -20
  400. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/srv-mgr-v2.js +511 -0
  401. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/srv-mgr.js +11 -4
  402. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/tms.js +8 -0
  403. package/node_modules/@sap/cds-mtxs/srv/plugins/hana.js +27 -18
  404. package/node_modules/@sap/cds-mtxs/srv/worker/job-worker-pool.js +1 -1
  405. package/node_modules/@sap/cds-mtxs/srv/worker/job-worker.js +1 -1
  406. package/node_modules/chownr/LICENSE.md +63 -0
  407. package/node_modules/chownr/README.md +3 -0
  408. package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
  409. package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
  410. package/node_modules/chownr/dist/commonjs/index.js +93 -0
  411. package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
  412. package/node_modules/chownr/dist/commonjs/package.json +3 -0
  413. package/node_modules/chownr/dist/esm/index.d.ts +3 -0
  414. package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
  415. package/node_modules/chownr/dist/esm/index.js +85 -0
  416. package/node_modules/chownr/dist/esm/index.js.map +1 -0
  417. package/node_modules/chownr/dist/esm/package.json +3 -0
  418. package/node_modules/chownr/package.json +69 -0
  419. package/node_modules/content-disposition/README.md +105 -35
  420. package/node_modules/content-disposition/dist/index.d.ts +72 -0
  421. package/node_modules/content-disposition/dist/index.js +388 -0
  422. package/node_modules/content-disposition/dist/index.js.map +1 -0
  423. package/node_modules/content-disposition/package.json +31 -19
  424. package/node_modules/content-type/README.md +34 -57
  425. package/node_modules/content-type/package.json +35 -25
  426. package/node_modules/express/Readme.md +15 -9
  427. package/node_modules/express/lib/application.js +2 -2
  428. package/node_modules/express/lib/request.js +32 -19
  429. package/node_modules/express/lib/response.js +27 -30
  430. package/node_modules/express/package.json +10 -10
  431. package/node_modules/handlebars/bin/handlebars +1 -1
  432. package/node_modules/handlebars/dist/amd/handlebars/base.js +2 -2
  433. package/node_modules/handlebars/dist/amd/handlebars/compiler/base.js +2 -59
  434. package/node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js +68 -5
  435. package/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js +160 -19
  436. package/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js +23 -7
  437. package/node_modules/handlebars/dist/amd/handlebars/compiler/node-types.js +12 -0
  438. package/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js +26 -7
  439. package/node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js +9 -4
  440. package/node_modules/handlebars/dist/amd/handlebars/exception.js +8 -4
  441. package/node_modules/handlebars/dist/amd/handlebars/helpers/each.js +40 -14
  442. package/node_modules/handlebars/dist/amd/handlebars/internal/proto-access.js +21 -1
  443. package/node_modules/handlebars/dist/amd/handlebars/runtime.js +24 -4
  444. package/node_modules/handlebars/dist/amd/handlebars/utils.js +4 -3
  445. package/node_modules/handlebars/dist/amd/precompiler.js +13 -7
  446. package/node_modules/handlebars/dist/cjs/handlebars/base.js +2 -2
  447. package/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +1 -60
  448. package/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js +64 -4
  449. package/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js +161 -18
  450. package/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +23 -7
  451. package/node_modules/handlebars/dist/cjs/handlebars/compiler/node-types.js +10 -0
  452. package/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js +29 -6
  453. package/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +9 -4
  454. package/node_modules/handlebars/dist/cjs/handlebars/exception.js +8 -4
  455. package/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js +40 -14
  456. package/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js +21 -1
  457. package/node_modules/handlebars/dist/cjs/handlebars/runtime.js +24 -4
  458. package/node_modules/handlebars/dist/cjs/handlebars/utils.js +4 -3
  459. package/node_modules/handlebars/dist/cjs/precompiler.js +14 -6
  460. package/node_modules/handlebars/dist/handlebars.amd.js +401 -130
  461. package/node_modules/handlebars/dist/handlebars.amd.min.js +4 -4
  462. package/node_modules/handlebars/dist/handlebars.js +396 -125
  463. package/node_modules/handlebars/dist/handlebars.min.js +4 -4
  464. package/node_modules/handlebars/dist/handlebars.runtime.amd.js +100 -29
  465. package/node_modules/handlebars/dist/handlebars.runtime.amd.min.js +2 -2
  466. package/node_modules/handlebars/dist/handlebars.runtime.js +94 -23
  467. package/node_modules/handlebars/dist/handlebars.runtime.min.js +2 -2
  468. package/node_modules/handlebars/lib/handlebars/base.js +1 -1
  469. package/node_modules/handlebars/lib/handlebars/compiler/base.js +0 -67
  470. package/node_modules/handlebars/lib/handlebars/compiler/code-gen.js +65 -11
  471. package/node_modules/handlebars/lib/handlebars/compiler/compiler.js +164 -23
  472. package/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js +23 -7
  473. package/node_modules/handlebars/lib/handlebars/compiler/node-types.js +24 -0
  474. package/node_modules/handlebars/lib/handlebars/compiler/visitor.js +29 -5
  475. package/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js +16 -5
  476. package/node_modules/handlebars/lib/handlebars/exception.js +7 -3
  477. package/node_modules/handlebars/lib/handlebars/helpers/each.js +39 -16
  478. package/node_modules/handlebars/lib/handlebars/internal/proto-access.js +22 -0
  479. package/node_modules/handlebars/lib/handlebars/runtime.js +36 -4
  480. package/node_modules/handlebars/lib/handlebars/utils.js +3 -2
  481. package/node_modules/handlebars/lib/precompiler.js +14 -5
  482. package/node_modules/handlebars/package.json +2 -2
  483. package/node_modules/handlebars/release-notes.md +20 -1
  484. package/node_modules/handlebars/types/index.d.ts +8 -0
  485. package/node_modules/hdb/cfg/VERSION +1 -1
  486. package/node_modules/hdb/lib/Client.js +6 -2
  487. package/node_modules/hdb/lib/protocol/ClientInfo.js +28 -15
  488. package/node_modules/hdb/lib/protocol/Connection.js +30 -3
  489. package/node_modules/hdb/lib/protocol/Writer.js +2 -2
  490. package/node_modules/hdb/lib/protocol/common/ConnectOption.js +2 -0
  491. package/node_modules/hdb/lib/protocol/common/ConnectOptionFlagSet1.js +18 -0
  492. package/node_modules/hdb/lib/protocol/common/ConnectOptionType.js +2 -0
  493. package/node_modules/hdb/lib/protocol/common/Constants.js +1 -0
  494. package/node_modules/hdb/lib/protocol/common/MessageType.js +3 -2
  495. package/node_modules/hdb/lib/protocol/common/PartKind.js +2 -1
  496. package/node_modules/hdb/lib/protocol/common/index.js +1 -0
  497. package/node_modules/hdb/lib/protocol/data/TextList.js +25 -17
  498. package/node_modules/hdb/lib/protocol/data/index.js +1 -0
  499. package/node_modules/hdb/lib/protocol/part/ConnectOptions.js +7 -0
  500. package/node_modules/hdb/lib/protocol/request/index.js +7 -0
  501. package/node_modules/hdb/package.json +1 -2
  502. package/node_modules/livereload-js/.github/workflows/main.yml +4 -4
  503. package/node_modules/livereload-js/README.md +3 -3
  504. package/node_modules/livereload-js/dist/livereload.js +839 -2742
  505. package/node_modules/livereload-js/dist/livereload.min.js +1 -1
  506. package/node_modules/livereload-js/package.json +11 -11
  507. package/node_modules/minipass/LICENSE.md +55 -0
  508. package/node_modules/minipass/README.md +825 -0
  509. package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
  510. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  511. package/node_modules/minipass/dist/commonjs/index.js +1038 -0
  512. package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  513. package/node_modules/minipass/dist/commonjs/package.json +3 -0
  514. package/node_modules/minipass/dist/esm/index.d.ts +545 -0
  515. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  516. package/node_modules/minipass/dist/esm/index.js +1020 -0
  517. package/node_modules/minipass/dist/esm/index.js.map +1 -0
  518. package/node_modules/minipass/dist/esm/package.json +3 -0
  519. package/node_modules/minipass/package.json +77 -0
  520. package/node_modules/minizlib/LICENSE +26 -0
  521. package/node_modules/minizlib/README.md +64 -0
  522. package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
  523. package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
  524. package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  525. package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
  526. package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
  527. package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
  528. package/node_modules/minizlib/dist/commonjs/index.js +416 -0
  529. package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
  530. package/node_modules/minizlib/dist/commonjs/package.json +3 -0
  531. package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
  532. package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
  533. package/node_modules/minizlib/dist/esm/constants.js +117 -0
  534. package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
  535. package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
  536. package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
  537. package/node_modules/minizlib/dist/esm/index.js +363 -0
  538. package/node_modules/minizlib/dist/esm/index.js.map +1 -0
  539. package/node_modules/minizlib/dist/esm/package.json +3 -0
  540. package/node_modules/minizlib/package.json +80 -0
  541. package/node_modules/qs/.github/THREAT_MODEL.md +4 -2
  542. package/node_modules/qs/CHANGELOG.md +38 -14
  543. package/node_modules/qs/README.md +31 -3
  544. package/node_modules/qs/dist/qs.js +20 -20
  545. package/node_modules/qs/lib/parse.js +94 -4
  546. package/node_modules/qs/lib/stringify.js +4 -4
  547. package/node_modules/qs/lib/utils.js +130 -6
  548. package/node_modules/qs/package.json +4 -4
  549. package/node_modules/qs/test/parse.js +174 -0
  550. package/node_modules/qs/test/stringify.js +263 -33
  551. package/node_modules/qs/test/utils.js +184 -0
  552. package/node_modules/tar/LICENSE.md +55 -0
  553. package/node_modules/tar/README.md +1233 -0
  554. package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
  555. package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
  556. package/node_modules/tar/dist/commonjs/create.js +82 -0
  557. package/node_modules/tar/dist/commonjs/create.js.map +1 -0
  558. package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
  559. package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
  560. package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  561. package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
  562. package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
  563. package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
  564. package/node_modules/tar/dist/commonjs/extract.js +88 -0
  565. package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
  566. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
  567. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
  568. package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  569. package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
  570. package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
  571. package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
  572. package/node_modules/tar/dist/commonjs/header.js +348 -0
  573. package/node_modules/tar/dist/commonjs/header.js.map +1 -0
  574. package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
  575. package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
  576. package/node_modules/tar/dist/commonjs/index.js +64 -0
  577. package/node_modules/tar/dist/commonjs/index.js.map +1 -0
  578. package/node_modules/tar/dist/commonjs/index.min.js +4 -0
  579. package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
  580. package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
  581. package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
  582. package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  583. package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
  584. package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
  585. package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
  586. package/node_modules/tar/dist/commonjs/list.js +153 -0
  587. package/node_modules/tar/dist/commonjs/list.js.map +1 -0
  588. package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
  589. package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
  590. package/node_modules/tar/dist/commonjs/make-command.js +52 -0
  591. package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
  592. package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
  593. package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
  594. package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  595. package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
  596. package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
  597. package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
  598. package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  599. package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
  600. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
  601. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
  602. package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  603. package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
  604. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
  605. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
  606. package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  607. package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
  608. package/node_modules/tar/dist/commonjs/options.d.ts +604 -0
  609. package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
  610. package/node_modules/tar/dist/commonjs/options.js +66 -0
  611. package/node_modules/tar/dist/commonjs/options.js.map +1 -0
  612. package/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
  613. package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
  614. package/node_modules/tar/dist/commonjs/pack.js +544 -0
  615. package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
  616. package/node_modules/tar/dist/commonjs/package.json +3 -0
  617. package/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
  618. package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
  619. package/node_modules/tar/dist/commonjs/parse.js +655 -0
  620. package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
  621. package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
  622. package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
  623. package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  624. package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
  625. package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
  626. package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
  627. package/node_modules/tar/dist/commonjs/pax.js +182 -0
  628. package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
  629. package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
  630. package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
  631. package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  632. package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
  633. package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
  634. package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
  635. package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  636. package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
  637. package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
  638. package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
  639. package/node_modules/tar/dist/commonjs/replace.js +227 -0
  640. package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
  641. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
  642. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
  643. package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  644. package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
  645. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
  646. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
  647. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  648. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
  649. package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
  650. package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
  651. package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  652. package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
  653. package/node_modules/tar/dist/commonjs/types.d.ts +16 -0
  654. package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
  655. package/node_modules/tar/dist/commonjs/types.js +70 -0
  656. package/node_modules/tar/dist/commonjs/types.js.map +1 -0
  657. package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
  658. package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
  659. package/node_modules/tar/dist/commonjs/unpack.js +932 -0
  660. package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
  661. package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
  662. package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
  663. package/node_modules/tar/dist/commonjs/update.js +33 -0
  664. package/node_modules/tar/dist/commonjs/update.js.map +1 -0
  665. package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
  666. package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
  667. package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  668. package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
  669. package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
  670. package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
  671. package/node_modules/tar/dist/commonjs/winchars.js +14 -0
  672. package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
  673. package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
  674. package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
  675. package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  676. package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
  677. package/node_modules/tar/dist/esm/create.d.ts +3 -0
  678. package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
  679. package/node_modules/tar/dist/esm/create.js +76 -0
  680. package/node_modules/tar/dist/esm/create.js.map +1 -0
  681. package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
  682. package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
  683. package/node_modules/tar/dist/esm/cwd-error.js +14 -0
  684. package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
  685. package/node_modules/tar/dist/esm/extract.d.ts +3 -0
  686. package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
  687. package/node_modules/tar/dist/esm/extract.js +49 -0
  688. package/node_modules/tar/dist/esm/extract.js.map +1 -0
  689. package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
  690. package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
  691. package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  692. package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
  693. package/node_modules/tar/dist/esm/header.d.ts +53 -0
  694. package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
  695. package/node_modules/tar/dist/esm/header.js +311 -0
  696. package/node_modules/tar/dist/esm/header.js.map +1 -0
  697. package/node_modules/tar/dist/esm/index.d.ts +20 -0
  698. package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
  699. package/node_modules/tar/dist/esm/index.js +20 -0
  700. package/node_modules/tar/dist/esm/index.js.map +1 -0
  701. package/node_modules/tar/dist/esm/index.min.js +4 -0
  702. package/node_modules/tar/dist/esm/index.min.js.map +7 -0
  703. package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
  704. package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
  705. package/node_modules/tar/dist/esm/large-numbers.js +94 -0
  706. package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
  707. package/node_modules/tar/dist/esm/list.d.ts +7 -0
  708. package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
  709. package/node_modules/tar/dist/esm/list.js +113 -0
  710. package/node_modules/tar/dist/esm/list.js.map +1 -0
  711. package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
  712. package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
  713. package/node_modules/tar/dist/esm/make-command.js +48 -0
  714. package/node_modules/tar/dist/esm/make-command.js.map +1 -0
  715. package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
  716. package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
  717. package/node_modules/tar/dist/esm/mkdir.js +179 -0
  718. package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
  719. package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
  720. package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
  721. package/node_modules/tar/dist/esm/mode-fix.js +25 -0
  722. package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
  723. package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
  724. package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
  725. package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  726. package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
  727. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
  728. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
  729. package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  730. package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
  731. package/node_modules/tar/dist/esm/options.d.ts +604 -0
  732. package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
  733. package/node_modules/tar/dist/esm/options.js +54 -0
  734. package/node_modules/tar/dist/esm/options.js.map +1 -0
  735. package/node_modules/tar/dist/esm/pack.d.ts +105 -0
  736. package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
  737. package/node_modules/tar/dist/esm/pack.js +502 -0
  738. package/node_modules/tar/dist/esm/pack.js.map +1 -0
  739. package/node_modules/tar/dist/esm/package.json +3 -0
  740. package/node_modules/tar/dist/esm/parse.d.ts +92 -0
  741. package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
  742. package/node_modules/tar/dist/esm/parse.js +651 -0
  743. package/node_modules/tar/dist/esm/parse.js.map +1 -0
  744. package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
  745. package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
  746. package/node_modules/tar/dist/esm/path-reservations.js +166 -0
  747. package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
  748. package/node_modules/tar/dist/esm/pax.d.ts +26 -0
  749. package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
  750. package/node_modules/tar/dist/esm/pax.js +178 -0
  751. package/node_modules/tar/dist/esm/pax.js.map +1 -0
  752. package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
  753. package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
  754. package/node_modules/tar/dist/esm/process-umask.js +3 -0
  755. package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
  756. package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
  757. package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
  758. package/node_modules/tar/dist/esm/read-entry.js +132 -0
  759. package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
  760. package/node_modules/tar/dist/esm/replace.d.ts +2 -0
  761. package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
  762. package/node_modules/tar/dist/esm/replace.js +221 -0
  763. package/node_modules/tar/dist/esm/replace.js.map +1 -0
  764. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
  765. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
  766. package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  767. package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
  768. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
  769. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
  770. package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  771. package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
  772. package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
  773. package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
  774. package/node_modules/tar/dist/esm/symlink-error.js +15 -0
  775. package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
  776. package/node_modules/tar/dist/esm/types.d.ts +16 -0
  777. package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
  778. package/node_modules/tar/dist/esm/types.js +65 -0
  779. package/node_modules/tar/dist/esm/types.js.map +1 -0
  780. package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
  781. package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
  782. package/node_modules/tar/dist/esm/unpack.js +891 -0
  783. package/node_modules/tar/dist/esm/unpack.js.map +1 -0
  784. package/node_modules/tar/dist/esm/update.d.ts +2 -0
  785. package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
  786. package/node_modules/tar/dist/esm/update.js +30 -0
  787. package/node_modules/tar/dist/esm/update.js.map +1 -0
  788. package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
  789. package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
  790. package/node_modules/tar/dist/esm/warn-method.js +27 -0
  791. package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
  792. package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
  793. package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
  794. package/node_modules/tar/dist/esm/winchars.js +9 -0
  795. package/node_modules/tar/dist/esm/winchars.js.map +1 -0
  796. package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
  797. package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
  798. package/node_modules/tar/dist/esm/write-entry.js +656 -0
  799. package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
  800. package/node_modules/tar/package.json +298 -0
  801. package/node_modules/ws/lib/websocket.js +17 -3
  802. package/node_modules/ws/package.json +1 -1
  803. package/node_modules/yallist/LICENSE.md +63 -0
  804. package/node_modules/yallist/README.md +205 -0
  805. package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
  806. package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
  807. package/node_modules/yallist/dist/commonjs/index.js +384 -0
  808. package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
  809. package/node_modules/yallist/dist/commonjs/package.json +3 -0
  810. package/node_modules/yallist/dist/esm/index.d.ts +39 -0
  811. package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
  812. package/node_modules/yallist/dist/esm/index.js +379 -0
  813. package/node_modules/yallist/dist/esm/index.js.map +1 -0
  814. package/node_modules/yallist/dist/esm/package.json +3 -0
  815. package/node_modules/yallist/package.json +68 -0
  816. package/package.json +7 -1
  817. package/bin/completion/templates/cds-tmpl.fish +0 -65
  818. package/bin/completion/templates/cds-tmpl.ps1 +0 -217
  819. package/bin/completion/templates/cds-tmpl.sh +0 -93
  820. package/bin/completion/templates/cds-tmpl.zsh +0 -74
  821. package/node_modules/@cap-js/db-service/lib/recursion-guard.js +0 -40
  822. package/node_modules/@sap/cds/lib/env/cds-requires.js +0 -327
  823. package/node_modules/@sap/cds-mtxs/srv/bootstrap.cds +0 -2
  824. package/node_modules/@sap/cds-mtxs/srv/bootstrap.js +0 -33
  825. package/node_modules/body-parser/node_modules/content-type/LICENSE +0 -22
  826. package/node_modules/body-parser/node_modules/content-type/README.md +0 -71
  827. package/node_modules/body-parser/node_modules/content-type/package.json +0 -52
  828. package/node_modules/content-disposition/index.js +0 -536
  829. package/node_modules/content-type/HISTORY.md +0 -29
  830. package/node_modules/content-type/index.js +0 -225
  831. package/node_modules/negotiator/node_modules/content-type/LICENSE +0 -22
  832. package/node_modules/negotiator/node_modules/content-type/README.md +0 -71
  833. package/node_modules/negotiator/node_modules/content-type/dist/index.d.ts +0 -46
  834. package/node_modules/negotiator/node_modules/content-type/dist/index.js +0 -176
  835. package/node_modules/negotiator/node_modules/content-type/dist/index.js.map +0 -1
  836. package/node_modules/negotiator/node_modules/content-type/package.json +0 -52
  837. package/node_modules/type-is/node_modules/content-type/LICENSE +0 -22
  838. package/node_modules/type-is/node_modules/content-type/README.md +0 -71
  839. package/node_modules/type-is/node_modules/content-type/dist/index.d.ts +0 -46
  840. package/node_modules/type-is/node_modules/content-type/dist/index.js +0 -176
  841. package/node_modules/type-is/node_modules/content-type/dist/index.js.map +0 -1
  842. package/node_modules/type-is/node_modules/content-type/package.json +0 -52
  843. /package/lib/init/template/react/files/{vite.config.js.hbs → vite.config.{{extension}}.hbs} +0 -0
  844. /package/lib/init/template/vue/files/src/{main.js → main.{{extension}}.hbs} +0 -0
  845. /package/lib/init/template/vue/files/{vite.config.js.hbs → vite.config.{{extension}}.hbs} +0 -0
  846. /package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/utilities.js +0 -0
  847. /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.d.ts +0 -0
  848. /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.js +0 -0
  849. /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 allow name resolving is resolveUncheckedPath(),
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. Transform argument `sources` = dictionary of
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 entities with includes
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: { id: using, location, $inferred: 'as' },
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: { id, location: last.location, $inferred: 'as' },
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 = { file: '' }; // stupid required 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 ("init"), top-level & main -----------------------------------------
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 = { kind: 'namespace', name: decl, location: decl.location };
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
- initMembers( art );
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
- initMembers( art );
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
- initMembers( ext );
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 = { kind: 'namespace', name: { id: prefix, location }, location };
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 = { location: query.location, id: main.$queries.length + 1 };
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 = { $inferred: 'as', id, location: last.location };
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 = { id, location: table.location, $inferred: '$internal' };
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 }; // param comes later
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
- initMembers( query );
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
- // TODO: do some initMembers() ? If people had annotation
1064
- // assignments on the mixin... (also for future mixin definitions
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
- initMembers( col ); // with #13933, TODO: only for enums
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 = { id: last.id || '', location: last.location, $inferred: 'as' };
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
- * Initialise the inline aspect that appears as the `targetAspect` of a managed
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
- * @param {XSN.Element} parent The composition element that owns the inline aspect
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|XSN.Element|XSN.Query} parent Enclosing node
1344
- * @param {XSN.Element} elem
1345
- * @param {string} name Relative member name (empty string `''` for RETURNS)
1354
+ * @param {XSN.Artifact} art
1346
1355
  */
1347
- // TODO: combine with initMembers()
1348
- function initArtifact( parent, elem, name ) {
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 (!elem._block)
1361
- setLink( elem, '_block', parent._block );
1359
+ if (art.kind !== 'type')
1360
+ return; // TODO(v6): Also for event
1362
1361
 
1363
- // don't dump with `entity T {}; extend T with { extend e {}; e {}; e {} };`:
1364
- setMemberParent( elem, name, parent );
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
- // for a correct home path, setMemberParent needed to be called
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 (!elem.value || elem.kind !== 'element' || elem.$syntax === 'or-enum')
1373
- return; // not an element with value
1374
- // remark: $syntax: 'or-enum' is set in CDL+CSN parser for potential enums
1375
- // -> it's a calculated element
1376
- if (!elem.type && elem.value.type) { // top-level CAST( expr AS type )
1377
- if (!elem.target)
1378
- elem.type = { ...elem.value.type, $inferred: 'cast' };
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
- // Special case (hack) for calculated elements that use composition+filter:
1385
- // See "Notes on `$enclosed`" in `ExposingAssocWithFilter.md` for details.
1386
- // TODO: hm, only for inferred type - then just do not infer it in that case
1387
- if (elem.target && elem.value.path?.[elem.value.path.length - 1]?.where) {
1388
- delete elem.type;
1389
- delete elem.on;
1390
- delete elem.target;
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;