@sap/cds 8.9.3 → 9.0.2

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 (622) hide show
  1. package/CHANGELOG.md +122 -680
  2. package/LICENSE +15 -21
  3. package/README.md +1 -1
  4. package/_i18n/i18n_sl.properties +3 -3
  5. package/_i18n/messages.properties +1 -1
  6. package/app/index.js +1 -1
  7. package/bin/serve.js +17 -19
  8. package/eslint.config.mjs +7 -1
  9. package/lib/compile/etc/_localized.js +3 -24
  10. package/lib/compile/etc/yaml.js +6 -15
  11. package/lib/compile/for/odata.js +2 -2
  12. package/lib/compile/load.js +15 -4
  13. package/lib/compile/minify.js +1 -0
  14. package/lib/compile/to/edm-files.js +4 -33
  15. package/lib/compile/to/hdbtabledata.js +16 -3
  16. package/lib/compile/to/sql.js +1 -2
  17. package/lib/core/classes.js +1 -0
  18. package/lib/core/linked-csn.js +8 -8
  19. package/lib/dbs/cds-deploy.js +4 -3
  20. package/lib/env/cds-env.js +9 -9
  21. package/lib/env/cds-requires.js +23 -50
  22. package/lib/env/defaults.js +15 -44
  23. package/lib/env/schemas/cds-package.js +1 -1
  24. package/lib/i18n/index.js +1 -0
  25. package/lib/i18n/locale.js +41 -0
  26. package/lib/index.js +25 -15
  27. package/lib/log/cds-error.js +12 -3
  28. package/lib/log/cds-log.js +43 -18
  29. package/lib/log/format/aspects/als.js +2 -15
  30. package/lib/plugins.js +11 -11
  31. package/lib/ql/CREATE.js +1 -1
  32. package/lib/ql/DELETE.js +1 -1
  33. package/lib/ql/DROP.js +1 -1
  34. package/lib/ql/INSERT.js +9 -18
  35. package/lib/ql/SELECT.js +12 -19
  36. package/lib/ql/UPDATE.js +1 -1
  37. package/lib/ql/UPSERT.js +1 -0
  38. package/lib/ql/Whereable.js +7 -6
  39. package/lib/ql/cds-ql.js +0 -12
  40. package/lib/ql/cds.ql-Query.js +28 -68
  41. package/lib/ql/cds.ql-infer.js +97 -108
  42. package/lib/ql/resolve.js +2 -3
  43. package/lib/req/context.js +5 -4
  44. package/lib/req/request.js +46 -42
  45. package/lib/req/response.js +5 -9
  46. package/lib/req/spawn.js +38 -0
  47. package/lib/req/validate.js +9 -8
  48. package/lib/srv/bindings.js +2 -1
  49. package/lib/srv/cds-connect.js +5 -2
  50. package/lib/srv/cds-serve.js +0 -2
  51. package/lib/srv/cds.Service.js +146 -86
  52. package/lib/srv/middlewares/auth/ias-auth.js +99 -88
  53. package/lib/srv/middlewares/auth/jwt-auth.js +44 -57
  54. package/lib/srv/middlewares/cds-context.js +1 -1
  55. package/lib/srv/middlewares/ctx-model.js +1 -1
  56. package/lib/srv/middlewares/errors.js +34 -42
  57. package/lib/srv/protocols/hcql.js +35 -25
  58. package/lib/srv/protocols/index.js +0 -9
  59. package/lib/srv/protocols/odata-v4.js +1 -6
  60. package/lib/srv/srv-dispatch.js +29 -31
  61. package/lib/srv/srv-handlers.js +14 -46
  62. package/lib/srv/srv-methods.js +15 -37
  63. package/lib/srv/srv-tx.js +19 -25
  64. package/lib/test/cds-test.js +4 -263
  65. package/lib/utils/cds-utils.js +18 -2
  66. package/lib/utils/tar.js +6 -8
  67. package/lib/utils/unit.js +19 -0
  68. package/libx/_runtime/.eslintrc +1 -1
  69. package/libx/_runtime/cds-services/util/assert.js +2 -72
  70. package/libx/_runtime/cds.js +13 -6
  71. package/libx/_runtime/common/Service.js +33 -75
  72. package/libx/_runtime/common/aspects/any.js +0 -38
  73. package/libx/_runtime/common/constants/events.js +5 -13
  74. package/libx/_runtime/common/generic/auth/autoexpose.js +10 -24
  75. package/libx/_runtime/common/generic/auth/capabilities.js +23 -20
  76. package/libx/_runtime/common/generic/auth/expand.js +3 -3
  77. package/libx/_runtime/common/generic/auth/index.js +3 -3
  78. package/libx/_runtime/common/generic/auth/insertOnly.js +3 -3
  79. package/libx/_runtime/common/generic/auth/readOnly.js +4 -4
  80. package/libx/_runtime/common/generic/auth/requires.js +4 -4
  81. package/libx/_runtime/common/generic/auth/restrict.js +12 -29
  82. package/libx/_runtime/common/generic/auth/service.js +3 -3
  83. package/libx/_runtime/common/generic/auth/utils.js +2 -12
  84. package/libx/_runtime/common/generic/crud.js +22 -53
  85. package/libx/_runtime/common/generic/etag.js +18 -31
  86. package/libx/_runtime/common/generic/input.js +51 -123
  87. package/libx/_runtime/common/generic/paging.js +4 -4
  88. package/libx/_runtime/common/generic/sorting.js +8 -19
  89. package/libx/_runtime/common/generic/stream-only.js +26 -0
  90. package/libx/_runtime/common/generic/stream.js +16 -48
  91. package/libx/_runtime/common/generic/temporal.js +15 -6
  92. package/libx/_runtime/common/utils/binary.js +1 -26
  93. package/libx/_runtime/common/utils/compareJson.js +1 -2
  94. package/libx/_runtime/common/utils/cqn.js +15 -14
  95. package/libx/_runtime/common/utils/differ.js +121 -44
  96. package/libx/_runtime/common/utils/keys.js +4 -5
  97. package/libx/_runtime/common/utils/postProcess.js +2 -2
  98. package/libx/_runtime/common/utils/propagateForeignKeys.js +21 -36
  99. package/libx/_runtime/common/utils/resolveView.js +106 -142
  100. package/libx/_runtime/common/utils/rewriteAsterisks.js +45 -12
  101. package/libx/_runtime/common/utils/streamProp.js +3 -9
  102. package/libx/_runtime/common/utils/waitingTime.js +13 -1
  103. package/libx/_runtime/fiori/lean-draft.js +174 -196
  104. package/libx/_runtime/messaging/common-utils/connections.js +1 -1
  105. package/libx/_runtime/messaging/enterprise-messaging-utils/EMManagement.js +1 -0
  106. package/libx/_runtime/messaging/enterprise-messaging-utils/registerEndpoints.js +3 -3
  107. package/libx/_runtime/messaging/enterprise-messaging.js +2 -2
  108. package/libx/_runtime/messaging/file-based.js +2 -4
  109. package/libx/_runtime/messaging/redis-messaging.js +1 -1
  110. package/libx/_runtime/messaging/service.js +5 -19
  111. package/libx/_runtime/remote/Service.js +20 -33
  112. package/libx/_runtime/remote/utils/client.js +7 -25
  113. package/libx/_runtime/remote/utils/cloudSdkProvider.js +8 -13
  114. package/libx/_runtime/remote/utils/data.js +3 -34
  115. package/libx/_runtime/types/api.js +0 -8
  116. package/libx/_runtime/ucl/Service.js +1 -9
  117. package/libx/common/utils/path.js +2 -3
  118. package/libx/common/utils/streaming.js +2 -1
  119. package/libx/http/HttpRequest.js +13 -0
  120. package/libx/{odata/middleware → http}/body-parser.js +7 -5
  121. package/libx/http/location.js +41 -0
  122. package/libx/http/put.js +36 -0
  123. package/libx/odata/ODataAdapter.js +25 -59
  124. package/libx/odata/index.js +10 -23
  125. package/libx/odata/middleware/batch.js +29 -20
  126. package/libx/odata/middleware/create.js +6 -13
  127. package/libx/odata/middleware/delete.js +0 -4
  128. package/libx/odata/middleware/error.js +83 -27
  129. package/libx/odata/middleware/metadata.js +14 -25
  130. package/libx/odata/middleware/operation.js +10 -26
  131. package/libx/odata/middleware/read.js +10 -18
  132. package/libx/odata/middleware/stream.js +14 -34
  133. package/libx/odata/middleware/update.js +17 -26
  134. package/libx/odata/parse/afterburner.js +20 -16
  135. package/libx/odata/parse/cqn2odata.js +3 -1
  136. package/libx/odata/parse/grammar.peggy +221 -114
  137. package/libx/odata/parse/parser.js +1 -1
  138. package/libx/odata/utils/index.js +10 -38
  139. package/libx/odata/utils/metadata.js +1 -4
  140. package/libx/odata/utils/normalizeTimeData.js +4 -7
  141. package/libx/odata/utils/readAfterWrite.js +1 -1
  142. package/libx/{outbox/OutboxRunner.js → queue/TaskRunner.js} +17 -22
  143. package/libx/queue/index.js +530 -0
  144. package/libx/rest/RestAdapter.js +43 -82
  145. package/libx/rest/middleware/create.js +35 -33
  146. package/libx/rest/middleware/delete.js +9 -7
  147. package/libx/rest/middleware/error.js +11 -18
  148. package/libx/rest/middleware/operation.js +44 -137
  149. package/libx/rest/middleware/parse.js +114 -130
  150. package/libx/rest/middleware/read.js +23 -21
  151. package/libx/rest/middleware/update.js +20 -32
  152. package/libx/rest/middleware/upsert.js +31 -0
  153. package/libx/rest/pre-processing.js +8 -18
  154. package/package.json +6 -7
  155. package/srv/outbox.cds +1 -0
  156. package/bin/test.js +0 -125
  157. package/lib/env/plugins.js +0 -18
  158. package/lib/req/cds-context.js +0 -52
  159. package/lib/req/locale.js +0 -35
  160. package/lib/srv/cds.ServiceClient.js +0 -96
  161. package/lib/srv/cds.ServiceProvider.js +0 -20
  162. package/lib/srv/protocols/okra.js +0 -22
  163. package/lib/test/axios.js +0 -63
  164. package/lib/test/data.js +0 -52
  165. package/lib/test/expect.js +0 -343
  166. package/lib/test/reporter.js +0 -176
  167. package/libx/_runtime/cds-services/adapter/odata-v4/OData.js +0 -275
  168. package/libx/_runtime/cds-services/adapter/odata-v4/ODataRequest.js +0 -217
  169. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/action.js +0 -101
  170. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/create.js +0 -79
  171. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/debug.js +0 -6
  172. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/delete.js +0 -60
  173. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/error.js +0 -161
  174. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/language.js +0 -7
  175. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/metadata.js +0 -59
  176. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/read.js +0 -602
  177. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/request.js +0 -64
  178. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/update.js +0 -238
  179. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/ExpressionToCQN.js +0 -327
  180. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/applyToCQN.js +0 -243
  181. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/boundToCQN.js +0 -43
  182. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/createToCQN.js +0 -37
  183. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/deleteToCQN.js +0 -36
  184. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/expandToCQN.js +0 -250
  185. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/index.js +0 -81
  186. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/orderByToCQN.js +0 -51
  187. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/readToCQN.js +0 -389
  188. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/searchToCQN.js +0 -43
  189. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/selectToCQN.js +0 -35
  190. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/updateToCQN.js +0 -38
  191. package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/utils.js +0 -217
  192. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/FeatureSupport.js +0 -70
  193. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/FullQualifiedName.js +0 -94
  194. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAction.js +0 -139
  195. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlActionImport.js +0 -82
  196. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAliasInfo.js +0 -44
  197. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAnnotation.js +0 -104
  198. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAnnotations.js +0 -71
  199. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlComplexType.js +0 -133
  200. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntityContainer.js +0 -142
  201. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntityContainerInfo.js +0 -37
  202. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntitySet.js +0 -107
  203. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntityType.js +0 -177
  204. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEnumMember.js +0 -61
  205. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEnumType.js +0 -105
  206. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlFunction.js +0 -149
  207. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlFunctionImport.js +0 -105
  208. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlInclude.js +0 -68
  209. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlIncludeAnnotation.js +0 -71
  210. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlJsonProvider.js +0 -1365
  211. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlNavigationProperty.js +0 -190
  212. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlNavigationPropertyBinding.js +0 -37
  213. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlOnDelete.js +0 -70
  214. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlParameter.js +0 -227
  215. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlProperty.js +0 -250
  216. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlPropertyRef.js +0 -49
  217. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlProvider.js +0 -190
  218. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlReference.js +0 -97
  219. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlReferentialConstraint.js +0 -60
  220. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlReturnType.js +0 -216
  221. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlSchema.js +0 -328
  222. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlSingleton.js +0 -84
  223. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlTerm.js +0 -320
  224. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlTypeDefinition.js +0 -193
  225. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlAnnotationExpression.js +0 -73
  226. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlAnnotationPathExpression.js +0 -33
  227. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlApplyExpression.js +0 -105
  228. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlArithmeticExpression.js +0 -72
  229. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlBinaryExpression.js +0 -110
  230. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlCastExpression.js +0 -188
  231. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlCollectionExpression.js +0 -48
  232. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlConstantExpression.js +0 -116
  233. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlIfExpression.js +0 -62
  234. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlIsOfExpression.js +0 -200
  235. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlLabeledElementExpression.js +0 -42
  236. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlLabeledElementReferenceExpression.js +0 -31
  237. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlModelElementPathExpression.js +0 -29
  238. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNavigationPropertyPathExpression.js +0 -31
  239. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNegationExpression.js +0 -27
  240. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNotExpression.js +0 -31
  241. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNullExpression.js +0 -18
  242. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlPathExpression.js +0 -32
  243. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlPropertyPathExpression.js +0 -32
  244. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlPropertyValueExpression.js +0 -55
  245. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlRecordExpression.js +0 -54
  246. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlUnknownExpression.js +0 -44
  247. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlUrlRefExpression.js +0 -31
  248. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmBindingTarget.js +0 -163
  249. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmFaceted.js +0 -136
  250. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmOperation.js +0 -205
  251. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmOperationImport.js +0 -126
  252. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmStructuredType.js +0 -275
  253. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/Edm.js +0 -775
  254. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmAction.js +0 -15
  255. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmActionImport.js +0 -39
  256. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmAnnotation.js +0 -106
  257. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmAnnotations.js +0 -57
  258. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmComplexType.js +0 -48
  259. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEntityContainer.js +0 -455
  260. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEntitySet.js +0 -43
  261. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEntityType.js +0 -119
  262. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEnumMember.js +0 -69
  263. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEnumType.js +0 -117
  264. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmFunction.js +0 -39
  265. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmFunctionImport.js +0 -59
  266. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmInclude.js +0 -65
  267. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmIncludeAnnotation.js +0 -48
  268. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmKeyPropertyRef.js +0 -79
  269. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmNavigationProperty.js +0 -182
  270. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmNavigationPropertyBinding.js +0 -46
  271. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmOnDelete.js +0 -44
  272. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmParameter.js +0 -22
  273. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmPrimitiveType.js +0 -31
  274. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmPrimitiveTypeKind.js +0 -70
  275. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmProperty.js +0 -39
  276. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmProvider.js +0 -399
  277. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmReference.js +0 -88
  278. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmReferentialConstraint.js +0 -71
  279. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmReturnType.js +0 -14
  280. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmSchema.js +0 -355
  281. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmSingleton.js +0 -15
  282. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmTerm.js +0 -75
  283. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmType.js +0 -95
  284. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmTypeDefinition.js +0 -121
  285. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmTypeFactory.js +0 -28
  286. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmVocabularyTermType.js +0 -41
  287. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/KeyFactory.js +0 -67
  288. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/Target.js +0 -56
  289. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/TransientStructuredType.js +0 -244
  290. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/AnnotationExpressionFactory.js +0 -130
  291. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmAnnotationExpression.js +0 -28
  292. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmAnnotationPathExpression.js +0 -42
  293. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmApplyExpression.js +0 -85
  294. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmArithmeticExpression.js +0 -92
  295. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmBinaryExpression.js +0 -96
  296. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmCastExpression.js +0 -129
  297. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmCollectionExpression.js +0 -52
  298. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmConstantExpression.js +0 -83
  299. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmIfExpression.js +0 -103
  300. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmIsOfExpression.js +0 -125
  301. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmLabeledElementExpression.js +0 -83
  302. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmLabeledElementReferenceExpression.js +0 -41
  303. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmModelElementPathExpression.js +0 -35
  304. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNavigationPropertyPathExpression.js +0 -37
  305. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNegationExpression.js +0 -70
  306. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNotExpression.js +0 -75
  307. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNullExpression.js +0 -50
  308. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmPathExpression.js +0 -38
  309. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmPropertyPathExpression.js +0 -37
  310. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmPropertyValueExpression.js +0 -72
  311. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmRecordExpression.js +0 -100
  312. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmUnknownExpression.js +0 -72
  313. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmUrlRefExpression.js +0 -73
  314. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/AbstractError.js +0 -82
  315. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/IllegalArgumentError.js +0 -58
  316. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/IllegalCallError.js +0 -21
  317. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/NotImplementedError.js +0 -19
  318. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/UriQueryOptionSemanticError.js +0 -49
  319. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/UriSemanticError.js +0 -48
  320. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/UriSyntaxError.js +0 -65
  321. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/ContentTypeInfo.js +0 -105
  322. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/JsonContentTypeInfo.js +0 -83
  323. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/JsonFormat.js +0 -141
  324. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/RepresentationKind.js +0 -251
  325. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpHeader.js +0 -42
  326. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpHeaderReader.js +0 -318
  327. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpMethod.js +0 -25
  328. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpStatusCode.js +0 -52
  329. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/Preferences.js +0 -32
  330. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/index.js +0 -69
  331. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/logging/LoggerFacade.js +0 -183
  332. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/AliasExpression.js +0 -47
  333. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ApplyParser.js +0 -946
  334. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/BinaryExpression.js +0 -124
  335. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ExpandItem.js +0 -76
  336. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ExpandParser.js +0 -384
  337. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/Expression.js +0 -46
  338. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ExpressionParser.js +0 -1988
  339. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/FilterParser.js +0 -34
  340. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/FunctionParameterParser.js +0 -106
  341. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/KeyPredicateParser.js +0 -155
  342. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/KeyValueParser.js +0 -213
  343. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/LiteralExpression.js +0 -43
  344. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/MemberExpression.js +0 -44
  345. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/MethodExpression.js +0 -146
  346. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/OrderByItem.js +0 -53
  347. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/OrderByParser.js +0 -69
  348. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ResourcePathParser.js +0 -848
  349. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/SearchParser.js +0 -127
  350. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/SelectItem.js +0 -80
  351. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/SelectParser.js +0 -294
  352. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/TypeLiteralExpression.js +0 -28
  353. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UnaryExpression.js +0 -64
  354. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriHelper.js +0 -65
  355. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriInfo.js +0 -165
  356. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriParameter.js +0 -107
  357. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriParser.js +0 -350
  358. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriResource.js +0 -602
  359. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriTokenizer.js +0 -1156
  360. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/AggregateExpression.js +0 -164
  361. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/AggregateTransformation.js +0 -38
  362. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/BottomTopTransformation.js +0 -93
  363. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ComputeExpression.js +0 -52
  364. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ComputeTransformation.js +0 -38
  365. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ConcatTransformation.js +0 -38
  366. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/CustomFunctionTransformation.js +0 -59
  367. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ExpandTransformation.js +0 -37
  368. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/FilterTransformation.js +0 -37
  369. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/GroupByItem.js +0 -71
  370. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/GroupByTransformation.js +0 -58
  371. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/IdentityTransformation.js +0 -17
  372. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/OrderByTransformation.js +0 -37
  373. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/SearchTransformation.js +0 -37
  374. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/SkipTransformation.js +0 -37
  375. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/TopTransformation.js +0 -37
  376. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/Transformation.js +0 -53
  377. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/info.md +0 -116
  378. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/utils/PrimitiveValueDecoder.js +0 -667
  379. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/utils/PrimitiveValueEncoder.js +0 -349
  380. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/utils/ValueConverter.js +0 -545
  381. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/validator/ParameterValidator.js +0 -124
  382. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/validator/ValueValidator.js +0 -743
  383. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/ServiceFactory.js +0 -234
  384. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchContext.js +0 -351
  385. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchErrorInfo.js +0 -61
  386. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchExitHandler.js +0 -239
  387. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchProcessor.js +0 -281
  388. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchValidator.js +0 -133
  389. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchedRequestExecutor.js +0 -92
  390. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ComponentManager.js +0 -63
  391. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/Context.js +0 -96
  392. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/Dispatcher.js +0 -147
  393. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataRequest.js +0 -458
  394. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataRequestInBatch.js +0 -147
  395. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataResponse.js +0 -314
  396. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataResponseInBatch.js +0 -83
  397. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/PlainHttpRequest.js +0 -175
  398. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/PlainHttpResponse.js +0 -106
  399. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/RequestContract.js +0 -111
  400. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ResponseContract.js +0 -111
  401. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ResponseHeaderSetter.js +0 -240
  402. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/Service.js +0 -417
  403. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ServiceResolutions.js +0 -24
  404. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ApplicationHttpReader.js +0 -157
  405. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/BatchJsonDeserializer.js +0 -171
  406. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/BatchRequestListBuilder.js +0 -196
  407. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/Cache.js +0 -154
  408. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ContentDeserializer.js +0 -222
  409. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/DataReader.js +0 -220
  410. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/DeserializerFactory.js +0 -240
  411. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/HeaderReader.js +0 -133
  412. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/LineReader.js +0 -61
  413. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/MultipartReader.js +0 -419
  414. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/PartReader.js +0 -99
  415. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/Reader.js +0 -52
  416. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ResourceJsonDeserializer.js +0 -673
  417. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/ApplicationError.js +0 -108
  418. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/BadRequestError.js +0 -21
  419. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/ConflictError.js +0 -11
  420. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/DeserializationError.js +0 -19
  421. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/InternalServerError.js +0 -20
  422. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/MethodNotAllowedError.js +0 -17
  423. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/NotAcceptableError.js +0 -21
  424. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/NotFoundError.js +0 -33
  425. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/PreconditionFailedError.js +0 -11
  426. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/PreconditionRequiredError.js +0 -11
  427. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/SerializationError.js +0 -19
  428. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/UnauthorizedError.js +0 -17
  429. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/AcceptTypeInfo.js +0 -86
  430. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/CharsetInfo.js +0 -76
  431. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/FormatDescription.js +0 -43
  432. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/FormatManager.js +0 -91
  433. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/RequestContentNegotiator.js +0 -62
  434. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/ResponseContentNegotiator.js +0 -321
  435. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/handler/BatchHandler.js +0 -36
  436. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/handler/MetadataHandler.js +0 -21
  437. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/handler/ServiceHandler.js +0 -25
  438. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/CustomPreference.js +0 -31
  439. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HeaderInfo.js +0 -79
  440. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HttpHeader.js +0 -59
  441. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HttpHeaderReader.js +0 -452
  442. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HttpStatusCode.js +0 -117
  443. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/Preferences.js +0 -222
  444. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/PreferencesApplied.js +0 -199
  445. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/index.js +0 -37
  446. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/Command.js +0 -31
  447. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/CommandExecutor.js +0 -94
  448. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/CommandFactory.js +0 -203
  449. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ConditionalRequestControlCommand.js +0 -52
  450. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ConditionalRequestPreValidationCommand.js +0 -59
  451. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ContentNegotiatorCommand.js +0 -70
  452. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DebugContentNegotiatorCommand.js +0 -59
  453. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DebugDeserializingCommand.js +0 -44
  454. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DebugSerializingCommand.js +0 -51
  455. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DeserializingCommand.js +0 -69
  456. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DispatcherCommand.js +0 -95
  457. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ErrorContentNegotiatorCommand.js +0 -44
  458. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ErrorSerializingCommand.js +0 -51
  459. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/EventListenerCommand.js +0 -59
  460. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/LocaleNegotiatorCommand.js +0 -56
  461. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/OdataVersionValidationCommand.js +0 -41
  462. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/OperationValidationCommand.js +0 -34
  463. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ParsePreferHeaderCommand.js +0 -47
  464. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/PresetResponseHeadersCommand.js +0 -47
  465. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/QueryOptionsParserCommand.js +0 -43
  466. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/QueryOptionsValidationCommand.js +0 -62
  467. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/RequestContentValidationCommand.js +0 -51
  468. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SendResponseCommand.js +0 -37
  469. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SerializingCommand.js +0 -159
  470. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetResponseHeadersCommand.js +0 -90
  471. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetStatuscodeCommand.js +0 -51
  472. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/UriParserCommand.js +0 -47
  473. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/logging/DebugLogger.js +0 -97
  474. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ApplicationHttpWriter.js +0 -65
  475. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/BatchJsonSerializer.js +0 -46
  476. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/BatchMultipartSerializer.js +0 -113
  477. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ContextURLFactory.js +0 -405
  478. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/DebugHtmlSerializer.js +0 -302
  479. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/DebugJsonSerializer.js +0 -515
  480. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ErrorJsonSerializer.js +0 -47
  481. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ErrorSerializer.js +0 -39
  482. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ErrorXmlSerializer.js +0 -98
  483. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ExpressionTreeImage.js +0 -404
  484. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/MetadataXmlSerializer.js +0 -1416
  485. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/MultipartWriter.js +0 -202
  486. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/NextLinkSerializer.js +0 -330
  487. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ResourceJsonSerializer.js +0 -1220
  488. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/SerializerFactory.js +0 -484
  489. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ServiceJsonSerializer.js +0 -89
  490. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/TrustedResourceJsonSerializer.js +0 -612
  491. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/debugview.html +0 -157
  492. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/BufferedWriter.js +0 -59
  493. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/ExpandHelper.js +0 -96
  494. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/MetadataCache.js +0 -136
  495. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/PerformanceMonitor.js +0 -221
  496. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/UriHelper.js +0 -157
  497. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/ConditionalRequestValidator.js +0 -79
  498. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/OperationValidator.js +0 -199
  499. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/RequestValidator.js +0 -392
  500. package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/VersionValidator.js +0 -62
  501. package/libx/_runtime/cds-services/adapter/odata-v4/to.js +0 -51
  502. package/libx/_runtime/cds-services/adapter/odata-v4/utils/data.js +0 -331
  503. package/libx/_runtime/cds-services/adapter/odata-v4/utils/handlerUtils.js +0 -159
  504. package/libx/_runtime/cds-services/adapter/odata-v4/utils/metaInfo.js +0 -404
  505. package/libx/_runtime/cds-services/adapter/odata-v4/utils/oDataConfiguration.js +0 -55
  506. package/libx/_runtime/cds-services/adapter/odata-v4/utils/omitValues.js +0 -86
  507. package/libx/_runtime/cds-services/adapter/odata-v4/utils/readAfterWrite.js +0 -107
  508. package/libx/_runtime/cds-services/adapter/odata-v4/utils/request.js +0 -64
  509. package/libx/_runtime/cds-services/adapter/odata-v4/utils/result.js +0 -385
  510. package/libx/_runtime/cds-services/adapter/odata-v4/utils/stream.js +0 -12
  511. package/libx/_runtime/cds-services/util/errors.js +0 -15
  512. package/libx/_runtime/common/aspects/relation.js +0 -40
  513. package/libx/_runtime/common/composition/data.js +0 -370
  514. package/libx/_runtime/common/composition/delete.js +0 -313
  515. package/libx/_runtime/common/composition/index.js +0 -22
  516. package/libx/_runtime/common/composition/insert.js +0 -108
  517. package/libx/_runtime/common/composition/tree.js +0 -275
  518. package/libx/_runtime/common/composition/update.js +0 -354
  519. package/libx/_runtime/common/composition/utils.js +0 -95
  520. package/libx/_runtime/common/error/constants.js +0 -20
  521. package/libx/_runtime/common/error/entry.js +0 -36
  522. package/libx/_runtime/common/error/frontend.js +0 -199
  523. package/libx/_runtime/common/error/index.js +0 -12
  524. package/libx/_runtime/common/error/log.js +0 -35
  525. package/libx/_runtime/common/error/standardError.js +0 -11
  526. package/libx/_runtime/common/error/utils.js +0 -18
  527. package/libx/_runtime/common/generic/auth/constants.js +0 -17
  528. package/libx/_runtime/common/generic/put.js +0 -85
  529. package/libx/_runtime/common/utils/columns.js +0 -177
  530. package/libx/_runtime/common/utils/compareJsonOLD.js +0 -280
  531. package/libx/_runtime/common/utils/cqn2cqn4sql.js +0 -1039
  532. package/libx/_runtime/common/utils/data.js +0 -16
  533. package/libx/_runtime/common/utils/dollar.js +0 -27
  534. package/libx/_runtime/common/utils/generateOnCond.js +0 -127
  535. package/libx/_runtime/common/utils/onlyKeysRemain.js +0 -10
  536. package/libx/_runtime/common/utils/path.js +0 -20
  537. package/libx/_runtime/common/utils/quotingStyles.js +0 -29
  538. package/libx/_runtime/common/utils/restrictions.js +0 -67
  539. package/libx/_runtime/common/utils/search2cqn4sql.js +0 -37
  540. package/libx/_runtime/common/utils/searchToLike.js +0 -56
  541. package/libx/_runtime/common/utils/stream.js +0 -103
  542. package/libx/_runtime/common/utils/ucsn.js +0 -119
  543. package/libx/_runtime/common/utils/union.js +0 -31
  544. package/libx/_runtime/common/utils/unionCqnTemplate.js +0 -174
  545. package/libx/_runtime/db/Service.js +0 -93
  546. package/libx/_runtime/db/data-conversion/post-processing.js +0 -175
  547. package/libx/_runtime/db/expand/expand-v2.js +0 -147
  548. package/libx/_runtime/db/expand/expandCQNToJoin.js +0 -1775
  549. package/libx/_runtime/db/expand/index.js +0 -13
  550. package/libx/_runtime/db/expand/rawToExpanded.js +0 -250
  551. package/libx/_runtime/db/generic/create.js +0 -30
  552. package/libx/_runtime/db/generic/delete.js +0 -18
  553. package/libx/_runtime/db/generic/index.js +0 -25
  554. package/libx/_runtime/db/generic/input.js +0 -227
  555. package/libx/_runtime/db/generic/read.js +0 -16
  556. package/libx/_runtime/db/generic/rewrite.js +0 -68
  557. package/libx/_runtime/db/generic/structured.js +0 -92
  558. package/libx/_runtime/db/generic/update.js +0 -97
  559. package/libx/_runtime/db/generic/virtual.js +0 -83
  560. package/libx/_runtime/db/query/delete.js +0 -39
  561. package/libx/_runtime/db/query/index.js +0 -13
  562. package/libx/_runtime/db/query/insert.js +0 -21
  563. package/libx/_runtime/db/query/read.js +0 -97
  564. package/libx/_runtime/db/query/run.js +0 -30
  565. package/libx/_runtime/db/query/update.js +0 -94
  566. package/libx/_runtime/db/result/InsertResult.js +0 -87
  567. package/libx/_runtime/db/sql-builder/BaseBuilder.js +0 -65
  568. package/libx/_runtime/db/sql-builder/CreateBuilder.js +0 -212
  569. package/libx/_runtime/db/sql-builder/DeleteBuilder.js +0 -87
  570. package/libx/_runtime/db/sql-builder/DropBuilder.js +0 -63
  571. package/libx/_runtime/db/sql-builder/ExpressionBuilder.js +0 -345
  572. package/libx/_runtime/db/sql-builder/FunctionBuilder.js +0 -232
  573. package/libx/_runtime/db/sql-builder/InsertBuilder.js +0 -494
  574. package/libx/_runtime/db/sql-builder/ReferenceBuilder.js +0 -135
  575. package/libx/_runtime/db/sql-builder/SelectBuilder.js +0 -482
  576. package/libx/_runtime/db/sql-builder/UpdateBuilder.js +0 -207
  577. package/libx/_runtime/db/sql-builder/UpsertBuilder.js +0 -25
  578. package/libx/_runtime/db/sql-builder/annotations.js +0 -50
  579. package/libx/_runtime/db/sql-builder/arrayed.js +0 -4
  580. package/libx/_runtime/db/sql-builder/dataTypes.js +0 -59
  581. package/libx/_runtime/db/sql-builder/dollar.js +0 -37
  582. package/libx/_runtime/db/sql-builder/index.js +0 -28
  583. package/libx/_runtime/db/sql-builder/sqlFactory.js +0 -104
  584. package/libx/_runtime/db/utils/coloredTxCommands.js +0 -7
  585. package/libx/_runtime/db/utils/columns.js +0 -41
  586. package/libx/_runtime/db/utils/deep.js +0 -71
  587. package/libx/_runtime/db/utils/generateAliases.js +0 -160
  588. package/libx/_runtime/db/utils/localized.js +0 -77
  589. package/libx/_runtime/db/utils/normalizeTimeData.js +0 -98
  590. package/libx/_runtime/db/utils/stream.js +0 -41
  591. package/libx/_runtime/hana/Service.js +0 -173
  592. package/libx/_runtime/hana/conversion.js +0 -73
  593. package/libx/_runtime/hana/customBuilder/CustomCreateBuilder.js +0 -11
  594. package/libx/_runtime/hana/customBuilder/CustomDeleteBuilder.js +0 -17
  595. package/libx/_runtime/hana/customBuilder/CustomDropBuilder.js +0 -12
  596. package/libx/_runtime/hana/customBuilder/CustomExpressionBuilder.js +0 -23
  597. package/libx/_runtime/hana/customBuilder/CustomFunctionBuilder.js +0 -34
  598. package/libx/_runtime/hana/customBuilder/CustomReferenceBuilder.js +0 -38
  599. package/libx/_runtime/hana/customBuilder/CustomSelectBuilder.js +0 -90
  600. package/libx/_runtime/hana/customBuilder/index.js +0 -11
  601. package/libx/_runtime/hana/driver.js +0 -205
  602. package/libx/_runtime/hana/dynatrace.js +0 -130
  603. package/libx/_runtime/hana/execute.js +0 -429
  604. package/libx/_runtime/hana/localized.js +0 -39
  605. package/libx/_runtime/hana/pool.js +0 -186
  606. package/libx/_runtime/hana/search.js +0 -20
  607. package/libx/_runtime/hana/search2Contains.js +0 -106
  608. package/libx/_runtime/hana/search2cqn4sql.js +0 -98
  609. package/libx/_runtime/hana/streaming.js +0 -248
  610. package/libx/_runtime/messaging/Outbox.js +0 -15
  611. package/libx/_runtime/sqlite/Service.js +0 -153
  612. package/libx/_runtime/sqlite/conversion.js +0 -47
  613. package/libx/_runtime/sqlite/convertAssocToOneManaged.js +0 -60
  614. package/libx/_runtime/sqlite/convertDraftAdminPathExpression.js +0 -74
  615. package/libx/_runtime/sqlite/customBuilder/CustomExpressionBuilder.js +0 -24
  616. package/libx/_runtime/sqlite/customBuilder/CustomFunctionBuilder.js +0 -102
  617. package/libx/_runtime/sqlite/customBuilder/CustomSelectBuilder.js +0 -16
  618. package/libx/_runtime/sqlite/customBuilder/CustomUpsertBuilder.js +0 -47
  619. package/libx/_runtime/sqlite/customBuilder/index.js +0 -49
  620. package/libx/_runtime/sqlite/execute.js +0 -345
  621. package/libx/_runtime/sqlite/localized.js +0 -49
  622. package/libx/outbox/index.js +0 -307
