@sap/cds-dk 10.1.2 → 10.2.1

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 (898) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/bin/add.js +7 -2
  3. package/bin/bind.js +5 -6
  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 +28 -19
  9. package/bin/completion/scripts/cds.ps1 +30 -29
  10. package/bin/completion/scripts/cds.sh +26 -23
  11. package/bin/completion/scripts/cds.zsh +26 -23
  12. package/bin/debug.js +3 -3
  13. package/bin/deploy/index.js +3 -3
  14. package/bin/deploy/to-hana/hana.js +6 -5
  15. package/bin/deploy/to-hana/hdiDeployUtil.js +25 -14
  16. package/bin/env.js +0 -1
  17. package/bin/eval.js +9 -5
  18. package/bin/export.js +6 -4
  19. package/bin/help/export.md +28 -4
  20. package/bin/import.js +6 -5
  21. package/bin/inspect.js +0 -1
  22. package/bin/login.js +28 -3
  23. package/bin/repl.js +82 -26
  24. package/bin/run.js +6 -7
  25. package/bin/serve.js +6 -7
  26. package/bin/up.js +10 -5
  27. package/bin/upgrade/steps/install.js +6 -6
  28. package/bin/version.js +1 -1
  29. package/bin/watch/index.js +1 -0
  30. package/bin/watch/vite-watch.js +12 -6
  31. package/lib/bind/shared.js +1 -1
  32. package/lib/build/index.js +11 -7
  33. package/lib/build/plugins/featureToggles.js +2 -2
  34. package/lib/build/plugins/hana/index.js +1 -1
  35. package/lib/build/plugins/helm/files/subcharts/web-application/Chart.yaml +1 -1
  36. package/lib/build/plugins/helm/files/subcharts/web-application/templates/_helpers.tpl +7 -0
  37. package/lib/build/plugins/helm/files/subcharts/web-application/templates/api-rule.yaml +1 -0
  38. package/lib/build/plugins/helm/files/subcharts/web-application/templates/service-binding.yaml +4 -4
  39. package/lib/build/plugins/helm/files/subcharts/web-application/values.schema.json +13 -0
  40. package/lib/build/plugins/helm/files/subcharts/web-application/values.yaml +7 -1
  41. package/lib/build/plugins/java/index.js +5 -1
  42. package/lib/build/plugins/nodejs/index.js +5 -1
  43. package/lib/build/util.js +4 -5
  44. package/lib/env/schemas/cds-rc.js +5 -0
  45. package/lib/import/importapi.js +2 -3
  46. package/lib/init/constants.js +1 -1
  47. package/lib/init/index.js +9 -3
  48. package/lib/init/plugin.js +1 -1
  49. package/lib/init/projectReader.js +16 -12
  50. package/lib/init/registries/mta.js +0 -6
  51. package/lib/init/template/ai/index.js +4 -4
  52. package/lib/init/template/ams/files/extensionDeveloper.dcl +6 -0
  53. package/lib/init/template/ams/files/mta.yaml.hbs +6 -0
  54. package/lib/init/template/ams/files/sidecar.package.json.hbs +5 -0
  55. package/lib/init/template/ams/index.js +42 -40
  56. package/lib/init/template/app-frontend/files/mta.yaml.hbs +2 -0
  57. package/lib/init/template/app-frontend/files/ui5.yaml.hbs +0 -4
  58. package/lib/init/template/app-frontend/index.js +29 -24
  59. package/lib/init/template/application-logging/index.js +6 -6
  60. package/lib/init/template/approuter/files/values.yaml.hbs +0 -9
  61. package/lib/init/template/approuter/index.js +19 -13
  62. package/lib/init/template/attachments/index.js +3 -3
  63. package/lib/init/template/audit-logging/index.js +4 -4
  64. package/lib/init/template/cloud-logging/index.js +12 -6
  65. package/lib/init/template/completion/completionSetup.js +19 -6
  66. package/lib/init/template/connectivity/index.js +3 -3
  67. package/lib/init/template/data/as-csv.js +7 -4
  68. package/lib/init/template/data/as-json.js +77 -20
  69. package/lib/init/template/destination/index.js +12 -9
  70. package/lib/init/template/dynatrace/index.js +5 -5
  71. package/lib/init/template/enterprise-messaging/index.js +6 -6
  72. package/lib/init/template/enterprise-messaging-shared/index.js +4 -4
  73. package/lib/init/template/extensibility/index.js +2 -2
  74. package/lib/init/template/extension/index.js +26 -0
  75. package/lib/init/template/github-actions/index.js +3 -3
  76. package/lib/init/template/hana/files/package.json.hbs +3 -2
  77. package/lib/init/template/hana/index.js +5 -5
  78. package/lib/init/template/hana-serverless/index.js +3 -3
  79. package/lib/init/template/html5-repo/files/mta.yaml.hbs +2 -0
  80. package/lib/init/template/html5-repo/files/ui5.yaml.hbs +0 -4
  81. package/lib/init/template/html5-repo/index.js +80 -40
  82. package/lib/init/template/http/index.js +1 -1
  83. package/lib/init/template/ias/index.js +7 -7
  84. package/lib/init/template/initial/files/.gitignore.hbs +1 -0
  85. package/lib/init/template/kafka/index.js +3 -3
  86. package/lib/init/template/kyma/index.js +7 -9
  87. package/lib/init/template/malware-scanner/index.js +3 -3
  88. package/lib/init/template/mta/index.js +6 -3
  89. package/lib/init/template/multitenancy/index.js +6 -7
  90. package/lib/init/template/notifications/index.js +2 -2
  91. package/lib/init/template/portal/index.js +16 -10
  92. package/lib/init/template/postgres/index.js +5 -5
  93. package/lib/init/template/react/files/index.html.hbs +1 -1
  94. package/lib/init/template/react/files/package.json.hbs +3 -2
  95. package/lib/init/template/react/files/src/{App.jsx.hbs → App.{{jsxExtension}}.hbs} +8 -2
  96. package/lib/init/template/react/files/src/{main.jsx → main.{{jsxExtension}}.hbs} +2 -2
  97. package/lib/init/template/react/files/{vite.config.js.hbs → vite.config.{{extension}}.hbs} +2 -3
  98. package/lib/init/template/react/index.js +22 -5
  99. package/lib/init/template/react/typescript/src/vite-env.d.ts +1 -0
  100. package/lib/init/template/react/typescript/tsconfig.json.hbs +16 -0
  101. package/lib/init/template/redis/index.js +2 -2
  102. package/lib/init/template/sample/files/app/index.html.hbs +18 -0
  103. package/lib/init/template/sample/index.js +1 -0
  104. package/lib/init/template/side-by-side-extensibility/index.js +6 -3
  105. package/lib/init/template/typescript/files/tsconfig.json +3 -1
  106. package/lib/init/template/vue/files/index.html.hbs +1 -1
  107. package/lib/init/template/vue/files/package.json.hbs +2 -1
  108. package/lib/init/template/vue/files/src/App.vue.hbs +8 -2
  109. package/lib/init/template/vue/files/{vite.config.js.hbs → vite.config.{{extension}}.hbs} +2 -3
  110. package/lib/init/template/vue/index.js +19 -5
  111. package/lib/init/template/vue/typescript/tsconfig.json +11 -0
  112. package/lib/init/template/workzone-standard/files/mta.yaml.hbs +2 -2
  113. package/lib/init/template/workzone-standard/index.js +29 -27
  114. package/lib/init/template/xsuaa/files/mta.yaml.hbs +1 -1
  115. package/lib/init/template/xsuaa/files/values.yaml.hbs +1 -1
  116. package/lib/init/template/xsuaa/index.js +34 -22
  117. package/lib/mtx/auth_manager.js +8 -2
  118. package/lib/mtx/browser_login.js +181 -0
  119. package/lib/mtx/params.js +6 -0
  120. package/lib/mtx/push.js +7 -1
  121. package/lib/mtx/settings_manager.js +29 -4
  122. package/lib/util/cf.js +44 -8
  123. package/lib/util/fs.js +2 -2
  124. package/node_modules/@cap-js/asyncapi/README.md +4 -14
  125. package/node_modules/@cap-js/asyncapi/cds-plugin.js +12 -0
  126. package/node_modules/@cap-js/asyncapi/index.js +3 -2
  127. package/node_modules/@cap-js/asyncapi/lib/compile/components/messages/index.js +4 -2
  128. package/node_modules/@cap-js/asyncapi/lib/compile/components/schemas/definition.js +11 -1
  129. package/node_modules/@cap-js/asyncapi/lib/compile/components/schemas/utils.js +16 -0
  130. package/node_modules/@cap-js/asyncapi/lib/compile/utils.js +4 -3
  131. package/node_modules/@cap-js/asyncapi/lib/import/importAsyncAPI.js +34 -0
  132. package/node_modules/@cap-js/asyncapi/lib/import/index.js +18 -0
  133. package/node_modules/@cap-js/asyncapi/lib/import/message.js +9 -0
  134. package/node_modules/@cap-js/asyncapi/lib/import/parserContext.js +368 -0
  135. package/node_modules/@cap-js/asyncapi/lib/import/utils.js +85 -0
  136. package/node_modules/@cap-js/asyncapi/package.json +89 -1
  137. package/node_modules/@cap-js/db-service/CHANGELOG.md +10 -0
  138. package/node_modules/@cap-js/db-service/lib/cqn2pql.js +4 -0
  139. package/node_modules/@cap-js/db-service/lib/cqn2sql.js +3 -0
  140. package/node_modules/@cap-js/db-service/lib/cqn4sql.js +8 -23
  141. package/node_modules/@cap-js/db-service/lib/infer/index.js +20 -27
  142. package/node_modules/@cap-js/db-service/package.json +1 -1
  143. package/node_modules/@cap-js/openapi/cds-plugin.js +12 -0
  144. package/node_modules/@cap-js/openapi/index.js +3 -1
  145. package/node_modules/@cap-js/openapi/lib/compile/csdl2openapi.js +652 -413
  146. package/node_modules/@cap-js/openapi/lib/compile/diagram.js +16 -13
  147. package/node_modules/@cap-js/openapi/lib/compile/index.js +10 -7
  148. package/node_modules/@cap-js/openapi/lib/compile/property-util.js +51 -0
  149. package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/importOpenAPI.js +12 -9
  150. package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/index.js +4 -3
  151. package/node_modules/@cap-js/openapi/package.json +71 -3
  152. package/node_modules/@cap-js/sqlite/CHANGELOG.md +9 -0
  153. package/node_modules/@cap-js/sqlite/package.json +3 -3
  154. package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  155. package/node_modules/@isaacs/fs-minipass/README.md +71 -0
  156. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
  157. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
  158. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  159. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
  160. package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  161. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
  162. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
  163. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  164. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
  165. package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  166. package/node_modules/@isaacs/fs-minipass/package.json +72 -0
  167. package/node_modules/@sap/cds/CHANGELOG.md +62 -1
  168. package/node_modules/@sap/cds/_i18n/messages_ar.properties +1 -0
  169. package/node_modules/@sap/cds/_i18n/messages_bg.properties +1 -0
  170. package/node_modules/@sap/cds/_i18n/messages_cs.properties +1 -0
  171. package/node_modules/@sap/cds/_i18n/messages_da.properties +1 -0
  172. package/node_modules/@sap/cds/_i18n/messages_de.properties +1 -0
  173. package/node_modules/@sap/cds/_i18n/messages_el.properties +1 -0
  174. package/node_modules/@sap/cds/_i18n/messages_en.properties +1 -0
  175. package/node_modules/@sap/cds/_i18n/messages_es.properties +1 -0
  176. package/node_modules/@sap/cds/_i18n/messages_es_MX.properties +1 -0
  177. package/node_modules/@sap/cds/_i18n/messages_fi.properties +1 -0
  178. package/node_modules/@sap/cds/_i18n/messages_fr.properties +1 -0
  179. package/node_modules/@sap/cds/_i18n/messages_he.properties +1 -0
  180. package/node_modules/@sap/cds/_i18n/messages_hr.properties +1 -0
  181. package/node_modules/@sap/cds/_i18n/messages_hu.properties +1 -0
  182. package/node_modules/@sap/cds/_i18n/messages_it.properties +1 -0
  183. package/node_modules/@sap/cds/_i18n/messages_ja.properties +1 -0
  184. package/node_modules/@sap/cds/_i18n/messages_kk.properties +1 -0
  185. package/node_modules/@sap/cds/_i18n/messages_ko.properties +1 -0
  186. package/node_modules/@sap/cds/_i18n/messages_ms.properties +1 -0
  187. package/node_modules/@sap/cds/_i18n/messages_nl.properties +1 -0
  188. package/node_modules/@sap/cds/_i18n/messages_no.properties +1 -0
  189. package/node_modules/@sap/cds/_i18n/messages_pl.properties +1 -0
  190. package/node_modules/@sap/cds/_i18n/messages_pt.properties +1 -0
  191. package/node_modules/@sap/cds/_i18n/messages_ro.properties +1 -0
  192. package/node_modules/@sap/cds/_i18n/messages_ru.properties +1 -0
  193. package/node_modules/@sap/cds/_i18n/messages_sh.properties +1 -0
  194. package/node_modules/@sap/cds/_i18n/messages_sk.properties +1 -0
  195. package/node_modules/@sap/cds/_i18n/messages_sl.properties +1 -0
  196. package/node_modules/@sap/cds/_i18n/messages_sv.properties +1 -0
  197. package/node_modules/@sap/cds/_i18n/messages_th.properties +1 -0
  198. package/node_modules/@sap/cds/_i18n/messages_tr.properties +1 -0
  199. package/node_modules/@sap/cds/_i18n/messages_uk.properties +1 -0
  200. package/node_modules/@sap/cds/_i18n/messages_vi.properties +1 -0
  201. package/node_modules/@sap/cds/_i18n/messages_zh_CN.properties +1 -0
  202. package/node_modules/@sap/cds/_i18n/messages_zh_TW.properties +1 -0
  203. package/node_modules/@sap/cds/app/index-client.js +164 -0
  204. package/node_modules/@sap/cds/app/index.css +598 -87
  205. package/node_modules/@sap/cds/app/index.html +54 -30
  206. package/node_modules/@sap/cds/app/index.js +311 -67
  207. package/node_modules/@sap/cds/app/table.html +226 -0
  208. package/node_modules/@sap/cds/app/table.js +302 -0
  209. package/node_modules/@sap/cds/bin/serve.js +3 -2
  210. package/node_modules/@sap/cds/eslint.config.mjs +2 -0
  211. package/node_modules/@sap/cds/lib/compile/cdsc.js +7 -0
  212. package/node_modules/@sap/cds/lib/compile/for/embeddings.js +27 -0
  213. package/node_modules/@sap/cds/lib/compile/load.js +2 -2
  214. package/node_modules/@sap/cds/lib/compile/minify.js +17 -4
  215. package/node_modules/@sap/cds/lib/compile/parse.js +3 -0
  216. package/node_modules/@sap/cds/lib/compile/resolve.js +16 -14
  217. package/node_modules/@sap/cds/lib/core/classes.js +1 -0
  218. package/node_modules/@sap/cds/lib/dbs/cds-deploy.js +4 -5
  219. package/node_modules/@sap/cds/lib/env/cds-env.js +132 -70
  220. package/node_modules/@sap/cds/lib/env/cds-requires/auth-strategies.js +62 -0
  221. package/node_modules/@sap/cds/lib/env/cds-requires/databases.js +49 -0
  222. package/node_modules/@sap/cds/lib/env/cds-requires/embeddings.js +8 -0
  223. package/node_modules/@sap/cds/lib/env/cds-requires/index.js +27 -0
  224. package/node_modules/@sap/cds/lib/env/cds-requires/messaging.js +82 -0
  225. package/node_modules/@sap/cds/lib/env/cds-requires/platform.js +23 -0
  226. package/node_modules/@sap/cds/lib/env/cds-requires/queues.js +34 -0
  227. package/node_modules/@sap/cds/lib/env/cds-requires/services.js +32 -0
  228. package/node_modules/@sap/cds/lib/env/defaults.js +9 -1
  229. package/node_modules/@sap/cds/lib/env/schemas/cds-package.js +0 -2
  230. package/node_modules/@sap/cds/lib/env/schemas/cds-rc.js +3 -3
  231. package/node_modules/@sap/cds/lib/env/schemas/index.js +4 -4
  232. package/node_modules/@sap/cds/lib/i18n/files.js +4 -4
  233. package/node_modules/@sap/cds/lib/i18n/locale.js +1 -1
  234. package/node_modules/@sap/cds/lib/index.js +9 -9
  235. package/node_modules/@sap/cds/lib/log/cds-log.js +3 -3
  236. package/node_modules/@sap/cds/lib/ql/SELECT.js +2 -0
  237. package/node_modules/@sap/cds/lib/ql/UPDATE.js +1 -1
  238. package/node_modules/@sap/cds/lib/ql/cds.ql-Query.js +4 -1
  239. package/node_modules/@sap/cds/lib/ql/core/@types/cqn.d.ts +146 -0
  240. package/node_modules/@sap/cds/lib/ql/core/@types/exprs.d.ts +51 -0
  241. package/node_modules/@sap/cds/lib/ql/core/@types/index.d.ts +29 -0
  242. package/node_modules/@sap/cds/lib/ql/core/@types/package.json +7 -0
  243. package/node_modules/@sap/cds/lib/ql/core/@types/ql/delete.d.ts +8 -0
  244. package/node_modules/@sap/cds/lib/ql/core/@types/ql/insert.d.ts +19 -0
  245. package/node_modules/@sap/cds/lib/ql/core/@types/ql/select.d.ts +24 -0
  246. package/node_modules/@sap/cds/lib/ql/core/@types/ql/update.d.ts +10 -0
  247. package/node_modules/@sap/cds/lib/ql/core/@types/query.d.ts +18 -0
  248. package/node_modules/@sap/cds/lib/ql/core/cql/parser.min.js +1 -0
  249. package/node_modules/@sap/cds/lib/ql/core/lib/index.js +69 -0
  250. package/node_modules/@sap/cds/lib/ql/core/lib/ql/cache.js +34 -0
  251. package/node_modules/@sap/cds/lib/ql/core/lib/ql/call-action.js +6 -0
  252. package/node_modules/@sap/cds/lib/ql/core/lib/ql/delete.js +8 -0
  253. package/node_modules/@sap/cds/lib/ql/core/lib/ql/insert.js +26 -0
  254. package/node_modules/@sap/cds/lib/ql/core/lib/ql/select.js +22 -0
  255. package/node_modules/@sap/cds/lib/ql/core/lib/ql/update.js +26 -0
  256. package/node_modules/@sap/cds/lib/ql/core/lib/query.js +85 -0
  257. package/node_modules/@sap/cds/lib/ql/core/lib/xl/fluent.js +47 -0
  258. package/node_modules/@sap/cds/lib/ql/core/lib/xl/ttl.js +24 -0
  259. package/node_modules/@sap/cds/lib/ql/core/license +201 -0
  260. package/node_modules/@sap/cds/lib/ql/core/package.json +24 -0
  261. package/node_modules/@sap/cds/lib/ql/core/readme.md +99 -0
  262. package/node_modules/@sap/cds/lib/ql/core/upstream.json +5 -0
  263. package/node_modules/@sap/cds/lib/req/spawn.js +1 -1
  264. package/node_modules/@sap/cds/lib/srv/bindings.js +111 -115
  265. package/node_modules/@sap/cds/lib/srv/cds-connect.js +11 -10
  266. package/node_modules/@sap/cds/lib/srv/cds-serve.js +16 -7
  267. package/node_modules/@sap/cds/lib/srv/cds.Service.js +13 -7
  268. package/node_modules/@sap/cds/lib/srv/factory.js +8 -10
  269. package/node_modules/@sap/cds/lib/srv/middlewares/auth/ias-auth.js +35 -32
  270. package/node_modules/@sap/cds/lib/srv/middlewares/auth/jwt-auth.js +5 -1
  271. package/node_modules/@sap/cds/lib/srv/middlewares/auth/mocked-users.js +1 -1
  272. package/node_modules/@sap/cds/lib/srv/protocols/hcql.js +230 -79
  273. package/node_modules/@sap/cds/lib/srv/protocols/http.js +7 -3
  274. package/node_modules/@sap/cds/lib/srv/protocols/index.js +7 -2
  275. package/node_modules/@sap/cds/lib/srv/srv-dispatch.js +2 -2
  276. package/node_modules/@sap/cds/lib/utils/cds-utils.js +50 -0
  277. package/node_modules/@sap/cds/lib/utils/csv-reader.js +2 -2
  278. package/node_modules/@sap/cds/libx/_runtime/common/generic/assert.js +18 -27
  279. package/node_modules/@sap/cds/libx/_runtime/common/generic/crud.js +1 -1
  280. package/node_modules/@sap/cds/libx/_runtime/common/utils/rewriteAsterisks.js +1 -1
  281. package/node_modules/@sap/cds/libx/_runtime/fiori/lean-draft.js +121 -84
  282. package/node_modules/@sap/cds/libx/_runtime/messaging/common-utils/authorizedRequest.js +24 -1
  283. package/node_modules/@sap/cds/libx/_runtime/messaging/common-utils/connections.js +45 -39
  284. package/node_modules/@sap/cds/libx/_runtime/remote/Service.js +2 -2
  285. package/node_modules/@sap/cds/libx/_runtime/remote/utils/client.js +3 -2
  286. package/node_modules/@sap/cds/libx/_runtime/remote/utils/query.js +11 -6
  287. package/node_modules/@sap/cds/libx/odata/ODataAdapter.js +1 -1
  288. package/node_modules/@sap/cds/libx/odata/middleware/create.js +4 -0
  289. package/node_modules/@sap/cds/libx/odata/middleware/metadata.js +1 -1
  290. package/node_modules/@sap/cds/libx/odata/middleware/operation.js +3 -0
  291. package/node_modules/@sap/cds/libx/odata/middleware/parse.js +9 -0
  292. package/node_modules/@sap/cds/libx/odata/middleware/read.js +6 -0
  293. package/node_modules/@sap/cds/libx/odata/middleware/update.js +5 -1
  294. package/node_modules/@sap/cds/libx/odata/parse/afterburner.js +3 -3
  295. package/node_modules/@sap/cds/libx/odata/parse/multipartToJson.js +1 -1
  296. package/node_modules/@sap/cds/libx/odata/utils/ieee754.js +20 -0
  297. package/node_modules/@sap/cds/libx/queue/TaskRunner.js +22 -5
  298. package/node_modules/@sap/cds/libx/queue/api.js +1 -1
  299. package/node_modules/@sap/cds/libx/queue/index.js +3 -1
  300. package/node_modules/@sap/cds/libx/queue/processing.js +5 -0
  301. package/node_modules/@sap/cds/libx/rest/RestAdapter.js +1 -0
  302. package/node_modules/@sap/cds/package.json +2 -2
  303. package/node_modules/@sap/cds/server.js +1 -0
  304. package/node_modules/@sap/cds/srv/ucl-service.cds +1 -0
  305. package/node_modules/@sap/cds-compiler/CHANGELOG.md +83 -0
  306. package/node_modules/@sap/cds-compiler/bin/cdsse.js +1 -1
  307. package/node_modules/@sap/cds-compiler/doc/EffectiveCSN.md +3314 -0
  308. package/node_modules/@sap/cds-compiler/lib/api/main.js +9 -6
  309. package/node_modules/@sap/cds-compiler/lib/api/options.js +3 -3
  310. package/node_modules/@sap/cds-compiler/lib/{model → base}/csnUtils.js +5 -5
  311. package/node_modules/@sap/cds-compiler/lib/base/message-registry.js +54 -6
  312. package/node_modules/@sap/cds-compiler/lib/base/optionProcessor.js +4 -4
  313. package/node_modules/@sap/cds-compiler/lib/{model → base}/sortViews.js +1 -1
  314. package/node_modules/@sap/cds-compiler/lib/checks/assocOutsideService.js +1 -1
  315. package/node_modules/@sap/cds-compiler/lib/checks/checkForTypes.js +1 -1
  316. package/node_modules/@sap/cds-compiler/lib/checks/checkPathsInStoredCalcElement.js +1 -1
  317. package/node_modules/@sap/cds-compiler/lib/checks/elements.js +37 -3
  318. package/node_modules/@sap/cds-compiler/lib/checks/enricher.js +1 -1
  319. package/node_modules/@sap/cds-compiler/lib/checks/existsInForbiddenPlaces.js +1 -1
  320. package/node_modules/@sap/cds-compiler/lib/checks/hasPersistedElements.js +1 -1
  321. package/node_modules/@sap/cds-compiler/lib/checks/manyExpand.js +1 -1
  322. package/node_modules/@sap/cds-compiler/lib/checks/manyNavigations.js +1 -1
  323. package/node_modules/@sap/cds-compiler/lib/checks/onConditions.js +1 -1
  324. package/node_modules/@sap/cds-compiler/lib/checks/parameters.js +1 -1
  325. package/node_modules/@sap/cds-compiler/lib/checks/queryNoDbArtifacts.js +1 -1
  326. package/node_modules/@sap/cds-compiler/lib/checks/selectItems.js +1 -1
  327. package/node_modules/@sap/cds-compiler/lib/checks/structuredAnnoExpressions.js +1 -1
  328. package/node_modules/@sap/cds-compiler/lib/checks/typeParameters.js +1 -1
  329. package/node_modules/@sap/cds-compiler/lib/checks/types.js +1 -1
  330. package/node_modules/@sap/cds-compiler/lib/checks/validator.js +1 -1
  331. package/node_modules/@sap/cds-compiler/lib/compiler/assert-consistency.js +20 -12
  332. package/node_modules/@sap/cds-compiler/lib/compiler/builtins.js +9 -4
  333. package/node_modules/@sap/cds-compiler/lib/compiler/checks.js +50 -0
  334. package/node_modules/@sap/cds-compiler/lib/compiler/define.js +303 -323
  335. package/node_modules/@sap/cds-compiler/lib/compiler/dictionaries.js +5 -0
  336. package/node_modules/@sap/cds-compiler/lib/compiler/extend.js +1015 -1177
  337. package/node_modules/@sap/cds-compiler/lib/compiler/generate.js +55 -42
  338. package/node_modules/@sap/cds-compiler/lib/compiler/populate.js +74 -45
  339. package/node_modules/@sap/cds-compiler/lib/compiler/propagator.js +1 -0
  340. package/node_modules/@sap/cds-compiler/lib/compiler/resolve.js +6 -4
  341. package/node_modules/@sap/cds-compiler/lib/compiler/shared.js +30 -49
  342. package/node_modules/@sap/cds-compiler/lib/compiler/utils.js +32 -18
  343. package/node_modules/@sap/cds-compiler/lib/edm/annotations/edmJson.js +3 -3
  344. package/node_modules/@sap/cds-compiler/lib/edm/annotations/genericTranslation.js +2 -2
  345. package/node_modules/@sap/cds-compiler/lib/edm/annotations/preprocessAnnotations.js +2 -3
  346. package/node_modules/@sap/cds-compiler/lib/edm/csn2edm.js +1 -1
  347. package/node_modules/@sap/cds-compiler/lib/edm/edm.js +6 -7
  348. package/node_modules/@sap/cds-compiler/lib/edm/edmAnnoPreprocessor.js +1 -1
  349. package/node_modules/@sap/cds-compiler/lib/edm/edmInboundChecks.js +1 -1
  350. package/node_modules/@sap/cds-compiler/lib/edm/edmPreprocessor.js +1 -1
  351. package/node_modules/@sap/cds-compiler/lib/edm/edmUtils.js +12 -7
  352. package/node_modules/@sap/cds-compiler/lib/gen/CdlGrammar.checksum +1 -1
  353. package/node_modules/@sap/cds-compiler/lib/gen/CdlParser.js +15 -15
  354. package/node_modules/@sap/cds-compiler/lib/gen/Dictionary.json +7 -0
  355. package/node_modules/@sap/cds-compiler/lib/json/from-csn.js +30 -30
  356. package/node_modules/@sap/cds-compiler/lib/json/to-csn.js +2 -1
  357. package/node_modules/@sap/cds-compiler/lib/main.js +4 -1
  358. package/node_modules/@sap/cds-compiler/lib/parsers/AstBuildingParser.js +42 -15
  359. package/node_modules/@sap/cds-compiler/lib/render/DuplicateChecker.js +37 -11
  360. package/node_modules/@sap/cds-compiler/lib/render/manageConstraints.js +1 -1
  361. package/node_modules/@sap/cds-compiler/lib/render/toCdl.js +11 -6
  362. package/node_modules/@sap/cds-compiler/lib/render/toRename.js +1 -1
  363. package/node_modules/@sap/cds-compiler/lib/render/toSql.js +74 -24
  364. package/node_modules/@sap/cds-compiler/lib/render/utils/common.js +1 -1
  365. package/node_modules/@sap/cds-compiler/lib/render/utils/operators.js +81 -0
  366. package/node_modules/@sap/cds-compiler/lib/render/utils/sql.js +17 -10
  367. package/node_modules/@sap/cds-compiler/lib/transform/db/assertUnique.js +1 -1
  368. package/node_modules/@sap/cds-compiler/lib/transform/db/associations.js +3 -4
  369. package/node_modules/@sap/cds-compiler/lib/transform/db/assocsToQueries/transformExists.js +1 -1
  370. package/node_modules/@sap/cds-compiler/lib/transform/db/backlinks.js +2 -2
  371. package/node_modules/@sap/cds-compiler/lib/transform/db/cdsPersistence.js +1 -1
  372. package/node_modules/@sap/cds-compiler/lib/transform/db/constraints.js +6 -5
  373. package/node_modules/@sap/cds-compiler/lib/transform/db/expansion.js +7 -1
  374. package/node_modules/@sap/cds-compiler/lib/transform/db/flattening.js +2 -2
  375. package/node_modules/@sap/cds-compiler/lib/{modelCompare/compare.js → transform/db/migration/diffModels.js} +5 -5
  376. package/node_modules/@sap/cds-compiler/lib/{modelCompare/utils/filter.js → transform/db/migration/filterDiff.js} +2 -2
  377. package/node_modules/@sap/cds-compiler/lib/transform/db/processSqlServices.js +1 -1
  378. package/node_modules/@sap/cds-compiler/lib/transform/db/rewriteCalculatedElements.js +1 -1
  379. package/node_modules/@sap/cds-compiler/lib/transform/db/temporal.js +1 -1
  380. package/node_modules/@sap/cds-compiler/lib/transform/db/views.js +2 -6
  381. package/node_modules/@sap/cds-compiler/lib/transform/draft/db.js +1 -1
  382. package/node_modules/@sap/cds-compiler/lib/transform/draft/odata.js +1 -1
  383. package/node_modules/@sap/cds-compiler/lib/transform/effective/annotations.js +1 -1
  384. package/node_modules/@sap/cds-compiler/lib/transform/effective/associations.js +1 -1
  385. package/node_modules/@sap/cds-compiler/lib/transform/effective/flattening.js +1 -1
  386. package/node_modules/@sap/cds-compiler/lib/transform/effective/main.js +3 -2
  387. package/node_modules/@sap/cds-compiler/lib/transform/effective/misc.js +2 -1
  388. package/node_modules/@sap/cds-compiler/lib/transform/effective/queries.js +1 -1
  389. package/node_modules/@sap/cds-compiler/lib/transform/effective/types.js +1 -1
  390. package/node_modules/@sap/cds-compiler/lib/transform/forOdata.js +1 -1
  391. package/node_modules/@sap/cds-compiler/lib/transform/forRelationalDB.js +9 -4
  392. package/node_modules/@sap/cds-compiler/lib/transform/localized.js +1 -1
  393. package/node_modules/@sap/cds-compiler/lib/transform/odata/adaptAnnotationRefs.js +5 -11
  394. package/node_modules/@sap/cds-compiler/lib/transform/odata/createForeignKeys.js +1 -1
  395. package/node_modules/@sap/cds-compiler/lib/transform/odata/flattening.js +4 -4
  396. package/node_modules/@sap/cds-compiler/lib/transform/odata/foreignKeyRefsInXprAnnos.js +5 -3
  397. package/node_modules/@sap/cds-compiler/lib/transform/odata/toFinalBaseType.js +29 -5
  398. package/node_modules/@sap/cds-compiler/lib/transform/odata/typesExposure.js +13 -3
  399. package/node_modules/@sap/cds-compiler/lib/transform/odata/utils.js +9 -0
  400. package/node_modules/@sap/cds-compiler/lib/transform/transformUtils.js +2 -2
  401. package/node_modules/@sap/cds-compiler/lib/transform/translateAssocsToJoins.js +1 -1
  402. package/node_modules/@sap/cds-compiler/lib/transform/tupleExpansion.js +1 -1
  403. package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/coreComputed.js +1 -1
  404. package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/universalCsnEnricher.js +1 -1
  405. package/node_modules/@sap/cds-compiler/lib/transform/universalCsn/utils.js +1 -1
  406. package/node_modules/@sap/cds-compiler/package.json +1 -1
  407. package/node_modules/@sap/cds-mtxs/CHANGELOG.md +55 -0
  408. package/node_modules/@sap/cds-mtxs/bin/cds-mtx-migrate.js +4 -6
  409. package/node_modules/@sap/cds-mtxs/bin/cds-mtx.js +5 -4
  410. package/node_modules/@sap/cds-mtxs/cds-plugin.js +38 -2
  411. package/node_modules/@sap/cds-mtxs/db/t0.cds +7 -0
  412. package/node_modules/@sap/cds-mtxs/lib/utils.js +129 -20
  413. package/node_modules/@sap/cds-mtxs/package.json +15 -14
  414. package/node_modules/@sap/cds-mtxs/srv/cf/abstract-provisioning-service.js +13 -12
  415. package/node_modules/@sap/cds-mtxs/srv/cf/saas-provisioning-service.cds +1 -0
  416. package/node_modules/@sap/cds-mtxs/srv/cf/sms-provisioning-service.cds +1 -0
  417. package/node_modules/@sap/cds-mtxs/srv/extensibility/compat/update.js +5 -2
  418. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/config.js +1 -2
  419. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/csv-allowlist.js +64 -0
  420. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/index.js +4 -2
  421. package/node_modules/@sap/cds-mtxs/srv/extensibility/linter/protected-namespace.js +67 -5
  422. package/node_modules/@sap/cds-mtxs/srv/extensibility-service.js +199 -19
  423. package/node_modules/@sap/cds-mtxs/srv/jobs-service.js +39 -15
  424. package/node_modules/@sap/cds-mtxs/srv/plugins/common.js +33 -12
  425. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/ctnr-mgr-base.js +24 -6
  426. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/hdi-ctnr-mgr.js +3 -1
  427. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/hdi-native.js +752 -0
  428. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/serverless.js +17 -20
  429. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/srv-mgr-v2.js +511 -0
  430. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/srv-mgr.js +11 -4
  431. package/node_modules/@sap/cds-mtxs/srv/plugins/hana/tms.js +8 -0
  432. package/node_modules/@sap/cds-mtxs/srv/plugins/hana.js +58 -43
  433. package/node_modules/@sap/cds-mtxs/srv/worker/job-worker-pool.js +1 -1
  434. package/node_modules/@sap/cds-mtxs/srv/worker/job-worker.js +1 -1
  435. package/node_modules/body-parser/README.md +17 -13
  436. package/node_modules/body-parser/lib/read.js +74 -57
  437. package/node_modules/body-parser/lib/types/json.js +11 -11
  438. package/node_modules/body-parser/lib/types/urlencoded.js +5 -5
  439. package/node_modules/body-parser/lib/utils.js +0 -15
  440. package/node_modules/body-parser/package.json +7 -12
  441. package/node_modules/chownr/LICENSE.md +63 -0
  442. package/node_modules/chownr/README.md +3 -0
  443. package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
  444. package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
  445. package/node_modules/chownr/dist/commonjs/index.js +93 -0
  446. package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
  447. package/node_modules/chownr/dist/commonjs/package.json +3 -0
  448. package/node_modules/chownr/dist/esm/index.d.ts +3 -0
  449. package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
  450. package/node_modules/chownr/dist/esm/index.js +85 -0
  451. package/node_modules/chownr/dist/esm/index.js.map +1 -0
  452. package/node_modules/chownr/dist/esm/package.json +3 -0
  453. package/node_modules/chownr/package.json +69 -0
  454. package/node_modules/content-disposition/README.md +105 -35
  455. package/node_modules/content-disposition/dist/index.d.ts +72 -0
  456. package/node_modules/content-disposition/dist/index.js +388 -0
  457. package/node_modules/content-disposition/dist/index.js.map +1 -0
  458. package/node_modules/content-disposition/package.json +31 -19
  459. package/node_modules/content-type/README.md +34 -57
  460. package/node_modules/content-type/package.json +35 -25
  461. package/node_modules/encodeurl/README.md +14 -0
  462. package/node_modules/encodeurl/index.js +5 -10
  463. package/node_modules/encodeurl/package.json +10 -6
  464. package/node_modules/express/Readme.md +15 -9
  465. package/node_modules/express/lib/application.js +2 -2
  466. package/node_modules/express/lib/request.js +32 -19
  467. package/node_modules/express/lib/response.js +27 -30
  468. package/node_modules/express/package.json +10 -10
  469. package/node_modules/handlebars/bin/handlebars +1 -1
  470. package/node_modules/handlebars/dist/amd/handlebars/base.js +2 -2
  471. package/node_modules/handlebars/dist/amd/handlebars/compiler/base.js +2 -59
  472. package/node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js +68 -5
  473. package/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js +160 -19
  474. package/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js +23 -7
  475. package/node_modules/handlebars/dist/amd/handlebars/compiler/node-types.js +12 -0
  476. package/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js +26 -7
  477. package/node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js +9 -4
  478. package/node_modules/handlebars/dist/amd/handlebars/exception.js +8 -4
  479. package/node_modules/handlebars/dist/amd/handlebars/helpers/each.js +40 -14
  480. package/node_modules/handlebars/dist/amd/handlebars/internal/proto-access.js +21 -1
  481. package/node_modules/handlebars/dist/amd/handlebars/runtime.js +24 -4
  482. package/node_modules/handlebars/dist/amd/handlebars/utils.js +4 -3
  483. package/node_modules/handlebars/dist/amd/precompiler.js +13 -7
  484. package/node_modules/handlebars/dist/cjs/handlebars/base.js +2 -2
  485. package/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +1 -60
  486. package/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js +64 -4
  487. package/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js +161 -18
  488. package/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +23 -7
  489. package/node_modules/handlebars/dist/cjs/handlebars/compiler/node-types.js +10 -0
  490. package/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js +29 -6
  491. package/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +9 -4
  492. package/node_modules/handlebars/dist/cjs/handlebars/exception.js +8 -4
  493. package/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js +40 -14
  494. package/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js +21 -1
  495. package/node_modules/handlebars/dist/cjs/handlebars/runtime.js +24 -4
  496. package/node_modules/handlebars/dist/cjs/handlebars/utils.js +4 -3
  497. package/node_modules/handlebars/dist/cjs/precompiler.js +14 -6
  498. package/node_modules/handlebars/dist/handlebars.amd.js +401 -130
  499. package/node_modules/handlebars/dist/handlebars.amd.min.js +4 -4
  500. package/node_modules/handlebars/dist/handlebars.js +396 -125
  501. package/node_modules/handlebars/dist/handlebars.min.js +4 -4
  502. package/node_modules/handlebars/dist/handlebars.runtime.amd.js +100 -29
  503. package/node_modules/handlebars/dist/handlebars.runtime.amd.min.js +2 -2
  504. package/node_modules/handlebars/dist/handlebars.runtime.js +94 -23
  505. package/node_modules/handlebars/dist/handlebars.runtime.min.js +2 -2
  506. package/node_modules/handlebars/lib/handlebars/base.js +1 -1
  507. package/node_modules/handlebars/lib/handlebars/compiler/base.js +0 -67
  508. package/node_modules/handlebars/lib/handlebars/compiler/code-gen.js +65 -11
  509. package/node_modules/handlebars/lib/handlebars/compiler/compiler.js +164 -23
  510. package/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js +23 -7
  511. package/node_modules/handlebars/lib/handlebars/compiler/node-types.js +24 -0
  512. package/node_modules/handlebars/lib/handlebars/compiler/visitor.js +29 -5
  513. package/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js +16 -5
  514. package/node_modules/handlebars/lib/handlebars/exception.js +7 -3
  515. package/node_modules/handlebars/lib/handlebars/helpers/each.js +39 -16
  516. package/node_modules/handlebars/lib/handlebars/internal/proto-access.js +22 -0
  517. package/node_modules/handlebars/lib/handlebars/runtime.js +36 -4
  518. package/node_modules/handlebars/lib/handlebars/utils.js +3 -2
  519. package/node_modules/handlebars/lib/precompiler.js +14 -5
  520. package/node_modules/handlebars/package.json +2 -2
  521. package/node_modules/handlebars/release-notes.md +20 -1
  522. package/node_modules/handlebars/types/index.d.ts +8 -0
  523. package/node_modules/hdb/cfg/VERSION +1 -1
  524. package/node_modules/hdb/lib/Client.js +6 -2
  525. package/node_modules/hdb/lib/protocol/ClientInfo.js +28 -15
  526. package/node_modules/hdb/lib/protocol/Connection.js +30 -3
  527. package/node_modules/hdb/lib/protocol/Writer.js +2 -2
  528. package/node_modules/hdb/lib/protocol/common/ConnectOption.js +2 -0
  529. package/node_modules/hdb/lib/protocol/common/ConnectOptionFlagSet1.js +18 -0
  530. package/node_modules/hdb/lib/protocol/common/ConnectOptionType.js +2 -0
  531. package/node_modules/hdb/lib/protocol/common/Constants.js +1 -0
  532. package/node_modules/hdb/lib/protocol/common/MessageType.js +3 -2
  533. package/node_modules/hdb/lib/protocol/common/PartKind.js +2 -1
  534. package/node_modules/hdb/lib/protocol/common/index.js +1 -0
  535. package/node_modules/hdb/lib/protocol/data/TextList.js +25 -17
  536. package/node_modules/hdb/lib/protocol/data/index.js +1 -0
  537. package/node_modules/hdb/lib/protocol/part/ConnectOptions.js +7 -0
  538. package/node_modules/hdb/lib/protocol/request/index.js +7 -0
  539. package/node_modules/hdb/package.json +1 -2
  540. package/node_modules/livereload-js/.github/workflows/main.yml +4 -4
  541. package/node_modules/livereload-js/README.md +3 -3
  542. package/node_modules/livereload-js/dist/livereload.js +839 -2742
  543. package/node_modules/livereload-js/dist/livereload.min.js +1 -1
  544. package/node_modules/livereload-js/package.json +11 -11
  545. package/node_modules/minipass/LICENSE.md +55 -0
  546. package/node_modules/minipass/README.md +825 -0
  547. package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
  548. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  549. package/node_modules/minipass/dist/commonjs/index.js +1038 -0
  550. package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  551. package/node_modules/minipass/dist/commonjs/package.json +3 -0
  552. package/node_modules/minipass/dist/esm/index.d.ts +545 -0
  553. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  554. package/node_modules/minipass/dist/esm/index.js +1020 -0
  555. package/node_modules/minipass/dist/esm/index.js.map +1 -0
  556. package/node_modules/minipass/dist/esm/package.json +3 -0
  557. package/node_modules/minipass/package.json +77 -0
  558. package/node_modules/minizlib/LICENSE +26 -0
  559. package/node_modules/minizlib/README.md +64 -0
  560. package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
  561. package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
  562. package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  563. package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
  564. package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
  565. package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
  566. package/node_modules/minizlib/dist/commonjs/index.js +416 -0
  567. package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
  568. package/node_modules/minizlib/dist/commonjs/package.json +3 -0
  569. package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
  570. package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
  571. package/node_modules/minizlib/dist/esm/constants.js +117 -0
  572. package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
  573. package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
  574. package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
  575. package/node_modules/minizlib/dist/esm/index.js +363 -0
  576. package/node_modules/minizlib/dist/esm/index.js.map +1 -0
  577. package/node_modules/minizlib/dist/esm/package.json +3 -0
  578. package/node_modules/minizlib/package.json +80 -0
  579. package/node_modules/on-finished/index.js +14 -2
  580. package/node_modules/on-finished/package.json +11 -7
  581. package/node_modules/qs/.editorconfig +1 -1
  582. package/node_modules/qs/.github/THREAT_MODEL.md +4 -2
  583. package/node_modules/qs/CHANGELOG.md +103 -14
  584. package/node_modules/qs/README.md +90 -9
  585. package/node_modules/qs/dist/qs.js +19 -19
  586. package/node_modules/qs/eslint.config.mjs +61 -50
  587. package/node_modules/qs/lib/formats.js +7 -2
  588. package/node_modules/qs/lib/parse.js +121 -12
  589. package/node_modules/qs/lib/stringify.js +9 -7
  590. package/node_modules/qs/lib/utils.js +158 -15
  591. package/node_modules/qs/package.json +8 -8
  592. package/node_modules/qs/test/parse.js +509 -2
  593. package/node_modules/qs/test/stringify.js +485 -33
  594. package/node_modules/qs/test/utils.js +245 -3
  595. package/node_modules/semver/classes/range.js +2 -2
  596. package/node_modules/semver/internal/constants.js +30 -0
  597. package/node_modules/semver/internal/trim-comparator-whitespace.js +438 -0
  598. package/node_modules/semver/package.json +1 -1
  599. package/node_modules/tar/LICENSE.md +55 -0
  600. package/node_modules/tar/README.md +1233 -0
  601. package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
  602. package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
  603. package/node_modules/tar/dist/commonjs/create.js +82 -0
  604. package/node_modules/tar/dist/commonjs/create.js.map +1 -0
  605. package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
  606. package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
  607. package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  608. package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
  609. package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
  610. package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
  611. package/node_modules/tar/dist/commonjs/extract.js +88 -0
  612. package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
  613. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
  614. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
  615. package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  616. package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
  617. package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
  618. package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
  619. package/node_modules/tar/dist/commonjs/header.js +348 -0
  620. package/node_modules/tar/dist/commonjs/header.js.map +1 -0
  621. package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
  622. package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
  623. package/node_modules/tar/dist/commonjs/index.js +64 -0
  624. package/node_modules/tar/dist/commonjs/index.js.map +1 -0
  625. package/node_modules/tar/dist/commonjs/index.min.js +4 -0
  626. package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
  627. package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
  628. package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
  629. package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  630. package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
  631. package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
  632. package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
  633. package/node_modules/tar/dist/commonjs/list.js +153 -0
  634. package/node_modules/tar/dist/commonjs/list.js.map +1 -0
  635. package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
  636. package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
  637. package/node_modules/tar/dist/commonjs/make-command.js +52 -0
  638. package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
  639. package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
  640. package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
  641. package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  642. package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
  643. package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
  644. package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
  645. package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  646. package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
  647. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
  648. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
  649. package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  650. package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
  651. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
  652. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
  653. package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  654. package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
  655. package/node_modules/tar/dist/commonjs/options.d.ts +604 -0
  656. package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
  657. package/node_modules/tar/dist/commonjs/options.js +66 -0
  658. package/node_modules/tar/dist/commonjs/options.js.map +1 -0
  659. package/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
  660. package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
  661. package/node_modules/tar/dist/commonjs/pack.js +544 -0
  662. package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
  663. package/node_modules/tar/dist/commonjs/package.json +3 -0
  664. package/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
  665. package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
  666. package/node_modules/tar/dist/commonjs/parse.js +655 -0
  667. package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
  668. package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
  669. package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
  670. package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  671. package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
  672. package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
  673. package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
  674. package/node_modules/tar/dist/commonjs/pax.js +182 -0
  675. package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
  676. package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
  677. package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
  678. package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  679. package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
  680. package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
  681. package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
  682. package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  683. package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
  684. package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
  685. package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
  686. package/node_modules/tar/dist/commonjs/replace.js +227 -0
  687. package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
  688. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
  689. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
  690. package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  691. package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
  692. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
  693. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
  694. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  695. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
  696. package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
  697. package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
  698. package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  699. package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
  700. package/node_modules/tar/dist/commonjs/types.d.ts +16 -0
  701. package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
  702. package/node_modules/tar/dist/commonjs/types.js +70 -0
  703. package/node_modules/tar/dist/commonjs/types.js.map +1 -0
  704. package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
  705. package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
  706. package/node_modules/tar/dist/commonjs/unpack.js +932 -0
  707. package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
  708. package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
  709. package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
  710. package/node_modules/tar/dist/commonjs/update.js +33 -0
  711. package/node_modules/tar/dist/commonjs/update.js.map +1 -0
  712. package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
  713. package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
  714. package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  715. package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
  716. package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
  717. package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
  718. package/node_modules/tar/dist/commonjs/winchars.js +14 -0
  719. package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
  720. package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
  721. package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
  722. package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  723. package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
  724. package/node_modules/tar/dist/esm/create.d.ts +3 -0
  725. package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
  726. package/node_modules/tar/dist/esm/create.js +76 -0
  727. package/node_modules/tar/dist/esm/create.js.map +1 -0
  728. package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
  729. package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
  730. package/node_modules/tar/dist/esm/cwd-error.js +14 -0
  731. package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
  732. package/node_modules/tar/dist/esm/extract.d.ts +3 -0
  733. package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
  734. package/node_modules/tar/dist/esm/extract.js +49 -0
  735. package/node_modules/tar/dist/esm/extract.js.map +1 -0
  736. package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
  737. package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
  738. package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  739. package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
  740. package/node_modules/tar/dist/esm/header.d.ts +53 -0
  741. package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
  742. package/node_modules/tar/dist/esm/header.js +311 -0
  743. package/node_modules/tar/dist/esm/header.js.map +1 -0
  744. package/node_modules/tar/dist/esm/index.d.ts +20 -0
  745. package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
  746. package/node_modules/tar/dist/esm/index.js +20 -0
  747. package/node_modules/tar/dist/esm/index.js.map +1 -0
  748. package/node_modules/tar/dist/esm/index.min.js +4 -0
  749. package/node_modules/tar/dist/esm/index.min.js.map +7 -0
  750. package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
  751. package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
  752. package/node_modules/tar/dist/esm/large-numbers.js +94 -0
  753. package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
  754. package/node_modules/tar/dist/esm/list.d.ts +7 -0
  755. package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
  756. package/node_modules/tar/dist/esm/list.js +113 -0
  757. package/node_modules/tar/dist/esm/list.js.map +1 -0
  758. package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
  759. package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
  760. package/node_modules/tar/dist/esm/make-command.js +48 -0
  761. package/node_modules/tar/dist/esm/make-command.js.map +1 -0
  762. package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
  763. package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
  764. package/node_modules/tar/dist/esm/mkdir.js +179 -0
  765. package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
  766. package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
  767. package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
  768. package/node_modules/tar/dist/esm/mode-fix.js +25 -0
  769. package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
  770. package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
  771. package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
  772. package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  773. package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
  774. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
  775. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
  776. package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  777. package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
  778. package/node_modules/tar/dist/esm/options.d.ts +604 -0
  779. package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
  780. package/node_modules/tar/dist/esm/options.js +54 -0
  781. package/node_modules/tar/dist/esm/options.js.map +1 -0
  782. package/node_modules/tar/dist/esm/pack.d.ts +105 -0
  783. package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
  784. package/node_modules/tar/dist/esm/pack.js +502 -0
  785. package/node_modules/tar/dist/esm/pack.js.map +1 -0
  786. package/node_modules/tar/dist/esm/package.json +3 -0
  787. package/node_modules/tar/dist/esm/parse.d.ts +92 -0
  788. package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
  789. package/node_modules/tar/dist/esm/parse.js +651 -0
  790. package/node_modules/tar/dist/esm/parse.js.map +1 -0
  791. package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
  792. package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
  793. package/node_modules/tar/dist/esm/path-reservations.js +166 -0
  794. package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
  795. package/node_modules/tar/dist/esm/pax.d.ts +26 -0
  796. package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
  797. package/node_modules/tar/dist/esm/pax.js +178 -0
  798. package/node_modules/tar/dist/esm/pax.js.map +1 -0
  799. package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
  800. package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
  801. package/node_modules/tar/dist/esm/process-umask.js +3 -0
  802. package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
  803. package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
  804. package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
  805. package/node_modules/tar/dist/esm/read-entry.js +132 -0
  806. package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
  807. package/node_modules/tar/dist/esm/replace.d.ts +2 -0
  808. package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
  809. package/node_modules/tar/dist/esm/replace.js +221 -0
  810. package/node_modules/tar/dist/esm/replace.js.map +1 -0
  811. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
  812. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
  813. package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  814. package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
  815. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
  816. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
  817. package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  818. package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
  819. package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
  820. package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
  821. package/node_modules/tar/dist/esm/symlink-error.js +15 -0
  822. package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
  823. package/node_modules/tar/dist/esm/types.d.ts +16 -0
  824. package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
  825. package/node_modules/tar/dist/esm/types.js +65 -0
  826. package/node_modules/tar/dist/esm/types.js.map +1 -0
  827. package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
  828. package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
  829. package/node_modules/tar/dist/esm/unpack.js +891 -0
  830. package/node_modules/tar/dist/esm/unpack.js.map +1 -0
  831. package/node_modules/tar/dist/esm/update.d.ts +2 -0
  832. package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
  833. package/node_modules/tar/dist/esm/update.js +30 -0
  834. package/node_modules/tar/dist/esm/update.js.map +1 -0
  835. package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
  836. package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
  837. package/node_modules/tar/dist/esm/warn-method.js +27 -0
  838. package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
  839. package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
  840. package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
  841. package/node_modules/tar/dist/esm/winchars.js +9 -0
  842. package/node_modules/tar/dist/esm/winchars.js.map +1 -0
  843. package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
  844. package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
  845. package/node_modules/tar/dist/esm/write-entry.js +656 -0
  846. package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
  847. package/node_modules/tar/package.json +298 -0
  848. package/node_modules/ws/README.md +21 -29
  849. package/node_modules/ws/lib/buffer-util.js +13 -2
  850. package/node_modules/ws/lib/sender.js +4 -1
  851. package/node_modules/ws/lib/websocket.js +25 -6
  852. package/node_modules/ws/package.json +1 -1
  853. package/node_modules/yallist/LICENSE.md +63 -0
  854. package/node_modules/yallist/README.md +205 -0
  855. package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
  856. package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
  857. package/node_modules/yallist/dist/commonjs/index.js +384 -0
  858. package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
  859. package/node_modules/yallist/dist/commonjs/package.json +3 -0
  860. package/node_modules/yallist/dist/esm/index.d.ts +39 -0
  861. package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
  862. package/node_modules/yallist/dist/esm/index.js +379 -0
  863. package/node_modules/yallist/dist/esm/index.js.map +1 -0
  864. package/node_modules/yallist/dist/esm/package.json +3 -0
  865. package/node_modules/yallist/package.json +68 -0
  866. package/package.json +7 -1
  867. package/bin/completion/templates/cds-tmpl.fish +0 -65
  868. package/bin/completion/templates/cds-tmpl.ps1 +0 -217
  869. package/bin/completion/templates/cds-tmpl.sh +0 -93
  870. package/bin/completion/templates/cds-tmpl.zsh +0 -74
  871. package/node_modules/@cap-js/db-service/lib/recursion-guard.js +0 -40
  872. package/node_modules/@sap/cds/lib/env/cds-requires.js +0 -327
  873. package/node_modules/@sap/cds-mtxs/srv/bootstrap.cds +0 -2
  874. package/node_modules/@sap/cds-mtxs/srv/bootstrap.js +0 -33
  875. package/node_modules/body-parser/node_modules/content-type/LICENSE +0 -22
  876. package/node_modules/body-parser/node_modules/content-type/README.md +0 -71
  877. package/node_modules/body-parser/node_modules/content-type/package.json +0 -52
  878. package/node_modules/content-disposition/index.js +0 -536
  879. package/node_modules/content-type/HISTORY.md +0 -29
  880. package/node_modules/content-type/index.js +0 -225
  881. package/node_modules/negotiator/node_modules/content-type/LICENSE +0 -22
  882. package/node_modules/negotiator/node_modules/content-type/README.md +0 -71
  883. package/node_modules/negotiator/node_modules/content-type/dist/index.d.ts +0 -46
  884. package/node_modules/negotiator/node_modules/content-type/dist/index.js +0 -176
  885. package/node_modules/negotiator/node_modules/content-type/dist/index.js.map +0 -1
  886. package/node_modules/negotiator/node_modules/content-type/package.json +0 -52
  887. package/node_modules/on-finished/HISTORY.md +0 -98
  888. package/node_modules/type-is/node_modules/content-type/LICENSE +0 -22
  889. package/node_modules/type-is/node_modules/content-type/README.md +0 -71
  890. package/node_modules/type-is/node_modules/content-type/dist/index.d.ts +0 -46
  891. package/node_modules/type-is/node_modules/content-type/dist/index.js +0 -176
  892. package/node_modules/type-is/node_modules/content-type/dist/index.js.map +0 -1
  893. package/node_modules/type-is/node_modules/content-type/package.json +0 -52
  894. /package/lib/init/template/vue/files/src/{main.js → main.{{extension}}.hbs} +0 -0
  895. /package/{lib/import/openapi → node_modules/@cap-js/openapi/lib/import}/utilities.js +0 -0
  896. /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.d.ts +0 -0
  897. /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.js +0 -0
  898. /package/node_modules/{body-parser/node_modules/content-type → content-type}/dist/index.js.map +0 -0
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var test = require('tape');
4
+ var forEach = require('for-each');
4
5
  var hasPropertyDescriptors = require('has-property-descriptors')();
