@sap/cds 8.9.4 → 9.0.3

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 +121 -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/linked-csn.js +7 -8
  18. package/lib/dbs/cds-deploy.js +4 -3
  19. package/lib/env/cds-env.js +9 -9
  20. package/lib/env/cds-requires.js +23 -50
  21. package/lib/env/defaults.js +15 -44
  22. package/lib/env/schemas/cds-package.js +1 -1
  23. package/lib/i18n/index.js +1 -0
  24. package/lib/i18n/locale.js +41 -0
  25. package/lib/index.js +25 -15
  26. package/lib/log/cds-error.js +13 -3
  27. package/lib/log/cds-log.js +43 -18
  28. package/lib/log/format/aspects/als.js +2 -15
  29. package/lib/plugins.js +11 -11
  30. package/lib/ql/CREATE.js +1 -1
  31. package/lib/ql/DELETE.js +1 -1
  32. package/lib/ql/DROP.js +1 -1
  33. package/lib/ql/INSERT.js +9 -18
  34. package/lib/ql/SELECT.js +12 -19
  35. package/lib/ql/UPDATE.js +1 -1
  36. package/lib/ql/UPSERT.js +1 -0
  37. package/lib/ql/Whereable.js +7 -6
  38. package/lib/ql/cds-ql.js +0 -12
  39. package/lib/ql/cds.ql-Query.js +28 -68
  40. package/lib/ql/cds.ql-infer.js +97 -108
  41. package/lib/ql/resolve.js +1 -3
  42. package/lib/req/context.js +5 -4
  43. package/lib/req/request.js +46 -42
  44. package/lib/req/response.js +5 -9
  45. package/lib/req/spawn.js +38 -0
  46. package/lib/req/validate.js +9 -8
  47. package/lib/srv/bindings.js +2 -1
  48. package/lib/srv/cds-connect.js +5 -2
  49. package/lib/srv/cds-serve.js +0 -2
  50. package/lib/srv/cds.Service.js +146 -86
  51. package/lib/srv/middlewares/auth/ias-auth.js +99 -88
  52. package/lib/srv/middlewares/auth/jwt-auth.js +44 -57
  53. package/lib/srv/middlewares/cds-context.js +1 -1
  54. package/lib/srv/middlewares/ctx-model.js +1 -1
  55. package/lib/srv/middlewares/errors.js +34 -42
  56. package/lib/srv/protocols/hcql.js +35 -25
  57. package/lib/srv/protocols/index.js +0 -9
  58. package/lib/srv/protocols/odata-v4.js +1 -6
  59. package/lib/srv/srv-dispatch.js +29 -31
  60. package/lib/srv/srv-handlers.js +14 -46
  61. package/lib/srv/srv-methods.js +15 -37
  62. package/lib/srv/srv-tx.js +19 -25
  63. package/lib/test/cds-test.js +4 -263
  64. package/lib/utils/cds-utils.js +18 -2
  65. package/lib/utils/tar.js +6 -8
  66. package/lib/utils/unit.js +19 -0
  67. package/libx/_runtime/.eslintrc +1 -1
  68. package/libx/_runtime/cds-services/util/assert.js +2 -72
  69. package/libx/_runtime/cds.js +13 -6
  70. package/libx/_runtime/common/Service.js +33 -75
  71. package/libx/_runtime/common/aspects/any.js +0 -38
  72. package/libx/_runtime/common/constants/events.js +5 -13
  73. package/libx/_runtime/common/generic/auth/autoexpose.js +10 -24
  74. package/libx/_runtime/common/generic/auth/capabilities.js +23 -20
  75. package/libx/_runtime/common/generic/auth/expand.js +3 -3
  76. package/libx/_runtime/common/generic/auth/index.js +3 -3
  77. package/libx/_runtime/common/generic/auth/insertOnly.js +3 -3
  78. package/libx/_runtime/common/generic/auth/readOnly.js +4 -4
  79. package/libx/_runtime/common/generic/auth/requires.js +4 -4
  80. package/libx/_runtime/common/generic/auth/restrict.js +12 -29
  81. package/libx/_runtime/common/generic/auth/service.js +3 -3
  82. package/libx/_runtime/common/generic/auth/utils.js +2 -12
  83. package/libx/_runtime/common/generic/crud.js +22 -53
  84. package/libx/_runtime/common/generic/etag.js +18 -31
  85. package/libx/_runtime/common/generic/input.js +51 -123
  86. package/libx/_runtime/common/generic/paging.js +4 -4
  87. package/libx/_runtime/common/generic/sorting.js +8 -19
  88. package/libx/_runtime/common/generic/stream-only.js +26 -0
  89. package/libx/_runtime/common/generic/stream.js +16 -48
  90. package/libx/_runtime/common/generic/temporal.js +15 -7
  91. package/libx/_runtime/common/utils/binary.js +1 -26
  92. package/libx/_runtime/common/utils/compareJson.js +1 -2
  93. package/libx/_runtime/common/utils/cqn.js +15 -14
  94. package/libx/_runtime/common/utils/differ.js +121 -44
  95. package/libx/_runtime/common/utils/keys.js +4 -5
  96. package/libx/_runtime/common/utils/normalizeTimestamp.js +10 -1
  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 +105 -141
  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 +10 -8
  140. package/libx/odata/utils/normalizeTimeData.js +5 -8
  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 +531 -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,848 +0,0 @@
