@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,50 +1,29 @@
|
|
|
1
|
+
const cds = require('../cds')
|
|
2
|
+
const LOG = cds.log('fiori|drafts')
|
|
3
|
+
|
|
4
|
+
const { Object_keys } = cds.utils
|
|
5
|
+
|
|
1
6
|
const { Readable, PassThrough } = require('stream')
|
|
2
|
-
const cds = require('../cds'),
|
|
3
|
-
{ Object_keys } = cds.utils
|
|
4
7
|
|
|
5
8
|
const { getPageSize, commonGenericPaging } = require('../common/generic/paging')
|
|
6
9
|
const { handler: commonGenericSorting } = require('../common/generic/sorting')
|
|
7
10
|
const { addEtagColumns } = require('../common/utils/etag')
|
|
8
|
-
|
|
9
|
-
const { calculateLocationHeader } = require('../../odata/utils')
|
|
10
11
|
const { handleStreamProperties } = require('../common/utils/streamProp')
|
|
11
12
|
|
|
12
|
-
const
|
|
13
|
-
const original = Symbol('original')
|
|
14
|
-
const DRAFT_PARAMS = Symbol('draftParams')
|
|
15
|
-
const AGGREGATION_FUNCTIONS = ['sum', 'min', 'max', 'avg', 'average', 'count']
|
|
16
|
-
|
|
17
|
-
const calcTimeMs = timeout => {
|
|
18
|
-
const match = timeout.match(/^([0-9]+)(w|d|h|hrs|min)$/)
|
|
19
|
-
if (!match) return
|
|
20
|
-
|
|
21
|
-
const [, val, t] = match
|
|
22
|
-
switch (t) {
|
|
23
|
-
case 'w':
|
|
24
|
-
return val * 1000 * 3600 * 24 * 7
|
|
13
|
+
const location4 = require('../../http/location')
|
|
25
14
|
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
const $original = Symbol('original')
|
|
16
|
+
const $draftParams = Symbol('draftParams')
|
|
28
17
|
|
|
29
|
-
|
|
30
|
-
case 'hrs':
|
|
31
|
-
return val * 1000 * 3600
|
|
32
|
-
|
|
33
|
-
case 'min':
|
|
34
|
-
return val * 1000 * 60
|
|
35
|
-
|
|
36
|
-
default:
|
|
37
|
-
return val
|
|
38
|
-
}
|
|
39
|
-
}
|
|
18
|
+
const AGGREGATION_FUNCTIONS = ['sum', 'min', 'max', 'avg', 'average', 'count']
|
|
40
19
|
|
|
41
20
|
const _config_to_ms = (config, _default) => {
|
|
42
21
|
const timeout = cds.env.fiori?.[config]
|
|
43
22
|
let timeout_ms
|
|
44
23
|
if (timeout === true) {
|
|
45
|
-
timeout_ms =
|
|
24
|
+
timeout_ms = cds.utils._unit.time2ms(_default)
|
|
46
25
|
} else if (typeof timeout === 'string') {
|
|
47
|
-
timeout_ms =
|
|
26
|
+
timeout_ms = cds.utils._unit.time2ms(timeout)
|
|
48
27
|
if (!timeout_ms)
|
|
49
28
|
throw new Error(`
|
|
50
29
|
${timeout} is an invalid value for \`cds.fiori.${config}\`.
|
|
@@ -167,7 +146,7 @@ const _promiseAll = async array => {
|
|
|
167
146
|
}
|
|
168
147
|
|
|
169
148
|
const _isCount = query => query.SELECT.columns?.length === 1 && query.SELECT.columns[0].func === 'count'
|
|
170
|
-
const
|
|
149
|
+
const _entityKeys = entity =>
|
|
171
150
|
Object_keys(entity.keys).filter(key => key !== 'IsActiveEntity' && !entity.keys[key].isAssociation)
|
|
172
151
|
|
|
173
152
|
const _inProcessByUserXpr = lockShiftedNow => ({
|
|
@@ -239,7 +218,7 @@ const _cleanUpOldDrafts = (service, tenant) => {
|
|
|
239
218
|
|
|
240
219
|
const draftRootIds = await Promise.all(
|
|
241
220
|
draftRoots.map(draftRoot =>
|
|
242
|
-
SELECT.from(draftRoot,
|
|
221
|
+
SELECT.from(draftRoot, _entityKeys(draftRoot)).where(`DraftAdministrativeData_DraftUUID IN`, expiredDraftsIds)
|
|
243
222
|
)
|
|
244
223
|
)
|
|
245
224
|
|
|
@@ -320,46 +299,45 @@ const _replaceStreams = result => {
|
|
|
320
299
|
}
|
|
321
300
|
}
|
|
322
301
|
|
|
302
|
+
// REVISIT: Can we do a regular handler function instead of monky patching?
|
|
323
303
|
const h = cds.ApplicationService.prototype.handle
|
|
324
|
-
|
|
325
|
-
cds.ApplicationService.prototype.handle = async function (req) {
|
|
326
|
-
const handle = h.bind(this)
|
|
327
|
-
|
|
304
|
+
const handle = async function (req) {
|
|
328
305
|
if (req.event === 'DISCARD') req.event = 'CANCEL'
|
|
329
|
-
if (req.event === 'SAVE') {
|
|
306
|
+
else if (req.event === 'SAVE') {
|
|
330
307
|
req.event = 'draftActivate'
|
|
331
308
|
req.query ??= SELECT.from(req.target, req.data) //> support simple srv.send('SAVE',entity,...)
|
|
332
309
|
}
|
|
333
|
-
if (
|
|
334
|
-
!req.query ||
|
|
335
|
-
// REVISIT: Currently all requests in an Object Page to nested composition targets, e.g. Incidents(ID)/conversation are also Draft Requests which seems wrong overkill -> is that required?
|
|
336
|
-
// req.path.includes('/') ||
|
|
337
|
-
req.query[DRAFT_PARAMS] ||
|
|
338
|
-
(!req.query.SELECT &&
|
|
339
|
-
!req.query.INSERT &&
|
|
340
|
-
// !req.query.UPSERT && // skip UPSERTs (might have an additional INSERT)
|
|
341
|
-
!req.query.UPDATE &&
|
|
342
|
-
!req.query.DELETE)
|
|
343
|
-
) {
|
|
344
|
-
return handle(req)
|
|
345
|
-
}
|
|
346
310
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
311
|
+
// Fast exit for non-draft requests
|
|
312
|
+
// REVISIT: should also start with else, but then this test fails: cds/tests/_runtime/odata/__tests__/integration/draft-custom-handlers.test.js
|
|
313
|
+
if (!req.query) return h.call(this, req)
|
|
314
|
+
else if ($draftParams in req.query) return h.call(this, req)
|
|
315
|
+
/* prettier-ignore */ else if (!(
|
|
316
|
+
// Note: we skip UPSERTs as these might have an additional INSERT
|
|
317
|
+
'SELECT' in req.query ||
|
|
318
|
+
'INSERT' in req.query ||
|
|
319
|
+
'UPDATE' in req.query ||
|
|
320
|
+
'DELETE' in req.query
|
|
321
|
+
)) return h.call(this, req)
|
|
322
|
+
// TODO: also skip quickly if no draft-enabled entities are involved ?!?
|
|
323
|
+
// TODO: also skip quickly if no isActiveEntity is part of the query ?!?
|
|
324
|
+
// TODO: also skip quickly for CREATE request not from Fiori clients ???
|
|
325
|
+
|
|
326
|
+
// rewrite event if necessary
|
|
327
|
+
if (req.protocol && req.target.drafts && req.event in { CREATE: 1, DELETE: 1 }) {
|
|
328
|
+
if (req.event === 'CREATE' && req.data.IsActiveEntity !== true) req.event = 'NEW'
|
|
329
|
+
if (req.event === 'DELETE' && req.data.IsActiveEntity === false) req.event = 'CANCEL'
|
|
330
|
+
}
|
|
352
331
|
|
|
353
332
|
const query = _cleansed(req.query, this.model)
|
|
354
333
|
_cleanseParams(req.params, req.target)
|
|
355
334
|
if (req.data) _cleanseParams(req.data, req.target)
|
|
356
|
-
const draftParams = query[
|
|
335
|
+
const draftParams = query[$draftParams]
|
|
357
336
|
|
|
358
337
|
const _newReq = (req, query, draftParams, { event, headers }) => {
|
|
359
338
|
// REVISIT: This is a bit hacky -> better way?
|
|
360
339
|
query._target = undefined
|
|
361
|
-
query
|
|
362
|
-
query[DRAFT_PARAMS] = draftParams
|
|
340
|
+
query[$draftParams] = draftParams
|
|
363
341
|
|
|
364
342
|
// REVISIT: This is extremely bad. We should be able to just create a copy without such hacks.
|
|
365
343
|
const _req = cds.Request.for(req._) // REVISIT: this causes req._.data of WRITE reqs copied to READ reqs
|
|
@@ -372,7 +350,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
372
350
|
// If we create a `READ` event based on a modifying request, we delete data
|
|
373
351
|
if (event === 'READ' && req.event !== 'READ') delete _req.data // which we fix here -> but this is an ugly workaround
|
|
374
352
|
|
|
375
|
-
_req.target = cds.infer(query
|
|
353
|
+
_req.target = cds.infer.target(query)
|
|
376
354
|
_req.query = query
|
|
377
355
|
_req.event =
|
|
378
356
|
event ||
|
|
@@ -399,7 +377,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
399
377
|
|
|
400
378
|
const run = (query, options = {}) => {
|
|
401
379
|
const _req = _newReq(req, query, draftParams, options)
|
|
402
|
-
return
|
|
380
|
+
return h.call(this, _req)
|
|
403
381
|
}
|
|
404
382
|
|
|
405
383
|
if (req.event === 'READ') {
|
|
@@ -409,7 +387,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
409
387
|
!req.query._target.drafts
|
|
410
388
|
) {
|
|
411
389
|
req.query = query
|
|
412
|
-
return
|
|
390
|
+
return h.call(this, req)
|
|
413
391
|
}
|
|
414
392
|
|
|
415
393
|
// apply paging and sorting on original query for protocol adapters relying on it
|
|
@@ -464,7 +442,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
464
442
|
if (!containsDraftRoot) req.reject({ code: 403, statusCode: 403, message: 'DRAFT_MODIFICATION_ONLY_VIA_ROOT' })
|
|
465
443
|
|
|
466
444
|
const isDirectAccess = typeof req.query.INSERT.into === 'string' || req.query.INSERT.into.ref?.length === 1
|
|
467
|
-
const data = Object.assign({}, req.data) // IsActiveEntity is not enumerable
|
|
445
|
+
const data = Array.isArray(req.data) ? [...req.data] : Object.assign({}, req.data) // IsActiveEntity is not enumerable
|
|
468
446
|
const draftsRootRef =
|
|
469
447
|
typeof query.INSERT.into === 'string'
|
|
470
448
|
? [req.target.drafts.name]
|
|
@@ -477,8 +455,8 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
477
455
|
}
|
|
478
456
|
|
|
479
457
|
// direct access and req.data contains keys: check if root has no draft with that keys
|
|
480
|
-
if (isDirectAccess &&
|
|
481
|
-
const keyData =
|
|
458
|
+
if (isDirectAccess && _entityKeys(query._target).every(k => k in data)) {
|
|
459
|
+
const keyData = _entityKeys(query._target).reduce((res, k) => {
|
|
482
460
|
res[k] = req.data[k]
|
|
483
461
|
return res
|
|
484
462
|
}, {})
|
|
@@ -489,7 +467,9 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
489
467
|
|
|
490
468
|
const cqn = INSERT.into(query.INSERT.into).entries(data)
|
|
491
469
|
await run(cqn, { event: 'CREATE' })
|
|
492
|
-
const result =
|
|
470
|
+
const result = Array.isArray(data)
|
|
471
|
+
? data.map(d => ({ ...d, IsActiveEntity: true }))
|
|
472
|
+
: { ...data, IsActiveEntity: true }
|
|
493
473
|
req.data = result //> make keys available via req.data (as with normal crud)
|
|
494
474
|
return result
|
|
495
475
|
}
|
|
@@ -518,7 +498,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
518
498
|
req.reject({ code: 403, statusCode: 403, message: 'ACTIVE_MODIFICATION_VIA_DRAFT' })
|
|
519
499
|
}
|
|
520
500
|
|
|
521
|
-
const result = await
|
|
501
|
+
const result = await h.call(this, _req)
|
|
522
502
|
req.data = result //> make keys available via req.data (as with normal crud)
|
|
523
503
|
return result
|
|
524
504
|
}
|
|
@@ -536,7 +516,8 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
536
516
|
if (query.DELETE.where) draftQuery.where(query.DELETE.where)
|
|
537
517
|
|
|
538
518
|
// Deletion of active instance outside draft tree, no need to check for draft
|
|
539
|
-
|
|
519
|
+
const target = cds.infer.target(draftQuery) // FIXME: this should not be neccessary, does it?
|
|
520
|
+
if (!target?.isDraft) {
|
|
540
521
|
await run(query)
|
|
541
522
|
return req.data
|
|
542
523
|
}
|
|
@@ -583,8 +564,14 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
583
564
|
])
|
|
584
565
|
.where(query.SELECT.where)
|
|
585
566
|
const res = await run(draftQuery)
|
|
586
|
-
if (!res)
|
|
567
|
+
if (!res) {
|
|
568
|
+
const _etagValidationType = req.headers['if-match']
|
|
569
|
+
? 'if-match'
|
|
570
|
+
: req.headers['if-none-match']
|
|
571
|
+
? 'if-none-match'
|
|
572
|
+
: undefined
|
|
587
573
|
req.reject(_etagValidationType ? { code: 412, statusCode: 412 } : { code: 'DRAFT_NOT_EXISTING', statusCode: 404 })
|
|
574
|
+
}
|
|
588
575
|
if (!cds.context.user._is_privileged && res.DraftAdministrativeData?.InProcessByUser !== cds.context.user.id) {
|
|
589
576
|
req.reject({
|
|
590
577
|
code: 403,
|
|
@@ -616,27 +603,17 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
616
603
|
DELETE.from('DRAFT.DraftAdministrativeData').where({ DraftUUID: DraftAdministrativeData_DraftUUID })
|
|
617
604
|
])
|
|
618
605
|
|
|
619
|
-
if (
|
|
620
|
-
//
|
|
621
|
-
// status code must be set in handler to allow overriding for FE V2
|
|
606
|
+
if (req.res) {
|
|
607
|
+
// status code must be set in handler to allow overriding for FE V2
|
|
622
608
|
// REVISIT: needs reworking for new adapter, especially re $batch
|
|
623
|
-
if (req.
|
|
624
|
-
req._?.odataRes?.setStatusCode(201, { overwrite: true })
|
|
625
|
-
} else if (req.res) {
|
|
626
|
-
req.res.status(201)
|
|
627
|
-
}
|
|
628
|
-
}
|
|
609
|
+
if (!HasActiveEntity) req.res.status(201)
|
|
629
610
|
|
|
630
|
-
if (cds.env.features.odata_new_adapter && req.res) {
|
|
631
611
|
const read_result = await _readAfterDraftAction.bind(this)({
|
|
632
612
|
req,
|
|
633
613
|
payload: res,
|
|
634
614
|
action: 'draftActivate'
|
|
635
615
|
})
|
|
636
|
-
req.res.set(
|
|
637
|
-
'location',
|
|
638
|
-
'../' + calculateLocationHeader(req.target, this, read_result || { ...res, IsActiveEntity: true })
|
|
639
|
-
)
|
|
616
|
+
req.res.set('location', '../' + location4(req.target, this, read_result || { ...res, IsActiveEntity: true }))
|
|
640
617
|
|
|
641
618
|
if (read_result == null) req.res.status(204)
|
|
642
619
|
|
|
@@ -658,11 +635,27 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
658
635
|
req.reject({ code: 403, statusCode: 403 })
|
|
659
636
|
}
|
|
660
637
|
const _req = _newReq(req, query, draftParams, { event: req.event })
|
|
661
|
-
const result = await
|
|
638
|
+
const result = await h.call(this, _req)
|
|
662
639
|
return result
|
|
663
640
|
}
|
|
664
641
|
|
|
665
642
|
if (req.event === 'PATCH' || (req.event === 'UPDATE' && req.target.drafts)) {
|
|
643
|
+
// also delete `IsActiveEntity` for references
|
|
644
|
+
const _rmIsActiveEntity = (data, target) => {
|
|
645
|
+
delete data.IsActiveEntity
|
|
646
|
+
for (const assoc in target.associations) {
|
|
647
|
+
const val = data[assoc]
|
|
648
|
+
if (val && typeof val === 'object') {
|
|
649
|
+
const _target = req.target.associations[assoc]._target
|
|
650
|
+
if (Array.isArray(val)) {
|
|
651
|
+
val.forEach(v => _rmIsActiveEntity(v, _target))
|
|
652
|
+
} else {
|
|
653
|
+
_rmIsActiveEntity(val, _target)
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
_rmIsActiveEntity(req.data, req.target)
|
|
666
659
|
if (draftParams.IsActiveEntity === false) {
|
|
667
660
|
LOG.debug('patch draft')
|
|
668
661
|
|
|
@@ -689,9 +682,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
689
682
|
})
|
|
690
683
|
.where({ DraftUUID: res.DraftAdministrativeData_DraftUUID })
|
|
691
684
|
|
|
692
|
-
|
|
693
|
-
delete updateData.IsActiveEntity
|
|
694
|
-
await run(UPDATE({ ref: draftsRef }).data(updateData))
|
|
685
|
+
await run(UPDATE({ ref: draftsRef }).data(req.data))
|
|
695
686
|
req.data.IsActiveEntity = false
|
|
696
687
|
return req.data
|
|
697
688
|
}
|
|
@@ -723,7 +714,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
723
714
|
|
|
724
715
|
req.query = query
|
|
725
716
|
|
|
726
|
-
return
|
|
717
|
+
return h.call(this, req)
|
|
727
718
|
}
|
|
728
719
|
|
|
729
720
|
// REVISIT: It's not optimal to first calculate the whole result array and only later
|
|
@@ -731,7 +722,7 @@ cds.ApplicationService.prototype.handle = async function (req) {
|
|
|
731
722
|
// especially since the current db driver always adds those fields.
|
|
732
723
|
// Once we switch to the new driver, we'll adapt it.
|
|
733
724
|
const _requested = (result, query) => {
|
|
734
|
-
const originalQuery = query[original]
|
|
725
|
+
const originalQuery = query[$original]
|
|
735
726
|
if (!result || !originalQuery) return result
|
|
736
727
|
const all = ['HasActiveEntity', 'HasDraftEntity']
|
|
737
728
|
|
|
@@ -815,7 +806,7 @@ const Read = {
|
|
|
815
806
|
!query.SELECT.columns.some(c => c === '*') &&
|
|
816
807
|
!query.SELECT.columns.some(c => c.func && AGGREGATION_FUNCTIONS.includes(c.func))
|
|
817
808
|
) {
|
|
818
|
-
const keys =
|
|
809
|
+
const keys = _entityKeys(query._target)
|
|
819
810
|
for (const key of keys) {
|
|
820
811
|
if (!query.SELECT.columns.some(c => c.ref?.[0] === key)) query.SELECT.columns.push({ ref: [key] })
|
|
821
812
|
}
|
|
@@ -857,7 +848,7 @@ const Read = {
|
|
|
857
848
|
draftsQuery.SELECT.count = undefined
|
|
858
849
|
draftsQuery.SELECT.orderBy = undefined
|
|
859
850
|
draftsQuery.SELECT.limit = null
|
|
860
|
-
draftsQuery.SELECT.columns =
|
|
851
|
+
draftsQuery.SELECT.columns = _entityKeys(query._target).map(k => ({ ref: [k] }))
|
|
861
852
|
|
|
862
853
|
const drafts = await draftsQuery.where({ HasActiveEntity: true })
|
|
863
854
|
const res = await Read.onlyActives(run, query.where(Read.whereNotIn(query._target, drafts)), {
|
|
@@ -911,7 +902,7 @@ const Read = {
|
|
|
911
902
|
query._drafts.SELECT.limit = null // we need all entries for the keys to properly select actives (count)
|
|
912
903
|
const isCount = _isCount(query._drafts)
|
|
913
904
|
if (isCount) {
|
|
914
|
-
query._drafts.SELECT.columns =
|
|
905
|
+
query._drafts.SELECT.columns = _entityKeys(query._target).map(k => ({ ref: [k] }))
|
|
915
906
|
}
|
|
916
907
|
if (!query._drafts.SELECT.columns) query._drafts.SELECT.columns = ['*']
|
|
917
908
|
if (!query._drafts.SELECT.columns.some(c => c.ref?.[0] === 'HasActiveEntity')) {
|
|
@@ -963,7 +954,7 @@ const Read = {
|
|
|
963
954
|
}
|
|
964
955
|
}
|
|
965
956
|
|
|
966
|
-
const queryElements =
|
|
957
|
+
const queryElements = query.elements
|
|
967
958
|
const actives = await run(query.where(Read.whereNotIn(query._target, ownDrafts)))
|
|
968
959
|
const removeColumns = (columns, toRemoveCols) => {
|
|
969
960
|
if (!toRemoveCols) return
|
|
@@ -1014,7 +1005,7 @@ const Read = {
|
|
|
1014
1005
|
|
|
1015
1006
|
// runtime sort required
|
|
1016
1007
|
if (orderByExpr && ownDrafts.length > 0 && actives.length > 0) {
|
|
1017
|
-
const locale = cds.context.locale
|
|
1008
|
+
const locale = cds.context.locale?.replaceAll('_', '-')
|
|
1018
1009
|
const collatorMap = new Map()
|
|
1019
1010
|
const elementNamesToSort = orderByExpr.map(orderByExp => orderByExp.ref.join('_'))
|
|
1020
1011
|
|
|
@@ -1077,7 +1068,7 @@ const Read = {
|
|
|
1077
1068
|
c => c.ref && ['DraftAdministrativeData', 'DraftAdministrativeData_DraftUUID'].includes(c.ref[0])
|
|
1078
1069
|
)
|
|
1079
1070
|
: [{ ref: ['DraftAdministrativeData_DraftUUID'] }]
|
|
1080
|
-
draftsQuery.SELECT.columns =
|
|
1071
|
+
draftsQuery.SELECT.columns = _entityKeys(query._target)
|
|
1081
1072
|
.map(k => ({ ref: [k] }))
|
|
1082
1073
|
.concat(additionalCols)
|
|
1083
1074
|
draftsQuery.where({
|
|
@@ -1114,7 +1105,7 @@ const Read = {
|
|
|
1114
1105
|
whereNotIn: (target, data) => Read.whereIn(target, data, true),
|
|
1115
1106
|
|
|
1116
1107
|
whereIn: (target, data, not = false) => {
|
|
1117
|
-
const keys =
|
|
1108
|
+
const keys = _entityKeys(target)
|
|
1118
1109
|
const dataArray = data ? (Array.isArray(data) ? data : [data]) : []
|
|
1119
1110
|
if (not && !dataArray.length) return []
|
|
1120
1111
|
if (keys.length === 1) {
|
|
@@ -1137,7 +1128,7 @@ const Read = {
|
|
|
1137
1128
|
if (!actives.length) return []
|
|
1138
1129
|
const drafts = cds.ql.clone(query._drafts)
|
|
1139
1130
|
drafts.SELECT.where = Read.whereIn(query._target, actives)
|
|
1140
|
-
const newColumns =
|
|
1131
|
+
const newColumns = _entityKeys(query._target).map(k => ({ ref: [k] }))
|
|
1141
1132
|
if (
|
|
1142
1133
|
!drafts.SELECT.columns ||
|
|
1143
1134
|
drafts.SELECT.columns.some(c => c === '*' || c.ref?.[0] === 'DraftAdministrativeData_DraftUUID')
|
|
@@ -1149,6 +1140,7 @@ const Read = {
|
|
|
1149
1140
|
drafts.SELECT.count = undefined
|
|
1150
1141
|
drafts.SELECT.search = undefined
|
|
1151
1142
|
drafts.SELECT.one = undefined
|
|
1143
|
+
drafts.SELECT.recurse = undefined
|
|
1152
1144
|
return drafts
|
|
1153
1145
|
},
|
|
1154
1146
|
|
|
@@ -1176,7 +1168,7 @@ const Read = {
|
|
|
1176
1168
|
const dataArray = Read._makeArray(data)
|
|
1177
1169
|
if (!dataArray.length) return
|
|
1178
1170
|
const hash = row =>
|
|
1179
|
-
|
|
1171
|
+
_entityKeys(target)
|
|
1180
1172
|
.map(k => row[k])
|
|
1181
1173
|
.reduce((res, curr) => res + '|$|' + curr, '')
|
|
1182
1174
|
const hashMap = new Map()
|
|
@@ -1219,7 +1211,7 @@ function _cleanseParams(params, target) {
|
|
|
1219
1211
|
if (key === 'IsActiveEntity') {
|
|
1220
1212
|
const value = params[key]
|
|
1221
1213
|
delete params[key]
|
|
1222
|
-
Object.defineProperty(params, key, { value, enumerable: false, writeable: true })
|
|
1214
|
+
Object.defineProperty(params, key, { value, enumerable: false, writeable: true, configurable: true })
|
|
1223
1215
|
}
|
|
1224
1216
|
}
|
|
1225
1217
|
}
|
|
@@ -1268,7 +1260,7 @@ function _cleansed(query, model) {
|
|
|
1268
1260
|
draftSelect.from = {
|
|
1269
1261
|
ref: [root.id ? { ...root, id: draft.name } : draft.name, ...tail]
|
|
1270
1262
|
}
|
|
1271
|
-
cds.infer(draftsQuery
|
|
1263
|
+
cds.infer.target(draftsQuery)
|
|
1272
1264
|
|
|
1273
1265
|
// draftsQuery._target = draftsQuery._target?.drafts || draftsQuery._target
|
|
1274
1266
|
if (querySelect.columns && query._target.drafts) {
|
|
@@ -1295,7 +1287,7 @@ function _cleansed(query, model) {
|
|
|
1295
1287
|
draftSelect.columns = _tweakAdminExpand(draftSelect.columns)
|
|
1296
1288
|
}
|
|
1297
1289
|
|
|
1298
|
-
draftsQuery[
|
|
1290
|
+
draftsQuery[$draftParams] = draftParams
|
|
1299
1291
|
Object.defineProperty(q, '_drafts', { value: draftsQuery })
|
|
1300
1292
|
return draftsQuery
|
|
1301
1293
|
}
|
|
@@ -1308,8 +1300,8 @@ function _cleansed(query, model) {
|
|
|
1308
1300
|
})
|
|
1309
1301
|
}
|
|
1310
1302
|
|
|
1311
|
-
q[
|
|
1312
|
-
q[original] = query
|
|
1303
|
+
q[$draftParams] = draftParams
|
|
1304
|
+
q[$original] = query
|
|
1313
1305
|
return q
|
|
1314
1306
|
|
|
1315
1307
|
function _cleanseQuery(query, draftParams, model) {
|
|
@@ -1508,10 +1500,30 @@ function expandStarStar(target, draftActivate, recursion = new Map()) {
|
|
|
1508
1500
|
return columns
|
|
1509
1501
|
}
|
|
1510
1502
|
|
|
1511
|
-
async function
|
|
1512
|
-
|
|
1503
|
+
async function beforeNew(req) {
|
|
1504
|
+
function _cleanseData(data, target) {
|
|
1505
|
+
if (!data) return
|
|
1506
|
+
delete data.IsActiveEntity
|
|
1507
|
+
if (!target) return data
|
|
1508
|
+
|
|
1509
|
+
// Also support deep insertions
|
|
1510
|
+
for (const key in data) {
|
|
1511
|
+
if (data[key] && target.elements[key].isAssociation) delete data[key].IsActiveEntity
|
|
1512
|
+
if (!target.elements[key]?.isComposition) continue
|
|
1513
|
+
// do array trick
|
|
1514
|
+
if (Array.isArray(data[key])) data[key] = data[key].map(v => _cleanseData(v, target.elements[key]._target))
|
|
1515
|
+
else if (typeof data[key] === 'object') {
|
|
1516
|
+
data[key] = _cleanseData(data[key], target.elements[key]._target)
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
return data
|
|
1521
|
+
}
|
|
1522
|
+
_cleanseData(req.data, req.target)
|
|
1513
1523
|
}
|
|
1514
|
-
|
|
1524
|
+
|
|
1525
|
+
beforeNew._initial = true
|
|
1526
|
+
|
|
1515
1527
|
async function onNew(req) {
|
|
1516
1528
|
LOG.debug('new draft')
|
|
1517
1529
|
|
|
@@ -1564,7 +1576,7 @@ async function onNew(req) {
|
|
|
1564
1576
|
})
|
|
1565
1577
|
.where({ DraftUUID })
|
|
1566
1578
|
|
|
1567
|
-
const
|
|
1579
|
+
const _setDraftColumns = (obj, target) => {
|
|
1568
1580
|
const newObj = Object.assign({}, obj, { DraftAdministrativeData_DraftUUID: DraftUUID, HasActiveEntity: false })
|
|
1569
1581
|
if (!target) return newObj
|
|
1570
1582
|
|
|
@@ -1573,19 +1585,18 @@ async function onNew(req) {
|
|
|
1573
1585
|
if (!target.elements[key]?.isComposition) continue
|
|
1574
1586
|
// do array trick
|
|
1575
1587
|
if (Array.isArray(newObj[key]))
|
|
1576
|
-
newObj[key] = newObj[key].map(v =>
|
|
1588
|
+
newObj[key] = newObj[key].map(v => _setDraftColumns(v, target.elements[key]._target))
|
|
1577
1589
|
else if (typeof newObj[key] === 'object') {
|
|
1578
|
-
newObj[key] =
|
|
1590
|
+
newObj[key] = _setDraftColumns(newObj[key], target.elements[key]._target)
|
|
1579
1591
|
}
|
|
1580
1592
|
}
|
|
1581
1593
|
|
|
1582
1594
|
return newObj
|
|
1583
1595
|
}
|
|
1584
1596
|
|
|
1585
|
-
const draftData =
|
|
1597
|
+
const draftData = _setDraftColumns(req.query.INSERT.entries[0], req.target)
|
|
1586
1598
|
|
|
1587
|
-
|
|
1588
|
-
const draftCQN = INSERT.into(req.target).entries(draftData)
|
|
1599
|
+
const draftCQN = INSERT.into(req.subject).entries(draftData)
|
|
1589
1600
|
|
|
1590
1601
|
await _promiseAll([adminDataCQN, this.run(draftCQN)])
|
|
1591
1602
|
|
|
@@ -1602,7 +1613,7 @@ async function onEdit(req) {
|
|
|
1602
1613
|
req.query ??= SELECT.from(req.target, req.data).where({ IsActiveEntity: true }) //> support simple srv.send('EDIT',entity,...)
|
|
1603
1614
|
|
|
1604
1615
|
// use symbol for _draftParams
|
|
1605
|
-
const draftParams = req.query[
|
|
1616
|
+
const draftParams = req.query[$draftParams] || { IsActiveEntity: true } // REVISIT: can draftParams in the edit caser ever be undefined or other than IsActiveEntity=true ?
|
|
1606
1617
|
if (req.query.SELECT.from.ref.length > 1 || draftParams.IsActiveEntity !== true) {
|
|
1607
1618
|
req.reject({
|
|
1608
1619
|
code: 400,
|
|
@@ -1648,7 +1659,7 @@ async function onEdit(req) {
|
|
|
1648
1659
|
})
|
|
1649
1660
|
|
|
1650
1661
|
// prevent service to check for own user
|
|
1651
|
-
existingDraft[
|
|
1662
|
+
existingDraft[$draftParams] = draftParams
|
|
1652
1663
|
|
|
1653
1664
|
const selectActiveCQN = SELECT.one.from({ ref: req.query.SELECT.from.ref }).columns(cols)
|
|
1654
1665
|
selectActiveCQN.SELECT.localized = false
|
|
@@ -1663,7 +1674,7 @@ async function onEdit(req) {
|
|
|
1663
1674
|
// ensuring there is no waiting time for other users attempting to edit the same record
|
|
1664
1675
|
// concurrently.
|
|
1665
1676
|
if (this._datasource === cds.db) {
|
|
1666
|
-
const keys =
|
|
1677
|
+
const keys = _entityKeys(req.target)
|
|
1667
1678
|
const keyData = _getKeyData(keys, req.query.SELECT.from.ref[0].where)
|
|
1668
1679
|
const rootWhere = keys.reduce((res, key) => {
|
|
1669
1680
|
res[key] = keyData[key]
|
|
@@ -1689,7 +1700,7 @@ async function onEdit(req) {
|
|
|
1689
1700
|
})()
|
|
1690
1701
|
const activeLockCQN = SELECT.from(lockTarget, [1]).where(lockWhere).forUpdate({ wait: 0 })
|
|
1691
1702
|
activeLockCQN.SELECT.localized = false
|
|
1692
|
-
activeLockCQN[
|
|
1703
|
+
activeLockCQN[$draftParams] = draftParams
|
|
1693
1704
|
|
|
1694
1705
|
try {
|
|
1695
1706
|
await activeLockCQN
|
|
@@ -1709,7 +1720,7 @@ async function onEdit(req) {
|
|
|
1709
1720
|
} else {
|
|
1710
1721
|
const activeLockCQN = SELECT.from({ ref: req.query.SELECT.from.ref }, [1]).forUpdate({ wait: 0 })
|
|
1711
1722
|
activeLockCQN.SELECT.localized = false
|
|
1712
|
-
activeLockCQN[
|
|
1723
|
+
activeLockCQN[$draftParams] = draftParams
|
|
1713
1724
|
|
|
1714
1725
|
// Locking the underlying database table is effective only when the database is not
|
|
1715
1726
|
// hosted on an external service. This is because the active data might be stored in
|
|
@@ -1729,6 +1740,7 @@ async function onEdit(req) {
|
|
|
1729
1740
|
}
|
|
1730
1741
|
|
|
1731
1742
|
if (!res) req.reject({ code: 404, statusCode: 404 })
|
|
1743
|
+
|
|
1732
1744
|
const preserveChanges = req.data?.PreserveChanges
|
|
1733
1745
|
const inProcessByUser = draft?.DraftAdministrativeData?.InProcessByUser
|
|
1734
1746
|
|
|
@@ -1742,7 +1754,7 @@ async function onEdit(req) {
|
|
|
1742
1754
|
])
|
|
1743
1755
|
}
|
|
1744
1756
|
|
|
1745
|
-
if (!cds.env.features.
|
|
1757
|
+
if (!cds.env.features.binary_draft_compat) _replaceStreams(res)
|
|
1746
1758
|
|
|
1747
1759
|
const timestamp = cds.context.timestamp.toISOString() // REVISIT: toISOString should be done on db layer
|
|
1748
1760
|
await INSERT.into('DRAFT.DraftAdministrativeData').entries({
|
|
@@ -1772,16 +1784,13 @@ async function onEdit(req) {
|
|
|
1772
1784
|
req.res.status(201)
|
|
1773
1785
|
}
|
|
1774
1786
|
|
|
1775
|
-
if (
|
|
1787
|
+
if (req.res) {
|
|
1776
1788
|
const read_result = await _readAfterDraftAction.bind(this)({
|
|
1777
1789
|
req,
|
|
1778
1790
|
payload: res,
|
|
1779
1791
|
action: 'draftEdit'
|
|
1780
1792
|
})
|
|
1781
|
-
req.res.set(
|
|
1782
|
-
'location',
|
|
1783
|
-
'../' + calculateLocationHeader(req.target, this, read_result || { ...res, IsActiveEntity: false })
|
|
1784
|
-
)
|
|
1793
|
+
req.res.set('location', '../' + location4(req.target, this, read_result || { ...res, IsActiveEntity: false }))
|
|
1785
1794
|
|
|
1786
1795
|
if (read_result == null) req.res.status(204)
|
|
1787
1796
|
|
|
@@ -1796,7 +1805,7 @@ async function onCancel(req) {
|
|
|
1796
1805
|
|
|
1797
1806
|
req.query ??= DELETE(req.target, req.data) //> support simple srv.send('CANCEL',entity,...)
|
|
1798
1807
|
const activeRef = _redirectRefToActives(req.query.DELETE.from.ref, this.model)
|
|
1799
|
-
const draftParams = req.query[
|
|
1808
|
+
const draftParams = req.query[$draftParams] || { IsActiveEntity: false } // REVISIT: can draftParams in the cancel case ever be undefined or other than IsActiveEntity=false ?
|
|
1800
1809
|
|
|
1801
1810
|
const draftQuery = SELECT.one
|
|
1802
1811
|
.from({ ref: req.query.DELETE.from.ref })
|
|
@@ -1841,7 +1850,7 @@ async function onCancel(req) {
|
|
|
1841
1850
|
async function onPrepare(req) {
|
|
1842
1851
|
LOG.debug('prepare draft')
|
|
1843
1852
|
|
|
1844
|
-
const draftParams = req.query[
|
|
1853
|
+
const draftParams = req.query[$draftParams]
|
|
1845
1854
|
if (req.query.SELECT.from.ref.length > 1 || draftParams.IsActiveEntity !== false) {
|
|
1846
1855
|
req.reject({
|
|
1847
1856
|
code: 400,
|
|
@@ -1856,7 +1865,7 @@ async function onPrepare(req) {
|
|
|
1856
1865
|
d`.*`, d.DraftAdministrativeData(a => a.InProcessByUser)
|
|
1857
1866
|
})
|
|
1858
1867
|
.where(where)
|
|
1859
|
-
draftQuery[
|
|
1868
|
+
draftQuery[$draftParams] = draftParams
|
|
1860
1869
|
const data = await draftQuery
|
|
1861
1870
|
if (!data) req.reject({ code: 404, statusCode: 404 })
|
|
1862
1871
|
if (!cds.context.user._is_privileged && data.DraftAdministrativeData?.InProcessByUser !== req.user.id)
|
|
@@ -1912,78 +1921,47 @@ const _readAfterDraftAction = async function ({ req, payload, action }) {
|
|
|
1912
1921
|
}
|
|
1913
1922
|
}
|
|
1914
1923
|
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
cds.extend(cds.ApplicationService).with(
|
|
1918
|
-
class {
|
|
1919
|
-
new(draft, key) {
|
|
1920
|
-
return {
|
|
1921
|
-
then: (r, e) => this.send('NEW', draft, key).then(r, e),
|
|
1922
|
-
for: key => this.send('EDIT', typeof draft === 'string' ? draft.replace(/\.drafts$/, '') : draft.actives, key)
|
|
1923
|
-
}
|
|
1924
|
-
}
|
|
1925
|
-
edit(active, key) {
|
|
1926
|
-
return this.send('EDIT', active, key)
|
|
1927
|
-
}
|
|
1928
|
-
save(draft, key) {
|
|
1929
|
-
return this.send('SAVE', draft, key)
|
|
1930
|
-
}
|
|
1931
|
-
cancel(draft, key) {
|
|
1932
|
-
return this.send('CANCEL', draft, key)
|
|
1933
|
-
}
|
|
1934
|
-
discard(draft, key) {
|
|
1935
|
-
return this.send('DISCARD', draft, key)
|
|
1936
|
-
}
|
|
1937
|
-
}
|
|
1938
|
-
)
|
|
1939
|
-
|
|
1940
|
-
module.exports = {
|
|
1941
|
-
impl() {
|
|
1942
|
-
// REVISIT: don't pollute services... -> do we really need this?
|
|
1943
|
-
Object.defineProperty(this, '_datasource', { value: cds.db })
|
|
1944
|
-
|
|
1945
|
-
function _wrapped(handler, isActiveEntity) {
|
|
1946
|
-
const fn = function (req, next) {
|
|
1947
|
-
if (!req.target?.drafts || (isActiveEntity && req.target.isDraft) || (!isActiveEntity && !req.target.isDraft))
|
|
1948
|
-
return next?.()
|
|
1949
|
-
return handler.call(this, req, next)
|
|
1950
|
-
}
|
|
1951
|
-
if (handler._initial) fn._initial = true
|
|
1952
|
-
return fn
|
|
1953
|
-
}
|
|
1924
|
+
module.exports = cds.service.impl(function () {
|
|
1925
|
+
if (!this.entities?.DraftAdministrativeData) return
|
|
1954
1926
|
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
async function fioriReadCompat(req, next) {
|
|
1963
|
-
if (!req.target) return next()
|
|
1964
|
-
const data = await next()
|
|
1965
|
-
if (!data) return data
|
|
1966
|
-
let _key
|
|
1967
|
-
for (const key in req.target.keys) {
|
|
1968
|
-
if (key === 'IsActiveEntity') continue
|
|
1969
|
-
_key = key
|
|
1970
|
-
break
|
|
1971
|
-
}
|
|
1972
|
-
const _addIsActiveEntity = (data, IsActiveEntity) => {
|
|
1973
|
-
if (Array.isArray(data)) return data.map(d => _addIsActiveEntity(d, IsActiveEntity))
|
|
1974
|
-
if (_key in data) data.IsActiveEntity = IsActiveEntity
|
|
1975
|
-
}
|
|
1976
|
-
_addIsActiveEntity(data, !req.target?.isDraft)
|
|
1977
|
-
return data
|
|
1927
|
+
// REVISIT: don't pollute services... -> do we really need this?
|
|
1928
|
+
Object.defineProperty(this, '_datasource', { value: cds.db })
|
|
1929
|
+
|
|
1930
|
+
this.new = function (draft, key) {
|
|
1931
|
+
return {
|
|
1932
|
+
then: (r, e) => this.send('NEW', draft, key).then(r, e),
|
|
1933
|
+
for: key => this.send('EDIT', typeof draft === 'string' ? draft.replace(/\.drafts$/, '') : draft.actives, key)
|
|
1978
1934
|
}
|
|
1935
|
+
}
|
|
1936
|
+
this.edit = function (active, key) {
|
|
1937
|
+
return this.send('EDIT', active, key)
|
|
1938
|
+
}
|
|
1939
|
+
this.save = function (draft, key) {
|
|
1940
|
+
return this.send('SAVE', draft, key)
|
|
1941
|
+
}
|
|
1942
|
+
this.cancel = function (draft, key) {
|
|
1943
|
+
return this.send('CANCEL', draft, key)
|
|
1944
|
+
}
|
|
1945
|
+
this.discard = function (draft, key) {
|
|
1946
|
+
return this.send('DISCARD', draft, key)
|
|
1947
|
+
}
|
|
1979
1948
|
|
|
1980
|
-
|
|
1981
|
-
// register after read handlers to add `IsActiveEntity`,
|
|
1982
|
-
// so stakeholders have access to it when calling next()
|
|
1949
|
+
this.handle = handle
|
|
1983
1950
|
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1951
|
+
function _wrapped(handler, isActiveEntity) {
|
|
1952
|
+
const fn = function handle_draft_requests(req, next) {
|
|
1953
|
+
if (!req.target?.drafts || (isActiveEntity && req.target.isDraft) || (!isActiveEntity && !req.target.isDraft))
|
|
1954
|
+
return next?.()
|
|
1955
|
+
return handler.call(this, req, next)
|
|
1987
1956
|
}
|
|
1957
|
+
if (handler._initial) fn._initial = true
|
|
1958
|
+
return fn
|
|
1988
1959
|
}
|
|
1989
|
-
|
|
1960
|
+
|
|
1961
|
+
// Also runs those handlers if they're annotated with @odata.draft.enabled through extensibility
|
|
1962
|
+
this.on('NEW', '*', _wrapped(onNew, false))
|
|
1963
|
+
this.prepend(s => s.before('NEW', '*', _wrapped(beforeNew, false)))
|
|
1964
|
+
this.on('EDIT', '*', _wrapped(onEdit, true))
|
|
1965
|
+
this.on('CANCEL', '*', _wrapped(onCancel, false))
|
|
1966
|
+
this.on('draftPrepare', '*', _wrapped(onPrepare, false))
|
|
1967
|
+
})
|