5
6
  var iconv = require('iconv-lite');
6
7
  var mockProperty = require('mock-property');
@@ -62,10 +63,54 @@ test('parse()', function (t) {
62
63
  st.end();
63
64
  });
64
65
 
66
+ t.test('comma: `[]=` in a value does not wrap the value in an extra array', function (st) {
67
+ st.deepEqual(qs.parse('a[b]=1,2,3[]=x', { comma: true }), { a: { b: ['1', '2', '3[]=x'] } });
68
+ st.deepEqual(qs.parse('a[b]=1,2[]=3', { comma: true }), { a: { b: ['1', '2[]=3'] } });
69
+ st.deepEqual(qs.parse('a[]=1,2,3', { comma: true }), { a: [['1', '2', '3']] });
70
+ st.end();
71
+ });
72
+
65
73
  t.test('allows enabling dot notation', function (st) {
66
74
  st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
67
75
  st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });
68
76
 
77
+ // a literal dot inside a bracket segment must not be rewritten by allowDots (#617)
78
+ st.deepEqual(
79
+ qs.parse('outer[a.b]=1', { allowDots: true }),
80
+ { outer: { 'a.b': '1' } },
81
+ 'a dot inside brackets stays part of the key when allowDots is true'
82
+ );
83
+ st.deepEqual(
84
+ qs.parse('outer[a.b]=1', { allowDots: true }),
85
+ qs.parse('outer[a.b]=1', { allowDots: false }),
86
+ 'allowDots does not change how a bracket segment containing a dot is parsed'
87
+ );
88
+ st.deepEqual(
89
+ qs.parse('a].b=c', { allowDots: true }),
90
+ { 'a]': { b: 'c' } },
91
+ 'a stray close bracket does not stop a later dot from being converted'
92
+ );
93
+ st.deepEqual(
94
+ qs.parse('a]].b[c.d]=e', { allowDots: true }),
95
+ { 'a]]': { b: { 'c.d': 'e' } } },
96
+ 'stray close brackets do not unbalance a later bracket segment'
97
+ );
98
+
99
+ st.end();
100
+ });
101
+
102
+ t.test('decode dot keys with case-insensitive percent escapes', function (st) {
103
+ var input = 'name%252eobj.first%252ename=John&name%252Eobj.last%252Ename=Doe';
104
+ st.deepEqual(
105
+ qs.parse(input, { decodeDotInKeys: true }),
106
+ { 'name.obj': { 'first.name': 'John', 'last.name': 'Doe' } },
107
+ 'lowercase and uppercase escapes decode in both parent and child keys'
108
+ );
109
+ st.deepEqual(
110
+ qs.parse(input, { allowDots: true, decodeDotInKeys: false }),
111
+ { 'name%2eobj': { 'first%2ename': 'John' }, 'name%2Eobj': { 'last%2Ename': 'Doe' } },
112
+ 'escaped dots remain unchanged when decoding is disabled'
113
+ );
69
114
  st.end();
70
115
  });
