@sap/cds 8.9.3 → 9.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +122 -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/classes.js +1 -0
- package/lib/core/linked-csn.js +8 -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 +12 -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 +2 -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 -6
- 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/postProcess.js +2 -2
- package/libx/_runtime/common/utils/propagateForeignKeys.js +21 -36
- package/libx/_runtime/common/utils/resolveView.js +106 -142
- 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 +1 -4
- package/libx/odata/utils/normalizeTimeData.js +4 -7
- package/libx/odata/utils/readAfterWrite.js +1 -1
- package/libx/{outbox/OutboxRunner.js → queue/TaskRunner.js} +17 -22
- package/libx/queue/index.js +530 -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
package/lib/srv/cds.Service.js
CHANGED
|
@@ -1,131 +1,191 @@
|
|
|
1
|
-
//////////////////////////////////////////////////////////////
|
|
2
|
-
//
|
|
3
|
-
// PLEASE DO NOT RUN prettier ON THIS FILE
|
|
4
|
-
//
|
|
5
|
-
//////////////////////////////////////////////////////////////
|
|
6
|
-
|
|
7
|
-
const cds = require('../index')
|
|
8
1
|
const EventHandlers = require('./srv-handlers')
|
|
2
|
+
const Request = require('../req/request')
|
|
3
|
+
const Event = require('../req/event')
|
|
4
|
+
const cds = require('../index')
|
|
9
5
|
|
|
10
6
|
|
|
11
7
|
/**
|
|
12
|
-
*
|
|
8
|
+
* This class constitutes the API used by service consumers to send requests, and emit events.
|
|
9
|
+
*
|
|
10
|
+
* - `dispatch()` - is the central method ultimately called by all the other methods below.
|
|
11
|
+
* - `emit()` - is the central method of the **Messaging API** to emit asynchronous event messages.
|
|
12
|
+
* - `send()` - is the central method of the **Request API** to send synchronous requests.
|
|
13
|
+
* - `run()` - is the central method of the **Querying API** to execute queries.
|
|
14
|
+
*
|
|
15
|
+
* The other methods, like `read`, `create`, `update`, `delete`, are **CRUD-style** syntactical
|
|
16
|
+
* sugar variants provided for convenience, or **REST-style** like `get`, `put`, `post`, `patch`.
|
|
13
17
|
*/
|
|
14
|
-
class
|
|
18
|
+
class ConsumptionAPI {
|
|
19
|
+
|
|
20
|
+
async dispatch() {}
|
|
21
|
+
|
|
22
|
+
emit (event, data, headers) {
|
|
23
|
+
if (is_object(event)) return this.dispatch (event instanceof Event ? event : new Event(event))
|
|
24
|
+
else return this.dispatch (new Event ({ event, data, headers }))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
send (req, path, data, headers) {
|
|
28
|
+
if (is_object(req)) return this.dispatch (req instanceof Request ? req : new Request(req))
|
|
29
|
+
if (is_object(path)) return this.dispatch (new Request (path.is_linked //...
|
|
30
|
+
? { method:req, entity:path, data, headers }
|
|
31
|
+
: { method:req, data:path, headers:data }))
|
|
32
|
+
else return this.dispatch (new Request({ method:req, path, data, headers }))
|
|
33
|
+
}
|
|
34
|
+
schedule (method, path, data, headers) {
|
|
35
|
+
// not great to normalize args... better way? need to 'merge' with after/every
|
|
36
|
+
const req = method instanceof cds.Request ? method : new cds.Request(_nrm4skd(method, path, data, headers))
|
|
37
|
+
return {
|
|
38
|
+
after (ms) {
|
|
39
|
+
req.queue ??= {}
|
|
40
|
+
req.queue.after = ms
|
|
41
|
+
return this
|
|
42
|
+
},
|
|
43
|
+
every (ms) {
|
|
44
|
+
req.queue ??= {}
|
|
45
|
+
req.queue.every = ms
|
|
46
|
+
return this
|
|
47
|
+
},
|
|
48
|
+
then: (r, e) => {
|
|
49
|
+
return cds.queued(this).send(req).then(r, e)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get (...args) { return is_rest(args[0]) ? this.send('GET', ...args) : this.read (...args) }
|
|
54
|
+
put (...args) { return is_rest(args[0]) ? this.send('PUT', ...args) : this.update (...args) }
|
|
55
|
+
post (...args) { return is_rest(args[0]) ? this.send('POST', ...args) : this.create (...args) }
|
|
56
|
+
patch (...args) { return is_rest(args[0]) ? this.send('PATCH', ...args) : this.update (...args) }
|
|
57
|
+
delete (...args) { return is_rest(args[0]) ? this.send('DELETE',...args) : DELETE.from (...args).bind(this) }
|
|
15
58
|
|
|
16
59
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* @param {string} [options.kind] - the kind of the service
|
|
22
|
-
* @param {function} [options.impl] - the implementation function
|
|
60
|
+
* Queries can be passed as one of the following:
|
|
61
|
+
* - a CQL tagged template string, which is converted into an instance of `cds.ql.Query`
|
|
62
|
+
* - a CQN object, or an array of such
|
|
63
|
+
* - a native SQL string, with binging parameters in the second argument `data`
|
|
23
64
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (model) this.model = model
|
|
65
|
+
run (query, data) {
|
|
66
|
+
if (query.raw) [ query, data ] = [ cds.ql (...arguments) ]
|
|
67
|
+
const req = new Request ({ query, data })
|
|
68
|
+
return this.dispatch (req)
|
|
29
69
|
}
|
|
70
|
+
read (...args) { return is_query(args[0]) ? this.run(...args) : SELECT.read(...args).bind(this) }
|
|
71
|
+
insert (...args) { return INSERT(...args).bind(this) }
|
|
72
|
+
create (...args) { return INSERT.into(...args).bind(this) }
|
|
73
|
+
update (...args) { return UPDATE.entity(...args).bind(this) }
|
|
74
|
+
upsert (...args) { return UPSERT(...args).bind(this) }
|
|
75
|
+
exists (...args) { return SELECT.one([1]).from(...args).bind(this) }
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Streaming API variant of .run(). Subclasses should override this to support real streaming.
|
|
79
|
+
*/
|
|
80
|
+
foreach (query, data, callback) {
|
|
81
|
+
if (!callback) [ data, callback ] = [ undefined, data ]
|
|
82
|
+
return this.run (query, data) .then (rows => rows.forEach(callback) || rows)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Internal-only API to free resources when tenants offboard
|
|
86
|
+
/** @protected */ disconnect(tenant) {} // eslint-disable-line no-unused-vars
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* This class provides API used by service providers to reflect
|
|
92
|
+
* their service definitions from a given model.
|
|
93
|
+
*/
|
|
94
|
+
class ReflectionAPI extends ConsumptionAPI {
|
|
30
95
|
|
|
31
96
|
/** @param {import('../core/linked-csn').LinkedCSN} csn */
|
|
32
97
|
set model (csn) {
|
|
33
98
|
super.model = csn ? cds.compile.for.nodejs(csn) : undefined
|
|
34
99
|
}
|
|
35
100
|
|
|
36
|
-
/**
|
|
37
|
-
* Lazy get the service definition from this.model
|
|
38
|
-
* @type import('../core/classes').service
|
|
39
|
-
*/
|
|
101
|
+
/** @type import('../core/classes').service */
|
|
40
102
|
get definition() {
|
|
41
103
|
const defs = this.model?.definitions; if (!defs) return super.definition = undefined
|
|
42
104
|
return super.definition = defs[this.options.service] || defs[this.name]
|
|
43
105
|
}
|
|
44
|
-
|
|
45
|
-
/** The namespace always is the service definition name */
|
|
46
106
|
get namespace() {
|
|
47
107
|
return super.namespace = this.definition?.name
|
|
48
108
|
|| this.model?.namespace
|
|
49
109
|
|| !this.isDatabaseService && !/\W/.test(this.name) && this.name
|
|
50
110
|
|| undefined
|
|
51
111
|
}
|
|
52
|
-
|
|
53
|
-
// Reflection methods
|
|
54
112
|
get entities() { return super.entities = this.reflect (d => d.kind === 'entity') }
|
|
55
113
|
get events() { return super.events = this.reflect (d => d.kind === 'event') }
|
|
56
114
|
get types() { return super.types = this.reflect (d => !d.kind || d.kind === 'type') }
|
|
57
115
|
get actions() { return super.actions = this.reflect (d => d.kind === 'action' || d.kind === 'function') }
|
|
58
|
-
|
|
59
|
-
reflect(filter) { return this.model?.childrenOf (this.namespace, filter) || [] }
|
|
116
|
+
reflect (filter) { return this.model?.childrenOf (this.namespace, filter) || [] }
|
|
60
117
|
}
|
|
61
118
|
|
|
62
119
|
|
|
63
|
-
|
|
120
|
+
/**
|
|
121
|
+
* This class provides the API used by service providers to add event handlers.
|
|
122
|
+
* It inherits the ConsumptionAPI and ReflectionAPI.
|
|
123
|
+
*/
|
|
124
|
+
class Service extends ReflectionAPI {
|
|
64
125
|
|
|
65
|
-
constructor (name, model, options) {
|
|
66
|
-
if (typeof name === 'object')
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
126
|
+
constructor (name, model, options) { super()
|
|
127
|
+
if (typeof name === 'object') [ model, options, name = _service_in(model) ] = [ name, model ]
|
|
128
|
+
this.name = name || new.target.name // i.e. when called without any arguments
|
|
129
|
+
this.options = options ??= {}
|
|
130
|
+
if (options.kind) this.kind = options.kind // shortcut, e.g. for 'sqlite', ...
|
|
131
|
+
if (model) this.model = model
|
|
132
|
+
this.handlers = new EventHandlers(this)
|
|
133
|
+
this.decorate()
|
|
72
134
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
handlers
|
|
82
|
-
prepend (fn) { return this.handlers.prepend.call (this,fn) }
|
|
83
|
-
before (...args) { return this.handlers.register (this, 'before', ...args) }
|
|
84
|
-
on (...args) { return this.handlers.register (this, 'on', ...args) }
|
|
85
|
-
after (...args) { return this.handlers.register (this, 'after', ...args) }
|
|
86
|
-
reject (e, path) { return this.handlers.register (this, '_initial', e, path,
|
|
135
|
+
init(){ return this } //> essentially a constructor without arguments
|
|
136
|
+
|
|
137
|
+
// Handler registration API
|
|
138
|
+
prepend (fn) { return this.handlers.prepend.call (this,fn) }
|
|
139
|
+
/** @typedef {( entity?, path?, handler:(req:import('../req/request'))=>{})=> Service} boa */
|
|
140
|
+
/** @type boa */ before (...args) { return this.handlers.register (this, 'before', ...args) }
|
|
141
|
+
/** @type boa */ on (...args) { return this.handlers.register (this, 'on', ...args) }
|
|
142
|
+
/** @type boa */ after (...args) { return this.handlers.register (this, 'after', ...args) }
|
|
143
|
+
reject (e, path) { return this.handlers.register (this, '_initial', e, path,
|
|
87
144
|
r => r.reject (405, `Event "${r.event}" not allowed for entity "${r.path}".`)
|
|
88
145
|
)}
|
|
89
146
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
147
|
+
// Overrriding `srv.run()` to additionally allow running a function in a managed transaction.
|
|
148
|
+
run (fn) {
|
|
149
|
+
if (typeof fn !== 'function') return super.run (...arguments)
|
|
150
|
+
if (this.context) return fn(this) // if this is already a tx -> run fn with this
|
|
151
|
+
const ctx = cds.context, tx = ctx?.tx // is there an (open) outer tx? ...
|
|
152
|
+
if (!tx || tx._done === 'committed') return this.tx(fn) // no -> run fn with root tx
|
|
153
|
+
if (tx._done !== 'rolled back') return fn(this.tx(ctx)) // yes -> run fn with nested tx
|
|
154
|
+
else throw this.tx._is_done (tx._done) // throw if outer tx was rolled back
|
|
94
155
|
}
|
|
95
156
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return (Service.prototype.tx = require('./srv-tx')) .call (this,...args)
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* @deprecated Flag to control whether this service is extensible.
|
|
107
|
-
* Can be overridden by subclasses.
|
|
108
|
-
*/
|
|
109
|
-
get isExtensible() { // REVISIT: can we eliminate this?
|
|
110
|
-
return this.model === cds.model && !this.name?.startsWith('cds.xt.')
|
|
111
|
-
}
|
|
157
|
+
// Inofficial APIs - for internal use only
|
|
158
|
+
/** @protected */ static _is_service_class = true //> for factory
|
|
159
|
+
/** @protected */ get endpoints() { return super.endpoints = cds.service.protocols.endpoints4(this) }
|
|
160
|
+
/** @protected */ set endpoints(p) { super.endpoints = p }
|
|
161
|
+
/** @protected */ get path() { return super.path = cds.service.protocols.path4(this) }
|
|
162
|
+
/** @protected */ set path(p) { super.path = p }
|
|
112
163
|
|
|
164
|
+
// Deprecated APIs - kept for backwards compatibility
|
|
113
165
|
/** @deprecated */ get _handlers() { return this.handlers }
|
|
166
|
+
/** @deprecated */ get operations() { return this.actions }
|
|
167
|
+
/** @deprecated */ get transaction() { return this.tx }
|
|
168
|
+
/** @deprecated */ get isExtensible() { return this.model === cds.model && !this.name?.startsWith('cds.xt.') }
|
|
114
169
|
}
|
|
115
170
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
Service.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
171
|
+
const { dispatch, handle } = require('./srv-dispatch')
|
|
172
|
+
Service.prototype.dispatch = dispatch
|
|
173
|
+
Service.prototype.handle = handle
|
|
174
|
+
Service.prototype.tx = require('./srv-tx')
|
|
175
|
+
Service.prototype.decorate = require('./srv-methods')
|
|
176
|
+
|
|
177
|
+
const is_object = x => typeof x === 'object'
|
|
178
|
+
const is_query = x => x?.bind || Array.isArray(x) && !x.raw
|
|
179
|
+
const is_rest = x => typeof x === 'string' && x[0] === '/'
|
|
180
|
+
const _service_in = m => cds.linked(m).services?.[0]?.name
|
|
181
|
+
|| cds.error.expected `${{model:m}} to be a CSN with a single service definition`
|
|
182
|
+
const _nrm4skd = (method, path, data, headers) => {
|
|
183
|
+
if (typeof method === 'object') return method
|
|
184
|
+
if (typeof path !== 'object') return { method, path, data, headers }
|
|
185
|
+
if (path.is_linked) return { method, entity: path, data, headers }
|
|
186
|
+
return { method, data: path, headers: data }
|
|
129
187
|
}
|
|
130
188
|
|
|
131
|
-
|
|
189
|
+
|
|
190
|
+
exports = module.exports = Service
|
|
191
|
+
exports.Service = Service
|
|
@@ -1,8 +1,106 @@
|
|
|
1
1
|
const cds = require('../../../index.js')
|
|
2
2
|
const LOG = cds.log('auth')
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const {
|
|
5
|
+
createSecurityContext,
|
|
6
|
+
IdentityService,
|
|
7
|
+
errors: { ValidationError }
|
|
8
|
+
} = require('./xssec')
|
|
5
9
|
|
|
10
|
+
module.exports = function ias_auth(config) {
|
|
11
|
+
// cds.env.requires.auth.known_claims is not an official config!
|
|
12
|
+
const { kind, credentials, config: serviceConfig = {}, known_claims = KNOWN_CLAIMS } = config
|
|
13
|
+
const skipped_attrs = known_claims.reduce((a, x) => ((a[x] = 1), a), {})
|
|
14
|
+
|
|
15
|
+
if (!credentials)
|
|
16
|
+
throw new Error(
|
|
17
|
+
`Authentication kind "${kind}" configured, but no IAS instance bound to application. ` +
|
|
18
|
+
'Either bind an IAS instance, or switch to an authentication kind that does not require a binding.'
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
const auth_service = new IdentityService(credentials, serviceConfig)
|
|
22
|
+
const user_factory = get_user_factory(credentials, skipped_attrs)
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* re validation:
|
|
26
|
+
* if the request goes to the cert url, then we should validate the token.
|
|
27
|
+
* however, this requires header "x-forwarded-client-cert" which requires additional configuration in the approuter ("forwardAuthCertificates: true").
|
|
28
|
+
* also, we currently get the non-cert route attached to the application as well (-> adjust "cds add mta"?), for which validation would always fail.
|
|
29
|
+
* by default, the approuter is configured to use the non-cert route ("url: ~{srv-url}" instead of "url: ~{srv-cert-url}").
|
|
30
|
+
* if the developer explicitely changes to the cert route, then we can expect him/her to also configure cert forwarding.
|
|
31
|
+
* hence, if there is no explicit validation configuration by the app, we can and should create a service with validation enabled and use if for the cert route.
|
|
32
|
+
* this way, we validate if possible with the least amount of custom configuration.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
const should_validate =
|
|
36
|
+
process.env.VCAP_APPLICATION &&
|
|
37
|
+
JSON.parse(process.env.VCAP_APPLICATION).application_uris?.some(uri => uri.match(/\.cert\./))
|
|
38
|
+
const validation_enabled = serviceConfig.validation?.x5t?.enabled || serviceConfig.validation?.proofToken?.enabled
|
|
39
|
+
|
|
40
|
+
let validating_auth_service
|
|
41
|
+
if (should_validate && !validation_enabled) {
|
|
42
|
+
const _serviceConfig = { ...serviceConfig }
|
|
43
|
+
_serviceConfig.validation = { x5t: { enabled: true }, proofToken: { enabled: true } }
|
|
44
|
+
validating_auth_service = new IdentityService(credentials, _serviceConfig)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return async function ias_auth(req, _, next) {
|
|
48
|
+
if (!req.headers.authorization) return next()
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
const _auth_service =
|
|
52
|
+
validating_auth_service && req.host.match(/\.cert\./) ? validating_auth_service : auth_service
|
|
53
|
+
const securityContext = await createSecurityContext(_auth_service, { req })
|
|
54
|
+
const tokenInfo = securityContext.token
|
|
55
|
+
const ctx = cds.context
|
|
56
|
+
ctx.user = user_factory(tokenInfo)
|
|
57
|
+
ctx.tenant = tokenInfo.getZoneId()
|
|
58
|
+
req.authInfo = securityContext //> compat req.authInfo
|
|
59
|
+
} catch (e) {
|
|
60
|
+
if (e instanceof ValidationError) {
|
|
61
|
+
LOG.warn('Unauthenticated request: ', e)
|
|
62
|
+
return next(401)
|
|
63
|
+
}
|
|
64
|
+
LOG.error('Error while authenticating user: ', e)
|
|
65
|
+
return next(500)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
next()
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function get_user_factory(credentials, skipped_attrs) {
|
|
73
|
+
return function user_factory(tokenInfo) {
|
|
74
|
+
const payload = tokenInfo.getPayload()
|
|
75
|
+
|
|
76
|
+
const clientid = tokenInfo.getClientId()
|
|
77
|
+
if (clientid === payload.sub) {
|
|
78
|
+
//> grant_type === client_credentials or x509
|
|
79
|
+
const roles = { 'system-user': 1 }
|
|
80
|
+
if (Array.isArray(payload.ias_apis)) payload.ias_apis.forEach(r => (roles[r] = 1))
|
|
81
|
+
if (clientid === credentials.clientid) roles['internal-user'] = 1
|
|
82
|
+
else delete roles['internal-user']
|
|
83
|
+
return new cds.User({ id: 'system', roles, tokenInfo })
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// add all unknown attributes to req.user.attr in order to keep public API small
|
|
87
|
+
const attr = {}
|
|
88
|
+
for (const key in payload) {
|
|
89
|
+
if (key in skipped_attrs)
|
|
90
|
+
continue // REVISIT: Why do we need to do that?
|
|
91
|
+
else attr[key] = payload[key]
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// REVISIT: just don't such things, please! -> We're just piling up tech dept through tons of unoficcial long tail APIs like that!
|
|
95
|
+
// REVISIT: looks like wrong direction to me, btw
|
|
96
|
+
// same api as xsuaa-auth for easier migration
|
|
97
|
+
if (attr.user_name) attr.logonName = attr.user_name
|
|
98
|
+
if (attr.given_name) attr.givenName = attr.given_name
|
|
99
|
+
if (attr.family_name) attr.familyName = attr.family_name
|
|
100
|
+
|
|
101
|
+
return new cds.User({ id: payload.sub, attr, tokenInfo })
|
|
102
|
+
}
|
|
103
|
+
}
|
|
6
104
|
|
|
7
105
|
// REVISIT: Why do we need to know and do that?
|
|
8
106
|
const KNOWN_CLAIMS = Object.values({
|
|
@@ -39,90 +137,3 @@ const KNOWN_CLAIMS = Object.values({
|
|
|
39
137
|
// own
|
|
40
138
|
APP_TENANT_ID: 'app_tid'
|
|
41
139
|
})
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
module.exports = function ias_auth(config) {
|
|
45
|
-
// cds.env.requires.auth.known_claims is not an official config!
|
|
46
|
-
const { kind, credentials, known_claims = KNOWN_CLAIMS } = config
|
|
47
|
-
const skipped_attrs = known_claims.reduce((a,x) => { a[x] = 1; return a }, {})
|
|
48
|
-
|
|
49
|
-
if (!credentials) throw new Error(
|
|
50
|
-
`Authentication kind "${kind}" configured, but no IAS instance bound to application. ` +
|
|
51
|
-
'Either bind an IAS instance, or switch to an authentication kind that does not require a binding.'
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
function getUser(tokenInfo) {
|
|
55
|
-
const payload = tokenInfo.getPayload()
|
|
56
|
-
|
|
57
|
-
const clientid = tokenInfo.getClientId()
|
|
58
|
-
if (clientid === payload.sub) { //> grant_type === client_credentials or x509
|
|
59
|
-
const roles = { 'system-user': 1 }
|
|
60
|
-
if (Array.isArray(payload.ias_apis)) payload.ias_apis.forEach(r => (roles[r] = 1))
|
|
61
|
-
if (clientid === credentials.clientid) roles['internal-user'] = 1
|
|
62
|
-
else delete roles['internal-user']
|
|
63
|
-
return new cds.User({ id: 'system', roles, tokenInfo })
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// add all unknown attributes to req.user.attr in order to keep public API small
|
|
67
|
-
const attr = {}
|
|
68
|
-
for (const key in payload) {
|
|
69
|
-
if (key in skipped_attrs) continue // REVISIT: Why do we need to do that?
|
|
70
|
-
else attr[key] = payload[key]
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// REVISIT: just don't such things, please! -> We're just piling up tech dept through tons of unoficcial long tail APIs like that!
|
|
74
|
-
// REVISIT: looks like wrong direction to me, btw
|
|
75
|
-
// same api as xsuaa-auth for easier migration
|
|
76
|
-
if (attr.user_name) attr.logonName = attr.user_name
|
|
77
|
-
if (attr.given_name) attr.givenName = attr.given_name
|
|
78
|
-
if (attr.family_name) attr.familyName = attr.family_name
|
|
79
|
-
|
|
80
|
-
return new cds.User({ id: payload.sub, attr, tokenInfo })
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// NOTE: Use named function for better stack traces... for the actual middleware, of course, not that much for the factory!
|
|
84
|
-
|
|
85
|
-
if (xssec.v3 && cds.env.features.xssec_compat !== true) { // no official flag!
|
|
86
|
-
let { createSecurityContext, IdentityService, errors: { ValidationError } } = xssec
|
|
87
|
-
const authService = new IdentityService(credentials)
|
|
88
|
-
|
|
89
|
-
return async function ias_auth (req, _, next) {
|
|
90
|
-
if (!req.headers.authorization) return next()
|
|
91
|
-
try {
|
|
92
|
-
const secContext = await createSecurityContext(authService, { req })
|
|
93
|
-
const tokenInfo = secContext.token
|
|
94
|
-
const ctx = cds.context
|
|
95
|
-
ctx.user = getUser(tokenInfo)
|
|
96
|
-
ctx.tenant = tokenInfo.getZoneId()
|
|
97
|
-
req.authInfo = secContext //> compat req.authInfo
|
|
98
|
-
} catch(e) {
|
|
99
|
-
if (e instanceof ValidationError) {
|
|
100
|
-
LOG.warn("Unauthenticated request: ", e);
|
|
101
|
-
return next(401)
|
|
102
|
-
}
|
|
103
|
-
LOG.error("Error while authenticating user: ", e);
|
|
104
|
-
return next(500)
|
|
105
|
-
}
|
|
106
|
-
next()
|
|
107
|
-
}
|
|
108
|
-
} else { // TODO: Remove with cds 9
|
|
109
|
-
xssec = xssec.v3 || xssec
|
|
110
|
-
return function ias_auth (req, _, next) {
|
|
111
|
-
if (!req.headers.authorization) return next()
|
|
112
|
-
const token = req.headers.authorization.slice(7) // skip /^bearer /
|
|
113
|
-
xssec.createSecurityContext(token, credentials, 'IAS', function (err, securityContext, tokenInfo) {
|
|
114
|
-
|
|
115
|
-
if (err) LOG.warn('User could not be authenticated due to error:', err)
|
|
116
|
-
if (!securityContext) {
|
|
117
|
-
return next(401)
|
|
118
|
-
}
|
|
119
|
-
else req.authInfo = securityContext //> compat req.authInfo
|
|
120
|
-
|
|
121
|
-
const ctx = cds.context
|
|
122
|
-
ctx.user = getUser(tokenInfo)
|
|
123
|
-
ctx.tenant = tokenInfo.getZoneId()
|
|
124
|
-
next()
|
|
125
|
-
})
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
@@ -1,27 +1,60 @@
|
|
|
1
1
|
const cds = require('../../../index.js')
|
|
2
2
|
const LOG = cds.log('auth')
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const {
|
|
5
|
+
createSecurityContext,
|
|
6
|
+
XsuaaService,
|
|
7
|
+
errors: { ValidationError }
|
|
8
|
+
} = require('./xssec')
|
|
5
9
|
|
|
6
10
|
module.exports = function jwt_auth(config) {
|
|
7
|
-
const { kind, credentials } = config
|
|
11
|
+
const { kind, credentials, config: serviceConfig = {} } = config
|
|
12
|
+
|
|
13
|
+
if (!credentials)
|
|
14
|
+
throw new Error(
|
|
15
|
+
`Authentication kind "${kind}" configured, but no XSUAA instance bound to application. ` +
|
|
16
|
+
'Either bind an XSUAA instance, or switch to an authentication kind that does not require a binding.'
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
const auth_service = new XsuaaService(credentials, serviceConfig)
|
|
20
|
+
const user_factory = get_user_factory(credentials, credentials.xsappname, kind)
|
|
21
|
+
|
|
22
|
+
return async function jwt_auth(req, _, next) {
|
|
23
|
+
if (!req.headers.authorization) return next()
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
const securityContext = await createSecurityContext(auth_service, { req })
|
|
27
|
+
const tokenInfo = securityContext.token
|
|
28
|
+
const ctx = cds.context
|
|
29
|
+
ctx.user = user_factory(tokenInfo)
|
|
30
|
+
ctx.tenant = tokenInfo.getZoneId()
|
|
31
|
+
req.authInfo = securityContext //> compat req.authInfo
|
|
32
|
+
} catch (e) {
|
|
33
|
+
if (e instanceof ValidationError) {
|
|
34
|
+
LOG.warn('Unauthenticated request: ', e)
|
|
35
|
+
return next(401)
|
|
36
|
+
}
|
|
37
|
+
LOG.error('Error while authenticating user: ', e)
|
|
38
|
+
return next(500)
|
|
39
|
+
}
|
|
8
40
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
)
|
|
41
|
+
next()
|
|
42
|
+
}
|
|
43
|
+
}
|
|
13
44
|
|
|
14
|
-
|
|
45
|
+
function get_user_factory(credentials, xsappname, kind) {
|
|
46
|
+
xsappname = xsappname + '.'
|
|
15
47
|
|
|
16
|
-
function
|
|
48
|
+
return function user_factory(tokenInfo) {
|
|
17
49
|
const payload = tokenInfo.getPayload()
|
|
18
50
|
|
|
19
51
|
let id = payload.user_name
|
|
20
52
|
|
|
21
53
|
const roles = {}
|
|
22
54
|
for (let scope of payload.scope) {
|
|
23
|
-
let role = scope.
|
|
24
|
-
if (role in { 'internal-user': 1, 'system-user': 1 })
|
|
55
|
+
let role = scope.replace(xsappname, '') // Roles = scope names w/o xsappname...
|
|
56
|
+
if (role in { 'internal-user': 1, 'system-user': 1 })
|
|
57
|
+
continue // Disallow setting system roles from external
|
|
25
58
|
else roles[role] = 1
|
|
26
59
|
}
|
|
27
60
|
|
|
@@ -32,7 +65,7 @@ module.exports = function jwt_auth(config) {
|
|
|
32
65
|
if (tokenInfo.getClientId() === credentials.clientid) roles['internal-user'] = 1
|
|
33
66
|
}
|
|
34
67
|
|
|
35
|
-
const attr = { ...
|
|
68
|
+
const attr = { ...payload['xs.user.attributes'] }
|
|
36
69
|
if (kind === 'xsuaa') {
|
|
37
70
|
attr.logonName = payload.user_name
|
|
38
71
|
attr.givenName = payload.given_name
|
|
@@ -42,50 +75,4 @@ module.exports = function jwt_auth(config) {
|
|
|
42
75
|
|
|
43
76
|
return new cds.User({ id, roles, attr, tokenInfo })
|
|
44
77
|
}
|
|
45
|
-
if (xssec.v3 && cds.env.features.xssec_compat !== true) { // no official flag!
|
|
46
|
-
const { createSecurityContext, XsuaaService, errors: { ValidationError } } = xssec
|
|
47
|
-
const authService = new XsuaaService(credentials)
|
|
48
|
-
|
|
49
|
-
return async function jwt_auth(req, _, next) {
|
|
50
|
-
if (!req.headers.authorization) return next()
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
const secContext = await createSecurityContext(authService, { req })
|
|
54
|
-
const tokenInfo = secContext.token
|
|
55
|
-
const ctx = cds.context
|
|
56
|
-
ctx.user = getUser(tokenInfo)
|
|
57
|
-
ctx.tenant = tokenInfo.getZoneId()
|
|
58
|
-
req.authInfo = secContext //> compat req.authInfo
|
|
59
|
-
} catch(e) {
|
|
60
|
-
if(e instanceof ValidationError) {
|
|
61
|
-
LOG.warn("Unauthenticated request: ", e);
|
|
62
|
-
return next(401)
|
|
63
|
-
}
|
|
64
|
-
LOG.error("Error while authenticating user: ", e);
|
|
65
|
-
return next(500)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
next()
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
} else {
|
|
72
|
-
xssec = xssec.v3 || xssec
|
|
73
|
-
|
|
74
|
-
// NOTE: Use named function for better stack traces... for the actual middleware, of course, not that much for the factory!
|
|
75
|
-
return function jwt_auth (req, _, next) {
|
|
76
|
-
if (!req.headers.authorization) return next()
|
|
77
|
-
const token = req.headers.authorization.slice(7) // skip /^bearer /
|
|
78
|
-
xssec.createSecurityContext(token, credentials, function (err, securityContext, tokenInfo) {
|
|
79
|
-
|
|
80
|
-
if (err) LOG.warn('User could not be authenticated due to error:', err)
|
|
81
|
-
if (!securityContext) return next(401)
|
|
82
|
-
else req.authInfo = securityContext //> compat req.authInfo
|
|
83
|
-
|
|
84
|
-
const ctx = cds.context
|
|
85
|
-
ctx.user = getUser(tokenInfo)
|
|
86
|
-
ctx.tenant = tokenInfo.getZoneId()
|
|
87
|
-
next()
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
78
|
}
|
|
@@ -12,6 +12,6 @@ module.exports = () => {
|
|
|
12
12
|
const id = req.headers[corr_id] ??= req.headers[crippled_corr_id] || req.headers[req_id] || req.headers[vr_id] || uuid()
|
|
13
13
|
const ctx = EventContext.for ({ id, http: { req, res } })
|
|
14
14
|
res.set ('X-Correlation-ID', id) // Note: we use capitalized style here as that's common standard in HTTP world
|
|
15
|
-
cds.
|
|
15
|
+
cds._with (ctx, next)
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -9,7 +9,7 @@ module.exports = ()=> {
|
|
|
9
9
|
if (req.baseUrl.startsWith('/-/')) return next() //> our own tech services cannot be extended
|
|
10
10
|
const ctx = cds.context
|
|
11
11
|
if (ctx.tenant || ctx.features?.given) try {
|
|
12
|
-
ctx.model =
|
|
12
|
+
ctx.model = await model4 (ctx.tenant, ctx.features)
|
|
13
13
|
} catch (e) {
|
|
14
14
|
LOG.error(e)
|
|
15
15
|
return res.status(503) .json ({ // REVISIT: we should throw a simple error, nothing else! -> this is overly OData-specific!
|