1
- 'use strict'
2
-
3
- const KeyPredicateParser = require('./KeyPredicateParser')
4
- const FunctionParameterParser = require('./FunctionParameterParser')
5
- const UriResource = require('./UriResource')
6
- const UriTokenizer = require('./UriTokenizer')
7
- const TokenKind = UriTokenizer.TokenKind
8
- const FullQualifiedName = require('../FullQualifiedName')
9
- const EdmTypeKind = require('../edm/EdmType').TypeKind
10
- const EdmPrimitiveTypeKind = require('../edm/EdmPrimitiveTypeKind')
11
- const UriSyntaxError = require('../errors/UriSyntaxError')
12
- const UriSemanticError = require('../errors/UriSemanticError')
13
- const NotImplementedError = require('../errors/NotImplementedError')
14
- const FeatureSupport = require('../FeatureSupport')
15
-
16
- /**
17
- * OData ABNF resource-path parser
18
- */
19
- class ResourcePathParser {
20
- /**
21
- * Creates an instance of ResourcePathParser.
22
- * @param {Edm} edm The current instance of EDM
23
- * @param {Object} aliases Alias definitions
24
- */
25
- constructor (edm, aliases) {
26
- this._edm = edm
27
- this._aliases = aliases
28
- this._edmContainer = this._edm.getEntityContainer()
29
- this._target = null
30
- }
31
-
32
- /**
33
- * Parse the current URI segments. These segments must not include any '/'.
34
- * @param {string[]} uriPathSegments The current already percent-decoded URI segments
35
- * @throws {UriSyntaxError|UriSemanticError} if the URI could not be parsed
36
- * @returns {UriResource[]} An array of UriResource objects
37
- */
38
- parse (uriPathSegments) {
39
- this._target = null
40
- let result = []
41
- let tokenizer = new UriTokenizer(uriPathSegments[0])
42
-
43
- tokenizer.requireNext(TokenKind.ODataIdentifier)
44
-
45
- const currentToken = tokenizer.getText()
46
- let currentResource = new UriResource()
47
- let edmResult = this._edmContainer.getEntitySet(currentToken)
48
-
49
- if (edmResult) {
50
- currentResource
51
- .setKind(UriResource.ResourceKind.ENTITY_COLLECTION)
52
- .setIsCollection(true)
53
- .setEntitySet(edmResult)
54
-
55
- this._target = edmResult
56
- const uriResources = this._parseCollectionNavigation(uriPathSegments, currentResource, tokenizer)
57
- return result.concat(uriResources)
58
- }
59
-
60
- edmResult = this._edmContainer.getSingleton(currentToken)
61
-
62
- if (edmResult) {
63
- currentResource
64
- .setKind(UriResource.ResourceKind.SINGLETON)
65
- .setSingleton(edmResult)
66
- .setIsCollection(false)
67
-
68
- this._target = edmResult
69
- tokenizer.requireNext(TokenKind.EOF)
70
- uriPathSegments.shift()
71
- return result.concat(this._parseSingleNavigation(uriPathSegments, currentResource))
72
- }
73
-
74
- edmResult = this._edmContainer.getActionImport(currentToken)
75
-
76
- if (edmResult) {
77
- const unboundAction = edmResult.getUnboundAction()
78
-
79
- this._target = edmResult.getReturnedEntitySet()
80
-
81
- currentResource
82
- .setKind(UriResource.ResourceKind.ACTION_IMPORT)
83
- .setActionImport(edmResult)
84
- .setAction(unboundAction)
85
- .setIsCollection(unboundAction.getReturnType() ? unboundAction.getReturnType().isCollection() : false)
86
- .setTarget(this._target)
87
-
88
- tokenizer.requireNext(TokenKind.EOF)
89
- uriPathSegments.shift()
90
- return result.concat(currentResource)
91
- }
92
-
93
- edmResult = this._edmContainer.getFunctionImport(currentToken)
94
-
95
- if (edmResult) {
96
- const functions = edmResult.getUnboundFunctions()
97
- const returnType = functions[0].getReturnType()
98
- const isCollection = returnType.isCollection()
99
- const kind = returnType.getType().getKind()
100
-
101
- this._parseFunctionImport(currentResource, edmResult, tokenizer)
102
-
103
- const unboundFunction = currentResource.getFunction()
104
- if (unboundFunction && !unboundFunction.isComposable() && uriPathSegments.length > 1) {
105
- throw new UriSyntaxError(
106
- UriSyntaxError.Message.FUNCTION_NOT_COMPOSABLE,
107
- unboundFunction.getName(),
108
- uriPathSegments[uriPathSegments.length - 1]
109
- )
110
- }
111
-
112
- this._target = edmResult.getReturnedEntitySet()
113
-
114
- if (kind === EdmTypeKind.ENTITY) {
115
- currentResource.setTarget(this._target)
116
-
117
- if (isCollection) {
118
- // We do not need EOF / uriPathSegments.shift() because we try to parse
119
- // the next key (if available). This is done in the current segment.
120
- return [].concat(this._parseCollectionNavigation(uriPathSegments, currentResource, tokenizer))
121
- }
122
-
123
- // If the return type is not a collection, no keys are allowed.
124
- if (tokenizer.next(TokenKind.OPEN)) {
125
- throw new UriSyntaxError(UriSyntaxError.Message.FUNCTION_IMPORT_EOF, edmResult.getName())
126
- }
127
-
128
- tokenizer.requireNext(TokenKind.EOF)
129
- uriPathSegments.shift()
130
- return result.concat(this._parseSingleNavigation(uriPathSegments, currentResource))
131
- }
132
-
133
- // Only entities can have keys.
134
- if (tokenizer.next(TokenKind.OPEN)) {
135
- throw new UriSyntaxError(UriSyntaxError.Message.FUNCTION_IMPORT_EOF, edmResult.getName())
136
- }
137
-
138
- tokenizer.requireNext(TokenKind.EOF)
139
- uriPathSegments.shift()
140
-
141
- let functionRest
142
- if (isCollection) {
143
- functionRest =
144
- kind === EdmTypeKind.COMPLEX
145
- ? this._parseComplexCollectionPath(uriPathSegments, currentResource)
146
- : this._parsePrimitiveCollectionPath(uriPathSegments, currentResource)
147
- } else {
148
- functionRest =
149
- kind === EdmTypeKind.COMPLEX
150
- ? this._parseComplexPath(uriPathSegments, currentResource)
151
- : this._parsePrimitivePath(uriPathSegments, currentResource)
152
- }
153
-
154
- return functionRest ? result.concat(currentResource, functionRest) : result.concat(currentResource)
155
- }
156
-
157
- throw new UriSemanticError(UriSemanticError.Message.WRONG_NAME, currentToken)
158
- }
159
-
160
- /**
161
- * Parse a function import.
162
- * @param {UriResource} currentResource The current uri resource object
163
- * @param {EdmFunctionImport} functionImport The current function import
164
- * @param {UriTokenizer} tokenizer The current tokenizer
165
- * @private
166
- */
167
- _parseFunctionImport (currentResource, functionImport, tokenizer) {
168
- currentResource.setKind(UriResource.ResourceKind.FUNCTION_IMPORT)
169
- currentResource.setFunctionImport(functionImport)
170
-
171
- // Parse function-import parameters.
172
- const functions = functionImport.getUnboundFunctions()
173
- const parser = new FunctionParameterParser(this._edm, this._aliases)
174
- parser.parse(functionImport.getName(), functions, tokenizer, visitedParameters => {
175
- return functionImport.getUnboundFunction(Array.from(visitedParameters.keys()))
176
- })
177
-
178
- const unboundFunction = parser.getFunction()
179
- if (!unboundFunction) {
180
- throw new UriSyntaxError(UriSyntaxError.Message.FUNCTION_IMPORT_FUNCTION_NOT_FOUND, tokenizer.getText())
181
- }
182
-
183
- currentResource
184
- .setFunction(unboundFunction)
185
- .setFunctionParameters(parser.getParameters())
186
- .setIsCollection(unboundFunction.getReturnType().isCollection())
187
- }
188
-
189
- /**
190
- * Parse OData ABNF collection navigation.
191
- * @param {string[]} uriPathSegments The uri path segments
192
- * @param {UriResource} currentResourceParam The current resource
193
- * @param {UriTokenizer} tokenizerParam The current tokenizer
194
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
195
- * @private
196
- */
197
- _parseCollectionNavigation (uriPathSegments, currentResourceParam, tokenizerParam) {
198
- let result = []
199
- let currentResource = currentResourceParam
200
- let tokenizer = tokenizerParam
201
-
202
- if (tokenizer.next(TokenKind.EOF) && uriPathSegments.length > 1) {
203
- const typeTokenizer = new UriTokenizer(uriPathSegments[1])
204
-
205
- if (typeTokenizer.next(TokenKind.QualifiedName)) {
206
- const qualifiedName = typeTokenizer.getText()
207
- const typeCastResource = this._parseTypeCast(currentResource, qualifiedName)
208
- if (typeCastResource) {
209
- uriPathSegments.shift()
210
- result.push(currentResource)
211
- currentResource = typeCastResource
212
- tokenizer = typeTokenizer
213
- }
214
- }
215
- }
216
-
217
- const uriResources = this._parseCollectionNavPath(uriPathSegments, currentResource, tokenizer)
218
- return result.concat(uriResources)
219
- }
220
-
221
- /**
222
- * Parse OData type cast.
223
- * @param {UriResource} prevResource The previous resource
224
- * @param {string} qualifiedName The qualified name of the current uri segment
225
- * @returns {?UriResource} a UriResource or null
226
- * @private
227
- */
228
- _parseTypeCast (prevResource, qualifiedName) {
229
- const fqn = FullQualifiedName.createFromNameSpaceAndName(qualifiedName)
230
- const currentType = prevResource.getEdmType()
231
-
232
- const type =
233
- currentType.getKind() === EdmTypeKind.ENTITY ? this._edm.getEntityType(fqn) : this._edm.getComplexType(fqn)
234
- if (!type) return null
235
-
236
- // Type casts are explicitly not supported (although the parser can parse them).
237
- FeatureSupport.failUnsupported(FeatureSupport.features.TypeCast, qualifiedName, 0)
238
-
239
- if (!type.compatibleTo(currentType)) {
240
- throw new UriSemanticError(
241
- UriSemanticError.Message.INCOMPATIBLE_TYPE,
242
- qualifiedName,
243
- currentType.getFullQualifiedName()
244
- )
245
- }
246
-
247
- return new UriResource()
248
- .setKind(UriResource.ResourceKind.TYPE_CAST)
249
- .setTypeCast(type)
250
- .setIsCollection(prevResource.isCollection())
251
- }
252
-
253
- /**
254
- * Parse OData ABNF collection nav path.
255
- * @param {string[]} uriPathSegments The uri path segments
256
- * @param {UriResource} currentResource The current resource
257
- * @param {UriTokenizer} tokenizer The current tokenizer
258
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
259
- * @private
260
- */
261
- _parseCollectionNavPath (uriPathSegments, currentResource, tokenizer) {
262
- if (tokenizer.next(TokenKind.OPEN)) {
263
- if (tokenizer.next(TokenKind.CLOSE)) throw new UriSyntaxError(UriSyntaxError.Message.KEY_EXPECTED)
264
-
265
- const edmType = currentResource.getEdmType()
266
- const keyPredicates = new KeyPredicateParser(this._edm, this._aliases).parse(currentResource, edmType, tokenizer)
267
-
268
- tokenizer.requireNext(TokenKind.CLOSE)
269
- currentResource.setKeyPredicates(keyPredicates).setIsCollection(false)
270
-
271
- if (currentResource.getKind() === UriResource.ResourceKind.ENTITY_COLLECTION) {
272
- currentResource.setKind(UriResource.ResourceKind.ENTITY)
273
- } else if (currentResource.getKind() === UriResource.ResourceKind.NAVIGATION_TO_MANY) {
274
- currentResource.setKind(UriResource.ResourceKind.NAVIGATION_TO_ONE)
275
- }
276
-
277
- tokenizer.requireNext(TokenKind.EOF)
278
- uriPathSegments.shift()
279
-
280
- return this._parseSingleNavigation(uriPathSegments, currentResource)
281
- }
282
-
283
- tokenizer.requireNext(TokenKind.EOF)
284
- uriPathSegments.shift()
285
- if (uriPathSegments.length === 0) return currentResource
286
-
287
- let nextTokenizer = new UriTokenizer(uriPathSegments[0])
288
-
289
- const refResource = this._parseConstant(
290
- uriPathSegments,
291
- nextTokenizer,
292
- TokenKind.REF,
293
- currentResource.isCollection() ? UriResource.ResourceKind.REF_COLLECTION : UriResource.ResourceKind.REF
294
- )
295
- if (refResource) {
296
- refResource.setIsCollection(currentResource.isCollection())
297
- return [currentResource].concat(refResource)
298
- }
299
-
300
- let countResource = this._parseConstant(
301
- uriPathSegments,
302
- nextTokenizer,
303
- TokenKind.COUNT,
304
- UriResource.ResourceKind.COUNT
305
- )
306
- if (countResource) {
307
- countResource.setIsCollection(currentResource.isCollection())
308
- return [currentResource].concat(countResource)
309
- }
310
-
311
- // When Okra receives a request like `/Collection/a.b.c`, it is checked here if it is a bound action/function.
312
- // if it was not a bound action/function, we remember the error in order to throw it later, if `a.b.c` is also not a key predicate.
313
- // This might be the case for integer keys.
314
- let err
315
- if (nextTokenizer.next(TokenKind.QualifiedName)) {
316
- try {
317
- return [currentResource].concat(this._parseBoundOperation(uriPathSegments, currentResource, nextTokenizer))
318
- } catch (error) {
319
- err = error
320
- }
321
- }
322
-
323
- const keyPredicates = new KeyPredicateParser().parseKeyPathSegments(currentResource, uriPathSegments)
324
- if (keyPredicates) {
325
- currentResource.setKeyPredicates(keyPredicates).setIsCollection(false)
326
- if (currentResource.getKind() === UriResource.ResourceKind.ENTITY_COLLECTION) {
327
- currentResource.setKind(UriResource.ResourceKind.ENTITY)
328
- } else if (currentResource.getKind() === UriResource.ResourceKind.NAVIGATION_TO_MANY) {
329
- currentResource.setKind(UriResource.ResourceKind.NAVIGATION_TO_ONE)
330
- }
331
- for (let i = 0; i < keyPredicates.length; i++) uriPathSegments.shift()
332
- return this._parseSingleNavigation(uriPathSegments, currentResource)
333
- }
334
-
335
- if (err) throw err
336
-
337
- try {
338
- nextTokenizer.requireNext(TokenKind.ODataIdentifier)
339
- const uriResources = this._parseBoundOperation(uriPathSegments, currentResource, nextTokenizer)
340
- if (uriResources) {
341
- return [currentResource].concat(uriResources)
342
- }
343
- } catch (error) {
344
- }
345
-
346
- throw new UriSyntaxError(UriSyntaxError.Message.MUST_BE_COUNT_OR_REF_OR_BOUND_OPERATION, uriPathSegments[0])
347
- }
348
-
349
- /**
350
- * Parse OData ABNF single navigation.
351
- * @param {string[]} uriPathSegments The uri path segments
352
- * @param {UriResource} prevResource The previous resource
353
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
354
- * @private
355
- */
356
- _parseSingleNavigation (uriPathSegments, prevResource) {
357
- if (uriPathSegments.length === 0) return prevResource
358
-
359
- let result = [prevResource]
360
- let currentResource = prevResource
361
- let tokenizer = new UriTokenizer(uriPathSegments[0])
362
-
363
- // parse qualifiedEntityTypeName
364
- if (tokenizer.next(TokenKind.QualifiedName)) {
365
- const typeCastResource = this._parseTypeCast(currentResource, tokenizer.getText())
366
- if (typeCastResource) {
367
- tokenizer.requireNext(TokenKind.EOF)
368
- uriPathSegments.shift()
369
-
370
- tokenizer = new UriTokenizer(uriPathSegments[0])
371
- result.push(typeCastResource)
372
- currentResource = typeCastResource
373
-
374
- if (uriPathSegments.length === 0) return result
375
- } else {
376
- // parse boundOperation
377
- return result.concat(this._parseBoundOperation(uriPathSegments, currentResource, tokenizer))
378
- }
379
- }
380
-
381
- // parse bound operation
382
- if (tokenizer.next(TokenKind.QualifiedName)) {
383
- return result.concat(this._parseBoundOperation(uriPathSegments, currentResource, tokenizer))
384
- }
385
-
386
- // parse $ref
387
- const refResource = this._parseConstant(uriPathSegments, tokenizer, TokenKind.REF, UriResource.ResourceKind.REF)
388
- if (refResource) return result.concat(refResource)
389
-
390
- // parse $value
391
- const valueResource = this._parseConstant(
392
- uriPathSegments,
393
- tokenizer,
394
- TokenKind.VALUE,
395
- UriResource.ResourceKind.VALUE
396
- )
397
-
398
- if (valueResource) {
399
- const currentType = currentResource.getEdmType()
400
-
401
- if (currentType.hasStream()) {
402
- return result.concat(valueResource)
403
- }
404
-
405
- throw new UriSyntaxError(UriSyntaxError.Message.PREVIOUS_TYPE_HAS_NO_MEDIA, currentType.getName())
406
- }
407
-
408
- let uriResources
409
- try {
410
- uriResources = this._parsePropertyPath(uriPathSegments, currentResource, tokenizer)
411
- } catch (e) {
412
- try {
413
- uriResources = this._parseBoundOperation(uriPathSegments, currentResource, tokenizer)
414
- } catch (e1) {
415
- // throw first error
416
- throw e
417
- }
418
- }
419
-
420
- return result.concat(uriResources)
421
- }
422
-
423
- /**
424
- * Parse any of the OData bound operations.
425
- * @param {string[]} uriPathSegments The uri path segments
426
- * @param {UriResource} currentResource The current resource
427
- * @param {UriTokenizer} tokenizer The current tokenizer
428
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
429
- * @private
430
- */
431
- _parseBoundOperation (uriPathSegments, currentResource, tokenizer) {
432
- // allow short names for bound operations
433
- let name = tokenizer.getText()
434
- if (typeof name === 'string' && !name.match(/\./)) {
435
- const namespace = currentResource._entitySet &&
436
- currentResource._entitySet._target &&
437
- currentResource._entitySet._target.type &&
438
- currentResource._entitySet._target.type.namespace
439
- if (namespace) name = namespace + '.' + name
440
- }
441
-
442
- const fqn = FullQualifiedName.createFromNameSpaceAndName(name)
443
- const bindingParamTypeFqn = currentResource.getEdmType().getFullQualifiedName()
444
-
445
- // parse bound action
446
- const isCollection = currentResource.isCollection()
447
- const boundAction = this._edm.getBoundAction(fqn, bindingParamTypeFqn, isCollection)
448
-
449
- if (boundAction) {
450
- tokenizer.requireNext(TokenKind.EOF)
451
- uriPathSegments.shift()
452
-
453
- this._target = boundAction.getReturnedEntitySet(this._target)
454
-
455
- return new UriResource()
456
- .setKind(UriResource.ResourceKind.BOUND_ACTION)
457
- .setAction(boundAction)
458
- .setIsCollection(boundAction.getReturnType() && boundAction.getReturnType().isCollection())
459
- .setTarget(this._target)
460
- }
461
-
462
- // parse bound function
463
- return this._parseBoundFunction(uriPathSegments, tokenizer, fqn, bindingParamTypeFqn, isCollection)
464
- }
465
-
466
- /**
467
- * Parse an OData bound function.
468
- * @param {string[]} uriPathSegments The uri path segments
469
- * @param {UriTokenizer} tokenizer The current tokenizer
470
- * @param {FullQualifiedName} fqn full qualified name of the function
471
- * @param {FullQualifiedName} bindingParamTypeFqn full qualified name of the type of the binding parameter
472
- * @param {boolean} previousIsCollection whether the previous resource is a collection
473
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
474
- * @private
475
- */
476
- _parseBoundFunction (uriPathSegments, tokenizer, fqn, bindingParamTypeFqn, previousIsCollection) {
477
- let result = []
478
- let currentResource = new UriResource().setKind(UriResource.ResourceKind.BOUND_FUNCTION)
479
-
480
- const availableBoundFunctions = this._edm.getBoundFunctions(fqn, bindingParamTypeFqn, previousIsCollection)
481
-
482
- const getOverloadingFunctionFn = visitedParameters =>
483
- this._edm.getBoundFunction(fqn, bindingParamTypeFqn, previousIsCollection, Array.from(visitedParameters.keys()))
484
-
485
- const parser = new FunctionParameterParser(this._edm, this._aliases)
486
- parser.parse(fqn.toString(), availableBoundFunctions, tokenizer, getOverloadingFunctionFn)
487
-
488
- currentResource.setFunctionParameters(parser.getParameters())
489
- let currentBoundFunction = parser.getFunction()
490
- if (!currentBoundFunction) {
491
- throw new UriSemanticError(UriSemanticError.Message.NEITHER_STRUCTURED_TYPE_NOR_BOUND_OPERATION, fqn.toString())
492
- }
493
- if (!currentBoundFunction.isComposable() && uriPathSegments.length > 1) {
494
- throw new UriSyntaxError(
495
- UriSyntaxError.Message.FUNCTION_NOT_COMPOSABLE,
496
- currentBoundFunction.getName(),
497
- uriPathSegments[uriPathSegments.length - 1]
498
- )
499
- }
500
-
501
- const returnTypeEdmTypeKind = currentBoundFunction
502
- .getReturnType()
503
- .getType()
504
- .getKind()
505
- const returnTypeIsCollection = currentBoundFunction.getReturnType().isCollection()
506
-
507
- currentResource.setFunction(currentBoundFunction).setIsCollection(returnTypeIsCollection)
508
-
509
- this._target = currentBoundFunction.getReturnedEntitySet(this._target)
510
-
511
- if (returnTypeEdmTypeKind === EdmTypeKind.ENTITY) {
512
- currentResource.setTarget(this._target)
513
-
514
- if (returnTypeIsCollection) {
515
- result = result.concat(this._parseCollectionNavigation(uriPathSegments, currentResource, tokenizer))
516
- } else {
517
- tokenizer.requireNext(TokenKind.EOF)
518
- uriPathSegments.shift()
519
- result = result.concat(this._parseSingleNavigation(uriPathSegments, currentResource))
520
- }
521
- } else if (returnTypeEdmTypeKind === EdmTypeKind.COMPLEX) {
522
- tokenizer.requireNext(TokenKind.EOF)
523
- uriPathSegments.shift()
524
-
525
- result.push(currentResource)
526
- const resultTemp = returnTypeIsCollection
527
- ? this._parseComplexCollectionPath(uriPathSegments, currentResource)
528
- : this._parseComplexPath(uriPathSegments, currentResource)
529
- if (resultTemp) result = result.concat(resultTemp)
530
- } else {
531
- tokenizer.requireNext(TokenKind.EOF)
532
- uriPathSegments.shift()
533
-
534
- result.push(currentResource)
535
- const resultTemp = returnTypeIsCollection
536
- ? this._parsePrimitiveCollectionPath(uriPathSegments, currentResource)
537
- : this._parsePrimitivePath(uriPathSegments, currentResource)
538
- if (resultTemp) result = result.concat(resultTemp)
539
- }
540
-
541
- return result
542
- }
543
-
544
- /**
545
- * Parse OData property path.
546
- * @param {string[]} uriPathSegments The uri path segments
547
- * @param {UriResource} prevResource The previous resource
548
- * @param {UriTokenizer} tokenizer The current tokenizer
549
- * @throws UriSemanticError If no property path was found
550
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
551
- * @private
552
- */
553
- _parsePropertyPath (uriPathSegments, prevResource, tokenizer) {
554
- tokenizer.requireNext(TokenKind.ODataIdentifier)
555
-
556
- // Try to find navigation property.
557
- let navProp = this._parseNavigationProperty(uriPathSegments, prevResource, tokenizer)
558
- if (navProp) return navProp
559
-
560
- // Try to find structural property.
561
- let structuralProperty = this._parseProperty(uriPathSegments, prevResource, tokenizer)
562
- if (structuralProperty) return structuralProperty
563
-
564
- // If we can not find any other artifact an error should be thrown.
565
- throw new UriSemanticError(
566
- UriSemanticError.Message.PROPERTY_NOT_FOUND,
567
- tokenizer.getText(),
568
- prevResource.getEdmType().getName()
569
- )
570
- }
571
-
572
- /**
573
- * Parse OData navigation property.
574
- * @param {string[]} uriPathSegments The uri path segments
575
- * @param {UriResource} prevResource The previous resource
576
- * @param {UriTokenizer} tokenizer The current tokenizer
577
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
578
- * @private
579
- */
580
- _parseNavigationProperty (uriPathSegments, prevResource, tokenizer) {
581
- let propertyName = tokenizer.getText()
582
-
583
- let navProp = prevResource.getEdmType().getNavigationProperty(propertyName)
584
- if (!navProp) return null
585
-
586
- const isCollection = navProp.isCollection()
587
- this._target = this._target === null ? null : this._target.getRelatedBindingTarget(propertyName)
588
- let newResource = new UriResource()
589
- .setNavigationProperty(navProp)
590
- .setIsCollection(isCollection)
591
- .setTarget(this._target)
592
-
593
- if (isCollection) {
594
- newResource.setKind(UriResource.ResourceKind.NAVIGATION_TO_MANY)
595
- return this._parseCollectionNavigation(uriPathSegments, newResource, tokenizer)
596
- }
597
-
598
- newResource.setKind(UriResource.ResourceKind.NAVIGATION_TO_ONE)
599
-
600
- if (!tokenizer.next(TokenKind.EOF)) {
601
- throw new UriSyntaxError(
602
- UriSyntaxError.Message.NAVIGATION_PROPERTY_EOF,
603
- propertyName,
604
- tokenizer.getParseString(),
605
- tokenizer.getPosition()
606
- )
607
- }
608
-
609
- uriPathSegments.shift()
610
- return this._parseSingleNavigation(uriPathSegments, newResource)
611
- }
612
-
613
- /**
614
- * Parse OData property.
615
- * @param {string[]} uriPathSegments The uri path segments
616
- * @param {UriResource} prevResource The previous resource
617
- * @param {UriTokenizer} tokenizer The current tokenizer
618
- * @returns {UriResource|UriResource[]|null} Returns UriResource, array of UriResource, or null
619
- * @private
620
- */
621
- _parseProperty (uriPathSegments, prevResource, tokenizer) {
622
- let propertyName = tokenizer.getText()
623
- let property = prevResource.getEdmType().getStructuralProperty(propertyName)
624
-
625
- if (property) {
626
- const isCollection = property.isCollection()
627
- let newResource = new UriResource().setProperty(property).setIsCollection(isCollection)
628
-
629
- let isComplex = false
630
- switch (property.getType().getKind()) {
631
- case EdmTypeKind.PRIMITIVE:
632
- case EdmTypeKind.ENUM:
633
- case EdmTypeKind.DEFINITION:
634
- newResource.setKind(
635
- isCollection
636
- ? UriResource.ResourceKind.PRIMITIVE_COLLECTION_PROPERTY
637
- : UriResource.ResourceKind.PRIMITIVE_PROPERTY
638
- )
639
- break
640
- case EdmTypeKind.COMPLEX:
641
- isComplex = true
642
- newResource.setKind(
643
- isCollection
644
- ? UriResource.ResourceKind.COMPLEX_COLLECTION_PROPERTY
645
- : UriResource.ResourceKind.COMPLEX_PROPERTY
646
- )
647
- break
648
- default:
649
- throw new NotImplementedError()
650
- }
651
-
652
- if (!tokenizer.next(TokenKind.EOF)) {
653
- throw new UriSyntaxError(
654
- UriSyntaxError.Message.PROPERTY_EOF,
655
- propertyName,
656
- tokenizer.getParseString(),
657
- tokenizer.getPosition()
658
- )
659
- }
660
-
661
- uriPathSegments.shift()
662
-
663
- let trailingPath
664
- if (isCollection) {
665
- trailingPath = isComplex
666
- ? this._parseComplexCollectionPath(uriPathSegments, newResource)
667
- : this._parsePrimitiveCollectionPath(uriPathSegments, newResource)
668
- } else {
669
- trailingPath = isComplex
670
- ? this._parseComplexPath(uriPathSegments, newResource)
671
- : this._parsePrimitivePath(uriPathSegments, newResource)
672
- }
673
- return trailingPath ? [newResource].concat(trailingPath) : newResource
674
- }
675
-
676
- return null
677
- }
678
-
679
- /**
680
- * Parse OData complex path.
681
- * @param {string[]} uriPathSegments The uri path segments
682
- * @param {UriResource} prevResource The previous resource
683
- * @returns {UriResource|UriResource[]} Returns an UriResource or array of UriResource
684
- * @private
685
- */
686
- _parseComplexPath (uriPathSegments, prevResource) {
687
- if (uriPathSegments.length === 0) return null
688
-
689
- let result = []
690
- let currentResource = prevResource
691
- let tokenizer = new UriTokenizer(uriPathSegments[0])
692
-
693
- let qualifiedName = null
694
-
695
- if (tokenizer.next(TokenKind.QualifiedName)) {
696
- qualifiedName = tokenizer.getText()
697
-
698
- const typeCastResource = this._parseTypeCast(currentResource, qualifiedName)
699
- if (typeCastResource) {
700
- tokenizer.requireNext(TokenKind.EOF)
701
- uriPathSegments.shift()
702
- qualifiedName = null
703
- if (uriPathSegments.length === 0) return typeCastResource
704
- tokenizer = new UriTokenizer(uriPathSegments[0])
705
- result.push(currentResource)
706
- currentResource = typeCastResource
707
- }
708
- }
709
-
710
- if (!qualifiedName && tokenizer.next(TokenKind.QualifiedName)) {
711
- qualifiedName = tokenizer.getText()
712
- }
713
-
714
- if (qualifiedName) {
715
- return result.concat(this._parseBoundOperation(uriPathSegments, currentResource, tokenizer))
716
- }
717
-
718
- return result.concat(this._parsePropertyPath(uriPathSegments, currentResource, tokenizer))
719
- }
720
-
721
- /**
722
- * Parse OData primitive path.
723
- * @param {string[]} uriPathSegments The uri path segments
724
- * @param {UriResource} prevResource The previous resource
725
- * @returns {UriResource|UriResource[]|null} UriResource, array of UriResource or null
726
- * @private
727
- */
728
- _parsePrimitivePath (uriPathSegments, prevResource) {
729
- if (uriPathSegments.length === 0) return null
730
-
731
- const tokenizer = new UriTokenizer(uriPathSegments[0])
732
-
733
- if (prevResource.getEdmType() !== EdmPrimitiveTypeKind.Stream) {
734
- const valueResource = this._parseConstant(
735
- uriPathSegments,
736
- tokenizer,
737
- TokenKind.VALUE,
738
- UriResource.ResourceKind.VALUE
739
- )
740
- if (valueResource) {
741
- valueResource.setIsCollection(false)
742
- return valueResource
743
- }
744
- }
745
-
746
- tokenizer.requireNext(TokenKind.QualifiedName)
747
- return this._parseBoundOperation(uriPathSegments, prevResource, tokenizer)
748
- }
749
-
750
- /**
751
- * Parse OData primitive collection path.
752
- * @param {string[]} uriPathSegments The uri path segments
753
- * @param {UriResource} prevResource The previous resource
754
- * @returns {UriResource|UriResource[]|null} UriResource, array of UriResource or null
755
- * @private
756
- */
757
- _parsePrimitiveCollectionPath (uriPathSegments, prevResource) {
758
- if (uriPathSegments.length === 0) return null
759
-
760
- // parse $count
761
- const tokenizer = new UriTokenizer(uriPathSegments[0])
762
- const countResource = this._parseConstant(
763
- uriPathSegments,
764
- tokenizer,
765
- TokenKind.COUNT,
766
- UriResource.ResourceKind.COUNT
767
- )
768
- if (countResource) {
769
- countResource.setIsCollection(true)
770
- return countResource
771
- }
772
-
773
- if (tokenizer.next(TokenKind.QualifiedName)) {
774
- return this._parseBoundOperation(uriPathSegments, prevResource, tokenizer)
775
- }
776
-
777
- throw new UriSyntaxError(UriSyntaxError.Message.MUST_BE_COUNT_OR_BOUND_OPERATION, uriPathSegments[0])
778
- }
779
-
780
- /**
781
- * Parse OData complex collection path.
782
- * @param {string[]} uriPathSegments The uri path segments
783
- * @param {UriResource} prevResource The previous resource
784
- * @returns {UriResource[]} array of UriResource
785
- * @private
786
- */
787
- _parseComplexCollectionPath (uriPathSegments, prevResource) {
788
- if (uriPathSegments.length === 0) return null
789
-
790
- let tokenizer = new UriTokenizer(uriPathSegments[0])
791
- let result = []
792
- let currentResource = prevResource
793
-
794
- if (tokenizer.next(TokenKind.QualifiedName)) {
795
- const typeCastResource = this._parseTypeCast(prevResource, tokenizer.getText())
796
- if (typeCastResource) {
797
- tokenizer.requireNext(TokenKind.EOF)
798
- uriPathSegments.shift()
799
-
800
- result.push(typeCastResource)
801
- if (uriPathSegments.length === 0) return result
802
- tokenizer = new UriTokenizer(uriPathSegments[0])
803
- currentResource = typeCastResource
804
- } else {
805
- return result.concat(this._parseBoundOperation(uriPathSegments, currentResource, tokenizer))
806
- }
807
- }
808
-
809
- // parse $count
810
- const countResource = this._parseConstant(
811
- uriPathSegments,
812
- tokenizer,
813
- TokenKind.COUNT,
814
- UriResource.ResourceKind.COUNT
815
- )
816
- if (countResource) {
817
- countResource.setIsCollection(true)
818
- result.push(countResource)
819
- return result
820
- }
821
-
822
- if (tokenizer.next(TokenKind.QualifiedName)) {
823
- return result.concat(this._parseBoundOperation(uriPathSegments, currentResource, tokenizer))
824
- }
825
-
826
- throw new UriSyntaxError(UriSyntaxError.Message.MUST_BE_COUNT_OR_BOUND_OPERATION, uriPathSegments[0])
827
- }
828
-
829
- /**
830
- * Parse OData ABNF constant like $ref or $value.
831
- * @param {string[]} uriPathSegments THe current uri path segments
832
- * @param {UriTokenizer} tokenizer The current tokenizer
833
- * @param {UriTokenizer.TokenKind} tokenKind The token kind to read next
834
- * @param {UriResource.ResourceKind} resourceKind The resource kind to set if token read was successful
835
- * @returns {?UriResource} UriResource or null
836
- * @private
837
- */
838
- _parseConstant (uriPathSegments, tokenizer, tokenKind, resourceKind) {
839
- if (tokenizer.next(tokenKind)) {
840
- tokenizer.requireNext(TokenKind.EOF)
841
- uriPathSegments.shift()
842
- return new UriResource().setKind(resourceKind)
843
- }
844
- return null
845
- }
846
- }
847
-
848
- module.exports = ResourcePathParser