71
116
 
@@ -229,8 +274,34 @@ test('parse()', function (t) {
229
274
  st.end();
230
275
  });
231
276
 
277
+ t.test('ignores bracket-wrapped prototype keys when depth = 0 and allowPrototypes is false', function (st) {
278
+ st.deepEqual(qs.parse('[toString]=foo', { depth: 0 }), {}, 'the stored key is the bracket content');
279
+ st.deepEqual(qs.parse('[hasOwnProperty]=bar', { depth: 0 }), {});
280
+ st.deepEqual(qs.parse('%5BhasOwnProperty%5D=bar', { depth: 0 }), {}, 'percent-encoded brackets');
281
+ st.deepEqual(qs.parse('[toString]=foo&a=b', { depth: 0 }), { a: 'b' });
282
+ st.deepEqual(qs.parse('[toString]=foo', { depth: false }), {}, 'depth: false');
283
+ st.deepEqual(qs.parse('.toString=foo', { depth: 0, allowDots: true }), {}, 'a leading dot becomes a bracket group');
284
+ st.deepEqual(qs.parse('[a]=b&[toString]=foo', { depth: 0 }), { a: 'b' }, 'other bracket-wrapped keys still strip their brackets');
285
+ st.end();
286
+ });
287
+
232
288
  t.test('allows prototype keys when depth = 0 and allowPrototypes is true', function (st) {
233
289
  st.deepEqual(qs.parse('toString=foo', { depth: 0, allowPrototypes: true }), { toString: 'foo' });
290
+ st.deepEqual(qs.parse('[toString]=foo', { depth: 0, allowPrototypes: true }), { toString: 'foo' });
291
+ st.end();
292
+ });
293
+
294
+ t.test('keeps bracket-wrapped prototype keys when depth = 0 and plainObjects is true', function (st) {
295
+ var result = qs.parse('[toString]=foo', { depth: 0, plainObjects: true });
296
+ st.deepEqual(result, { __proto__: null, toString: 'foo' });
297
+ st.equal(Object.getPrototypeOf(result), null);
298
+ st.end();
299
+ });
300
+
301
+ t.test('strips one wrapping bracket pair from the key when depth = 0', function (st) {
302
+ st.deepEqual(qs.parse('[a]=b', { depth: 0 }), { a: 'b' });
303
+ st.deepEqual(qs.parse('[[toString]]=foo', { depth: 0 }), { '[toString]': 'foo' }, 'only the outer pair is stripped');
304
+ st.deepEqual(qs.parse('x[toString]=foo', { depth: 0 }), { 'x[toString]': 'foo' }, 'a key with a parent stays literal');
234
305
  st.end();
235
306
  });