@@ -1,7 +1,16 @@
1
- const HttpAdapter = require('../../lib/srv/protocols/http')
2
1
  const cds = require('../../lib')
3
2
  const LOG = cds.log('odata')
4
3
 
4
+ const HttpAdapter = require('../../lib/srv/protocols/http')
5
+ const HttpRequest = require('../http/HttpRequest')
6
+ const bodyParser4 = require('../http/body-parser')
7
+
8
+ class ODataRequest extends HttpRequest {
9
+ get protocol() {
10
+ return 'odata'
11
+ }
12
+ }
13
+
5
14
  const operation4 = require('./middleware/operation')
6
15
  const create4 = require('./middleware/create')
7
16
  const stream4 = require('./middleware/stream')
@@ -9,48 +18,17 @@ const read4 = require('./middleware/read')
9
18
  const update4 = require('./middleware/update')
10
19
  const delete4 = require('./middleware/delete')
11
20
  const error4 = require('./middleware/error')
12
- const bodyParser4 = require('./middleware/body-parser')
13
-
14
- // REVISIT: copied from lib/req/request.js
15
- const Http2Crud = { POST: 'CREATE', GET: 'READ', PUT: 'UPDATE', PATCH: 'UPDATE', DELETE: 'DELETE' }
16
21
 
