@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,1365 +0,0 @@
1
- 'use strict'
2
-
3
- const CsdlProvider = require('./CsdlProvider')
4
- const CsdlEntityContainerInfo = require('../csdl/CsdlEntityContainerInfo')
5
- const CsdlEntityContainer = require('../csdl/CsdlEntityContainer')
6
- const CsdlEntitySet = require('../csdl/CsdlEntitySet')
7
- const CsdlNavigationPropertyBinding = require('../csdl/CsdlNavigationPropertyBinding')
8
- const CsdlSingleton = require('../csdl/CsdlSingleton')
9
- const CsdlActionImport = require('../csdl/CsdlActionImport')
10
- const CsdlFunctionImport = require('../csdl/CsdlFunctionImport')
11
- const CsdlSchema = require('../csdl/CsdlSchema')
12
- const CsdlEnumType = require('../csdl/CsdlEnumType')
13
- const CsdlEnumMember = require('../csdl/CsdlEnumMember')
14
- const CsdlTypeDefinition = require('../csdl/CsdlTypeDefinition')
15
- const CsdlEntityType = require('../csdl/CsdlEntityType')
16
- const CsdlPropertyRef = require('../csdl/CsdlPropertyRef')
17
- const CsdlProperty = require('../csdl/CsdlProperty')
18
- const CsdlNavigationProperty = require('../csdl/CsdlNavigationProperty')
19
- const CsdlReferentialConstraint = require('../csdl/CsdlReferentialConstraint')
20
- const CsdlComplexType = require('../csdl/CsdlComplexType')
21
- const CsdlAction = require('../csdl/CsdlAction')
22
- const CsdlFunction = require('../csdl/CsdlFunction')
23
- const CsdlParameter = require('../csdl/CsdlParameter')
24
- const CsdlReturnType = require('../csdl/CsdlReturnType')
25
- const CsdlTerm = require('../csdl/CsdlTerm')
26
- const CsdlAliasInfo = require('../csdl/CsdlAliasInfo')
27
- const CsdlOnDelete = require('../csdl/CsdlOnDelete')
28
- const CsdlReference = require('../csdl/CsdlReference')
29
- const CsdlInclude = require('../csdl/CsdlInclude')
30
- const CsdlAnnotation = require('../csdl/CsdlAnnotation')
31
- const CsdlAnnotations = require('../csdl/CsdlAnnotations')
32
- const CsdlConstantExpression = require('../csdl/annotationExpression/CsdlConstantExpression')
33
- const CsdlUnknownExpression = require('../csdl/annotationExpression/CsdlUnknownExpression')
34
- const ConstantExpressionType = CsdlConstantExpression.Types
35
- const CsdlNotExpression = require('../csdl/annotationExpression/CsdlNotExpression')
36
- const CsdlBinaryExpression = require('../csdl/annotationExpression/CsdlBinaryExpression')
37
- const LogicalOperators = CsdlBinaryExpression.LogicalOperators
38
- const ComparisonOperators = CsdlBinaryExpression.ComparisonOperators
39
- const CsdlArithmeticExpression = require('../csdl/annotationExpression/CsdlArithmeticExpression')
40
- const CsdlNegationExpression = require('../csdl/annotationExpression/CsdlNegationExpression')
41
- const CsdlAnnotationPathExpression = require('../csdl/annotationExpression/CsdlAnnotationPathExpression')
42
- const CsdlApplyExpression = require('../csdl/annotationExpression/CsdlApplyExpression')
43
- const CsdlCastExpression = require('../csdl/annotationExpression/CsdlCastExpression')
44
- const CsdlCollectionExpression = require('../csdl/annotationExpression/CsdlCollectionExpression')
45
- const CsdlIfExpression = require('../csdl/annotationExpression/CsdlIfExpression')
46
- const CsdlIsOfExpression = require('../csdl/annotationExpression/CsdlIsOfExpression')
47
- const CsdlLabeledElementExpression = require('../csdl/annotationExpression/CsdlLabeledElementExpression')
48
- const CsdlLabeledElementReferenceExpression = require('../csdl/annotationExpression/CsdlLabeledElementReferenceExpression')
49
- const CsdlModelElementPathExpression = require('../csdl/annotationExpression/CsdlModelElementPathExpression')
50
- const CsdlPathExpression = require('../csdl/annotationExpression/CsdlPathExpression')
51
- const CsdlNullExpression = require('../csdl/annotationExpression/CsdlNullExpression')
52
- const CsdlNavigationPropertyPathExpression = require('../csdl/annotationExpression/CsdlNavigationPropertyPathExpression')
53
- const CsdlPropertyPathExpression = require('../csdl/annotationExpression/CsdlPropertyPathExpression')
54
- const CsdlRecordExpression = require('../csdl/annotationExpression/CsdlRecordExpression')
55
- const CsdlPropertyValueExpression = require('../csdl/annotationExpression/CsdlPropertyValueExpression')
56
- const CsdlUrlRefExpression = require('../csdl/annotationExpression/CsdlUrlRefExpression')
57
-
58
- const FullQualifiedName = require('../FullQualifiedName')
59
- const validateThat = require('../validator/ParameterValidator').validateThat
60
-
61
- const defaultEdmTypeFQN = new FullQualifiedName('Edm', 'String')
62
-
63
- class AnnotationTokenizer {
64
- constructor (input) {
65
- this._input = input
66
- this._result = null
67
- this._target = null
68
- this._index = 0
69
- }
70
- getTarget () {
71
- return this._target
72
- }
73
- next () {
74
- if (this._result === null) {
75
- this._result = this._input
76
- .split('@')
77
- .filter(elem => elem !== '')
78
- .map(element1 => element1.split('#').filter(element2 => element2 !== ''))
79
- if (!this._input.startsWith('@')) {
80
- this._target = this._result.shift()[0]
81
- }
82
- }
83
- if (this._index >= this._result.length) {
84
- return [null, null]
85
- }
86
- const result = this._result[this._index]
87
- this._index++
88
- return result
89
- }
90
- }
91
-
92
- class AnnotationParser {
93
- constructor (options = { target: null }) {
94
- this._options = options
95
- }
96
-
97
- parse (element, annotationBuilder, annotations = []) {
98
- const keys = Object.keys(element).filter(key => key.includes('@'))
99
-
100
- const findExistingAnnotation = (annotationArray, term) => {
101
- return annotationArray.find(an => an.toString() === term)
102
- }
103
-
104
- for (const key of keys) {
105
- let currentNode = null
106
- let root = null
107
-
108
- // @Annotation+, Property@Annotation+, Property@Annotation+#Qualifier
109
- const tokenizer = new AnnotationTokenizer(key)
110
- let [term, qualifier] = tokenizer.next()
111
- const target = tokenizer.getTarget()
112
-
113
- if (target === this._options.target) {
114
- const path = [target] // If target is null, join() will left out target
115
-
116
- do {
117
- if (term !== null && term !== undefined) {
118
- const termAndQualifier = term + (qualifier && qualifier.length > 0 ? '#' + qualifier : '')
119
- path.push(termAndQualifier)
120
-
121
- const value = element[path.join('@')]
122
-
123
- if (root === null || root === undefined) {
124
- root = findExistingAnnotation(annotations, termAndQualifier)
125
- if (root === null || root === undefined) {
126
- root = annotationBuilder(term, qualifier, value)
127
- annotations.push(root)
128
- }
129
- currentNode = root
130
- } else {
131
- const existingAnnotation = findExistingAnnotation(currentNode.annotations, termAndQualifier)
132
- if (existingAnnotation === null || existingAnnotation === undefined) {
133
- const newAnnotation = annotationBuilder(term, qualifier, value)
134
- currentNode.annotations.push(newAnnotation)
135
- currentNode = newAnnotation
136
- } else {
137
- currentNode = existingAnnotation
138
- }
139
- }
140
- }
141
-
142
- ;[term, qualifier] = tokenizer.next()
143
- } while (term !== null && term !== undefined)
144
- }
145
- }
146
-
147
- // return an array;
148
- return annotations
149
- }
150
- }
151
-
152
- /**
153
- * CSDL Provider from a JSON structure as input
154
- * @extends CsdlProvider
155
- */
156
- class CsdlJsonProvider extends CsdlProvider {
157
- /**
158
- * @param {Object} edmJson - The input JSON structure
159
- */
160
- constructor (edmJson) {
161
- validateThat('edmJson', edmJson)
162
- .truthy()
163
- .typeOf('object')
164
-
165
- super()
166
-
167
- /**
168
- * The input JSON structure
169
- * @type {Object}
170
- * @private
171
- */
172
- this._edmJson = edmJson
173
-
174
- /**
175
- * the qualified name of the entity container
176
- * @type {FullQualifiedName}
177
- * @private
178
- */
179
- if (edmJson.$EntityContainer) {
180
- this._containerName = FullQualifiedName.createFromNameSpaceAndName(edmJson.$EntityContainer)
181
- }
182
-
183
- /**
184
- * the entity-container part of the input JSON structure
185
- * @type {Object}
186
- * @private
187
- */
188
- for (const k in edmJson) if (!k.startsWith('$')) this._containerJson = edmJson[k]
189
-
190
- // This Map is filled with the versions found
191
- // Currently this is done through Oasis Issue 1221 compatibility
192
- this._csdlVersionsFound = new Map()
193
- }
194
-
195
- /**
196
- * Returns a new CsdlEntityContainerInfo of the given entity container name,
197
- * or null if the given container name does not match this container name.
198
- *
199
- * @param {FullQualifiedName} entityContainerName the name of the entity container
200
- * @returns {?CsdlEntityContainerInfo} the entity-container information
201
- * @override
202
- */
203
- getEntityContainerInfo (entityContainerName) {
204
- if (!entityContainerName) return new CsdlEntityContainerInfo(this._containerName)
205
-
206
- const value = this._getPropertyValue(this._edmJson, entityContainerName.namespace, entityContainerName.name)
207
- return value === null || value === undefined ? null : new CsdlEntityContainerInfo(entityContainerName)
208
- }
209
-
210
- /**
211
- * Returns the value found by a path lookup in the provided object.
212
- * @param {Objec} data Any object to lookup the value
213
- * @param {...string} path the property path
214
- * @returns {?Object} The value found or null
215
- * @private
216
- */
217
- _getPropertyValue (data, ...path) {
218
- let context = data
219
- for (const elem of path) if (context) context = context[elem]
220
- return context
221
- }
222
-
223
- /**
224
- * Returns the entire entity container with all entitySets, singletons, action imports and function imports.
225
- *@param {FullQualifiedName} containerFqnParam The full qualified name of the container
226
- * @returns {CsdlEntityContainer} the CSDL entity container
227
- * @override
228
- */
229
- getEntityContainer (containerFqnParam) {
230
- let containerFqn = containerFqnParam
231
- if (containerFqn === null || containerFqn === undefined) {
232
- containerFqn = this._containerName
233
- }
234
-
235
- const containerData = this._getPropertyValue(this._edmJson, containerFqn.namespace, containerFqn.name)
236
- if (!containerData) return null
237
-
238
- let entityContainer = new CsdlEntityContainer(containerFqn.name).setAnnotations(
239
- this._extractInlineAnnotations(containerData)
240
- )
241
-
242
- let entitySets = []
243
- let singletons = []
244
- let actionImports = []
245
- let functionImports = []
246
-
247
- for (const name in containerData) {
248
- if (this.getEntitySet(containerFqn, name)) {
249
- entitySets.push(this.getEntitySet(containerFqn, name))
250
- } else if (this.getActionImport(containerFqn, name)) {
251
- actionImports.push(this.getActionImport(containerFqn, name))
252
- } else if (this.getFunctionImport(containerFqn, name)) {
253
- functionImports.push(this.getFunctionImport(containerFqn, name))
254
- } else if (this.getSingleton(containerFqn, name)) {
255
- singletons.push(this.getSingleton(containerFqn, name))
256
- }
257
- }
258
-
259
- entityContainer.setEntitySets(entitySets)
260
- entityContainer.setSingletons(singletons)
261
- entityContainer.setActionImports(actionImports)
262
- entityContainer.setFunctionImports(functionImports)
263
-
264
- return entityContainer
265
- }
266
-
267
- /**
268
- * Returns the entitySet of the given name, or null if not found.
269
- * @param {FullQualifiedName} entityContainerName - Entity container name
270
- * @param {string} entitySetName - Entity set name
271
- * @returns {?CsdlEntitySet} the CSDL entity set
272
- * @override
273
- */
274
- getEntitySet (entityContainerName, entitySetName) {
275
- const containerData = this._getPropertyValue(this._edmJson, entityContainerName.namespace, entityContainerName.name)
276
- if (!containerData) return null
277
-
278
- let entitySetJson = containerData[entitySetName]
279
- if (!entitySetJson) return null
280
- if (entitySetJson.$Kind) {
281
- if (entitySetJson.$Kind !== 'EntitySet') return null
282
- } else {
283
- if (entitySetJson.$Collection !== true) return null
284
- if (entitySetJson.$Action) return null
285
- if (entitySetJson.$Function) return null
286
- if (entitySetJson.$Type === null || entitySetJson.$Type === undefined) return null
287
- }
288
-
289
- let entitySet = new CsdlEntitySet(entitySetName, this._getTypeFQN(entitySetJson)).setAnnotations(
290
- this._extractInlineAnnotations(entitySetJson)
291
- )
292
-
293
- if (Object.prototype.hasOwnProperty.call(entitySetJson, '$IncludeInServiceDocument')) {
294
- entitySet.setIncludeInServiceDocument(entitySetJson.$IncludeInServiceDocument)
295
- }
296
-
297
- if (Object.prototype.hasOwnProperty.call(entitySetJson, '$NavigationPropertyBinding')) {
298
- const navPropBindings = Object.keys(entitySetJson.$NavigationPropertyBinding).map(
299
- binding => new CsdlNavigationPropertyBinding(binding, entitySetJson.$NavigationPropertyBinding[binding])
300
- )
301
- entitySet.setNavigationPropertyBindings(navPropBindings)
302
- }
303
-
304
- return entitySet
305
- }
306
-
307
- /**
308
- * Returns the singleton of the given name, or null if not found.
309
- * @param {FullQualifiedName} entityContainerName - Entity container name
310
- * @param {string} singletonName - Singleton name
311
- * @returns {?CsdlSingleton} the CSDL singleton
312
- * @override
313
- */
314
- getSingleton (entityContainerName, singletonName) {
315
- const containerData = this._getPropertyValue(this._edmJson, entityContainerName.namespace, entityContainerName.name)
316
- if (!containerData) return null
317
-
318
- let singletonJson = containerData[singletonName]
319
- if (!singletonJson) return null
320
-
321
- if (singletonJson.$Kind) {
322
- if (singletonJson.$Kind !== 'Singleton') return null
323
- } else {
324
- if (singletonJson.$Collection) return null
325
- if (singletonJson.$Action) return null
326
- if (singletonJson.$Function) return null
327
- if (singletonJson.$Type === null || singletonJson.$Type === undefined) return null
328
- }
329
-
330
- let singleton = new CsdlSingleton(singletonName, this._getTypeFQN(singletonJson)).setAnnotations(
331
- this._extractInlineAnnotations(singletonJson)
332
- )
333
-
334
- if (Object.prototype.hasOwnProperty.call(singletonJson, '$NavigationPropertyBinding')) {
335
- const navPropBindings = Object.keys(singletonJson.$NavigationPropertyBinding).map(
336
- binding => new CsdlNavigationPropertyBinding(binding, singletonJson.$NavigationPropertyBinding[binding])
337
- )
338
- singleton.setNavigationPropertyBindings(navPropBindings)
339
- }
340
-
341
- return singleton
342
- }
343
-
344
- /**
345
- * Returns the action import of the given name, or null if not found.
346
- * @param {FullQualifiedName} entityContainerName - Entity container name
347
- * @param {string} actionImportName - Action import name
348
- * @returns {?CsdlActionImport} the CSDL action import
349
- * @override
350
- */
351
- getActionImport (entityContainerName, actionImportName) {
352
- const containerData = this._getPropertyValue(this._edmJson, entityContainerName.namespace, entityContainerName.name)
353
- if (!containerData) return null
354
-
355
- let actionJson = containerData[actionImportName]
356
- if (!actionJson) return null
357
- if (actionJson.$Action === null || actionJson.$Action === undefined) return null
358
-
359
- let action = new CsdlActionImport(
360
- actionImportName,
361
- FullQualifiedName.createFromNameSpaceAndName(actionJson.$Action)
362
- ).setAnnotations(this._extractInlineAnnotations(actionJson))
363
-
364
- if (Object.prototype.hasOwnProperty.call(actionJson, '$EntitySet')) {
365
- action.setEntitySet(actionJson.$EntitySet)
366
- }
367
-
368
- return action
369
- }
370
-
371
- /**
372
- * Returns the function import of the given name, or null if not found.
373
- * @param {FullQualifiedName} entityContainerName - Entity container name
374
- * @param {string} functionImportName - Function import name
375
- * @returns {?CsdlFunctionImport} the CSDL function import
376
- * @override
377
- */
378
- getFunctionImport (entityContainerName, functionImportName) {
379
- const containerData = this._getPropertyValue(this._edmJson, entityContainerName.namespace, entityContainerName.name)
380
- if (!containerData) return null
381
-
382
- let functionImpJson = containerData[functionImportName]
383
- if (!functionImpJson) return null
384
- if (functionImpJson.$Function === null || functionImpJson.$Function === undefined) return null
385
-
386
- let functionImp = new CsdlFunctionImport(
387
- functionImportName,
388
- FullQualifiedName.createFromNameSpaceAndName(functionImpJson.$Function)
389
- ).setAnnotations(this._extractInlineAnnotations(functionImpJson))
390
-
391
- if (Object.prototype.hasOwnProperty.call(functionImpJson, '$EntitySet')) {
392
- functionImp.setEntitySet(functionImpJson.$EntitySet)
393
- }
394
-
395
- if (Object.prototype.hasOwnProperty.call(functionImpJson, '$IncludeInServiceDocument')) {
396
- functionImp.setIncludeInServiceDocument(functionImpJson.$IncludeInServiceDocument)
397
- }
398
-
399
- return functionImp
400
- }
401
-
402
- /**
403
- * Returns an array of all schemas, each with all the corresponding type
404
- * definitions, entity types, complex types, actions and functions.
405
- * @returns {CsdlSchema[]} the schemas
406
- * @override
407
- */
408
- getSchemas () {
409
- let schemas = []
410
- for (const schemaName in this._edmJson) {
411
- if (schemaName.startsWith('$')) {
412
- // exclude $Reference, $Version, $EntityContainer.
413
- continue
414
- }
415
- const schemaJson = this._edmJson[schemaName]
416
- let schema = new CsdlSchema(schemaName)
417
-
418
- if (Object.prototype.hasOwnProperty.call(schemaJson, '$Alias')) {
419
- schema.setAlias(schemaJson.$Alias)
420
- }
421
-
422
- // set external annotations
423
- if (Object.prototype.hasOwnProperty.call(schemaJson, '$Annotations')) {
424
- schema.setExternalAnnotations(this._extractExternalAnnotations(schemaJson.$Annotations))
425
- }
426
-
427
- // set inline annotations: belong to schema
428
- schema.setAnnotations(this._extractInlineAnnotations(schemaJson))
429
-
430
- let actions = []
431
- let functions = []
432
- let enumTypes = []
433
- let typeDefinitions = []
434
- let entityTypes = []
435
- let complexTypes = []
436
- let terms = []
437
-
438
- for (const name in schemaJson) {
439
- const fqn = new FullQualifiedName(schemaName, name)
440
- const elementJson = schemaJson[name]
441
-
442
- if (Array.isArray(elementJson)) {
443
- // the entry then is either an action or a function
444
- let res = this.getActions(fqn)
445
- if (res.length !== 0) {
446
- actions = actions.concat(res)
447
- }
448
- functions = functions.concat(this.getFunctions(fqn))
449
- }
450
-
451
- switch (elementJson.$Kind) {
452
- case 'EnumType':
453
- enumTypes.push(this.getEnumType(fqn))
454
- break
455
-
456
- case 'TypeDefinition':
457
- typeDefinitions.push(this.getTypeDefinition(fqn))
458
- break
459
-
460
- case 'EntityType':
461
- entityTypes.push(this.getEntityType(fqn))
462
- break
463
-
464
- case 'ComplexType':
465
- complexTypes.push(this.getComplexType(fqn))
466
- break
467
-
468
- case 'Term':
469
- terms.push(this.getTerm(fqn))
470
- break
471
-
472
- case 'EntityContainer':
473
- schema.setEntityContainer(this.getEntityContainer(fqn))
474
- break
475
-
476
- default:
477
- break
478
- }
479
- }
480
-
481
- schema.setActions(actions)
482
- schema.setFunctions(functions)
483
- schema.setEnumTypes(enumTypes)
484
- schema.setTypeDefinitions(typeDefinitions)
485
- schema.setEntityTypes(entityTypes)
486
- schema.setComplexTypes(complexTypes)
487
- schema.setTerms(terms)
488
-
489
- schemas.push(schema)
490
- }
491
-
492
- return schemas
493
- }
494
-
495
- /**
496
- * Returns the enumeration type of the given name, or null if not found
497
- * @param {FullQualifiedName} enumTypeName - enumeration-type name
498
- * @returns {?CsdlEnumType} the CSDL enumeration type
499
- * @override
500
- */
501
- getEnumType (enumTypeName) {
502
- let enumTypeJson = this._getElementJson(enumTypeName, 'EnumType')
503
- if (enumTypeJson === null) return null
504
-
505
- let enumType = new CsdlEnumType(
506
- enumTypeName.name,
507
- FullQualifiedName.createFromNameSpaceAndName(enumTypeJson.$UnderlyingType || 'Edm.Int32')
508
- ).setAnnotations(this._extractInlineAnnotations(enumTypeJson))
509
-
510
- if (Object.prototype.hasOwnProperty.call(enumTypeJson, '$IsFlags')) enumType.setIsFlags(enumTypeJson.$IsFlags)
511
-
512
- enumType.setMembers(
513
- Object.keys(enumTypeJson)
514
- .filter(member => !member.startsWith('$') && !member.includes('@'))
515
- .map(member =>
516
- new CsdlEnumMember(member, enumTypeJson[member]).setAnnotations(
517
- this._extractImplicitAnnotations(enumTypeJson, member)
518
- )
519
- )
520
- )
521
-
522
- return enumType
523
- }
524
-
525
- /**
526
- * Returns the type definition of the given name, or null if not found
527
- * @param {FullQualifiedName} typeDefName - Type definition
528
- * @returns {?CsdlTypeDefinition} the CSDL type definition
529
- * @override
530
- */
531
- getTypeDefinition (typeDefName) {
532
- let typeDefJson = this._getElementJson(typeDefName, 'TypeDefinition')
533
- if (typeDefJson === null) return null
534
-
535
- let typeDef = new CsdlTypeDefinition(
536
- typeDefName.name,
537
- FullQualifiedName.createFromNameSpaceAndName(typeDefJson.$UnderlyingType)
538
- ).setAnnotations(this._extractInlineAnnotations(typeDefJson))
539
-
540
- this._readFacets(typeDef, typeDefJson, ['$MaxLength', '$Precision', '$Scale', '$SRID'])
541
-
542
- return typeDef
543
- }
544
-
545
- /**
546
- * Returns the entity type of the given name, or null if not found
547
- * @param {FullQualifiedName} entityTypeName - Entity type name
548
- * @returns {?CsdlEntityType} the CSDL entity type
549
- * @override
550
- */
551
- getEntityType (entityTypeName) {
552
- let entityTypeJson = this._getElementJson(entityTypeName, 'EntityType')
553
- if (entityTypeJson === null) return null
554
-
555
- let entityType = new CsdlEntityType(entityTypeName.name).setAnnotations(
556
- this._extractInlineAnnotations(entityTypeJson)
557
- )
558
- if (Object.prototype.hasOwnProperty.call(entityTypeJson, '$BaseType')) {
559
- entityType.setBaseType(FullQualifiedName.createFromNameSpaceAndName(entityTypeJson.$BaseType))
560
- }
561
- if (Object.prototype.hasOwnProperty.call(entityTypeJson, '$HasStream')) {
562
- entityType.setHasStream(entityTypeJson.$HasStream)
563
- }
564
- if (Object.prototype.hasOwnProperty.call(entityTypeJson, '$Abstract')) {
565
- entityType.isAbstract = entityTypeJson.$Abstract
566
- }
567
- if (Object.prototype.hasOwnProperty.call(entityTypeJson, '$Key')) {
568
- const key = entityTypeJson.$Key.map(value => {
569
- if (typeof value === 'object') {
570
- // propertyRef is with an Alias
571
- let alias = Object.keys(value)[0]
572
- return new CsdlPropertyRef(value[alias]).setAlias(alias)
573
- }
574
- return new CsdlPropertyRef(value)
575
- })
576
- entityType.setKey(key)
577
- }
578
-
579
- this._setProperties(entityType, entityTypeJson)
580
-
581
- return entityType
582
- }
583
-
584
- /**
585
- * Sets the properties and navigation properties for the given entity type or complex type.
586
- * @param {CsdlEntityType | CsdlComplexType} type - the given entity type or complex type
587
- * @param {Object} typeJson - the corresponding JSON object for the given entity type or complex type
588
- * @private
589
- */
590
- _setProperties (type, typeJson) {
591
- let props = []
592
- let navProps = []
593
- for (const propertyName in typeJson) {
594
- if (propertyName.startsWith('$') || propertyName.includes('@')) {
595
- // properties and navigation properties do not start with '$' and don't include '@'
596
- continue
597
- }
598
- const kind = typeJson[propertyName].$Kind
599
- if (!kind || kind === 'Property') {
600
- props.push(this._createCsdlProperty(typeJson[propertyName], propertyName))
601
- } else if (kind === 'NavigationProperty') {
602
- navProps.push(this._createCsdlNavigationProperty(typeJson[propertyName], propertyName))
603
- }
604
- }
605
- type.setProperties(props)
606
- type.setNavigationProperties(navProps)
607
- }
608
-
609
- /**
610
- * Returns the complex type of the given name, or null if not found.
611
- * @param {FullQualifiedName} complexTypeName - Complex type name
612
- * @returns {?CsdlComplexType} the CSDL complex type
613
- * @override
614
- */
615
- getComplexType (complexTypeName) {
616
- let complexTypeJson = this._getElementJson(complexTypeName, 'ComplexType')
617
- if (complexTypeJson === null) return null
618
-
619
- let complexType = new CsdlComplexType(complexTypeName.name).setAnnotations(
620
- this._extractInlineAnnotations(complexTypeJson)
621
- )
622
- if (Object.prototype.hasOwnProperty.call(complexTypeJson, '$BaseType')) {
623
- complexType.setBaseType(FullQualifiedName.createFromNameSpaceAndName(complexTypeJson.$BaseType))
624
- }
625
- if (Object.prototype.hasOwnProperty.call(complexTypeJson, '$Abstract')) {
626
- complexType.isAbstract = complexTypeJson.$Abstract
627
- }
628
-
629
- this._setProperties(complexType, complexTypeJson)
630
-
631
- return complexType
632
- }
633
-
634
- /**
635
- * Creates a CsdlProperty object of a given property in JSON format.
636
- * @param {JSON} propertyJson - The corresponding property as a JSON object
637
- * @param {string} propertyName - Property name
638
- * @returns {CsdlProperty} the CSDL property
639
- * @private
640
- */
641
- _createCsdlProperty (propertyJson, propertyName) {
642
- let property = new CsdlProperty(propertyName, this._getTypeFQN(propertyJson) || defaultEdmTypeFQN).setAnnotations(
643
- this._extractInlineAnnotations(propertyJson)
644
- )
645
-
646
- this._readFacets(property, propertyJson, [
647
- '$Nullable',
648
- '$MaxLength',
649
- '$Precision',
650
- '$Scale',
651
- '$SRID',
652
- '$DefaultValue',
653
- '$Collection'
654
- ])
655
-
656
- return property
657
- }
658
-
659
- /**
660
- * Creates a CsdlNavigationProperty object of a given navigation property in JSON format
661
- * @param {JSON} navPropertyJson - The corresponding navigation property as a JSON object
662
- * @param {string} navPropertyName - Navigation property name
663
- * @returns {CsdlNavigationProperty} the CSDL navigation property
664
- * @private
665
- */
666
- _createCsdlNavigationProperty (navPropertyJson, navPropertyName) {
667
- let navProperty = new CsdlNavigationProperty(navPropertyName, this._getTypeFQN(navPropertyJson)).setAnnotations(
668
- this._extractInlineAnnotations(navPropertyJson)
669
- )
670
-
671
- this._readFacets(navProperty, navPropertyJson, ['$Collection'])
672
- // Nullable MUST NOT be specified for a collection-valued navigation property.
673
- if (!navProperty.isCollection) this._readFacets(navProperty, navPropertyJson, ['$Nullable'])
674
-
675
- if (Object.prototype.hasOwnProperty.call(navPropertyJson, '$Partner')) {
676
- navProperty.setPartner(navPropertyJson.$Partner)
677
- }
678
- if (Object.prototype.hasOwnProperty.call(navPropertyJson, '$ContainsTarget')) {
679
- navProperty.setContainsTarget(navPropertyJson.$ContainsTarget)
680
- }
681
- if (Object.prototype.hasOwnProperty.call(navPropertyJson, '$OnDelete')) {
682
- navProperty.setOnDelete(
683
- new CsdlOnDelete(navPropertyJson.$OnDelete).setAnnotations(
684
- this._extractImplicitAnnotations(navPropertyJson, '$OnDelete')
685
- )
686
- )
687
- }
688
- if (Object.prototype.hasOwnProperty.call(navPropertyJson, '$ReferentialConstraint')) {
689
- let refConstraints = new Map()
690
- for (const prop in navPropertyJson.$ReferentialConstraint) {
691
- const propValue = navPropertyJson.$ReferentialConstraint[prop]
692
-
693
- if (!prop.includes('@')) {
694
- // TODO property refers to a dependant, and not an annotation
695
- refConstraints.set(prop, new CsdlReferentialConstraint(prop /* dependent */, propValue /* principal */))
696
- } else {
697
- // Annotation of a ref constraint, example:
698
- // "$ReferentialConstraint": {
699
- // "dependent1": "principal1",
700
- // "dependent1@Org.OData.Core.V1.Description#q": "ReferentialConstraint annotation"
701
- // }
702
- const [propKey, term, qualifier] = this._splitAnnotationString(prop)
703
- let annotation = this._createAnnotation(term, qualifier, propValue)
704
-
705
- refConstraints.get(propKey).annotations.push(annotation)
706
- }
707
- }
708
-
709
- navProperty.setReferentialConstraints([...refConstraints.values()])
710
- }
711
-
712
- return navProperty
713
- }
714
-
715
- /**
716
- * Creates and returns a CsdlAnnotation object based on input parameters.
717
- * @param {string} termFqn - Term name as a full-qualified string
718
- * @param {string} qualifier - Term qualifier
719
- * @param {Object} expression - The value of the annotation
720
- * @returns {CsdlAnnotation} the CSDL annotation
721
- * @private
722
- */
723
- _createAnnotation (termFqn, qualifier, expression) {
724
- let annotation = new CsdlAnnotation(FullQualifiedName.createFromNameSpaceAndName(termFqn)).setExpression(
725
- this._interpretAnnotationExpression(expression)
726
- )
727
- if (qualifier) annotation.setQualifier(qualifier)
728
- return annotation
729
- }
730
-
731
- /**
732
- * Splits the string of an annotation of element / property / annotation, and returns an array of the parts.
733
- * Property annotation: propertyKey@term#qualifier => return [propertyKey, term, qualifier]
734
- * Annotation annotation: @annotationKey@term#qualifier => return [@annotationKey, term, qualifier]
735
- * Element annotation: @term#qualifier => return [term, qualifier]
736
- *
737
- * @param {string} annStr - Input annotation string.
738
- * @returns {string[]} the components of the annotation string
739
- * @private
740
- */
741
- _splitAnnotationString (annStr) {
742
- let res = []
743
- if (annStr.startsWith('@')) {
744
- if (annStr.lastIndexOf('@') === 0) {
745
- // element annotation
746
- res = annStr.substring(1).split('#')
747
- } else {
748
- // annotation annotation
749
- let [propKey, termq] = annStr.substring(1).split('@')
750
- propKey = annStr.charAt(0) + propKey
751
- const [term, qualifier] = termq.split('#')
752
-
753
- res = [propKey, term, qualifier]
754
- }
755
- } else {
756
- // property annotation
757
- let [propKey, termq] = annStr.split('@')
758
- const [term, qualifier] = termq.split('#')
759
-
760
- res = [propKey, term, qualifier]
761
- }
762
-
763
- return res
764
- }
765
-
766
- /**
767
- * Returns the array of actions of the given name, or null if not found.
768
- * @param {FullQualifiedName} actionName - Action name
769
- * @returns {?(CsdlAction[])} the CSDL actions
770
- * @override
771
- */
772
- getActions (actionName) {
773
- if (!this._edmJson[actionName.namespace]) return null
774
-
775
- let actionsJson = this._edmJson[actionName.namespace][actionName.name]
776
- if (!actionsJson || !Array.isArray(actionsJson)) return null
777
-
778
- let actions = []
779
- for (const actionObj of actionsJson) {
780
- if (actionObj.$Kind !== 'Action') continue
781
-
782
- let action = new CsdlAction(actionName.name).setAnnotations(this._extractInlineAnnotations(actionObj))
783
- if (Object.prototype.hasOwnProperty.call(actionObj, '$IsBound')) {
784
- action.setBound(actionObj.$IsBound)
785
- }
786
- if (Object.prototype.hasOwnProperty.call(actionObj, '$EntitySetPath')) {
787
- action.setEntitySetPath(actionObj.$EntitySetPath)
788
- }
789
- if (Object.prototype.hasOwnProperty.call(actionObj, '$Parameter')) {
790
- let parameters = actionObj.$Parameter.map(this._getActionFunctionParameter, this)
791
- action.setParameters(parameters)
792
- }
793
- if (Object.prototype.hasOwnProperty.call(actionObj, '$ReturnType')) {
794
- action.setReturnType(this._getActionFunctionReturnType(actionObj.$ReturnType))
795
- }
796
-
797
- actions.push(action)
798
- }
799
-
800
- return actions
801
- }
802
-
803
- /**
804
- * Returns the array of functions of the given name, or null if not found.
805
- * @param {FullQualifiedName} funcName - Function name
806
- * @returns {?(CsdlFunction[])} the CSDL functions
807
- * @override
808
- */
809
- getFunctions (funcName) {
810
- if (!this._edmJson[funcName.namespace]) return null
811
-
812
- let functionsJson = this._edmJson[funcName.namespace][funcName.name]
813
- if (!functionsJson || !Array.isArray(functionsJson)) return null
814
-
815
- let functions = []
816
- for (const funcObj of functionsJson) {
817
- if (funcObj.$Kind !== 'Function') continue
818
-
819
- let func = new CsdlFunction(funcName.name, this._getActionFunctionReturnType(funcObj.$ReturnType)).setAnnotations(
820
- this._extractInlineAnnotations(funcObj)
821
- )
822
-
823
- if (Object.prototype.hasOwnProperty.call(funcObj, '$IsBound')) {
824
- func.setBound(funcObj.$IsBound)
825
- }
826
- if (Object.prototype.hasOwnProperty.call(funcObj, '$IsComposable')) {
827
- func.setComposable(funcObj.$IsComposable)
828
- }
829
- if (Object.prototype.hasOwnProperty.call(funcObj, '$EntitySetPath')) {
830
- func.setEntitySetPath(funcObj.$EntitySetPath)
831
- }
832
- if (Object.prototype.hasOwnProperty.call(funcObj, '$Parameter')) {
833
- let parameters = funcObj.$Parameter.map(this._getActionFunctionParameter, this)
834
- func.setParameters(parameters)
835
- }
836
-
837
- functions.push(func)
838
- }
839
-
840
- return functions
841
- }
842
-
843
- /**
844
- * Creats a CsdlParameter object of a given action or function parameter in JSON format
845
- * @param {JSON} parameterJson - The corresponding parameter as a JSON object
846
- * @returns {CsdlParameter} the CSDL parameter
847
- * @private
848
- */
849
- _getActionFunctionParameter (parameterJson) {
850
- let parameter = new CsdlParameter(
851
- parameterJson.$Name,
852
- this._getTypeFQN(parameterJson) || defaultEdmTypeFQN
853
- ).setAnnotations(this._extractInlineAnnotations(parameterJson))
854
-
855
- this._readFacets(parameter, parameterJson, [
856
- '$Collection',
857
- '$Nullable',
858
- '$MaxLength',
859
- '$Precision',
860
- '$Scale',
861
- '$SRID'
862
- ])
863
-
864
- return parameter
865
- }
866
-
867
- /**
868
- * Creats a CsdlReturnType object of a given action or function returnType in JSON format
869
- * @param {JSON} returnTypeJson - The corresponding return type as a JSON object
870
- * @returns {CsdlReturnType} the CSDL return type
871
- * @private
872
- */
873
- _getActionFunctionReturnType (returnTypeJson) {
874
- let returnType = new CsdlReturnType(this._getTypeFQN(returnTypeJson) || defaultEdmTypeFQN).setAnnotations(
875
- this._extractInlineAnnotations(returnTypeJson)
876
- )
877
-
878
- this._readFacets(returnType, returnTypeJson, [
879
- '$Collection',
880
- '$Nullable',
881
- '$MaxLength',
882
- '$Precision',
883
- '$Scale',
884
- '$SRID'
885
- ])
886
-
887
- return returnType
888
- }
889
-
890
- /**
891
- * Returns the term of the given name, or null if not found.
892
- * @param {FullQualifiedName} termName - Term name
893
- * @returns {?CsdlTerm} the CSDL term
894
- * @override
895
- */
896
- getTerm (termName) {
897
- let termJson = this._getElementJson(termName, 'Term')
898
- if (termJson === null) return null
899
-
900
- let term = new CsdlTerm(termName.name, this._getTypeFQN(termJson) || defaultEdmTypeFQN).setAnnotations(
901
- this._extractInlineAnnotations(termJson)
902
- )
903
-
904
- if (Object.prototype.hasOwnProperty.call(termJson, '$BaseTerm')) {
905
- term.setBaseTerm(FullQualifiedName.createFromNameSpaceAndName(termJson.$BaseTerm))
906
- }
907
- if (Object.prototype.hasOwnProperty.call(termJson, '$AppliesTo')) {
908
- term.setAppliesTo(termJson.$AppliesTo)
909
- }
910
-
911
- this._readFacets(term, termJson, [
912
- '$Collection',
913
- '$DefaultValue',
914
- '$Nullable',
915
- '$MaxLength',
916
- '$Precision',
917
- '$Scale',
918
- '$SRID'
919
- ])
920
-
921
- return term
922
- }
923
-
924
- /**
925
- * Returns an array of the defined aliases under schemas and $Reference.refUri.$include
926
- * @returns {CsdlAliasInfo[]} the aliases
927
- * @override
928
- */
929
- getAliasInfos () {
930
- let aliasInfos = []
931
- const reference = this._edmJson.$Reference || {}
932
- const aliasInfoMap = new Map()
933
-
934
- const addAliasInfo = (namespace, alias) => {
935
- const fqn = namespace + '.' + alias
936
-
937
- // We filter already existing alias infos because of cross service referencing.
938
- // Currently we 'fake' the cross service reference by including the referenced
939
- // external model as a new namespace inside the current json model.
940
- // Therefore the second model alias must not be part of the real alias infos.
941
- if (!aliasInfoMap.has(fqn)) {
942
- const aliasInfo = new CsdlAliasInfo(namespace, alias)
943
- aliasInfos.push(aliasInfo)
944
- aliasInfoMap.set(aliasInfo.toString(), aliasInfo)
945
- }
946
- }
947
-
948
- // get aliases from Ref-Uri.$Include
949
- for (const refUriName in reference) {
950
- for (const include of reference[refUriName].$Include) {
951
- addAliasInfo(include.$Namespace, include.$Alias || include.$Namespace)
952
- }
953
- }
954
-
955
- // get aliases from schema
956
- for (const name in this._edmJson) {
957
- let element = this._edmJson[name]
958
- if (!name.startsWith('$') && Object.prototype.hasOwnProperty.call(element, '$Alias')) {
959
- addAliasInfo(name, element.$Alias)
960
- }
961
- }
962
-
963
- return aliasInfos
964
- }
965
-
966
- /**
967
- * Returns an array of all references.
968
- * @returns {CsdlReference[]} the references
969
- * @override
970
- */
971
- getReferences () {
972
- let references = []
973
-
974
- let refJson = this._edmJson.$Reference
975
- if (!refJson) return references
976
-
977
- references = Object.keys(refJson).map(uri => {
978
- let reference = new CsdlReference(uri).setAnnotations(this._extractInlineAnnotations(refJson[uri]))
979
- const includes = refJson[uri].$Include.map(include =>
980
- new CsdlInclude(include.$Namespace)
981
- .setAlias(include.$Alias)
982
- .setAnnotations(this._extractInlineAnnotations(include))
983
- )
984
- reference.setIncludes(includes)
985
- return reference
986
- })
987
-
988
- return references
989
- }
990
-
991
- /**
992
- * Reads the $Annotations property (referring to OData CSDL # 14.2) of the JSON structure, e.g.
993
- * "$Annotations": {
994
- "targetElement": {
995
- "@term1": "annotation value",
996
- "@term2": "annotation value"
997
- }
998
- }
999
- * and returns a corresponding array of CsdlAnnotations elements for each given target
1000
- *
1001
- * @param {Object} exAnnotationsJson - Refers to the $Annotations
1002
- * @returns {CsdlAnnotations[]} List of external annotations
1003
- */
1004
- _extractExternalAnnotations (exAnnotationsJson) {
1005
- return Object.keys(exAnnotationsJson).map(target =>
1006
- new CsdlAnnotations(target).setAnnotations(
1007
- // annotations are written in the same syntax as inline annotations,
1008
- // e.g. "@term1": "annotation value"
1009
- // so we can use _extractInlineAnnotations to interpret them
1010
- this._extractInlineAnnotations(exAnnotationsJson[target])
1011
- )
1012
- )
1013
- }
1014
-
1015
- /**
1016
- * Returns the current CSDL Version or '4.01-cs01' if none found. The return value is always in lower case.
1017
- * @returns {string} The current CSDL Version
1018
- * @private
1019
- */
1020
- _getCsdlVersion () {
1021
- return this._edmJson.$CsdlVersion === undefined
1022
- ? CsdlJsonProvider.CSDL_VERSION.CS01
1023
- : this._edmJson.$CsdlVersion.toLowerCase()
1024
- }
1025
-
1026
- /**
1027
- * Returns the CSDL Versions found by the this provider
1028
- * @returns {Map.<string, boolean>} The Csdl Versions found
1029
- * @private
1030
- */
1031
- _getCsdlVersionsFound () {
1032
- return this._csdlVersionsFound
1033
- }
1034
-
1035
- /**
1036
- * Interprets the given expression (in JSON format) and returns a corresponding CSDL expression object,
1037
- * e.g. CsdlConstantExpression or a specific CSDL dynamic expression.
1038
- *
1039
- * @param {*} expression - The input expression, which can be of any type
1040
- * @returns {*} CSDL expression object
1041
- * @private
1042
- */
1043
- _interpretAnnotationExpression (expression) {
1044
- if (typeof expression === 'string') {
1045
- if (this._getCsdlVersion() === CsdlJsonProvider.CSDL_VERSION.CS02) {
1046
- this._getCsdlVersionsFound().set(CsdlJsonProvider.CSDL_VERSION.CS02, true)
1047
- // Since the OASIS Issue 1221 is adapted we can not detect the type of the expression here.
1048
- // Therefore we return an CsdlUnknownExpression if the value is of (Javascript) type string.
1049
- return new CsdlUnknownExpression(expression)
1050
- }
1051
- this._getCsdlVersionsFound().set(CsdlJsonProvider.CSDL_VERSION.CS01, true)
1052
- return new CsdlConstantExpression(ConstantExpressionType.String, expression)
1053
- } else if (typeof expression === 'boolean') {
1054
- return new CsdlConstantExpression(ConstantExpressionType.Bool, expression)
1055
- } else if (typeof expression === 'number') {
1056
- return new CsdlConstantExpression(ConstantExpressionType.Float, expression)
1057
- } else if (expression === null) {
1058
- return new CsdlNullExpression()
1059
- } else if (typeof expression === 'object') {
1060
- const expType = [
1061
- '$Binary',
1062
- '$Date',
1063
- '$DateTimeOffset',
1064
- '$Decimal',
1065
- '$Duration',
1066
- '$EnumMember',
1067
- '$Float',
1068
- '$Guid',
1069
- '$Int',
1070
- '$TimeOfDay'
1071
- ].find(type => expression[type])
1072
- if (!expType) {
1073
- return this._interpretDynamicExpression(expression).setAnnotations(this._extractInlineAnnotations(expression))
1074
- }
1075
-
1076
- return new CsdlConstantExpression(
1077
- ConstantExpressionType[expType.substring(1)], // Type is the same as expType without '$'
1078
- // Binary values are saved as Buffer.
1079
- expType === '$Binary' ? Buffer.from(expression[expType], 'base64') : expression[expType]
1080
- ).setAnnotations(
1081
- this._extractInlineAnnotations(expression).concat(this._extractImplicitAnnotations(expression, expType))
1082
- )
1083
- }
1084
-
1085
- return null
1086
- }
1087
-
1088
- /**
1089
- * Interprets expressions when they refer to a dynamic expression,
1090
- * i.e. they are of type 'object' and do not have a constant expression property ($Binary, $Date, ..etc.),
1091
- * and returns a corresponding CSDL expression object, e.g. CsdlBinaryExpression,
1092
- * CsdlAnnotationPathExpression, ..etc
1093
- *
1094
- * @param {Object} dynExpression - The dynamic expression JSON object
1095
- * @returns {*} CSDL dynamic expression object
1096
- * @private
1097
- */
1098
- _interpretDynamicExpression (dynExpression) {
1099
- if (Array.isArray(dynExpression)) {
1100
- // Collection
1101
- return new CsdlCollectionExpression(dynExpression.map(elem => this._interpretAnnotationExpression(elem)))
1102
- }
1103
-
1104
- const expType = Object.keys(dynExpression).filter(key => !key.startsWith('@'))[0]
1105
- switch (expType) {
1106
- case '$And':
1107
- case '$Or': {
1108
- const operands = dynExpression[expType]
1109
-
1110
- return new CsdlBinaryExpression(
1111
- LogicalOperators[expType.substring(1)], // And, Or
1112
- this._interpretAnnotationExpression(operands[0]), // left
1113
- this._interpretAnnotationExpression(operands[1])
1114
- ) // right
1115
- }
1116
-
1117
- case '$Not':
1118
- return new CsdlNotExpression(this._interpretAnnotationExpression(dynExpression[expType]))
1119
-
1120
- case '$Eq':
1121
- case '$Ne':
1122
- case '$Gt':
1123
- case '$Ge':
1124
- case '$Lt':
1125
- case '$Le':
1126
- case '$In': {
1127
- const operands = dynExpression[expType]
1128
- return new CsdlBinaryExpression(
1129
- ComparisonOperators[expType.substring(1)],
1130
- this._interpretAnnotationExpression(operands[0]), // left
1131
- this._interpretAnnotationExpression(operands[1])
1132
- ) // right
1133
- }
1134
-
1135
- case '$Add':
1136
- case '$Sub':
1137
- case '$Mul':
1138
- case '$Div':
1139
- case '$DivBy':
1140
- case '$Mod': {
1141
- const operands = dynExpression[expType]
1142
- return new CsdlArithmeticExpression(
1143
- expType.substring(1),
1144
- this._interpretAnnotationExpression(operands[0]), // left
1145
- this._interpretAnnotationExpression(operands[1])
1146
- ) // right
1147
- }
1148
-
1149
- case '$Neg':
1150
- return new CsdlNegationExpression(this._interpretAnnotationExpression(dynExpression[expType]))
1151
-
1152
- case '$AnnotationPath':
1153
- return new CsdlAnnotationPathExpression(dynExpression.$AnnotationPath)
1154
-
1155
- case '$Apply': {
1156
- const func = dynExpression.$Function
1157
- const params = dynExpression.$Apply.map(parameter => this._interpretAnnotationExpression(parameter))
1158
- return new CsdlApplyExpression(FullQualifiedName.createFromNameSpaceAndName(func), params)
1159
- }
1160
-
1161
- case '$Cast': {
1162
- let castExpression = new CsdlCastExpression(
1163
- this._getTypeFQN(dynExpression),
1164
- this._interpretAnnotationExpression(dynExpression.$Cast)
1165
- )
1166
- this._readFacets(castExpression, dynExpression, ['$Collection', '$MaxLength', '$Precision', '$Scale', '$SRID'])
1167
- return castExpression
1168
- }
1169
-
1170
- case '$If':
1171
- return new CsdlIfExpression(
1172
- this._interpretAnnotationExpression(dynExpression.$If[0]),
1173
- this._interpretAnnotationExpression(dynExpression.$If[1]),
1174
- this._interpretAnnotationExpression(dynExpression.$If[2])
1175
- )
1176
-
1177
- case '$IsOf': {
1178
- let isOf = new CsdlIsOfExpression(
1179
- this._getTypeFQN(dynExpression),
1180
- this._interpretAnnotationExpression(dynExpression.$IsOf)
1181
- )
1182
- this._readFacets(isOf, dynExpression, ['$Collection', '$MaxLength', '$Precision', '$Scale', '$SRID'])
1183
- return isOf
1184
- }
1185
-
1186
- case '$LabeledElement':
1187
- return new CsdlLabeledElementExpression(
1188
- dynExpression.$Name,
1189
- this._interpretAnnotationExpression(dynExpression.$LabeledElement)
1190
- )
1191
-
1192
- case '$LabeledElementReference':
1193
- return new CsdlLabeledElementReferenceExpression(
1194
- FullQualifiedName.createFromNameSpaceAndName(dynExpression.$LabeledElementReference)
1195
- )
1196
-
1197
- case '$Null':
1198
- return new CsdlNullExpression()
1199
-
1200
- case '$Path':
1201
- return new CsdlPathExpression(dynExpression.$Path)
1202
-
1203
- case '$ModelElementPath':
1204
- return new CsdlModelElementPathExpression(dynExpression.$ModelElementPath)
1205
-
1206
- case '$NavigationPropertyPath':
1207
- return new CsdlNavigationPropertyPathExpression(dynExpression.$NavigationPropertyPath)
1208
-
1209
- case '$PropertyPath':
1210
- return new CsdlPropertyPathExpression(dynExpression.$PropertyPath)
1211
-
1212
- case '$UrlRef':
1213
- return new CsdlUrlRefExpression(this._interpretAnnotationExpression(dynExpression.$UrlRef))
1214
-
1215
- default: {
1216
- // Record expression
1217
- let propertyValues = new Map()
1218
- let type = null
1219
-
1220
- for (const propertyName in dynExpression) {
1221
- if (propertyName === '$Type') {
1222
- type = this._getTypeFQN(dynExpression)
1223
- } else if (!propertyName.includes('@')) {
1224
- // annotations of the record expression start with '@',
1225
- // but the annotations of the property values include '@' at a further position.
1226
- propertyValues.set(
1227
- propertyName,
1228
- new CsdlPropertyValueExpression(
1229
- propertyName,
1230
- this._interpretAnnotationExpression(dynExpression[propertyName])
1231
- ).setAnnotations(this._extractImplicitAnnotations(dynExpression, propertyName))
1232
- )
1233
- }
1234
- }
1235
-
1236
- return new CsdlRecordExpression(type, [...propertyValues.values()])
1237
- }
1238
- }
1239
- }
1240
-
1241
- /**
1242
- * Extracts annotations of the form:
1243
- *
1244
- *{
1245
- * element: {..},
1246
- * 'element@term': '..'
1247
- * }
1248
- * @param {*} objJson the object that contains the annotations
1249
- * @param {string} elementName the name of the annotated element
1250
- * @returns {Array} the annotations
1251
- * @private
1252
- */
1253
- _extractImplicitAnnotations (objJson, elementName = null) {
1254
- let annotations = []
1255
-
1256
- new AnnotationParser({ target: elementName }).parse(objJson, this._createAnnotation.bind(this), annotations)
1257
-
1258
- return annotations
1259
- }
1260
-
1261
- /**
1262
- * Extracts the inline annotations (that start with an '@') of an element, and returns an array of CsdlAnnotation
1263
- * instances. It also extracts the inline annotations of the inline annotations. Example:
1264
- * {
1265
- $And: [
1266
- true,
1267
- false
1268
- ],
1269
- '@Org.OData.Core.V1.Description': 'annotation1',
1270
- '@Org.OData.Core.V1.Description@Org.OData.Core.V1.Desc': 'annotation of annotation1'
1271
- }
1272
- *
1273
- * @param {Object} element - The input JSON element
1274
- * @param {Array} annotations the annotations
1275
- * @returns {CsdlAnnotation[]} the inline annotations
1276
- * @private
1277
- */
1278
- _extractInlineAnnotations (element, annotations = []) {
1279
- return new AnnotationParser().parse(element, this._createAnnotation.bind(this), annotations)
1280
- }
1281
-
1282
- /**
1283
- * Checks whether the JSON object has the given facets, and then sets on the CSDL object accordingly.
1284
- * @param {Object} obj - CSDL object, e.g. CsdlEntityType
1285
- * @param {Object} objJson - JSON object
1286
- * @param {string[]} allowedFacets - Array of the allowed facets as strings, e.g. '$Nullable', '$MaxLength', etc.
1287
- * @private
1288
- */
1289
- _readFacets (obj, objJson, allowedFacets) {
1290
- const type = obj.type || obj.underlyingType
1291
-
1292
- for (const facet of allowedFacets) {
1293
- // The JSON defaults for Nullable, Precision, and Scale are different from XML,
1294
- // so we make sure to set them always. This avoids adapting CSDL classes.
1295
- if (facet === '$Nullable') obj.setNullable(false)
1296
- if (facet === '$Precision') {
1297
- // Precision's default is arbitrary precision (differing for temporal values from XML);
1298
- // so we choose a sufficiently large number (picosecond precision).
1299
- if (type.name === 'DateTimeOffset' || type.name === 'TimeOfDay' || type.name === 'Duration') {
1300
- obj.setPrecision(Object.prototype.hasOwnProperty.call(objJson, facet) ? objJson[facet] : 12)
1301
- } else if (Object.prototype.hasOwnProperty.call(objJson, facet)) {
1302
- obj.setPrecision(objJson[facet])
1303
- }
1304
- }
1305
- if (facet === '$Scale' && type.name === 'Decimal') obj.setScale('variable')
1306
-
1307
- if (Object.prototype.hasOwnProperty.call(objJson, facet)) {
1308
- const value = objJson[facet]
1309
- switch (facet) {
1310
- case '$Nullable':
1311
- obj.setNullable(value)
1312
- break
1313
- case '$MaxLength':
1314
- obj.setMaxLength(value)
1315
- break
1316
- case '$Scale':
1317
- obj.setScale(value)
1318
- break
1319
- case '$SRID':
1320
- obj.setSrid(value)
1321
- break
1322
- case '$DefaultValue':
1323
- obj.setDefaultValue(value)
1324
- break
1325
- case '$Collection':
1326
- obj.setCollection(value)
1327
- break
1328
- default:
1329
- }
1330
- }
1331
- }
1332
- }
1333
-
1334
- /**
1335
- * Reads the $Type property of an element and converts it to a full-qualified name.
1336
- * @param {Object} element element
1337
- * @returns {?FullQualifiedName} The full-qualified name of the $Type property or null if $Type is not there
1338
- * @private
1339
- */
1340
- _getTypeFQN (element) {
1341
- return element.$Type ? FullQualifiedName.createFromNameSpaceAndName(element.$Type) : null
1342
- }
1343
-
1344
- /**
1345
- * Reads a specific element by its name of a specific kind from the EDM JSON Model
1346
- * @param {string} name - Element name
1347
- * @param {string} kind - Element kind, e.g. EntityType
1348
- * @returns {Object} The JSON object of the found element, or null if not found
1349
- * @private
1350
- */
1351
- _getElementJson (name, kind) {
1352
- let elementJson = this._getPropertyValue(this._edmJson, name.namespace, name.name)
1353
- if (!elementJson || elementJson.$Kind !== kind) {
1354
- return null
1355
- }
1356
- return elementJson
1357
- }
1358
- }
1359
-
1360
- CsdlJsonProvider.CSDL_VERSION = {
1361
- CS01: 'cs01',
1362
- CS02: 'cs02'
1363
- }
1364
-
1365
- module.exports = CsdlJsonProvider