236
307
 
@@ -360,6 +431,14 @@ test('parse()', function (t) {
360
431
  st.end();
361
432
  });
362
433
 
434
+ t.test('currently moves the key/value split to a later `]=` when the first `=` comes before any bracket group', function (st) {
435
+ characterizeParse(st, 'a=b[c]=d', undefined, { 'a=b': { c: 'd' } }, 'literal brackets after the first `=`');
436
+ characterizeParse(st, 'q=%5B1%5D=2', undefined, { 'q=': ['2'] }, 'encoded brackets collapse to an array');
437
+ characterizeParse(st, 'role=guest%5Bx%5Dy%5D=z', undefined, { 'role=guest': { x: 'z' } }, 'group opens after the first `=`, and the text after it is dropped');
438
+ characterizeParse(st, 'role=guest%5D=admin', undefined, { 'role=guest]': 'admin' }, 'encoded `]=` with no bracket group at all');
439
+ st.end();
440
+ });
441
+
363
442
  t.test('allows to specify array indices', function (st) {
364
443
  st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] });
365
444
  st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] });
@@ -745,6 +824,38 @@ test('parse()', function (t) {
745
824
  st.end();
746
825
  });
747
826
 
827
+ t.test('does not mutate an object input', function (st) {
828
+ var arr = ['x'];
829
+ st.deepEqual(qs.parse({ a: arr, 'a[]': 'y' }), { a: ['x', 'y'] }, 'appends to a copy of an input array');
830
+ st.deepEqual(arr, ['x'], 'the input array is unchanged');
831
+
832
+ var nested = { b: ['x'] };
833
+ st.deepEqual(qs.parse({ a: nested, 'a[b][]': 'y' }), { a: { b: ['x', 'y'] } }, 'appends to a copy of a nested input array');
834
+ st.deepEqual(nested, { b: ['x'] }, 'the nested input array is unchanged');
835
+
836
+ var obj = { b: 'c' };
837
+ st.deepEqual(qs.parse({ a: obj, 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } }, 'merges into a copy of an input object');
838
+ st.deepEqual(obj, { b: 'c' }, 'the input object is unchanged');
839
+
840
+ var sparse = { b: [1, undefined, 2] };
841
+ st.deepEqual(qs.parse({ a: sparse }), { a: { b: [1, 2] } }, 'compacts a copy of an input array');
842
+ st.deepEqual(sparse, { b: [1, undefined, 2] }, 'the input array is not compacted');
843
+
844
+ var nullProto = { __proto__: null, b: 'c' };
845
+ st.equal(Object.getPrototypeOf(qs.parse({ a: nullProto }).a), null, 'a null-prototype input object stays null-prototype');
846
+
847
+ var date = new Date(0);
848
+ st.equal(qs.parse({ a: date }).a, date, 'a non-plain object is not copied');
849
+
850
+ var cyclic = { b: 'c' };
851
+ cyclic.self = cyclic;
852
+ var result = qs.parse({ a: cyclic });
853
+ st.notEqual(result.a, cyclic, 'a cyclic input object is copied');
854
+ st.equal(result.a.self, result.a, 'the copy keeps the cycle');
855
+
856
+ st.end();
857
+ });
858
+
748
859
  t.test('does not blow up when Buffer global is missing', function (st) {
749
860
  var restore = mockProperty(global, 'Buffer', { 'delete': true });
750
861
 
@@ -962,6 +1073,38 @@ test('parse()', function (t) {
962
1073
  st.end();
963
1074
  });
964
1075
 
1076
+ t.test('strictMerge conflicts do not overwrite indexed values already at that path', function (st) {
1077
+ st.deepEqual(
1078
+ qs.parse('a[z]=o&a=p&a[y]=q&a[2]=keep&[a]=r'),
1079
+ { a: { 0: { z: 'o' }, 1: 'p', 2: 'keep', 3: 'r', y: 'q' } },
1080
+ 'an indexed key merged into the container is kept'
1081
+ );
1082
+
1083
+ st.deepEqual(
1084
+ qs.parse('a[z]=o&a=p&a[2]=keep&a[y]=q&[a]=r'),
1085
+ { a: { 0: { z: 'o' }, 1: 'p', 2: 'keep', 3: 'r', y: 'q' } },
1086
+ 'an indexed key that extended the container while it was an array is kept'
1087
+ );
1088
+
1089
+ st.end();
1090
+ });
1091
+
1092
+ t.test('strictMerge conflicts do not overwrite values once the container overflows', function (st) {
1093
+ st.deepEqual(
1094
+ qs.parse('a[z]=v0&a=v1&a[y]=v2&[a]=v3&[a]x=v4&a[2]=v5&[a]x1=v6', { arrayLimit: 2 }),
1095
+ { a: { 0: { z: 'v0' }, 1: 'v1', 2: ['v3', 'v5'], 3: 'v4', 4: 'v6', y: 'v2' } },
1096
+ 'a conflict appended after the container overflowed keeps every value'
1097
+ );
1098
+
1099
+ st.deepEqual(
1100
+ qs.parse('a[2]=v1&a=v5&a=v7&[a]x=v9', { parseArrays: false, arrayLimit: 1 }),
1101
+ { a: { 0: 'v5', 1: 'v7', 2: 'v1', 3: 'v9' } },
1102
+ 'an index the container already holds is not reused'
1103
+ );
1104
+
1105
+ st.end();
1106
+ });
1107
+
965
1108
  t.test('dunder proto is ignored', function (st) {
966
1109
  var payload = 'categories[__proto__]=login&categories[__proto__]&categories[length]=42';
967
1110
  var result = qs.parse(payload, { allowPrototypes: true });
@@ -1038,6 +1181,67 @@ test('parse()', function (t) {
1038
1181
  st.end();
1039
1182
  });
1040
1183
 
1184
+ var withOwnProto = function (value) {
1185
+ var obj = {};
1186
+ Object.defineProperty(obj, '__proto__', {
1187
+ configurable: true,
1188
+ enumerable: true,
1189
+ value: value,
1190
+ writable: true
1191
+ });
1192
+ return obj;
1193
+ };
1194
+ // node < 0.12 reads an own `__proto__` data property as `Object.prototype`, so it can not be copied by value
1195
+ var ownProtoIsReadable = withOwnProto(1).__proto__ === 1; // eslint-disable-line no-proto
1196
+
1197
+ t.test('object-valued input with only an own `__proto__` does not mutate sub-object [[Prototype]]', function (st) {
1198
+ // `JSON.parse` in node < 0.12 sets the [[Prototype]] instead of creating an own `__proto__`
1199
+ var out = qs.parse({ user: withOwnProto({ isAdmin: true }) });
1200
+
1201
+ st.equal(out.user.isAdmin, undefined, 'attacker-controlled inherited property is not exposed');
1202
+ st.equal(Object.getPrototypeOf(out.user), Object.prototype, 'sub-object [[Prototype]] is unchanged');
1203
+ st.equal(Object.prototype.isAdmin, undefined, 'Object.prototype is not polluted');
1204
+
1205
+ var sibling = withOwnProto({ isAdmin: true });
1206
+ sibling.name = 'alice';
1207
+ var withSibling = qs.parse({ user: sibling });
1208
+
1209
+ st.equal(withSibling.user.name, 'alice', 'sibling key is preserved');
1210
+ st.equal(withSibling.user.isAdmin, undefined, 'a sibling key does not hide an inherited property');
1211
+ st.equal(Object.getPrototypeOf(withSibling.user), Object.prototype, 'a sibling key does not change [[Prototype]]');
1212
+
1213
+ st.end();
1214
+ });
1215
+
1216
+ t.test('object-valued input keeps an own `__proto__` as a data property', { skip: !ownProtoIsReadable }, function (st) {
1217
+ var descriptor = function (value) {
1218
+ return {
1219
+ configurable: true,
1220
+ enumerable: true,
1221
+ value: value,
1222
+ writable: true
1223
+ };
1224
+ };
1225
+
1226
+ st.deepEqual(
1227
+ Object.getOwnPropertyDescriptor(qs.parse({ user: withOwnProto({ isAdmin: true }) }).user, '__proto__'),
1228
+ descriptor({ isAdmin: true }),
1229
+ 'an object value is stored as a data property'
1230
+ );
1231
+ st.deepEqual(
1232
+ Object.getOwnPropertyDescriptor(qs.parse({ user: withOwnProto('admin') }).user, '__proto__'),
1233
+ descriptor('admin'),
1234
+ 'a primitive value is stored as a data property'
1235
+ );
1236
+ st.deepEqual(
1237
+ Object.getOwnPropertyDescriptor(qs.parse({ 'user[name]': 'alice', user: withOwnProto({ isAdmin: true }) }).user, '__proto__'),
1238
+ descriptor({ isAdmin: true }),
1239
+ 'it survives a merge with a bracket key'
1240
+ );
1241
+
1242
+ st.end();
1243
+ });
1244
+
1041
1245
  t.test('can return null objects', { skip: !hasProto }, function (st) {
1042
1246
  var expected = {
1043
1247
  __proto__: null,
@@ -1061,6 +1265,19 @@ test('parse()', function (t) {
1061
1265
  st.end();
1062
1266
  });
1063
1267
 
1268
+ t.test('returns null objects for empty brackets when parseArrays is false', { skip: !hasProto }, function (st) {
1269
+ st.deepEqual(
1270
+ qs.parse('a[]=b', { parseArrays: false, plainObjects: true }),
1271
+ { __proto__: null, a: { __proto__: null, 0: 'b' } }
1272
+ );
1273
+ st.deepEqual(
1274
+ qs.parse('a[]=b&a[hasOwnProperty]=c', { parseArrays: false, plainObjects: true }),
1275
+ { __proto__: null, a: { __proto__: null, 0: 'b', hasOwnProperty: 'c' } },
1276
+ 'prototype keys land on a null object'
1277
+ );
1278
+ st.end();
1279
+ });
1280
+
1064
1281
  t.test('can parse with custom encoding', function (st) {
1065
1282
  st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', {
1066
1283
  decoder: function (str) {
@@ -1153,6 +1370,31 @@ test('parse()', function (t) {
1153
1370
  st.end();
1154
1371
  });
1155
1372
 
1373
+ t.test('interprets numeric entities above U+FFFF as surrogate pairs', function (st) {
1374
+ var options = { charset: 'iso-8859-1', interpretNumericEntities: true };
1375
+ st.deepEqual(qs.parse('foo=%26%23128512%3B', options), { foo: '\uD83D\uDE00' }, 'U+1F600, which a browser submits as `&#128512;` from an iso-8859-1 form');
1376
+ st.deepEqual(qs.parse('foo=%26%2365536%3B', options), { foo: '\uD800\uDC00' }, 'U+10000');
1377
+ st.deepEqual(qs.parse('foo=%26%231114111%3B', options), { foo: '\uDBFF\uDFFF' }, 'U+10FFFF');
1378
+ st.deepEqual(qs.parse('foo=%26%2365535%3B', options), { foo: '\uFFFF' }, 'U+FFFF is still one code unit');
1379
+ st.end();
1380
+ });
1381
+
1382
+ t.test('interprets numeric entities in each value, but not in keys', function (st) {
1383
+ var options = { charset: 'iso-8859-1', interpretNumericEntities: true };
1384
+ st.deepEqual(qs.parse('a=' + urlEncodedNumSmiley + ',x', options), { a: '☺,x' }, 'a value with commas stays one string without `comma`');
1385
+ st.deepEqual(qs.parse('a' + urlEncodedNumSmiley + '=x', options), { 'a&#9786;': 'x' }, 'keys are not interpreted');
1386
+ st.deepEqual(qs.parse('a[]=' + urlEncodedNumSmiley + '&a[]=x', options), { a: ['☺', 'x'] }, 'bracket array values');
1387
+ st.deepEqual(qs.parse('a=' + urlEncodedNumSmiley + '&a=x', options), { a: ['☺', 'x'] }, 'repeated key values');
1388
+ st.deepEqual(qs.parse('a[b]=' + urlEncodedNumSmiley, options), { a: { b: '☺' } }, 'nested key values');
1389
+ st.deepEqual(
1390
+ qs.parse('utf8=%26%2310003%3B&a=' + urlEncodedNumSmiley, { charsetSentinel: true, interpretNumericEntities: true }),
1391
+ { a: '☺' },
1392
+ 'an iso-8859-1 charset sentinel enables interpretation'
1393
+ );
1394
+ st.deepEqual(qs.parse('a=' + urlEncodedNumSmiley + ',x', { charset: 'iso-8859-1', comma: true }), { a: ['&#9786;', 'x'] }, '`comma` splits without `interpretNumericEntities`');
1395
+ st.end();
1396
+ });
1397
+
1156
1398
  t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) {
1157
1399
  st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, {
1158
1400
  charset: 'iso-8859-1',
@@ -1188,15 +1430,70 @@ test('parse()', function (t) {
1188
1430
  st.end();
1189
1431
  });
1190
1432
 
1191
- t.test('interpretNumericEntities with comma:true and iso charset does not crash', function (st) {
1433
+ t.test('interpretNumericEntities preserves comma arrays in iso charset', function (st) {
1192
1434
  st.deepEqual(
1193
1435
  qs.parse('b&a[]=1,' + urlEncodedNumSmiley, { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true }),
1194
- { b: '', a: ['1,☺'] }
1436
+ { b: '', a: [['1', '☺']] }
1195
1437
  );
1196
1438
 
1197
1439
  st.end();
1198
1440
  });
1199
1441
 
1442
+ t.test('interprets numeric entities per comma-separated value', function (st) {
1443
+ var options = { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true };
1444
+ st.deepEqual(qs.parse('a=b,c', options), { a: ['b', 'c'] });
1445
+ st.deepEqual(qs.parse('a=' + urlEncodedNumSmiley + ',%26%239786%3B', options), { a: ['☺', '☺'] });
1446
+ st.deepEqual(qs.parse('a=%26%2344%3B,b%2Cc', options), { a: [',', 'b,c'] });
1447
+ st.deepEqual(qs.parse('a=,b,', options), { a: ['', 'b', ''] });
1448
+ st.deepEqual(qs.parse('a=b,c&a=d,e', options), { a: ['b', 'c', 'd', 'e'] });
1449
+ st.deepEqual(qs.parse('a[]=b,c&a[]=d,e', options), { a: [['b', 'c'], ['d', 'e']] });
1450
+ st.deepEqual(qs.parse('a[0]=b,c', options), { a: [['b', 'c']] });
1451
+ st.deepEqual(qs.parse('utf8=%26%2310003%3B&a=b,' + urlEncodedNumSmiley, {
1452
+ comma: true,
1453
+ charsetSentinel: true,
1454
+ interpretNumericEntities: true
1455
+ }), { a: ['b', '☺'] });
1456
+ st.deepEqual(qs.parse('a=b,c,d', {
1457
+ comma: true,
1458
+ charset: 'iso-8859-1',
1459
+ interpretNumericEntities: true,
1460
+ arrayLimit: 2
1461
+ }), { a: { 0: 'b', 1: 'c', 2: 'd' } });
1462
+ st['throws'](function () {
1463
+ qs.parse('a=b,c,d', {
1464
+ comma: true,
1465
+ charset: 'iso-8859-1',
1466
+ interpretNumericEntities: true,
1467
+ arrayLimit: 2,
1468
+ throwOnLimitExceeded: true
1469
+ });
1470
+ }, RangeError);
1471
+ st.end();
1472
+ });
1473
+
1474
+ t.test('preserves falsy decoder results inside comma arrays', function (st) {
1475
+ st.deepEqual(qs.parse('a=null,0,false,' + urlEncodedNumSmiley, {
1476
+ comma: true,
1477
+ charset: 'iso-8859-1',
1478
+ interpretNumericEntities: true,
1479
+ decoder: function (str, defaultDecoder, charset, type) {
1480
+ if (type === 'value') {
1481
+ if (str === 'null') {
1482
+ return null;
1483
+ }
1484
+ if (str === '0') {
1485
+ return 0;
1486
+ }
1487
+ if (str === 'false') {
1488
+ return false;
1489
+ }
1490
+ }
1491
+ return defaultDecoder(str, defaultDecoder, charset, type);
1492
+ }
1493
+ }), { a: [null, 0, false, '☺'] });
1494
+ st.end();
1495
+ });
1496
+
1200
1497
  t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) {
1201
1498
  st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' });
1202
1499
  st.end();
@@ -1320,6 +1617,41 @@ test('parse()', function (t) {
1320
1617
  sst.end();
1321
1618
  });
1322
1619
 
1620
+ st.test('zero and negative arrayLimit allow non-array values', function (sst) {
1621
+ forEach([0, -1], function (arrayLimit) {
1622
+ var options = { arrayLimit: arrayLimit, throwOnLimitExceeded: true };
1623
+ var label = 'arrayLimit ' + arrayLimit;
1624
+ sst.deepEqual(qs.parse('a=b&c[d]=e', options), { a: 'b', c: { d: 'e' } }, label + ': query string fields');
1625
+ sst.deepEqual(qs.parse('a=b', { arrayLimit: arrayLimit, throwOnLimitExceeded: true, comma: true }), { a: 'b' }, label + ': a value without commas when comma is enabled');
1626
+ sst.deepEqual(qs.parse({ a: 'b', 'c[d]': 'e' }, options), { a: 'b', c: { d: 'e' } }, label + ': object input fields');
1627
+ sst.deepEqual(qs.parse({ a: [] }, options), { a: [] }, label + ': an empty input array has no elements');
1628
+ sst.deepEqual(
1629
+ qs.parse('a=b&a=c', { arrayLimit: arrayLimit, throwOnLimitExceeded: true, duplicates: 'last' }),
1630
+ { a: 'c' },
1631
+ label + ': replacing a duplicate does not create an array'
1632
+ );
1633
+ sst.deepEqual(
1634
+ qs.parse('a[]=', { arrayLimit: arrayLimit, throwOnLimitExceeded: true, allowEmptyArrays: true }),
1635
+ { a: [] },
1636
+ label + ': an empty array has no elements to exceed the limit'
1637
+ );
1638
+ sst.deepEqual(qs.parse({ a: ['b'] }, options), { a: ['b'] }, label + ': an array value in object input is left as-is');
1639
+ sst.deepEqual(qs.parse({ 'a[b]': ['x'] }, options), { a: { b: ['x'] } }, label + ': an array value under a nested key in object input is left as-is');
1640
+ sst.deepEqual(qs.parse('a.b=c', { arrayLimit: arrayLimit, throwOnLimitExceeded: true, allowDots: true }), { a: { b: 'c' } }, label + ': dotted keys');
1641
+ sst.deepEqual(
1642
+ qs.parse('a=b&a=c', { arrayLimit: arrayLimit, throwOnLimitExceeded: true, duplicates: 'first' }),
1643
+ { a: 'b' },
1644
+ label + ': keeping the first duplicate does not create an array'
1645
+ );
1646
+ sst.deepEqual(
1647
+ qs.parse('a[]=b', { arrayLimit: arrayLimit, throwOnLimitExceeded: true, parseArrays: false }),
1648
+ { a: { 0: 'b' } },
1649
+ label + ': array syntax with parseArrays false does not create an array'
1650
+ );
1651
+ });
1652
+ sst.end();
1653
+ });
1654
+
1323
1655
  st.test('does not throw when at limit', function (sst) {
1324
1656
  // 3 elements = limit of 3, should not throw
1325
1657
  var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3, throwOnLimitExceeded: true });
@@ -1328,6 +1660,58 @@ test('parse()', function (t) {
1328
1660
  sst.end();
1329
1661
  });
1330
1662
 
1663
+ st.test('zero and negative arrayLimit', function (sst) {
1664
+ forEach([0, -1], function (arrayLimit) {
1665
+ var options = { arrayLimit: arrayLimit };
1666
+ var throwOptions = { arrayLimit: arrayLimit, throwOnLimitExceeded: true };
1667
+ var label = 'arrayLimit ' + arrayLimit;
1668
+
1669
+ sst.deepEqual(qs.parse('a=b&c[d]=e', options), { a: 'b', c: { d: 'e' } }, label + ': scalar and object fields are unaffected');
1670
+ sst.deepEqual(qs.parse('a[]=b', options), { a: { 0: 'b' } }, label + ': a bracket array becomes an object');
1671
+ sst.deepEqual(qs.parse('a[]=b&a[]=c', options), { a: { 0: 'b', 1: 'c' } }, label + ': a multi-element bracket array becomes an object');
1672
+ sst.deepEqual(qs.parse('a[0]=b', options), { a: { 0: 'b' } }, label + ': an indexed array becomes an object');
1673
+ sst.deepEqual(qs.parse('a=b&a=c', options), { a: { 0: 'b', 1: 'c' } }, label + ': combined duplicates become an object');
1674
+ sst.deepEqual(qs.parse('a[]=', options), { a: { 0: '' } }, label + ': an empty-string element still counts as an element');
1675
+ sst.deepEqual(qs.parse('a[]=', { arrayLimit: arrayLimit, allowEmptyArrays: true }), { a: [] }, label + ': an empty array has no elements');
1676
+ sst.deepEqual(qs.parse({ 'a[]': 'b' }, options), { a: { 0: 'b' } }, label + ': a bracket key in object input becomes an object');
1677
+ sst.deepEqual(qs.parse({ a: ['b'] }, options), { a: ['b'] }, label + ': an array value in object input is left as-is');
1678
+ sst.deepEqual(qs.parse({ a: [] }, options), { a: [] }, label + ': an empty array value in object input is left as-is');
1679
+
1680
+ var error = arrayLimit === 0
1681
+ ? new RangeError('Array limit exceeded. Only 0 elements allowed in an array.')
1682
+ : RangeError;
1683
+ sst['throws'](function () { qs.parse('a[]=b', throwOptions); }, error, label + ': throws on a bracket array');
1684
+ sst['throws'](function () { qs.parse('a[0]=b', throwOptions); }, error, label + ': throws on an indexed array');
1685
+ sst['throws'](function () { qs.parse('a=b&a=c', throwOptions); }, error, label + ': throws on combined duplicates');
1686
+ sst['throws'](function () { qs.parse('a[]=', throwOptions); }, error, label + ': throws on an empty-string element');
1687
+ sst['throws'](function () { qs.parse({ 'a[]': 'b' }, throwOptions); }, error, label + ': throws on a bracket key in object input');
1688
+ });
1689
+
1690
+ sst.end();
1691
+ });
1692
+
1693
+ st.test('zero and negative arrayLimit with comma', function (sst) {
1694
+ forEach([0, -1], function (arrayLimit) {
1695
+ var options = { arrayLimit: arrayLimit, comma: true };
1696
+ var throwOptions = { arrayLimit: arrayLimit, comma: true, throwOnLimitExceeded: true };
1697
+ var label = 'arrayLimit ' + arrayLimit;
1698
+
1699
+ sst.deepEqual(qs.parse('a=b', options), { a: 'b' }, label + ': a value without commas is unaffected');
1700
+ sst.deepEqual(qs.parse('a=b,c', options), { a: { 0: 'b', 1: 'c' } }, label + ': a comma value becomes an object');
1701
+ sst.deepEqual(qs.parse('a[]=b,c', options), { a: { 0: ['b', 'c'] } }, label + ': a bracket array holding a comma group becomes an object');
1702
+ sst.deepEqual(qs.parse('a[0]=b,c', options), { a: { 0: { 0: 'b', 1: 'c' } } }, label + ': an indexed comma group becomes an object');
1703
+
1704
+ var error = arrayLimit === 0
1705
+ ? new RangeError('Array limit exceeded. Only 0 elements allowed in an array.')
1706
+ : RangeError;
1707
+ sst['throws'](function () { qs.parse('a=b,c', throwOptions); }, error, label + ': throws on a comma value');
1708
+ sst['throws'](function () { qs.parse('a[]=b,c', throwOptions); }, error, label + ': throws on a comma group under `[]=`');
1709
+ sst['throws'](function () { qs.parse('a[0]=b,c', throwOptions); }, error, label + ': throws on an indexed comma group');
1710
+ });
1711
+
1712
+ sst.end();
1713
+ });
1714
+
1331
1715
  st.test('converts array to object if length is greater than limit', function (sst) {
1332
1716
  var result = qs.parse('a[1]=1&a[2]=2&a[3]=3&a[4]=4&a[5]=5&a[6]=6', { arrayLimit: 5 });
1333
1717
 
@@ -1463,12 +1847,113 @@ test('parse()', function (t) {
1463
1847
  sst.end();
1464
1848
  });
1465
1849
 
1850
+ st.test('counts the elements of a sparse indexed array on merge, not its holes', function (sst) {
1851
+ sst.deepEqual(qs.parse('a[]=new&a[19]=19&a[0]=0'), { a: ['new', '19', '0'] }, 'an array merged into a sparse array');
1852
+ sst.deepEqual(qs.parse('a[]=new&a[19]=19&a[0]=0', { throwOnLimitExceeded: true }), { a: ['new', '19', '0'] }, 'and it does not throw');
1853
+ sst.deepEqual(qs.parse('a[0]=w&a[19]=x&a[]=y'), { a: ['w', 'x', 'y'] }, 'a bracket value appended after a high index');
1854
+ sst.deepEqual(qs.parse('a[19]=x&a=y'), { a: ['x', 'y'] }, 'a scalar merged into a sparse array');
1855
+ sst.deepEqual(qs.parse('a[19]=x&a=y', { throwOnLimitExceeded: true }), { a: ['x', 'y'] }, 'and it does not throw');
1856
+
1857
+ sst.deepEqual(
1858
+ qs.parse('a[1]=x&a[]=y&a[]=z', { arrayLimit: 2 }),
1859
+ { a: { 0: 'y', 1: 'x', 2: 'z' } },
1860
+ 'more elements than arrayLimit still converts when the array has holes'
1861
+ );
1862
+ sst['throws'](
1863
+ function () { qs.parse('a[1]=x&a[]=y&a[]=z', { arrayLimit: 2, throwOnLimitExceeded: true }); },
1864
+ new RangeError('Array limit exceeded. Only 2 elements allowed in an array.'),
1865
+ 'and throws with throwOnLimitExceeded'
1866
+ );
1867
+
1868
+ sst.end();
1869
+ });
1870
+
1871
+ st.test('enforces arrayLimit when a strictMerge conflict appends to its container', function (sst) {
1872
+ var aliased = 'a[z]=o&a=p&a[y]=q&[a]=r';
1873
+ sst['throws'](
1874
+ function () { qs.parse(aliased, { arrayLimit: 2, throwOnLimitExceeded: true }); },
1875
+ new RangeError('Array limit exceeded. Only 2 elements allowed in an array.'),
1876
+ 'a third conflicting value throws once the container would exceed arrayLimit'
1877
+ );
1878
+ sst.deepEqual(
1879
+ qs.parse(aliased, { arrayLimit: 3, throwOnLimitExceeded: true }),
1880
+ { a: { 0: { z: 'o' }, 1: 'p', 2: 'r', y: 'q' } },
1881
+ 'appends while the container stays within arrayLimit'
1882
+ );
1883
+ sst.deepEqual(
1884
+ qs.parse(aliased, { arrayLimit: 2 }),
1885
+ { a: { 0: { z: 'o' }, 1: 'p', 2: 'r', y: 'q' } },
1886
+ 'appends without throwing when throwOnLimitExceeded is not set'
1887
+ );
1888
+
1889
+ sst.end();
1890
+ });
1891
+
1892
+ st.test('enforces arrayLimit when differently spelled keys collide', function (sst) {
1893
+ sst['throws'](
1894
+ function () { qs.parse('[a]=x&a=y', { arrayLimit: 1, throwOnLimitExceeded: true }); },
1895
+ new RangeError('Array limit exceeded. Only 1 element allowed in an array.'),
1896
+ 'two primitives throw, as `a=x&a=y` does'
1897
+ );
1898
+ sst['throws'](
1899
+ function () { qs.parse('a[b]=x&a=y', { arrayLimit: 1, throwOnLimitExceeded: true }); },
1900
+ new RangeError('Array limit exceeded. Only 1 element allowed in an array.'),
1901
+ 'an object and a primitive throw under strictMerge'
1902
+ );
1903
+ sst.deepEqual(
1904
+ qs.parse('[a]=x&a=y', { arrayLimit: 1 }),
1905
+ { a: { 0: 'x', 1: 'y' } },
1906
+ 'without throwOnLimitExceeded, two primitives convert to an object, as `a=x&a=y` does'
1907
+ );
1908
+ sst.deepEqual(
1909
+ qs.parse('a[b]=x&a=y', { arrayLimit: 1 }),
1910
+ { a: { 0: { b: 'x' }, 1: 'y' } },
1911
+ 'and so do an object and a primitive'
1912
+ );
1913
+ sst.deepEqual(
1914
+ qs.parse('a[b]=x&a=y', { arrayLimit: 2, throwOnLimitExceeded: true }),
1915
+ { a: [{ b: 'x' }, 'y'] },
1916
+ 'a collision within arrayLimit is still an array'
1917
+ );
1918
+
1919
+ sst.end();
1920
+ });
1921
+
1466
1922
  st.test('does not throw when cumulative comma combine stays within arrayLimit', function (sst) {
1467
1923
  var result = qs.parse('a=1,2,3&a=4', { comma: true, arrayLimit: 5, throwOnLimitExceeded: true });
1468
1924
  sst.deepEqual(result, { a: ['1', '2', '3', '4'] }, 'combined array within limit is preserved');
1469
1925
  sst.end();
1470
1926
  });
1471
1927
 
1928
+ st.test('throws when a comma array at arrayLimit is combined with one more value', function (sst) {
1929
+ var error = new RangeError('Array limit exceeded. Only 2 elements allowed in an array.');
1930
+ sst['throws'](
1931
+ function () { qs.parse('a=x,y&a=z', { comma: true, arrayLimit: 2, throwOnLimitExceeded: true }); },
1932
+ error,
1933
+ 'a plain value appended to a full comma array'
1934
+ );
1935
+ sst['throws'](
1936
+ function () { qs.parse('a=x&a=y,z', { comma: true, arrayLimit: 2, throwOnLimitExceeded: true }); },
1937
+ error,
1938
+ 'a comma value appended to a plain value'
1939
+ );
1940
+ sst.end();
1941
+ });
1942
+
1943
+ st.test('does not throw when a duplicate of a full comma array is discarded or replaces it', function (sst) {
1944
+ sst.deepEqual(
1945
+ qs.parse('a=x,y&a=z', { comma: true, arrayLimit: 2, throwOnLimitExceeded: true, duplicates: 'first' }),
1946
+ { a: ['x', 'y'] },
1947
+ 'duplicates: first keeps the full array'
1948
+ );
1949
+ sst.deepEqual(
1950
+ qs.parse('a=x,y&a=z', { comma: true, arrayLimit: 2, throwOnLimitExceeded: true, duplicates: 'last' }),
1951
+ { a: 'z' },
1952
+ 'duplicates: last replaces the full array'
1953
+ );
1954
+ sst.end();
1955
+ });
1956
+
1472
1957
  st.test('silently combines to an overflow object when throwOnLimitExceeded is not set', function (sst) {
1473
1958
  var result = qs.parse('a=1,2,3&a=4,5,6', { comma: true, arrayLimit: 5 });
1474
1959
  sst.deepEqual(result, { a: { 0: '1', 1: '2', 2: '3', 3: '4', 4: '5', 5: '6' } }, 'converts to object without throwing');
@@ -1807,6 +2292,28 @@ test('`duplicates` option', function (t) {
1807
2292
  st.end();
1808
2293
  });
1809
2294
 
2295
+ t.test('`[]=` in a value does not force combining', function (st) {
2296
+ st.deepEqual(
2297
+ qs.parse('a[b]=1&a[b]=2[]=3', { duplicates: 'last' }),
2298
+ { a: { b: '2[]=3' } },
2299
+ 'duplicates last: `[]=` in the value is not a bracketed key'
2300
+ );
2301
+
2302
+ st.deepEqual(
2303
+ qs.parse('a[b]=1&a[b]=2[]=3', { duplicates: 'first' }),
2304
+ { a: { b: '1' } },
2305
+ 'duplicates first: `[]=` in the value is not a bracketed key'
2306
+ );
2307
+
2308
+ st.deepEqual(
2309
+ qs.parse('a[b]=1&a[b]=2[]=3', { duplicates: 'combine' }),
2310
+ { a: { b: ['1', '2[]=3'] } },
2311
+ 'duplicates combine: still combines'
2312
+ );
2313
+
2314
+ st.end();
2315
+ });
2316
+
1810
2317
  t.end();
1811
2318
  });
1812
2319