17
22
  const { isStream } = require('./utils')
18
23
 
19
- class ODataAdapter extends HttpAdapter {
20
- log(req) {
21
- // REVISIT: this impl recreates the behavior of the old adapter, but is not very clean
22
-
23
- // req.__proto__.method is set in case of upsert
24
- if (req.__proto__.method in { PUT: 1, PATCH: 1 }) return // REVISIT: voodoo magic
24
+ // REVISIT: copied from lib/req/request.js
25
+ const Http2Crud = { POST: 'CREATE', GET: 'READ', PUT: 'UPDATE', PATCH: 'UPDATE', DELETE: 'DELETE' }
25
26
 
26
- if (req._subrequest)
27
- //> req._subrequest is set for batch subrequests
28
- LOG._info && LOG.info('>', Http2Crud[req.method], req.path, Object.keys(req.query).length ? { ...req.query } : '')
29
- else super.log(req)
27
+ module.exports = class ODataAdapter extends HttpAdapter {
28
+ request4(args) {
29
+ return new ODataRequest(args)
30
30
  }
31
31
 
32
- // early_access_check4(srv) { // REVISIT: let's remove that!
33
- // const super_early_access_check = super.early_access_check4(srv)
34
- // // REVISIT: We should remove the protectMetadata option in cds8, and always just do the right thing -> DOUBLE CHECK: Bad fiori behavior on 403ers
35
- // return function early_access_check(req, res, next) {
36
- // if (cds.env.odata.protectMetadata === false && (req.path === '/' || req.path === '/$metadata')) { // REVISIT: do that statically!
37
- // // > nothing to do
38
- // return next()
39
- // }
40
-
41
- // // REVISIT: Why exactly was that required?
42
- // // > It was wrong, as it requested a login for any service operation, even though only one action was restricted (submitOrder)
43
- // // we need to challenge in case of $batch requests if the service has restrictions
44
- // // const user = cds.context.user
45
- // // if (user._is_anonymous && req.path === '/$batch' && containsAnyRestrictions(srv)) {
46
- // // if (!req._login) throw cds.error({ code: '401', statusCode: 401 })
47
- // // return req._login()
48
- // // }
49
-
50
- // return super_early_access_check(req, res, next)
51
- // }
52
- // }
53
-
54
32
  get router() {
55
33
  const jsonBodyParser = bodyParser4(this)
56
34
  return (
@@ -116,28 +94,16 @@ class ODataAdapter extends HttpAdapter {
116
94
  )
117
95
  }
118
96
 
119
- request4(args) {
120
- return new NoaRequest(args)
121
- }
122
- }
123
-
124
- // REVISIT: ugly hack -> eliminate
125
- class NoaRequest extends cds.Request {
126
- constructor(args) {
127
- super(args)
128
- this.req = args.req
129
- this.res = args.res
130
- }
97
+ // REVISIT: this impl recreates the behavior of the old adapter, but is not very clean
98
+ log(req) {
99
+ // req.__proto__.method is set in case of upsert
100
+ if (req.__proto__.method in { PUT: 1, PATCH: 1 }) return // REVISIT: voodoo magic
131
101
 
132
- // REVISIT: all usages of .protocol are very bad style, violating modularization
133
- get protocol() {
134
- return 'odata'
135
- }
136
- // AFC uses unofficial req._queryOptions -> which is bad! -> should eliminate
137
- get _queryOptions() {
138
- cds.utils.deprecated({ kind: '', old: 'req._queryOptions', new: 'req._.req.query' })
139
- return this.req?.query
102
+ if (req._subrequest) {
103
+ //> req._subrequest is set for batch subrequests
104
+ LOG._info && LOG.info('>', Http2Crud[req.method], req.path, Object.keys(req.query).length ? { ...req.query } : '')
105
+ } else {
106
+ super.log(req)
107
+ }
140
108
  }
141
109
  }
142
-
143
- module.exports = Object.assign(ODataAdapter, { NoaRequest })
@@ -1,15 +1,13 @@
1
1
  /** @typedef {import('../../lib/srv/cds.Service')} Service */
2
2
 
3
3
  const cds = require('../../')
4
- const { SELECT } = cds.ql
5
4
  const { decodeURIComponent } = cds.utils
6
5
 
7
6
  const odata2cqn = require('./parse/parser').parse
8
7
  const cqn2odata = require('./parse/cqn2odata')
9
8
 
10
9
  const afterburner = require('./parse/afterburner')
11
- const { getSafeNumber: safeNumber } = require('./utils')
12
- const getError = require('../_runtime/common/error')
10
+ const { getSafeNumber: safeNumber, skipToken } = require('./utils')
13
11
 
14
12
  // used for function validation in peggy parser
15
13
  // ----- should all be lowercase, as peggy compares to lowercase -----
@@ -67,31 +65,20 @@ const strict = {
67
65
  }
68
66
  }
69
67
 
70
- const _2query = cqn => {
71
- if (cqn.SELECT.from.SELECT) cqn.SELECT.from = _2query(cqn.SELECT.from)
72
- const query = cqn.SELECT.one ? SELECT.one(cqn.SELECT.from) : SELECT.from(cqn.SELECT.from)
73
- for (const prop in cqn.SELECT) {
74
- if (prop === 'from') continue
75
- // explicitly use cds.ql to get '_includes_or__' magic for cqn.SELECT.where containing 'or'
76
- if (prop === 'where' || prop === 'having') query[prop](cqn.SELECT[prop])
77
- else query.SELECT[prop] = cqn.SELECT[prop]
78
- }
79
- return query
80
- }
81
-
82
- const enhanceCqn = (cqn, options) => {
68
+ const _enhanceCqn = (cqn, options) => {
83
69
  if (options.afterburner) {
84
70
  /** @type Service */ const service = options.service
85
- let { model, namespace } = service // prettier-ignore
71
+ let { model, namespace } = service
86
72
  if (service.isExtensible) model = cds.context?.model || model
87
73
  cqn = options.afterburner(cqn, model, namespace, options.protocol)
88
74
  }
89
75
 
90
- const query = _2query(cqn)
76
+ const query = cds.ql(cqn)
91
77
 
92
78
  // REVISIT: _target vs __target, i.e., pseudo csn vs actual csn
93
79
  // DO NOT USE __target outside of libx/rest!!!
94
- if (cqn.__target) query.__target = cqn.__target
80
+ if (options.protocol === 'rest' && cqn.__target) query.__target = cqn.__target
81
+
95
82
  if (cqn._propertyAccess)
96
83
  Object.defineProperty(query, '_propertyAccess', { value: cqn._propertyAccess, enumerable: false })
97
84
 
@@ -119,13 +106,13 @@ module.exports = {
119
106
  options = options === 'strict' ? { strict } : options.strict ? { ...options, strict } : options
120
107
  if (options.service?.model) Object.assign(options, { minimal: true, afterburner })
121
108
  options.safeNumber = safeNumber
122
- options.skipToken = require('./utils').skipToken
109
+ options.skipToken = skipToken
123
110
 
124
111
  let cqn
125
112
  try {
126
113
  cqn = odata2cqn(url, options)
127
114
  } catch (err) {
128
- if (err.statusCode === 501) throw getError(err.statusCode, err.message)
115
+ if (err.statusCode === 501) throw new cds.error(err.statusCode, err.message)
129
116
 
130
117
  let offset = err.location && err.location.start.offset
131
118
  if (!offset && err.statusCode && err.message) throw err
@@ -141,9 +128,9 @@ module.exports = {
141
128
 
142
129
  // cqn is an array, if concat is used
143
130
  if (Array.isArray(cqn)) {
144
- for (let i = 0; i < cqn.length; i++) cqn[i] = enhanceCqn(cqn[i], options)
131
+ for (let i = 0; i < cqn.length; i++) cqn[i] = _enhanceCqn(cqn[i], options)
145
132
  } else {
146
- cqn = enhanceCqn(cqn, options)
133
+ cqn = _enhanceCqn(cqn, options)
147
134
  }
148
135
 
149
136
  // REVISIT: SELECT.from._params is a temporary hack
@@ -9,7 +9,7 @@ const { URL } = require('url')
9
9
  const multipartToJson = require('../parse/multipartToJson')
10
10
  const { getBoundary } = require('../utils')
11
11
 
12
- const { normalizeError } = require('../../_runtime/common/error/frontend')
12
+ const { normalizeError } = require('./error')
13
13
 
14
14
  const HTTP_METHODS = { GET: 1, POST: 1, PUT: 1, PATCH: 1, DELETE: 1 }
15
15
  const CT = { JSON: 'application/json', MULTIPART: 'multipart/mixed' }
@@ -79,10 +79,11 @@ const _validateBatch = body => {
79
79
  // All request objects with the same value for atomicityGroup MUST be adjacent in the requests array
80
80
  if (atomicityGroup !== previousAtomicityGroup) {
81
81
  if (ids[atomicityGroup]) throw _deserializationError(`Atomicity group ID '${atomicityGroup}' is not unique.`)
82
- else ids[atomicityGroup] = [request]
83
- } else {
84
- ids[atomicityGroup].push(request)
82
+ else ids[atomicityGroup] = []
85
83
  }
84
+ // add current index to ensure stable order in result
85
+ request._agIndex = ids[atomicityGroup].length
86
+ ids[atomicityGroup].push(request)
86
87
  }
87
88
 
88
89
  if (url.startsWith('$')) {
@@ -259,7 +260,7 @@ const _tx_done = async (tx, responses, isJson) => {
259
260
  // here, the commit was rejected even though all requests were successful (e.g., by custom handler or db consistency check)
260
261
  rejected = 'rejected'
261
262
  // construct commit error (without modifying original error)
262
- const { error, statusCode } = normalizeError(Object.create(e), { locale: cds.context.locale })
263
+ const error = normalizeError(Object.create(e), { locale: cds.context.locale })
263
264
  // replace all responses with commit error
264
265
  for (const res of responses) {
265
266
  res.status = 'fail'
@@ -268,7 +269,7 @@ const _tx_done = async (tx, responses, isJson) => {
268
269
  let txt = ''
269
270
  for (let i = 0; i < res.txt.length; i++) txt += Buffer.isBuffer(res.txt[i]) ? res.txt[i].toString() : res.txt[i]
270
271
  txt = JSON.parse(txt)
271
- txt.status = statusCode
272
+ txt.status = error.status
272
273
  txt.body = { error }
273
274
  // REVISIT: content-length needed? not there in multipart case...
274
275
  delete txt.headers['content-length']
@@ -278,9 +279,9 @@ const _tx_done = async (tx, responses, isJson) => {
278
279
  'content-type: application/http',
279
280
  'content-transfer-encoding: binary',
280
281
  '',
281
- `HTTP/1.1 ${statusCode} ${STATUS_CODES[statusCode]}`,
282
+ `HTTP/1.1 ${error.status} ${STATUS_CODES[error.status]}`,
282
283
  'odata-version: 4.0',
283
- 'content-type: application/json;odata.metadata=minimal;IEEE754Compatible=true',
284
+ 'content-type: application/json;odata.metadata=minimal',
284
285
  '',
285
286
  JSON.stringify({ error })
286
287
  ].join(CRLF)
@@ -393,7 +394,7 @@ const _processBatch = async (srv, router, req, res, next, body, ct, boundary) =>
393
394
  const dependentOnResult = JSON.parse(dependentResult.value.res._chunk)
394
395
  const recentUrl = request.url
395
396
  const cqn = cds.odata.parse(dependentOnUrl, { service: srv, baseUrl: req.baseUrl, strict: true })
396
- const { target } = cqn
397
+ const target = cds.infer.target(cqn)
397
398
  const keyString =
398
399
  '(' +
399
400
  [...target.keys]
@@ -422,7 +423,9 @@ const _processBatch = async (srv, router, req, res, next, body, ct, boundary) =>
422
423
  if (separator) resp.separator = separator
423
424
  else separator = Buffer.from(',')
424
425
  resp.txt = _formatResponse(req, atomicityGroup)
425
- responses.push(resp)
426
+ // ensure stable order of responses in multipart changeset
427
+ if (!isJson && request.atomicityGroup) responses[request._agIndex] = resp
428
+ else responses.push(resp)
426
429
  })
427
430
  .catch(failedReq => {
428
431
  const resp = { status: 'fail' }
@@ -430,7 +433,9 @@ const _processBatch = async (srv, router, req, res, next, body, ct, boundary) =>
430
433
  else separator = Buffer.from(',')
431
434
  resp.txt = _formatResponse(failedReq, atomicityGroup)
432
435
  tx.failed = failedReq
433
- responses.push(resp)
436
+ // ensure stable order of responses in multipart changeset
437
+ if (!isJson && request.atomicityGroup) responses[request._agIndex] = resp
438
+ else responses.push(resp)
434
439
  })
435
440
 
436
441
  previousAtomicityGroup = atomicityGroup
@@ -492,23 +497,27 @@ const _formatResponseMultipart = request => {
492
497
  }
493
498
  txt += CRLF
494
499
 
495
- if (response._chunk) {
496
- let _json
500
+ const _tryParse = x => {
497
501
  try {
498
- // REVISIT: tests require specific sequence -> fix and simply use res._chunk
499
- _json = JSON.parse(response._chunk)
500
- if (typeof _json !== 'object') throw new Error('not an object')
502
+ return JSON.parse(x)
503
+ } catch {
504
+ return x
505
+ }
506
+ }
507
+
508
+ if (response._chunk) {
509
+ const chunk = _tryParse(response._chunk)
510
+ if (chunk && typeof chunk === 'object') {
501
511
  let meta = [],
502
512
  data = []
503
- for (const [k, v] of Object.entries(_json)) {
513
+ for (const [k, v] of Object.entries(chunk)) {
504
514
  if (k.startsWith('@')) meta.push(`"${k}":${typeof v === 'string' ? `"${v.replaceAll('"', '\\"')}"` : v}`)
505
515
  else data.push(JSON.stringify({ [k]: v }).slice(1, -1))
506
516
  }
507
517
  const _json_as_txt = '{' + meta.join(',') + (meta.length && data.length ? ',' : '') + data.join(',') + '}'
508
518
  txt += _json_as_txt
509
- } catch {
510
- // ignore error and take chunk as is (a text)
511
- txt += response._chunk
519
+ } else {
520
+ txt += chunk
512
521
  txt = txt.replace('content-type: application/json;odata.metadata=minimal', 'content-type: text/plain')
513
522
  }
514
523
  }
@@ -1,7 +1,7 @@
1
1
  const cds = require('../../../')
2
2
  const { INSERT } = cds.ql
3
3
 
4
- const { calculateLocationHeader, handleSapMessages, getPreferReturnHeader } = require('../utils')
4
+ const { handleSapMessages, getPreferReturnHeader } = require('../utils')
5
5
  const getODataMetadata = require('../utils/metadata')
6
6
  const postProcess = require('../utils/postProcess')
7
7
  const readAfterWrite4 = require('../utils/readAfterWrite')
@@ -9,6 +9,8 @@ const getODataResult = require('../utils/result')
9
9
  const normalizeTimeData = require('../utils/normalizeTimeData')
10
10
  const odataBind = require('../utils/odataBind')
11
11
 
12
+ const location4 = require('../../http/location')
13
+
12
14
  const { getKeysAndParamsFromPath } = require('../../common/utils/path')
13
15
 
14
16
  module.exports = (adapter, isUpsert) => {
@@ -18,13 +20,9 @@ module.exports = (adapter, isUpsert) => {
18
20
 
19
21
  return function create(req, res, next) {
20
22
  const {
21
- SELECT: { one, from },
22
- target
23
+ SELECT: { one, from }
23
24
  } = req._query
24
25
 
25
- // req.__proto__.method is set in case of upsert
26
- // const isUpsert = req.__proto__.method in { PUT: 1, PATCH: 1 }
27
-
28
26
  if (one && !isUpsert) {
29
27
  const msg = 'Method POST is not allowed for singletons and individual entities'
30
28
  throw Object.assign(new Error(msg), { statusCode: 405 })
@@ -33,6 +31,7 @@ module.exports = (adapter, isUpsert) => {
33
31
  const model = cds.context.model ?? service.model
34
32
 
35
33
  // payload & params
34
+ const target = cds.infer.target(req._query) // FIXME: this should not happen here but only in an event handler !
36
35
  const data = req.body
37
36
  if (Array.isArray(data)) {
38
37
  const msg = 'Only single entity representations are allowed'
@@ -44,8 +43,6 @@ module.exports = (adapter, isUpsert) => {
44
43
  // add keys from url into payload (overwriting if already present)
45
44
  Object.assign(data, keys)
46
45
 
47
- const _isDraft = target.drafts && data.IsActiveEntity !== true
48
-
49
46
  // query
50
47
  const query = INSERT.into(from).entries(data)
51
48
 
@@ -55,9 +52,6 @@ module.exports = (adapter, isUpsert) => {
55
52
  // we need a cds.Request for multiple reasons, incl. params, headers, sap-messages, read after write, ...
56
53
  const cdsReq = adapter.request4({ query, params, headers, req, res })
57
54
 
58
- // rewrite event for draft-enabled entities
59
- if (_isDraft) cdsReq.event = 'NEW'
60
-
61
55
  // NOTES:
62
56
  // - only via srv.run in combination with srv.dispatch inside,
63
57
  // we automatically either use a single auto-managed tx for the req (i.e., insert and read after write in same tx)
@@ -79,8 +73,7 @@ module.exports = (adapter, isUpsert) => {
79
73
  handleSapMessages(cdsReq, req, res)
80
74
 
81
75
  if (!target._isSingleton) {
82
- // determine calculation based on result with req.data as fallback
83
- res.set('location', calculateLocationHeader(cdsReq.target, service, result || cdsReq.data))
76
+ res.set('location', location4(cdsReq.target, service, result || cdsReq.data))
84
77
  }
85
78
 
86
79
  // case: read after write returns no results, e.g., due to auth (academic but possible)
@@ -17,7 +17,6 @@ module.exports = adapter => {
17
17
  // REVISIT: better solution for query._propertyAccess
18
18
  const {
19
19
  SELECT: { one, from },
20
- target,
21
20
  _propertyAccess
22
21
  } = req._query
23
22
 
@@ -41,9 +40,6 @@ module.exports = adapter => {
41
40
  // we need a cds.Request for multiple reasons, incl. params, headers, sap-messages, read after write, ...
42
41
  const cdsReq = adapter.request4({ query, data, headers, params, req, res })
43
42
 
44
- // rewrite event for draft-enabled entities
45
- if (target._isDraftEnabled && cdsReq.data.IsActiveEntity === false) cdsReq.event = 'CANCEL'
46
-
47
43
  // NOTES:
48
44
  // - only via srv.run in combination with srv.dispatch inside,
49
45
  // we automatically either use a single auto-managed tx for the req (i.e., insert and read after write in same tx)
@@ -1,40 +1,96 @@
1
1
  const cds = require('../../../lib')
2
+ const { shutdown_on_uncaught_errors } = cds.env.server
2
3
 
3
- const _log = require('../../_runtime/common/error/log')
4
+ exports = module.exports = () =>
5
+ function odata_error(err, req, res, next) {
6
+ if (exports.pass_through(err)) return next(err)
7
+ if (err.details) err = _fioritized(err)
8
+ const content_id = req.headers['content-id']
9
+ if (content_id) err['@Core.ContentID'] = content_id
10
+ err['@Common.numericSeverity'] ??= err.numericSeverity || 4
4
11
 
5
- const { normalizeError, unwrapMultipleErrors } = require('../../_runtime/common/error/frontend')
6
- const { isStandardError } = require('../../_runtime/common/error/standardError')
12
+ // propagate content-id and set @Common.numericSeverity
13
+ err.details?.forEach(e => {
14
+ if (content_id) e['@Core.ContentID'] = content_id
15
+ e['@Common.numericSeverity'] ??= e.numericSeverity || 4 // Fiori expects this in error.details
16
+ })
7
17
 
8
- module.exports = () => {
9
- return function odata_error(err, req, res, next) {
10
- if (err == 401 || err.code == 401) return next(err) // speed up logins, at least temporary until we reviewed and eliminated overhead that may be involved below
18
+ exports.normalizeError(err, req)
19
+ return next(err)
20
+ }
11
21
 
12
- // if error already has statusCode, it comes from express, don't throw
13
- if (!err.statusCode && isStandardError(err) && cds.env.server.shutdown_on_uncaught_errors) {
14
- return next(err)
15
- }
22
+ exports.pass_through = err => {
23
+ if (err == 401 || err.code == 401) return true
24
+ if (shutdown_on_uncaught_errors && !(err.status || err.statusCode) && cds.error.isSystemError(err)) return true
25
+ }
16
26
 
17
- // REVISIT: keep?
18
- // log the error (4xx -> warn)
19
- _log(err)
27
+ exports.normalizeError = (err, req, cleanse = ODATA_PROPERTIES) => {
28
+ const locale = cds.i18n.locale.from(req)
29
+ err.status = _normalize(err, locale, cleanse) || 500
30
+ return err
31
+ }
20
32
 
21
- const { error, statusCode } = normalizeError(err, req) // REVISIT: that's killing error objects and stacks -> get rid of it
33
+ exports.getSapMessages = (messages, req) => {
34
+ const locale = cds.i18n.locale.from(req)
35
+ for (let m of messages) _normalize(m, locale, SAP_MSG_PROPERTIES)
36
+ return JSON.stringify(messages).replace(
37
+ /[\u007F-\uFFFF]/g,
38
+ c => '\\u' + c.charCodeAt(0).toString(16).padStart(4, '0')
39
+ )
40
+ }
22
41
 
23
- const content_id = req.headers['content-id']
24
- if (content_id) {
25
- error['@Core.ContentID'] = content_id
26
- error.details?.forEach(e => (e['@Core.ContentID'] = content_id))
27
- }
42
+ const { i18n } = require('../../../lib')
43
+ const ODATA_PROPERTIES = { code: 1, message: 1, target: 1, details: 1, innererror: 1 }
44
+ const SAP_MSG_PROPERTIES = { ...ODATA_PROPERTIES, longtextUrl: 2, transition: 2, numericSeverity: 2 }
45
+ const BAD_REQUESTS = { ENTITY_ALREADY_EXISTS: 1, FK_CONSTRAINT_VIOLATION: 2, UNIQUE_CONSTRAINT_VIOLATION: 3 }
28
46
 
29
- if (error.details && cds.env.fiori.wrap_multiple_errors === false) {
30
- unwrapMultipleErrors(error)
31
- }
47
+ // prettier-ignore
48
+ const _normalize = (err, locale = cds.env.i18n.default_language, keep) => {
32
49
 
33
- // NOTE: express also looks for numbers in err.status or err.statusCode
34
- error.statusCode = statusCode
35
- // if (err.stack) Object.defineProperty (error, 'stack', { value: err.stack })
36
- // REVISIT: we can't do that ^^^^^ currently because the _http_common parsers we use for $batch requests can't handle that
50
+ // Determine status code if not already set
51
+ const details = err.details?.map?.(each => _normalize (each, locale, keep))
52
+ const status = err.status || err.statusCode || _status4(err) || _reduce(details)
37
53
 
38
- next(error)
54
+ // Determine error code and message
55
+ const key = err.message || err.code || status
56
+ const msg = i18n.messages.at (key, '', err.args) // lookup messages for log output from factory default texts
57
+ if (msg && msg !== key) {
58
+ if (typeof err.code !== 'string') err.code = key
59
+ err.message = msg
39
60
  }
61
+ if (typeof err.code !== 'string') err.code = String(err.code ?? status ?? '')
62
+
63
+ // Cleanse and localize in response to client
64
+ Object.defineProperty(err, 'toJSON', { value: function() {
65
+ const that = keep ? {} : {...this}
66
+ if (keep) for (let k in this) if (k in keep || k[0] === '@') that[k] = this[k]
67
+ if (locale) that.message = i18n.messages.at (key, locale, this.args)
68
+ if (!that.message) that.message = this.message
69
+ return that
70
+ }})
71
+ return status
72
+ }
73
+
74
+ const _status4 = err => {
75
+ if (err.code >= 300 && err.code < 600 && !err.sqlState) return Number(err.code)
76
+ if (err.message in BAD_REQUESTS) return 400 // REVISIT: should we use 409 or 500 instead?
77
+ }
78
+
79
+ const _reduce = details => {
80
+ const unique = [...new Set(details)]
81
+ if (unique.length === 1) return unique[0] // if only one unique status exists, we use that
82
+ if (unique.some(s => s >= 500)) return 500 // if at least one 5xx exists, we use 500
83
+ if (unique.some(s => s >= 400)) return 400 // if at least one 4xx exists, we use 400
84
+ }
85
+
86
+ /**
87
+ * According to the Fiori Elements Failed Message specification, the format must be:
88
+ * Root level: First error, Details: Other errors
89
+ */ // prettier-ignore
90
+ const _fioritized = cds.env.fiori.wrap_multiple_errors === false ? err => {
91
+ const [ head, ...tail ] = err.details
92
+ return Object.assign (err, head, { details: tail.length ? tail : undefined })
93
+ } : err => {
94
+ err.target ??= 'in' // prevents annoying 'Multiple Errors' modal popups in Fiori
95
+ return err
40
96
  }
@@ -2,6 +2,7 @@ const cds = require('../../../')
2
2
  const LOG = cds.log('odata')
3
3
 
4
4
  const crypto = require('crypto')
5
+ const fs = require('fs')
5
6
 
6
7
  const _requestedFormat = (queryOption, header) => {
7
8
  if (queryOption) return queryOption.match(/json/i) ? 'json' : 'xml'
@@ -17,7 +18,6 @@ const _requestedFormat = (queryOption, header) => {
17
18
  }
18
19
 
19
20
  const _metadataFromFile = async srv => {
20
- const fs = require('fs')
21
21
  const filePath = cds.root + `/srv/odata/v4/${srv.definition.name}.xml`
22
22
  let exists
23
23
  try {
@@ -44,12 +44,6 @@ const generateEtag = s => {
44
44
  return `W/"${crypto.createHash('sha256').update(s).digest('base64')}"`
45
45
  }
46
46
 
47
- const mpSupportsEmptyLocale = () => {
48
- const pkg = require(require.resolve('@sap/cds-mtxs/package.json'))
49
- const [major, minor] = pkg.version.split('.').map(Number)
50
- return major > 1 || (major === 1 && minor >= 12)
51
- }
52
-
53
47
  module.exports = adapter => {
54
48
  const { service } = adapter
55
49
 
@@ -60,7 +54,7 @@ module.exports = adapter => {
60
54
  }
61
55
 
62
56
  const format = _requestedFormat(req.query['$format'], req.headers['accept'])
63
- const locale = cds.context.locale
57
+ const locale = cds.context.locale || cds.env.i18n.default_language
64
58
 
65
59
  // REVISIT: edm(x) and etag cache is only evicted with model
66
60
  const csnService = (cds.context.model || cds.model).definitions[service.definition.name]
@@ -97,23 +91,18 @@ module.exports = adapter => {
97
91
 
98
92
  try {
99
93
  let edmx
100
- // REVISIT: remove check later
101
- if (mpSupportsEmptyLocale()) {
102
- // If no extensibility nor fts, do not provide model to mtxs
103
- const modelNeeded = cds.env.requires.extensibility || features?.given
104
- edmx =
105
- metadataCache.edm ||
106
- (await mps.getEdmx({
107
- tenant,
108
- model: modelNeeded ? await mps.getCsn(tenant, features) : undefined,
109
- service: service.definition.name
110
- }))
111
- metadataCache.edm = edmx
112
- const extBundle = cds.env.requires.extensibility && (await mps.getI18n({ tenant, locale }))
113
- edmx = cds.localize(service.model, locale, edmx, extBundle)
114
- } else {
115
- edmx = await mps.getEdmx({ tenant, model: service.model, service: service.definition.name, locale })
116
- }
94
+ // If no extensibility nor fts, do not provide model to mtxs
95
+ const modelNeeded = cds.env.requires.extensibility || features?.given
96
+ edmx =
97
+ metadataCache.edm ||
98
+ (await mps.getEdmx({
99
+ tenant,
100
+ model: modelNeeded ? await mps.getCsn(tenant, features) : undefined,
101
+ service: service.definition.name
102
+ }))
103
+ metadataCache.edm = edmx
104
+ const extBundle = cds.env.requires.extensibility && (await mps.getI18n({ tenant, locale }))
105
+ edmx = cds.localize(service.model, locale, edmx, extBundle)
117
106
  metadataCache.xmlEtag[locale] = generateEtag(edmx)
118
107
  res.set('ETag', metadataCache.xmlEtag[locale])
119
108
  res.set('Content-Type', 'application/xml')