@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.
- package/CHANGELOG.md +121 -680
- package/LICENSE +15 -21
- package/README.md +1 -1
- package/_i18n/i18n_sl.properties +3 -3
- package/_i18n/messages.properties +1 -1
- package/app/index.js +1 -1
- package/bin/serve.js +17 -19
- package/eslint.config.mjs +7 -1
- package/lib/compile/etc/_localized.js +3 -24
- package/lib/compile/etc/yaml.js +6 -15
- package/lib/compile/for/odata.js +2 -2
- package/lib/compile/load.js +15 -4
- package/lib/compile/minify.js +1 -0
- package/lib/compile/to/edm-files.js +4 -33
- package/lib/compile/to/hdbtabledata.js +16 -3
- package/lib/compile/to/sql.js +1 -2
- package/lib/core/linked-csn.js +7 -8
- package/lib/dbs/cds-deploy.js +4 -3
- package/lib/env/cds-env.js +9 -9
- package/lib/env/cds-requires.js +23 -50
- package/lib/env/defaults.js +15 -44
- package/lib/env/schemas/cds-package.js +1 -1
- package/lib/i18n/index.js +1 -0
- package/lib/i18n/locale.js +41 -0
- package/lib/index.js +25 -15
- package/lib/log/cds-error.js +13 -3
- package/lib/log/cds-log.js +43 -18
- package/lib/log/format/aspects/als.js +2 -15
- package/lib/plugins.js +11 -11
- package/lib/ql/CREATE.js +1 -1
- package/lib/ql/DELETE.js +1 -1
- package/lib/ql/DROP.js +1 -1
- package/lib/ql/INSERT.js +9 -18
- package/lib/ql/SELECT.js +12 -19
- package/lib/ql/UPDATE.js +1 -1
- package/lib/ql/UPSERT.js +1 -0
- package/lib/ql/Whereable.js +7 -6
- package/lib/ql/cds-ql.js +0 -12
- package/lib/ql/cds.ql-Query.js +28 -68
- package/lib/ql/cds.ql-infer.js +97 -108
- package/lib/ql/resolve.js +1 -3
- package/lib/req/context.js +5 -4
- package/lib/req/request.js +46 -42
- package/lib/req/response.js +5 -9
- package/lib/req/spawn.js +38 -0
- package/lib/req/validate.js +9 -8
- package/lib/srv/bindings.js +2 -1
- package/lib/srv/cds-connect.js +5 -2
- package/lib/srv/cds-serve.js +0 -2
- package/lib/srv/cds.Service.js +146 -86
- package/lib/srv/middlewares/auth/ias-auth.js +99 -88
- package/lib/srv/middlewares/auth/jwt-auth.js +44 -57
- package/lib/srv/middlewares/cds-context.js +1 -1
- package/lib/srv/middlewares/ctx-model.js +1 -1
- package/lib/srv/middlewares/errors.js +34 -42
- package/lib/srv/protocols/hcql.js +35 -25
- package/lib/srv/protocols/index.js +0 -9
- package/lib/srv/protocols/odata-v4.js +1 -6
- package/lib/srv/srv-dispatch.js +29 -31
- package/lib/srv/srv-handlers.js +14 -46
- package/lib/srv/srv-methods.js +15 -37
- package/lib/srv/srv-tx.js +19 -25
- package/lib/test/cds-test.js +4 -263
- package/lib/utils/cds-utils.js +18 -2
- package/lib/utils/tar.js +6 -8
- package/lib/utils/unit.js +19 -0
- package/libx/_runtime/.eslintrc +1 -1
- package/libx/_runtime/cds-services/util/assert.js +2 -72
- package/libx/_runtime/cds.js +13 -6
- package/libx/_runtime/common/Service.js +33 -75
- package/libx/_runtime/common/aspects/any.js +0 -38
- package/libx/_runtime/common/constants/events.js +5 -13
- package/libx/_runtime/common/generic/auth/autoexpose.js +10 -24
- package/libx/_runtime/common/generic/auth/capabilities.js +23 -20
- package/libx/_runtime/common/generic/auth/expand.js +3 -3
- package/libx/_runtime/common/generic/auth/index.js +3 -3
- package/libx/_runtime/common/generic/auth/insertOnly.js +3 -3
- package/libx/_runtime/common/generic/auth/readOnly.js +4 -4
- package/libx/_runtime/common/generic/auth/requires.js +4 -4
- package/libx/_runtime/common/generic/auth/restrict.js +12 -29
- package/libx/_runtime/common/generic/auth/service.js +3 -3
- package/libx/_runtime/common/generic/auth/utils.js +2 -12
- package/libx/_runtime/common/generic/crud.js +22 -53
- package/libx/_runtime/common/generic/etag.js +18 -31
- package/libx/_runtime/common/generic/input.js +51 -123
- package/libx/_runtime/common/generic/paging.js +4 -4
- package/libx/_runtime/common/generic/sorting.js +8 -19
- package/libx/_runtime/common/generic/stream-only.js +26 -0
- package/libx/_runtime/common/generic/stream.js +16 -48
- package/libx/_runtime/common/generic/temporal.js +15 -7
- package/libx/_runtime/common/utils/binary.js +1 -26
- package/libx/_runtime/common/utils/compareJson.js +1 -2
- package/libx/_runtime/common/utils/cqn.js +15 -14
- package/libx/_runtime/common/utils/differ.js +121 -44
- package/libx/_runtime/common/utils/keys.js +4 -5
- package/libx/_runtime/common/utils/normalizeTimestamp.js +10 -1
- package/libx/_runtime/common/utils/postProcess.js +2 -2
- package/libx/_runtime/common/utils/propagateForeignKeys.js +21 -36
- package/libx/_runtime/common/utils/resolveView.js +105 -141
- package/libx/_runtime/common/utils/rewriteAsterisks.js +45 -12
- package/libx/_runtime/common/utils/streamProp.js +3 -9
- package/libx/_runtime/common/utils/waitingTime.js +13 -1
- package/libx/_runtime/fiori/lean-draft.js +174 -196
- package/libx/_runtime/messaging/common-utils/connections.js +1 -1
- package/libx/_runtime/messaging/enterprise-messaging-utils/EMManagement.js +1 -0
- package/libx/_runtime/messaging/enterprise-messaging-utils/registerEndpoints.js +3 -3
- package/libx/_runtime/messaging/enterprise-messaging.js +2 -2
- package/libx/_runtime/messaging/file-based.js +2 -4
- package/libx/_runtime/messaging/redis-messaging.js +1 -1
- package/libx/_runtime/messaging/service.js +5 -19
- package/libx/_runtime/remote/Service.js +20 -33
- package/libx/_runtime/remote/utils/client.js +7 -25
- package/libx/_runtime/remote/utils/cloudSdkProvider.js +8 -13
- package/libx/_runtime/remote/utils/data.js +3 -34
- package/libx/_runtime/types/api.js +0 -8
- package/libx/_runtime/ucl/Service.js +1 -9
- package/libx/common/utils/path.js +2 -3
- package/libx/common/utils/streaming.js +2 -1
- package/libx/http/HttpRequest.js +13 -0
- package/libx/{odata/middleware → http}/body-parser.js +7 -5
- package/libx/http/location.js +41 -0
- package/libx/http/put.js +36 -0
- package/libx/odata/ODataAdapter.js +25 -59
- package/libx/odata/index.js +10 -23
- package/libx/odata/middleware/batch.js +29 -20
- package/libx/odata/middleware/create.js +6 -13
- package/libx/odata/middleware/delete.js +0 -4
- package/libx/odata/middleware/error.js +83 -27
- package/libx/odata/middleware/metadata.js +14 -25
- package/libx/odata/middleware/operation.js +10 -26
- package/libx/odata/middleware/read.js +10 -18
- package/libx/odata/middleware/stream.js +14 -34
- package/libx/odata/middleware/update.js +17 -26
- package/libx/odata/parse/afterburner.js +20 -16
- package/libx/odata/parse/cqn2odata.js +3 -1
- package/libx/odata/parse/grammar.peggy +221 -114
- package/libx/odata/parse/parser.js +1 -1
- package/libx/odata/utils/index.js +10 -38
- package/libx/odata/utils/metadata.js +10 -8
- package/libx/odata/utils/normalizeTimeData.js +5 -8
- package/libx/odata/utils/readAfterWrite.js +1 -1
- package/libx/{outbox/OutboxRunner.js → queue/TaskRunner.js} +17 -22
- package/libx/queue/index.js +531 -0
- package/libx/rest/RestAdapter.js +43 -82
- package/libx/rest/middleware/create.js +35 -33
- package/libx/rest/middleware/delete.js +9 -7
- package/libx/rest/middleware/error.js +11 -18
- package/libx/rest/middleware/operation.js +44 -137
- package/libx/rest/middleware/parse.js +114 -130
- package/libx/rest/middleware/read.js +23 -21
- package/libx/rest/middleware/update.js +20 -32
- package/libx/rest/middleware/upsert.js +31 -0
- package/libx/rest/pre-processing.js +8 -18
- package/package.json +6 -7
- package/srv/outbox.cds +1 -0
- package/bin/test.js +0 -125
- package/lib/env/plugins.js +0 -18
- package/lib/req/cds-context.js +0 -52
- package/lib/req/locale.js +0 -35
- package/lib/srv/cds.ServiceClient.js +0 -96
- package/lib/srv/cds.ServiceProvider.js +0 -20
- package/lib/srv/protocols/okra.js +0 -22
- package/lib/test/axios.js +0 -63
- package/lib/test/data.js +0 -52
- package/lib/test/expect.js +0 -343
- package/lib/test/reporter.js +0 -176
- package/libx/_runtime/cds-services/adapter/odata-v4/OData.js +0 -275
- package/libx/_runtime/cds-services/adapter/odata-v4/ODataRequest.js +0 -217
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/action.js +0 -101
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/create.js +0 -79
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/debug.js +0 -6
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/delete.js +0 -60
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/error.js +0 -161
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/language.js +0 -7
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/metadata.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/read.js +0 -602
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/request.js +0 -64
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/update.js +0 -238
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/ExpressionToCQN.js +0 -327
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/applyToCQN.js +0 -243
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/boundToCQN.js +0 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/createToCQN.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/deleteToCQN.js +0 -36
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/expandToCQN.js +0 -250
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/index.js +0 -81
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/orderByToCQN.js +0 -51
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/readToCQN.js +0 -389
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/searchToCQN.js +0 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/selectToCQN.js +0 -35
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/updateToCQN.js +0 -38
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/utils.js +0 -217
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/FeatureSupport.js +0 -70
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/FullQualifiedName.js +0 -94
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAction.js +0 -139
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlActionImport.js +0 -82
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAliasInfo.js +0 -44
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAnnotation.js +0 -104
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlAnnotations.js +0 -71
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlComplexType.js +0 -133
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntityContainer.js +0 -142
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntityContainerInfo.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntitySet.js +0 -107
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEntityType.js +0 -177
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEnumMember.js +0 -61
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlEnumType.js +0 -105
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlFunction.js +0 -149
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlFunctionImport.js +0 -105
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlInclude.js +0 -68
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlIncludeAnnotation.js +0 -71
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlJsonProvider.js +0 -1365
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlNavigationProperty.js +0 -190
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlNavigationPropertyBinding.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlOnDelete.js +0 -70
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlParameter.js +0 -227
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlProperty.js +0 -250
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlPropertyRef.js +0 -49
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlProvider.js +0 -190
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlReference.js +0 -97
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlReferentialConstraint.js +0 -60
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlReturnType.js +0 -216
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlSchema.js +0 -328
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlSingleton.js +0 -84
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlTerm.js +0 -320
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/CsdlTypeDefinition.js +0 -193
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlAnnotationExpression.js +0 -73
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlAnnotationPathExpression.js +0 -33
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlApplyExpression.js +0 -105
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlArithmeticExpression.js +0 -72
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlBinaryExpression.js +0 -110
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlCastExpression.js +0 -188
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlCollectionExpression.js +0 -48
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlConstantExpression.js +0 -116
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlIfExpression.js +0 -62
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlIsOfExpression.js +0 -200
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlLabeledElementExpression.js +0 -42
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlLabeledElementReferenceExpression.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlModelElementPathExpression.js +0 -29
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNavigationPropertyPathExpression.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNegationExpression.js +0 -27
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNotExpression.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlNullExpression.js +0 -18
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlPathExpression.js +0 -32
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlPropertyPathExpression.js +0 -32
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlPropertyValueExpression.js +0 -55
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlRecordExpression.js +0 -54
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlUnknownExpression.js +0 -44
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/csdl/annotationExpression/CsdlUrlRefExpression.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmBindingTarget.js +0 -163
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmFaceted.js +0 -136
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmOperation.js +0 -205
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmOperationImport.js +0 -126
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmStructuredType.js +0 -275
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/Edm.js +0 -775
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmAction.js +0 -15
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmActionImport.js +0 -39
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmAnnotation.js +0 -106
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmAnnotations.js +0 -57
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmComplexType.js +0 -48
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEntityContainer.js +0 -455
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEntitySet.js +0 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEntityType.js +0 -119
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEnumMember.js +0 -69
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmEnumType.js +0 -117
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmFunction.js +0 -39
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmFunctionImport.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmInclude.js +0 -65
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmIncludeAnnotation.js +0 -48
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmKeyPropertyRef.js +0 -79
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmNavigationProperty.js +0 -182
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmNavigationPropertyBinding.js +0 -46
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmOnDelete.js +0 -44
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmParameter.js +0 -22
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmPrimitiveType.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmPrimitiveTypeKind.js +0 -70
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmProperty.js +0 -39
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmProvider.js +0 -399
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmReference.js +0 -88
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmReferentialConstraint.js +0 -71
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmReturnType.js +0 -14
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmSchema.js +0 -355
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmSingleton.js +0 -15
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmTerm.js +0 -75
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmType.js +0 -95
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmTypeDefinition.js +0 -121
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmTypeFactory.js +0 -28
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/EdmVocabularyTermType.js +0 -41
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/KeyFactory.js +0 -67
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/Target.js +0 -56
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/TransientStructuredType.js +0 -244
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/AnnotationExpressionFactory.js +0 -130
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmAnnotationExpression.js +0 -28
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmAnnotationPathExpression.js +0 -42
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmApplyExpression.js +0 -85
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmArithmeticExpression.js +0 -92
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmBinaryExpression.js +0 -96
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmCastExpression.js +0 -129
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmCollectionExpression.js +0 -52
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmConstantExpression.js +0 -83
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmIfExpression.js +0 -103
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmIsOfExpression.js +0 -125
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmLabeledElementExpression.js +0 -83
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmLabeledElementReferenceExpression.js +0 -41
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmModelElementPathExpression.js +0 -35
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNavigationPropertyPathExpression.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNegationExpression.js +0 -70
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNotExpression.js +0 -75
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmNullExpression.js +0 -50
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmPathExpression.js +0 -38
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmPropertyPathExpression.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmPropertyValueExpression.js +0 -72
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmRecordExpression.js +0 -100
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmUnknownExpression.js +0 -72
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/annotationExpression/EdmUrlRefExpression.js +0 -73
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/AbstractError.js +0 -82
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/IllegalArgumentError.js +0 -58
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/IllegalCallError.js +0 -21
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/NotImplementedError.js +0 -19
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/UriQueryOptionSemanticError.js +0 -49
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/UriSemanticError.js +0 -48
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/errors/UriSyntaxError.js +0 -65
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/ContentTypeInfo.js +0 -105
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/JsonContentTypeInfo.js +0 -83
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/JsonFormat.js +0 -141
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/format/RepresentationKind.js +0 -251
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpHeader.js +0 -42
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpHeaderReader.js +0 -318
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpMethod.js +0 -25
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/HttpStatusCode.js +0 -52
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/http/Preferences.js +0 -32
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/index.js +0 -69
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/logging/LoggerFacade.js +0 -183
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/AliasExpression.js +0 -47
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ApplyParser.js +0 -946
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/BinaryExpression.js +0 -124
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ExpandItem.js +0 -76
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ExpandParser.js +0 -384
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/Expression.js +0 -46
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ExpressionParser.js +0 -1988
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/FilterParser.js +0 -34
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/FunctionParameterParser.js +0 -106
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/KeyPredicateParser.js +0 -155
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/KeyValueParser.js +0 -213
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/LiteralExpression.js +0 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/MemberExpression.js +0 -44
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/MethodExpression.js +0 -146
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/OrderByItem.js +0 -53
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/OrderByParser.js +0 -69
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/ResourcePathParser.js +0 -848
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/SearchParser.js +0 -127
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/SelectItem.js +0 -80
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/SelectParser.js +0 -294
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/TypeLiteralExpression.js +0 -28
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UnaryExpression.js +0 -64
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriHelper.js +0 -65
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriInfo.js +0 -165
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriParameter.js +0 -107
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriParser.js +0 -350
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriResource.js +0 -602
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/UriTokenizer.js +0 -1156
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/AggregateExpression.js +0 -164
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/AggregateTransformation.js +0 -38
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/BottomTopTransformation.js +0 -93
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ComputeExpression.js +0 -52
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ComputeTransformation.js +0 -38
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ConcatTransformation.js +0 -38
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/CustomFunctionTransformation.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/ExpandTransformation.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/FilterTransformation.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/GroupByItem.js +0 -71
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/GroupByTransformation.js +0 -58
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/IdentityTransformation.js +0 -17
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/OrderByTransformation.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/SearchTransformation.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/SkipTransformation.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/TopTransformation.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/apply/Transformation.js +0 -53
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/uri/info.md +0 -116
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/utils/PrimitiveValueDecoder.js +0 -667
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/utils/PrimitiveValueEncoder.js +0 -349
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/utils/ValueConverter.js +0 -545
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/validator/ParameterValidator.js +0 -124
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/validator/ValueValidator.js +0 -743
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/ServiceFactory.js +0 -234
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchContext.js +0 -351
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchErrorInfo.js +0 -61
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchExitHandler.js +0 -239
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchProcessor.js +0 -281
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchValidator.js +0 -133
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/batch/BatchedRequestExecutor.js +0 -92
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ComponentManager.js +0 -63
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/Context.js +0 -96
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/Dispatcher.js +0 -147
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataRequest.js +0 -458
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataRequestInBatch.js +0 -147
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataResponse.js +0 -314
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/OdataResponseInBatch.js +0 -83
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/PlainHttpRequest.js +0 -175
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/PlainHttpResponse.js +0 -106
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/RequestContract.js +0 -111
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ResponseContract.js +0 -111
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ResponseHeaderSetter.js +0 -240
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/Service.js +0 -417
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ServiceResolutions.js +0 -24
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ApplicationHttpReader.js +0 -157
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/BatchJsonDeserializer.js +0 -171
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/BatchRequestListBuilder.js +0 -196
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/Cache.js +0 -154
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ContentDeserializer.js +0 -222
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/DataReader.js +0 -220
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/DeserializerFactory.js +0 -240
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/HeaderReader.js +0 -133
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/LineReader.js +0 -61
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/MultipartReader.js +0 -419
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/PartReader.js +0 -99
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/Reader.js +0 -52
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ResourceJsonDeserializer.js +0 -673
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/ApplicationError.js +0 -108
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/BadRequestError.js +0 -21
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/ConflictError.js +0 -11
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/DeserializationError.js +0 -19
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/InternalServerError.js +0 -20
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/MethodNotAllowedError.js +0 -17
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/NotAcceptableError.js +0 -21
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/NotFoundError.js +0 -33
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/PreconditionFailedError.js +0 -11
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/PreconditionRequiredError.js +0 -11
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/SerializationError.js +0 -19
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/errors/UnauthorizedError.js +0 -17
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/AcceptTypeInfo.js +0 -86
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/CharsetInfo.js +0 -76
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/FormatDescription.js +0 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/FormatManager.js +0 -91
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/RequestContentNegotiator.js +0 -62
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/format/ResponseContentNegotiator.js +0 -321
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/handler/BatchHandler.js +0 -36
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/handler/MetadataHandler.js +0 -21
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/handler/ServiceHandler.js +0 -25
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/CustomPreference.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HeaderInfo.js +0 -79
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HttpHeader.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HttpHeaderReader.js +0 -452
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/HttpStatusCode.js +0 -117
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/Preferences.js +0 -222
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/http/PreferencesApplied.js +0 -199
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/index.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/Command.js +0 -31
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/CommandExecutor.js +0 -94
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/CommandFactory.js +0 -203
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ConditionalRequestControlCommand.js +0 -52
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ConditionalRequestPreValidationCommand.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ContentNegotiatorCommand.js +0 -70
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DebugContentNegotiatorCommand.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DebugDeserializingCommand.js +0 -44
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DebugSerializingCommand.js +0 -51
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DeserializingCommand.js +0 -69
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/DispatcherCommand.js +0 -95
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ErrorContentNegotiatorCommand.js +0 -44
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ErrorSerializingCommand.js +0 -51
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/EventListenerCommand.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/LocaleNegotiatorCommand.js +0 -56
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/OdataVersionValidationCommand.js +0 -41
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/OperationValidationCommand.js +0 -34
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/ParsePreferHeaderCommand.js +0 -47
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/PresetResponseHeadersCommand.js +0 -47
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/QueryOptionsParserCommand.js +0 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/QueryOptionsValidationCommand.js +0 -62
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/RequestContentValidationCommand.js +0 -51
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SendResponseCommand.js +0 -37
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SerializingCommand.js +0 -159
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetResponseHeadersCommand.js +0 -90
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetStatuscodeCommand.js +0 -51
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/UriParserCommand.js +0 -47
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/logging/DebugLogger.js +0 -97
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ApplicationHttpWriter.js +0 -65
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/BatchJsonSerializer.js +0 -46
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/BatchMultipartSerializer.js +0 -113
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ContextURLFactory.js +0 -405
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/DebugHtmlSerializer.js +0 -302
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/DebugJsonSerializer.js +0 -515
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ErrorJsonSerializer.js +0 -47
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ErrorSerializer.js +0 -39
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ErrorXmlSerializer.js +0 -98
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ExpressionTreeImage.js +0 -404
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/MetadataXmlSerializer.js +0 -1416
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/MultipartWriter.js +0 -202
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/NextLinkSerializer.js +0 -330
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ResourceJsonSerializer.js +0 -1220
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/SerializerFactory.js +0 -484
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ServiceJsonSerializer.js +0 -89
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/TrustedResourceJsonSerializer.js +0 -612
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/debugview.html +0 -157
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/BufferedWriter.js +0 -59
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/ExpandHelper.js +0 -96
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/MetadataCache.js +0 -136
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/PerformanceMonitor.js +0 -221
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/UriHelper.js +0 -157
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/ConditionalRequestValidator.js +0 -79
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/OperationValidator.js +0 -199
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/RequestValidator.js +0 -392
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/validator/VersionValidator.js +0 -62
- package/libx/_runtime/cds-services/adapter/odata-v4/to.js +0 -51
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/data.js +0 -331
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/handlerUtils.js +0 -159
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/metaInfo.js +0 -404
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/oDataConfiguration.js +0 -55
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/omitValues.js +0 -86
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/readAfterWrite.js +0 -107
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/request.js +0 -64
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/result.js +0 -385
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/stream.js +0 -12
- package/libx/_runtime/cds-services/util/errors.js +0 -15
- package/libx/_runtime/common/aspects/relation.js +0 -40
- package/libx/_runtime/common/composition/data.js +0 -370
- package/libx/_runtime/common/composition/delete.js +0 -313
- package/libx/_runtime/common/composition/index.js +0 -22
- package/libx/_runtime/common/composition/insert.js +0 -108
- package/libx/_runtime/common/composition/tree.js +0 -275
- package/libx/_runtime/common/composition/update.js +0 -354
- package/libx/_runtime/common/composition/utils.js +0 -95
- package/libx/_runtime/common/error/constants.js +0 -20
- package/libx/_runtime/common/error/entry.js +0 -36
- package/libx/_runtime/common/error/frontend.js +0 -199
- package/libx/_runtime/common/error/index.js +0 -12
- package/libx/_runtime/common/error/log.js +0 -35
- package/libx/_runtime/common/error/standardError.js +0 -11
- package/libx/_runtime/common/error/utils.js +0 -18
- package/libx/_runtime/common/generic/auth/constants.js +0 -17
- package/libx/_runtime/common/generic/put.js +0 -85
- package/libx/_runtime/common/utils/columns.js +0 -177
- package/libx/_runtime/common/utils/compareJsonOLD.js +0 -280
- package/libx/_runtime/common/utils/cqn2cqn4sql.js +0 -1039
- package/libx/_runtime/common/utils/data.js +0 -16
- package/libx/_runtime/common/utils/dollar.js +0 -27
- package/libx/_runtime/common/utils/generateOnCond.js +0 -127
- package/libx/_runtime/common/utils/onlyKeysRemain.js +0 -10
- package/libx/_runtime/common/utils/path.js +0 -20
- package/libx/_runtime/common/utils/quotingStyles.js +0 -29
- package/libx/_runtime/common/utils/restrictions.js +0 -67
- package/libx/_runtime/common/utils/search2cqn4sql.js +0 -37
- package/libx/_runtime/common/utils/searchToLike.js +0 -56
- package/libx/_runtime/common/utils/stream.js +0 -103
- package/libx/_runtime/common/utils/ucsn.js +0 -119
- package/libx/_runtime/common/utils/union.js +0 -31
- package/libx/_runtime/common/utils/unionCqnTemplate.js +0 -174
- package/libx/_runtime/db/Service.js +0 -93
- package/libx/_runtime/db/data-conversion/post-processing.js +0 -175
- package/libx/_runtime/db/expand/expand-v2.js +0 -147
- package/libx/_runtime/db/expand/expandCQNToJoin.js +0 -1775
- package/libx/_runtime/db/expand/index.js +0 -13
- package/libx/_runtime/db/expand/rawToExpanded.js +0 -250
- package/libx/_runtime/db/generic/create.js +0 -30
- package/libx/_runtime/db/generic/delete.js +0 -18
- package/libx/_runtime/db/generic/index.js +0 -25
- package/libx/_runtime/db/generic/input.js +0 -227
- package/libx/_runtime/db/generic/read.js +0 -16
- package/libx/_runtime/db/generic/rewrite.js +0 -68
- package/libx/_runtime/db/generic/structured.js +0 -92
- package/libx/_runtime/db/generic/update.js +0 -97
- package/libx/_runtime/db/generic/virtual.js +0 -83
- package/libx/_runtime/db/query/delete.js +0 -39
- package/libx/_runtime/db/query/index.js +0 -13
- package/libx/_runtime/db/query/insert.js +0 -21
- package/libx/_runtime/db/query/read.js +0 -97
- package/libx/_runtime/db/query/run.js +0 -30
- package/libx/_runtime/db/query/update.js +0 -94
- package/libx/_runtime/db/result/InsertResult.js +0 -87
- package/libx/_runtime/db/sql-builder/BaseBuilder.js +0 -65
- package/libx/_runtime/db/sql-builder/CreateBuilder.js +0 -212
- package/libx/_runtime/db/sql-builder/DeleteBuilder.js +0 -87
- package/libx/_runtime/db/sql-builder/DropBuilder.js +0 -63
- package/libx/_runtime/db/sql-builder/ExpressionBuilder.js +0 -345
- package/libx/_runtime/db/sql-builder/FunctionBuilder.js +0 -232
- package/libx/_runtime/db/sql-builder/InsertBuilder.js +0 -494
- package/libx/_runtime/db/sql-builder/ReferenceBuilder.js +0 -135
- package/libx/_runtime/db/sql-builder/SelectBuilder.js +0 -482
- package/libx/_runtime/db/sql-builder/UpdateBuilder.js +0 -207
- package/libx/_runtime/db/sql-builder/UpsertBuilder.js +0 -25
- package/libx/_runtime/db/sql-builder/annotations.js +0 -50
- package/libx/_runtime/db/sql-builder/arrayed.js +0 -4
- package/libx/_runtime/db/sql-builder/dataTypes.js +0 -59
- package/libx/_runtime/db/sql-builder/dollar.js +0 -37
- package/libx/_runtime/db/sql-builder/index.js +0 -28
- package/libx/_runtime/db/sql-builder/sqlFactory.js +0 -104
- package/libx/_runtime/db/utils/coloredTxCommands.js +0 -7
- package/libx/_runtime/db/utils/columns.js +0 -41
- package/libx/_runtime/db/utils/deep.js +0 -71
- package/libx/_runtime/db/utils/generateAliases.js +0 -160
- package/libx/_runtime/db/utils/localized.js +0 -77
- package/libx/_runtime/db/utils/normalizeTimeData.js +0 -98
- package/libx/_runtime/db/utils/stream.js +0 -41
- package/libx/_runtime/hana/Service.js +0 -173
- package/libx/_runtime/hana/conversion.js +0 -73
- package/libx/_runtime/hana/customBuilder/CustomCreateBuilder.js +0 -11
- package/libx/_runtime/hana/customBuilder/CustomDeleteBuilder.js +0 -17
- package/libx/_runtime/hana/customBuilder/CustomDropBuilder.js +0 -12
- package/libx/_runtime/hana/customBuilder/CustomExpressionBuilder.js +0 -23
- package/libx/_runtime/hana/customBuilder/CustomFunctionBuilder.js +0 -34
- package/libx/_runtime/hana/customBuilder/CustomReferenceBuilder.js +0 -38
- package/libx/_runtime/hana/customBuilder/CustomSelectBuilder.js +0 -90
- package/libx/_runtime/hana/customBuilder/index.js +0 -11
- package/libx/_runtime/hana/driver.js +0 -205
- package/libx/_runtime/hana/dynatrace.js +0 -130
- package/libx/_runtime/hana/execute.js +0 -429
- package/libx/_runtime/hana/localized.js +0 -39
- package/libx/_runtime/hana/pool.js +0 -186
- package/libx/_runtime/hana/search.js +0 -20
- package/libx/_runtime/hana/search2Contains.js +0 -106
- package/libx/_runtime/hana/search2cqn4sql.js +0 -98
- package/libx/_runtime/hana/streaming.js +0 -248
- package/libx/_runtime/messaging/Outbox.js +0 -15
- package/libx/_runtime/sqlite/Service.js +0 -153
- package/libx/_runtime/sqlite/conversion.js +0 -47
- package/libx/_runtime/sqlite/convertAssocToOneManaged.js +0 -60
- package/libx/_runtime/sqlite/convertDraftAdminPathExpression.js +0 -74
- package/libx/_runtime/sqlite/customBuilder/CustomExpressionBuilder.js +0 -24
- package/libx/_runtime/sqlite/customBuilder/CustomFunctionBuilder.js +0 -102
- package/libx/_runtime/sqlite/customBuilder/CustomSelectBuilder.js +0 -16
- package/libx/_runtime/sqlite/customBuilder/CustomUpsertBuilder.js +0 -47
- package/libx/_runtime/sqlite/customBuilder/index.js +0 -49
- package/libx/_runtime/sqlite/execute.js +0 -345
- package/libx/_runtime/sqlite/localized.js +0 -49
- package/libx/outbox/index.js +0 -307
|
@@ -1,673 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const cds = require('../../../../../../cds')
|
|
4
|
-
|
|
5
|
-
const commons = require('../../odata-commons')
|
|
6
|
-
const PrimitiveValueDecoder = commons.utils.PrimitiveValueDecoder
|
|
7
|
-
const JsonContentTypeInfo = commons.format.JsonContentTypeInfo
|
|
8
|
-
const JsonAnnotations = commons.format.JsonFormat.Annotations
|
|
9
|
-
const EdmTypeKind = commons.edm.EdmType.TypeKind
|
|
10
|
-
const EdmPrimitiveTypeKind = commons.edm.EdmPrimitiveTypeKind
|
|
11
|
-
const UriResource = commons.uri.UriResource
|
|
12
|
-
const ExpandItem = commons.uri.ExpandItem
|
|
13
|
-
const UriParser = commons.uri.UriParser
|
|
14
|
-
const UriInfo = commons.uri.UriInfo
|
|
15
|
-
const FullQualifiedName = commons.FullQualifiedName
|
|
16
|
-
const DeserializationError = require('../errors/DeserializationError')
|
|
17
|
-
|
|
18
|
-
const odataAnnotations = new Map().set(JsonAnnotations.CONTEXT)
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* This class deserializes and converts a provided payload into an OData object payload.
|
|
22
|
-
* All primitive values are converted into the corresponding OData values; e.g.,
|
|
23
|
-
* a binary property will be converted into a Buffer instance.
|
|
24
|
-
*/
|
|
25
|
-
class ResourceJsonDeserializer {
|
|
26
|
-
/**
|
|
27
|
-
* Creates an instance of ResourceJsonDeserializer.
|
|
28
|
-
* @param {Edm} edm the current EDM instance
|
|
29
|
-
* @param {JsonContentTypeInfo} [formatParams] JSON format parameters
|
|
30
|
-
*/
|
|
31
|
-
constructor (edm, formatParams = new JsonContentTypeInfo()) {
|
|
32
|
-
this._edm = edm
|
|
33
|
-
this._decoder = new PrimitiveValueDecoder().setJsonFormatParameters(formatParams)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Deserializes a provided JSON payload string of an entity.
|
|
38
|
-
* @param {EdmType} edmType the EDM type of the entity
|
|
39
|
-
* @param {string} value the JSON data string to deserialize
|
|
40
|
-
* @param {ExpandItem[]} expand the current expand items
|
|
41
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
42
|
-
* @returns {Object} the deserialized result
|
|
43
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
44
|
-
*/
|
|
45
|
-
deserializeEntity (edmType, value, expand, additionalInformation) {
|
|
46
|
-
let data
|
|
47
|
-
try {
|
|
48
|
-
data = JSON.parse(value)
|
|
49
|
-
this._deserializeStructuralType(edmType, data, null, false, expand, additionalInformation)
|
|
50
|
-
return data
|
|
51
|
-
} catch (e) {
|
|
52
|
-
e._data = data
|
|
53
|
-
if (e instanceof DeserializationError) throw e
|
|
54
|
-
throw new DeserializationError('An error occurred during deserialization of the entity.', e)
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Deserializes a provided JSON payload string of an entity collection.
|
|
60
|
-
* @param {EdmType} edmType the EDM type of the entity collection
|
|
61
|
-
* @param {string|Object[]} value the JSON data string to deserialize
|
|
62
|
-
* @param {ExpandItem[]} expand the array expand items will be created in
|
|
63
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
64
|
-
* @returns {Object[]} the deserialized result
|
|
65
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
66
|
-
*/
|
|
67
|
-
deserializeEntityCollection (edmType, value, expand, additionalInformation) {
|
|
68
|
-
let tempData = JSON.parse(value)
|
|
69
|
-
if (typeof tempData !== 'object') {
|
|
70
|
-
throw new DeserializationError('Value for the collection must be an object.')
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const wrongName = Object.keys(tempData).find(name => !odataAnnotations.has(name) && name !== 'value')
|
|
74
|
-
if (wrongName) throw new DeserializationError("'" + wrongName + "' is not allowed in a collection value.")
|
|
75
|
-
|
|
76
|
-
tempData = tempData.value
|
|
77
|
-
if (!Array.isArray(tempData)) {
|
|
78
|
-
throw new DeserializationError("Input must be a collection of type '" + edmType.getFullQualifiedName() + "'.")
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
for (let entityValue of tempData) {
|
|
83
|
-
this._deserializeStructuralType(edmType, entityValue, [], false, expand, additionalInformation)
|
|
84
|
-
}
|
|
85
|
-
return tempData
|
|
86
|
-
} catch (e) {
|
|
87
|
-
e._data = tempData
|
|
88
|
-
if (e instanceof DeserializationError) throw e
|
|
89
|
-
throw new DeserializationError('An error occurred during deserialization of the collection.', e)
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Deserializes a provided JSON payload string of a complex property.
|
|
95
|
-
* @param {EdmProperty} edmProperty the EDM property of this complex property
|
|
96
|
-
* @param {string} propertyValue the JSON data string to deserialize
|
|
97
|
-
* @returns {Object} the deserialized result
|
|
98
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
99
|
-
*/
|
|
100
|
-
deserializeComplexProperty (edmProperty, propertyValue) {
|
|
101
|
-
return this.deserializeEntity(edmProperty.getType(), propertyValue)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Deserializes a provided JSON payload string of a complex property collection.
|
|
106
|
-
* @param {EdmProperty} edmProperty the EDM property of this complex property collection
|
|
107
|
-
* @param {string} propertyValue the JSON data string
|
|
108
|
-
* @returns {Object[]} The deserialized result
|
|
109
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
110
|
-
*/
|
|
111
|
-
deserializeComplexPropertyCollection (edmProperty, propertyValue) {
|
|
112
|
-
return this.deserializeEntityCollection(edmProperty.getType(), propertyValue)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Deserializes a provided JSON payload string of a primitive property.
|
|
117
|
-
* @param {EdmProperty} edmProperty the EDM property of this primitive property
|
|
118
|
-
* @param {string} propertyValue the JSON data string to deserialize
|
|
119
|
-
* @returns {?(number|string|boolean|Buffer|Object)} the deserialized result
|
|
120
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
121
|
-
*/
|
|
122
|
-
deserializePrimitiveProperty (edmProperty, propertyValue) {
|
|
123
|
-
let tempData = JSON.parse(propertyValue)
|
|
124
|
-
if (typeof tempData !== 'object') {
|
|
125
|
-
throw new DeserializationError('Value for primitive property must be an object.')
|
|
126
|
-
}
|
|
127
|
-
const wrongName = Object.keys(tempData).find(name => !odataAnnotations.has(name) && name !== 'value')
|
|
128
|
-
if (wrongName) throw new DeserializationError(`'${wrongName}' is not allowed in a primitive value.`)
|
|
129
|
-
|
|
130
|
-
tempData = tempData.value
|
|
131
|
-
if (tempData === undefined) throw new DeserializationError('Value can not be omitted.')
|
|
132
|
-
try {
|
|
133
|
-
return this._deserializePrimitive(edmProperty, tempData)
|
|
134
|
-
} catch (e) {
|
|
135
|
-
e._data = tempData
|
|
136
|
-
if (e instanceof DeserializationError) throw e
|
|
137
|
-
throw new DeserializationError('An error occurred during deserialization of the property.', e)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Deserializes a provided JSON payload string of a primitive property collection.
|
|
143
|
-
* @param {EdmProperty} edmProperty the EDM property of this primitive property collection
|
|
144
|
-
* @param {string} value the JSON data string to deserialize
|
|
145
|
-
* @returns {number[]|string[]|boolean[]|Buffer[]|Object[]} the deserialized result
|
|
146
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
147
|
-
*/
|
|
148
|
-
deserializePrimitivePropertyCollection (edmProperty, value) {
|
|
149
|
-
let tempData = JSON.parse(value)
|
|
150
|
-
if (typeof tempData !== 'object') {
|
|
151
|
-
throw new DeserializationError('Value for primitive collection property must be an object.')
|
|
152
|
-
}
|
|
153
|
-
const wrongName = Object.keys(tempData).find(name => !odataAnnotations.has(name) && name !== 'value')
|
|
154
|
-
if (wrongName) throw new DeserializationError(`'${wrongName}' is not allowed in a primitive-collection value.`)
|
|
155
|
-
|
|
156
|
-
tempData = tempData.value
|
|
157
|
-
this._assertPropertyIsCollection(edmProperty, tempData)
|
|
158
|
-
|
|
159
|
-
try {
|
|
160
|
-
return this._deserializePrimitive(edmProperty, tempData)
|
|
161
|
-
} catch (e) {
|
|
162
|
-
e._data = tempData
|
|
163
|
-
if (e instanceof DeserializationError) throw e
|
|
164
|
-
throw new DeserializationError('An error occurred during deserialization of the property.', e)
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Deserializes a provided JSON payload string of an entity reference.
|
|
170
|
-
* @param {EdmType} edmType the EDM type of the entity
|
|
171
|
-
* @param {string} value the JSON data string to deserialize
|
|
172
|
-
* @returns {UriInfo} the deserialized result
|
|
173
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
174
|
-
*/
|
|
175
|
-
deserializeReference (edmType, value) {
|
|
176
|
-
const tempData = JSON.parse(value)
|
|
177
|
-
if (typeof tempData !== 'object') throw new DeserializationError('Value for reference must be an object.')
|
|
178
|
-
|
|
179
|
-
try {
|
|
180
|
-
return this._deserializeReference(edmType, tempData)
|
|
181
|
-
} catch (e) {
|
|
182
|
-
e._data = tempData
|
|
183
|
-
if (e instanceof DeserializationError) throw e
|
|
184
|
-
throw new DeserializationError('An error occurred during deserialization of the reference.', e)
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Deserializes a provided JSON payload string of action parameters.
|
|
190
|
-
* @param {EdmAction} edmAction the action to deserialize the payload for
|
|
191
|
-
* @param {string} value the JSON data string to deserialize
|
|
192
|
-
* @returns {Object} the deserialized result
|
|
193
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
194
|
-
*/
|
|
195
|
-
deserializeActionParameters (edmAction, value) {
|
|
196
|
-
let data
|
|
197
|
-
let result = {}
|
|
198
|
-
|
|
199
|
-
let parameters = Array.from(edmAction.getParameters())
|
|
200
|
-
// Skip the first parameter if the action is bound
|
|
201
|
-
// because the first parameter of a bound action is the binding parameter
|
|
202
|
-
// which is not part of the payload data.
|
|
203
|
-
if (edmAction.isBound()) parameters.shift()
|
|
204
|
-
|
|
205
|
-
if (parameters.length > 0) data = JSON.parse(value)
|
|
206
|
-
for (const [paramName, edmParam] of parameters) {
|
|
207
|
-
if (!data && typeof data !== 'object') {
|
|
208
|
-
throw new DeserializationError('Value for action parameters must be an object.')
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
let paramValue = data[paramName]
|
|
212
|
-
|
|
213
|
-
if ((value === null || value === undefined || paramValue == null) && !edmParam.isNullable()) {
|
|
214
|
-
throw new DeserializationError(`Parameter '${paramName}' is not nullable`)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
if (edmParam.isCollection() && !paramValue) {
|
|
218
|
-
if (paramValue === undefined) break
|
|
219
|
-
throw new DeserializationError(`'${edmParam.getName()}' must be a collection.`)
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
if (paramValue === undefined) {
|
|
223
|
-
// OData JSON Format Version 4.0 Plus Errata 03 - 17 Action Invocation:
|
|
224
|
-
// "Any parameter values not specified in the JSON object are assumed to have the null value."
|
|
225
|
-
//
|
|
226
|
-
// Set the value to null because further algorithm asserts nullable values already.
|
|
227
|
-
// Therefore the value must be null, not undefined.
|
|
228
|
-
paramValue = null
|
|
229
|
-
}
|
|
230
|
-
this._assertPropertyIsCollection(edmParam, paramValue)
|
|
231
|
-
|
|
232
|
-
const edmType = edmParam.getType()
|
|
233
|
-
switch (edmType.getKind()) {
|
|
234
|
-
case EdmTypeKind.PRIMITIVE:
|
|
235
|
-
case EdmTypeKind.ENUM:
|
|
236
|
-
case EdmTypeKind.DEFINITION:
|
|
237
|
-
result[paramName] = this._deserializePrimitive(edmParam, paramValue)
|
|
238
|
-
break
|
|
239
|
-
case EdmTypeKind.COMPLEX:
|
|
240
|
-
case EdmTypeKind.ENTITY: // Both are structured types.
|
|
241
|
-
this._deserializeComplex(edmParam, paramValue, [], [])
|
|
242
|
-
result[paramName] = paramValue
|
|
243
|
-
break
|
|
244
|
-
default:
|
|
245
|
-
throw new DeserializationError(
|
|
246
|
-
`Could not deserialize parameter '${paramName}'. EdmTypeKind '${edmType.getKind()}' is invalid.`
|
|
247
|
-
)
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
const names = data ? Object.keys(data) : []
|
|
252
|
-
const wrongParameter = names.find(name => !parameters.some(p => p[0] === name))
|
|
253
|
-
if (wrongParameter) {
|
|
254
|
-
throw new DeserializationError(
|
|
255
|
-
`'${wrongParameter}' is not a non-binding parameter of action '${edmAction.getName()}'.`
|
|
256
|
-
)
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
return result
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Deserializes a value for a structural type with its properties.
|
|
264
|
-
* @param {EdmEntityType|EdmComplexType} edmType the EDM type of the provided value
|
|
265
|
-
* @param {Object} structureValue the structural object to deserialize
|
|
266
|
-
* @param {?(EdmProperty[])} nesting the complex properties the object is nested in
|
|
267
|
-
* @param {boolean} isDelta whether the structural object is inside a delta annotation
|
|
268
|
-
* @param {ExpandItem[]} expand The current expand items
|
|
269
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
270
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
271
|
-
* @private
|
|
272
|
-
*/
|
|
273
|
-
_deserializeStructuralType (edmType, structureValue, nesting, isDelta, expand, additionalInformation) {
|
|
274
|
-
if (typeof structureValue !== 'object' || Array.isArray(structureValue)) {
|
|
275
|
-
throw new DeserializationError('Value for structural type must be an object.')
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
for (const [name, value] of Object.entries(structureValue)) {
|
|
279
|
-
if (name.includes('@')) {
|
|
280
|
-
this._deserializeAnnotation(
|
|
281
|
-
edmType,
|
|
282
|
-
structureValue,
|
|
283
|
-
name,
|
|
284
|
-
value,
|
|
285
|
-
nesting !== null,
|
|
286
|
-
isDelta,
|
|
287
|
-
additionalInformation
|
|
288
|
-
)
|
|
289
|
-
} else {
|
|
290
|
-
const edmProperty = edmType.getProperty(name)
|
|
291
|
-
this._assertPropertyExists(edmProperty, edmType, name)
|
|
292
|
-
this._assertPropertyIsCollection(edmProperty, value)
|
|
293
|
-
|
|
294
|
-
let structValue = structureValue
|
|
295
|
-
const propertyType = edmProperty.getEntityType ? edmProperty.getEntityType() : edmProperty.getType()
|
|
296
|
-
|
|
297
|
-
// REVISIT: unofficial!!!
|
|
298
|
-
// !propertyType && cds.env.odata.asProvided -> just use the provided value
|
|
299
|
-
if (!propertyType && cds.env.odata.asProvided) {
|
|
300
|
-
continue
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
switch (propertyType.getKind()) {
|
|
304
|
-
case EdmTypeKind.COMPLEX:
|
|
305
|
-
this._deserializeComplex(
|
|
306
|
-
edmProperty,
|
|
307
|
-
value,
|
|
308
|
-
(nesting || []).concat(edmProperty),
|
|
309
|
-
expand,
|
|
310
|
-
additionalInformation
|
|
311
|
-
)
|
|
312
|
-
break
|
|
313
|
-
case EdmTypeKind.ENTITY:
|
|
314
|
-
this._deserializeNavigation(edmProperty, value, nesting || [], expand, additionalInformation)
|
|
315
|
-
break
|
|
316
|
-
default:
|
|
317
|
-
structValue[name] = this._deserializePrimitive(edmProperty, value)
|
|
318
|
-
break
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Deserializes an annotation.
|
|
326
|
-
* @param {EdmEntityType|EdmComplexType} edmType the EDM type of the structure the annotation is part of
|
|
327
|
-
* @param {Object} outerValue the structure the annotation is part of
|
|
328
|
-
* @param {string} name the name of the annotation
|
|
329
|
-
* @param {?(string|string[]|Object|Object[])} value the value of the annotation
|
|
330
|
-
* @param {boolean} isNested whether the structural object is nested in another object
|
|
331
|
-
* @param {boolean} isDelta whether the structural object is inside a delta annotation
|
|
332
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
333
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
334
|
-
* @private
|
|
335
|
-
*/
|
|
336
|
-
_deserializeAnnotation (edmType, outerValue, name, value, isNested, isDelta, additionalInformation) {
|
|
337
|
-
let structureValue = outerValue
|
|
338
|
-
|
|
339
|
-
if (name === JsonAnnotations.CONTEXT && !isNested) {
|
|
340
|
-
// Context URL is allowed only in outermost structure.
|
|
341
|
-
} else if (name === JsonAnnotations.ID && edmType.getKind() === EdmTypeKind.ENTITY) {
|
|
342
|
-
if (value !== null) structureValue[name] = this._parseEntityUri(edmType, value)
|
|
343
|
-
} else if (name.endsWith(JsonAnnotations.TYPE)) {
|
|
344
|
-
// Validate that the type specified in the annotation is exactly the type declared in the EDM.
|
|
345
|
-
const propertyName = name.substring(0, name.length - JsonAnnotations.TYPE.length)
|
|
346
|
-
let expectedType = edmType
|
|
347
|
-
let isCollection = false
|
|
348
|
-
if (propertyName) {
|
|
349
|
-
const edmProperty = edmType.getProperty(propertyName)
|
|
350
|
-
this._assertPropertyExists(edmProperty, edmType, propertyName)
|
|
351
|
-
expectedType = edmProperty.getType ? edmProperty.getType() : edmProperty.getEntityType()
|
|
352
|
-
isCollection = edmProperty.isCollection()
|
|
353
|
-
}
|
|
354
|
-
const expectedTypeName =
|
|
355
|
-
expectedType.getKind() === EdmTypeKind.PRIMITIVE ? expectedType.getName() : expectedType.getFullQualifiedName()
|
|
356
|
-
const typeNameRegex = isCollection ? /^#?Collection\((.*)\)$/ : /^#?(.*)$/
|
|
357
|
-
const matchedTypeName = typeof value === 'string' && value.match(typeNameRegex)
|
|
358
|
-
const typeName = matchedTypeName && matchedTypeName[1]
|
|
359
|
-
// The type name could be an alias-qualified name; for that case we have to do an EDM look-up.
|
|
360
|
-
const fullQualifiedName =
|
|
361
|
-
typeName && typeName.indexOf('.') > 0 && typeName.lastIndexOf('.') < typeName.length - 1
|
|
362
|
-
? FullQualifiedName.createFromNameSpaceAndName(typeName)
|
|
363
|
-
: null
|
|
364
|
-
if (
|
|
365
|
-
typeName !== expectedTypeName &&
|
|
366
|
-
(!fullQualifiedName ||
|
|
367
|
-
(this._edm.getEntityType(fullQualifiedName) ||
|
|
368
|
-
this._edm.getComplexType(fullQualifiedName) ||
|
|
369
|
-
this._edm.getEnumType(fullQualifiedName) ||
|
|
370
|
-
this._edm.getTypeDefinition(fullQualifiedName)) !== expectedType)
|
|
371
|
-
) {
|
|
372
|
-
throw new DeserializationError(
|
|
373
|
-
"The value of '" + name + "' must describe correctly the type '" + expectedType.getFullQualifiedName() + "'."
|
|
374
|
-
)
|
|
375
|
-
} else {
|
|
376
|
-
delete structureValue[name]
|
|
377
|
-
}
|
|
378
|
-
} else if (name.endsWith(JsonAnnotations.BIND) && !isDelta) {
|
|
379
|
-
const navigationPropertyName = name.substring(0, name.length - JsonAnnotations.BIND.length)
|
|
380
|
-
const edmNavigationProperty = edmType.getNavigationProperty(navigationPropertyName)
|
|
381
|
-
this._assertPropertyExists(edmNavigationProperty, edmType, navigationPropertyName)
|
|
382
|
-
this._assertPropertyIsCollection(edmNavigationProperty, value)
|
|
383
|
-
this._assertPropertyNullable(edmNavigationProperty, value)
|
|
384
|
-
const edmEntityType = edmNavigationProperty.getEntityType()
|
|
385
|
-
structureValue[name] = Array.isArray(value)
|
|
386
|
-
? value.map(uri => this._parseEntityUri(edmEntityType, uri))
|
|
387
|
-
: this._parseEntityUri(edmEntityType, value)
|
|
388
|
-
} else if (name.endsWith(JsonAnnotations.DELTA)) {
|
|
389
|
-
const navigationPropertyName = name.substring(0, name.length - JsonAnnotations.DELTA.length)
|
|
390
|
-
this._deserializeDelta(edmType, navigationPropertyName, value, additionalInformation)
|
|
391
|
-
additionalInformation.hasDelta = true // eslint-disable-line no-param-reassign
|
|
392
|
-
} else if (name === JsonAnnotations.REMOVED && isDelta) {
|
|
393
|
-
if (
|
|
394
|
-
typeof value !== 'object' ||
|
|
395
|
-
Array.isArray(value) ||
|
|
396
|
-
Object.keys(value).length > 1 ||
|
|
397
|
-
(Object.keys(value).length === 1 && value.reason !== 'changed' && value.reason !== 'deleted')
|
|
398
|
-
) {
|
|
399
|
-
throw new DeserializationError(
|
|
400
|
-
"The value of '" +
|
|
401
|
-
JsonAnnotations.REMOVED +
|
|
402
|
-
"' must be an object with an " +
|
|
403
|
-
"optional property 'reason' with value 'changed' or 'deleted'."
|
|
404
|
-
)
|
|
405
|
-
}
|
|
406
|
-
if (
|
|
407
|
-
!structureValue[JsonAnnotations.ID] &&
|
|
408
|
-
!Array.from(edmType.getKeyPropertyRefs().keys()).every(keyName => structureValue[keyName])
|
|
409
|
-
) {
|
|
410
|
-
throw new DeserializationError("'" + JsonAnnotations.REMOVED + "' must identify an entity.")
|
|
411
|
-
}
|
|
412
|
-
} else {
|
|
413
|
-
throw new DeserializationError("Annotation '" + name + "' is not supported.")
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
/**
|
|
418
|
-
* Deserializes a navigation property and fills an expand item for deep inserts.
|
|
419
|
-
* @param {EdmNavigationProperty} edmProperty the EDM navigation property to deserialize
|
|
420
|
-
* @param {Object|Object[]} value the value of the navigation property
|
|
421
|
-
* @param {EdmProperty[]} nesting the complex properties the navigation property is nested in
|
|
422
|
-
* @param {ExpandItem[]} expandArray the current expand items
|
|
423
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
424
|
-
* @private
|
|
425
|
-
*/
|
|
426
|
-
_deserializeNavigation (edmProperty, value, nesting, expandArray, additionalInformation) {
|
|
427
|
-
this._assertPropertyNullable(edmProperty, value)
|
|
428
|
-
if (value === null) return
|
|
429
|
-
|
|
430
|
-
let currentExpandItem = expandArray.find(expandItem => {
|
|
431
|
-
const segments = expandItem.getPathSegments()
|
|
432
|
-
return segments.every((segment, index) =>
|
|
433
|
-
index < segments.length - 1
|
|
434
|
-
? segment.getProperty() === nesting[index]
|
|
435
|
-
: segment.getNavigationProperty() === edmProperty
|
|
436
|
-
)
|
|
437
|
-
})
|
|
438
|
-
if (!currentExpandItem) {
|
|
439
|
-
currentExpandItem = this._createExpandItem(nesting, edmProperty)
|
|
440
|
-
expandArray.push(currentExpandItem)
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
const type = edmProperty.getEntityType()
|
|
444
|
-
|
|
445
|
-
let newExpandOptionArray = []
|
|
446
|
-
if (edmProperty.isCollection()) {
|
|
447
|
-
for (let entity of value) {
|
|
448
|
-
this._deserializeStructuralType(type, entity, [], false, newExpandOptionArray, additionalInformation)
|
|
449
|
-
}
|
|
450
|
-
} else {
|
|
451
|
-
this._deserializeStructuralType(type, value, [], false, newExpandOptionArray, additionalInformation)
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
let innerExpandItems = currentExpandItem.getOption(UriInfo.QueryOptions.EXPAND) || []
|
|
455
|
-
for (const newExpand of newExpandOptionArray) innerExpandItems.push(newExpand)
|
|
456
|
-
if (innerExpandItems.length) currentExpandItem.setOption(UriInfo.QueryOptions.EXPAND, innerExpandItems)
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
/**
|
|
460
|
-
* Deserializes a primitive and primitive collection value.
|
|
461
|
-
* @param {EdmProperty} edmProperty the EDM property of this primitive value
|
|
462
|
-
* @param {?(number|string|boolean|Object|Array)} propertyValue the JSON value
|
|
463
|
-
* @returns {?(number|string|boolean|Buffer|Object|Array)} the deserialized result
|
|
464
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
465
|
-
* @private
|
|
466
|
-
*/
|
|
467
|
-
_deserializePrimitive (edmProperty, propertyValue) {
|
|
468
|
-
// OASIS issue 1177: "Streams that are annotated as the application/json media type [...]
|
|
469
|
-
// are represented as native JSON in JSON requests and responses [...]
|
|
470
|
-
// The odata.mediaContentType control information is only necessary if the embedded JSON happens to be a
|
|
471
|
-
// JSON string, in all other cases it can be heuristically determined that the stream value is JSON."
|
|
472
|
-
// TODO: Check that JSON is an acceptable media type for this stream property.
|
|
473
|
-
// TODO: Validate the JSON content against the JSON schema if there is one in the metadata.
|
|
474
|
-
let type = edmProperty.getType()
|
|
475
|
-
if (type.getKind() === EdmTypeKind.DEFINITION) type = type.getUnderlyingType()
|
|
476
|
-
if (type === EdmPrimitiveTypeKind.Stream) return propertyValue
|
|
477
|
-
return edmProperty.isCollection()
|
|
478
|
-
? propertyValue && propertyValue.map(value => this._decoder.decodeJson(value, edmProperty))
|
|
479
|
-
: this._decoder.decodeJson(propertyValue, edmProperty)
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* Deserializes a complex and complex collection value.
|
|
484
|
-
* @param {EdmProperty} edmProperty the EDM property of this complex value
|
|
485
|
-
* @param {?(Object|Object[])} propertyValue the JSON value
|
|
486
|
-
* @param {EdmProperty[]} nesting the complex properties the complex value is nested in
|
|
487
|
-
* @param {ExpandItem[]} expand the current expand items
|
|
488
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
489
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
490
|
-
* @private
|
|
491
|
-
*/
|
|
492
|
-
_deserializeComplex (edmProperty, propertyValue, nesting, expand, additionalInformation) {
|
|
493
|
-
const type = edmProperty.getType()
|
|
494
|
-
if (edmProperty.isCollection()) {
|
|
495
|
-
for (let value of propertyValue) {
|
|
496
|
-
this._assertPropertyNullable(edmProperty, value)
|
|
497
|
-
if (value === null) continue
|
|
498
|
-
this._deserializeStructuralType(type, value, nesting, false, expand, additionalInformation)
|
|
499
|
-
}
|
|
500
|
-
} else {
|
|
501
|
-
this._assertPropertyNullable(edmProperty, propertyValue)
|
|
502
|
-
if (propertyValue === null) return
|
|
503
|
-
this._deserializeStructuralType(type, propertyValue, nesting, false, expand, additionalInformation)
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
/**
|
|
508
|
-
* Deserializes a delta annotation for a navigation property.
|
|
509
|
-
* @param {EdmEntityType} edmType the EDM type of the parent entity
|
|
510
|
-
* @param {string} propertyName the name of the navigation property
|
|
511
|
-
* @param {any} value the value of the delta annotation of the navigation property
|
|
512
|
-
* @param {Object} additionalInformation additional information to be set in the deserializer
|
|
513
|
-
* @private
|
|
514
|
-
*/
|
|
515
|
-
_deserializeDelta (edmType, propertyName, value, additionalInformation) {
|
|
516
|
-
const edmNavigationProperty = edmType.getNavigationProperty(propertyName)
|
|
517
|
-
this._assertPropertyExists(edmNavigationProperty, edmType, propertyName)
|
|
518
|
-
if (!edmNavigationProperty.isCollection()) {
|
|
519
|
-
throw new DeserializationError("'" + propertyName + "' must not have a delta annotation.")
|
|
520
|
-
}
|
|
521
|
-
if (!Array.isArray(value)) {
|
|
522
|
-
throw new DeserializationError(
|
|
523
|
-
"The value of the delta annotation of '" + propertyName + "' must be a collection."
|
|
524
|
-
)
|
|
525
|
-
}
|
|
526
|
-
const innerEdmType = edmNavigationProperty.getEntityType()
|
|
527
|
-
for (const entity of value) {
|
|
528
|
-
this._deserializeStructuralType(innerEdmType, entity, [], true, [], additionalInformation)
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
/**
|
|
533
|
-
* Asserts that the provided property value is a collection if the corresponding EDM property is a collection.
|
|
534
|
-
* @param {EdmProperty|EdmNavigationProperty} edmProperty the EDM property for the corresponding property value
|
|
535
|
-
* @param {*} propertyValue the value of the property
|
|
536
|
-
* @throws {DeserializationError} if the property value is a collection while EDM property is not and vice versa
|
|
537
|
-
* @private
|
|
538
|
-
*/
|
|
539
|
-
_assertPropertyIsCollection (edmProperty, propertyValue) {
|
|
540
|
-
if (edmProperty.isCollection() && propertyValue && !Array.isArray(propertyValue)) {
|
|
541
|
-
const type = edmProperty.getType ? edmProperty.getType() : edmProperty.getEntityType()
|
|
542
|
-
throw new DeserializationError(
|
|
543
|
-
`'${edmProperty.getName()}' must be a collection of type '${type.getFullQualifiedName()}'.`
|
|
544
|
-
)
|
|
545
|
-
}
|
|
546
|
-
if (!edmProperty.isCollection() && Array.isArray(propertyValue)) {
|
|
547
|
-
throw new DeserializationError(`'${edmProperty.getName()}' must not be a collection.`)
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
/**
|
|
552
|
-
* Asserts that the provided EDM property is defined.
|
|
553
|
-
* @param {EdmProperty|EdmNavigationProperty} edmProperty the EDM property to check
|
|
554
|
-
* @param {EdmType} edmType the EDM type in which the EDM property is defined
|
|
555
|
-
* @param {string} propertyName the name of the property
|
|
556
|
-
* @throws {DeserializationError} if the provided EDM property is not defined
|
|
557
|
-
* @private
|
|
558
|
-
*/
|
|
559
|
-
_assertPropertyExists (edmProperty, edmType, propertyName) {
|
|
560
|
-
if (!edmProperty) {
|
|
561
|
-
const fqn = edmType.getFullQualifiedName()
|
|
562
|
-
throw new DeserializationError(`'${propertyName}' does not exist in type '${fqn}'.`)
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
/**
|
|
567
|
-
* Asserts that the provided EDM property is nullable if it has a null value.
|
|
568
|
-
* @param {EdmProperty|EdmNavigationProperty} edmProperty the EDM property to check
|
|
569
|
-
* @param {*} propertyValue the value of the property
|
|
570
|
-
* @throws {DeserializationError} if null is not allowed
|
|
571
|
-
* @private
|
|
572
|
-
*/
|
|
573
|
-
_assertPropertyNullable (edmProperty, propertyValue) {
|
|
574
|
-
if (propertyValue === null && !edmProperty.isNullable()) {
|
|
575
|
-
throw new DeserializationError(
|
|
576
|
-
`The property '${edmProperty.getName()}' is not nullable and must not have a null value.`
|
|
577
|
-
)
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* Parses and checks a URI given as reference to an entity.
|
|
583
|
-
* @param {EdmEntityType} edmEntityType the EDM type of the entity
|
|
584
|
-
* @param {string} uri the URI
|
|
585
|
-
* @returns {UriInfo} the parsed URI
|
|
586
|
-
* @private
|
|
587
|
-
*/
|
|
588
|
-
_parseEntityUri (edmEntityType, uri) {
|
|
589
|
-
if (uri === null) return null
|
|
590
|
-
if (typeof uri !== 'string') {
|
|
591
|
-
throw new DeserializationError(
|
|
592
|
-
`The reference URI for type '${edmEntityType.getFullQualifiedName()}' must be a string.`
|
|
593
|
-
)
|
|
594
|
-
}
|
|
595
|
-
const uriInfo = new UriParser(this._edm).parseRelativeUri(uri)
|
|
596
|
-
if (
|
|
597
|
-
!uriInfo
|
|
598
|
-
.getPathSegments()
|
|
599
|
-
.every(
|
|
600
|
-
segment =>
|
|
601
|
-
segment.getKind() === UriResource.ResourceKind.ENTITY ||
|
|
602
|
-
(segment.getKind() === UriResource.ResourceKind.NAVIGATION_TO_ONE &&
|
|
603
|
-
segment.getNavigationProperty().containsTarget())
|
|
604
|
-
) ||
|
|
605
|
-
uriInfo.getFinalEdmType() !== edmEntityType
|
|
606
|
-
) {
|
|
607
|
-
throw new DeserializationError(
|
|
608
|
-
`The reference URI '${uri}' is not suitable for type '${edmEntityType.getFullQualifiedName()}'.`
|
|
609
|
-
)
|
|
610
|
-
}
|
|
611
|
-
return uriInfo
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
/**
|
|
615
|
-
* Deserializes a provided entity-reference object.
|
|
616
|
-
* @param {EdmType} edmType the EDM type of the entity
|
|
617
|
-
* @param {Object} value the reference object to deserialize
|
|
618
|
-
* @returns {UriInfo} the deserialized result
|
|
619
|
-
* @throws {DeserializationError} if provided data can not be deserialized
|
|
620
|
-
* @private
|
|
621
|
-
*/
|
|
622
|
-
_deserializeReference (edmType, value) {
|
|
623
|
-
const objectKeys = Object.keys(value)
|
|
624
|
-
if (objectKeys.length === 0) {
|
|
625
|
-
throw new DeserializationError(`Value for type '${edmType.getFullQualifiedName()}' has no properties.`)
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
let uriInfo
|
|
629
|
-
for (const propertyName of objectKeys) {
|
|
630
|
-
if (propertyName === JsonAnnotations.ID) {
|
|
631
|
-
uriInfo = this._parseEntityUri(edmType, value[propertyName])
|
|
632
|
-
if (uriInfo === null) {
|
|
633
|
-
throw new DeserializationError(
|
|
634
|
-
`The reference URI for type '${edmType.getFullQualifiedName()}' must be a string.`
|
|
635
|
-
)
|
|
636
|
-
}
|
|
637
|
-
} else if (odataAnnotations.has(propertyName) || propertyName === JsonAnnotations.TYPE) {
|
|
638
|
-
this._deserializeAnnotation(edmType, value, propertyName, value[propertyName])
|
|
639
|
-
} else {
|
|
640
|
-
throw new DeserializationError(`Property or annotation '${propertyName}' is not supported.`)
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
return uriInfo
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
/**
|
|
647
|
-
* Creates an expand item for a navigation property.
|
|
648
|
-
* @param {EdmProperty[]} nesting the complex properties the navigation property is nested in
|
|
649
|
-
* @param {EdmNavigationProperty} edmNavigationProperty the EDM navigation property
|
|
650
|
-
* @returns {ExpandItem} the expand item
|
|
651
|
-
* @private
|
|
652
|
-
*/
|
|
653
|
-
_createExpandItem (nesting, edmNavigationProperty) {
|
|
654
|
-
return new ExpandItem().setPathSegments(
|
|
655
|
-
nesting
|
|
656
|
-
.map(complexProperty =>
|
|
657
|
-
new UriResource().setKind(UriResource.ResourceKind.COMPLEX_PROPERTY).setProperty(complexProperty)
|
|
658
|
-
)
|
|
659
|
-
.concat([
|
|
660
|
-
new UriResource()
|
|
661
|
-
.setKind(
|
|
662
|
-
edmNavigationProperty.isCollection()
|
|
663
|
-
? UriResource.ResourceKind.NAVIGATION_TO_MANY
|
|
664
|
-
: UriResource.ResourceKind.NAVIGATION_TO_ONE
|
|
665
|
-
)
|
|
666
|
-
.setNavigationProperty(edmNavigationProperty)
|
|
667
|
-
.setIsCollection(edmNavigationProperty.isCollection())
|
|
668
|
-
])
|
|
669
|
-
)
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
module.exports = ResourceJsonDeserializer
|