@sap/cds 7.9.4 → 8.0.4
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 +128 -3659
- package/_i18n/i18n_en_US_saptrc.properties +113 -0
- package/_i18n/i18n_zh_CN.properties +7 -4
- package/app/index.css +129 -0
- package/app/index.html +16 -64
- package/app/index.js +14 -9
- package/bin/args.js +34 -0
- package/bin/serve.js +18 -24
- package/bin/test.js +97 -0
- package/common.cds +5 -12
- package/eslint.config.mjs +133 -0
- package/lib/auth/basic-auth.js +16 -20
- package/lib/auth/dummy-auth.js +1 -1
- package/lib/auth/ias-auth.js +9 -41
- package/lib/auth/index.js +1 -14
- package/lib/auth/jwt-auth.js +10 -40
- package/lib/compile/cds-compile.js +1 -2
- package/lib/compile/cdsc.js +21 -26
- package/lib/compile/etc/_localized.js +1 -6
- package/lib/compile/etc/csv.js +1 -1
- package/lib/compile/etc/properties.js +1 -1
- package/lib/compile/for/java.js +1 -1
- package/lib/compile/for/lean_drafts.js +4 -6
- package/lib/compile/for/nodejs.js +1 -1
- package/lib/compile/parse.js +4 -0
- package/lib/compile/resolve.js +4 -4
- package/lib/compile/to/edm-files.js +16 -23
- package/lib/compile/to/hana.js +27 -0
- package/lib/compile/to/json.js +1 -1
- package/lib/compile/to/sql.js +5 -1
- package/lib/compile/to/yaml.js +3 -3
- package/lib/dbs/cds-deploy.js +4 -2
- package/lib/env/cds-env.js +10 -14
- package/lib/env/cds-requires.js +30 -13
- package/lib/env/defaults.js +46 -16
- package/lib/env/plugins.js +1 -1
- package/lib/env/schemas/cds-rc.js +8 -4
- package/lib/env/schemas/index.js +7 -7
- package/lib/env/serviceBindings.js +1 -1
- package/lib/index.js +12 -10
- package/lib/lazy.js +1 -1
- package/lib/linked/classes.js +36 -8
- package/lib/linked/entities.js +2 -10
- package/lib/linked/models.js +2 -1
- package/lib/linked/validate.js +292 -0
- package/lib/log/cds-error.js +0 -6
- package/lib/log/cds-log.js +3 -3
- package/lib/log/format/json.js +1 -1
- package/lib/log/service/index.js +0 -1
- package/lib/plugins.js +2 -2
- package/lib/ql/Query.js +2 -10
- package/lib/ql/SELECT.js +1 -1
- package/lib/ql/Whereable.js +3 -2
- package/lib/req/cds-context.js +14 -25
- package/lib/req/context.js +23 -25
- package/lib/req/request.js +1 -34
- package/lib/req/user.js +47 -35
- package/lib/srv/bindings.js +1 -1
- package/lib/srv/cds-connect.js +4 -4
- package/lib/srv/cds-serve.js +2 -2
- package/lib/srv/factory.js +1 -1
- package/lib/srv/middlewares/cds-context.js +11 -22
- package/lib/srv/middlewares/ctx-model.js +2 -3
- package/lib/srv/middlewares/errors.js +41 -8
- package/lib/srv/middlewares/index.js +3 -3
- package/lib/srv/middlewares/trace.js +0 -2
- package/lib/srv/protocols/hcql.js +15 -10
- package/lib/srv/protocols/http.js +44 -49
- package/lib/srv/protocols/index.js +1 -23
- package/lib/srv/protocols/odata-v4.js +12 -74
- package/lib/srv/protocols/rest.js +1 -13
- package/lib/srv/srv-api.js +0 -20
- package/lib/srv/srv-dispatch.js +3 -2
- package/lib/srv/srv-handlers.js +22 -11
- package/lib/srv/srv-methods.js +2 -2
- package/lib/srv/srv-models.js +3 -36
- package/lib/test/expect.js +343 -0
- package/lib/test/index.js +2 -0
- package/lib/test/reporter.js +176 -0
- package/lib/utils/axios.js +10 -9
- package/lib/utils/cds-test.js +85 -36
- package/lib/utils/cds-utils.js +54 -7
- package/lib/utils/check-version.js +0 -4
- package/lib/utils/colors.js +49 -0
- package/lib/utils/data.js +5 -4
- package/libx/_runtime/cds-services/adapter/odata-v4/OData.js +2 -7
- package/libx/_runtime/cds-services/adapter/odata-v4/ODataRequest.js +3 -30
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/error.js +6 -12
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/metadata.js +1 -3
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/read.js +0 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/request.js +4 -7
- package/libx/_runtime/cds-services/adapter/odata-v4/handlers/update.js +12 -6
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/ExpressionToCQN.js +2 -4
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/applyToCQN.js +1 -0
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/expandToCQN.js +1 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/index.js +0 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/readToCQN.js +1 -3
- package/libx/_runtime/cds-services/adapter/odata-v4/odata-to-cqn/utils.js +1 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-commons/edm/AbstractEdmStructuredType.js +1 -2
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/deserializer/ResourceJsonDeserializer.js +5 -0
- package/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/serializer/ContextURLFactory.js +1 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/data.js +9 -43
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/metaInfo.js +0 -1
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/readAfterWrite.js +8 -3
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/request.js +4 -2
- package/libx/_runtime/cds-services/adapter/odata-v4/utils/result.js +1 -3
- package/libx/_runtime/cds-services/util/assert.js +1 -1
- package/libx/_runtime/cds.js +10 -3
- package/libx/_runtime/common/Service.js +12 -32
- package/libx/_runtime/common/aspects/any.js +1 -0
- package/libx/_runtime/common/code-ext/execute.js +1 -1
- package/libx/_runtime/common/code-ext/worker.js +0 -1
- package/libx/_runtime/common/composition/data.js +0 -1
- package/libx/_runtime/common/composition/delete.js +0 -1
- package/libx/_runtime/common/composition/tree.js +0 -1
- package/libx/_runtime/common/composition/update.js +3 -3
- package/libx/_runtime/common/error/frontend.js +21 -12
- package/libx/_runtime/common/error/log.js +36 -0
- package/libx/_runtime/common/error/utils.js +2 -5
- package/libx/_runtime/common/generic/auth/autoexpose.js +18 -17
- package/libx/_runtime/common/generic/auth/expand.js +1 -1
- package/libx/_runtime/common/generic/auth/readOnly.js +1 -2
- package/libx/_runtime/common/generic/auth/restrict.js +23 -42
- package/libx/_runtime/common/generic/auth/restrictions.js +2 -7
- package/libx/_runtime/common/generic/auth/utils.js +91 -88
- package/libx/_runtime/common/generic/crud.js +6 -5
- package/libx/_runtime/common/generic/etag.js +7 -12
- package/libx/_runtime/common/generic/input.js +70 -68
- package/libx/_runtime/common/generic/paging.js +1 -0
- package/libx/_runtime/common/generic/sorting.js +1 -0
- package/libx/_runtime/common/generic/temporal.js +8 -2
- package/libx/_runtime/common/i18n/index.js +1 -1
- package/libx/_runtime/common/i18n/messages.properties +3 -1
- package/libx/_runtime/common/utils/binary.js +8 -2
- package/libx/_runtime/common/utils/compareJson.js +5 -1
- package/libx/_runtime/common/utils/copy.js +6 -11
- package/libx/_runtime/common/utils/cqn2cqn4sql.js +16 -14
- package/libx/_runtime/common/utils/differ.js +3 -6
- package/libx/_runtime/common/utils/keys.js +77 -18
- package/libx/_runtime/common/utils/postProcess.js +12 -15
- package/libx/_runtime/common/utils/propagateForeignKeys.js +0 -1
- package/libx/_runtime/common/utils/resolveView.js +2 -3
- package/libx/_runtime/common/utils/restrictions.js +45 -17
- package/libx/_runtime/common/utils/rewriteAsterisks.js +1 -8
- package/libx/_runtime/common/utils/stream.js +3 -16
- package/libx/_runtime/common/utils/streamProp.js +8 -18
- package/libx/_runtime/common/utils/structured.js +1 -1
- package/libx/_runtime/common/utils/ucsn.js +0 -2
- package/libx/_runtime/db/Service.js +0 -72
- package/libx/_runtime/db/data-conversion/post-processing.js +0 -1
- package/libx/_runtime/db/expand/expandCQNToJoin.js +9 -9
- package/libx/_runtime/db/expand/rawToExpanded.js +0 -8
- package/libx/_runtime/db/generic/input.js +3 -8
- package/libx/_runtime/db/generic/rewrite.js +1 -0
- package/libx/_runtime/db/query/read.js +2 -2
- package/libx/_runtime/db/sql-builder/ExpressionBuilder.js +0 -1
- package/libx/_runtime/db/sql-builder/InsertBuilder.js +1 -1
- package/libx/_runtime/db/utils/columns.js +2 -6
- package/libx/_runtime/fiori/lean-draft.js +138 -56
- package/libx/_runtime/hana/Service.js +0 -1
- package/libx/_runtime/hana/driver.js +1 -1
- package/libx/_runtime/hana/dynatrace.js +1 -2
- package/libx/_runtime/hana/pool.js +11 -21
- package/libx/_runtime/hana/streaming.js +0 -1
- package/libx/_runtime/messaging/common-utils/AMQPClient.js +0 -1
- package/libx/_runtime/messaging/common-utils/authorizedRequest.js +1 -1
- package/libx/_runtime/messaging/common-utils/normalizeIncomingMessage.js +1 -1
- package/libx/_runtime/messaging/enterprise-messaging-utils/getTenantInfo.js +1 -1
- package/libx/_runtime/messaging/enterprise-messaging-utils/registerEndpoints.js +19 -33
- package/libx/_runtime/messaging/event-broker.js +54 -27
- package/libx/_runtime/messaging/file-based.js +3 -3
- package/libx/_runtime/messaging/http-utils/token.js +1 -1
- package/libx/_runtime/messaging/kafka.js +2 -2
- package/libx/_runtime/messaging/redis-messaging.js +0 -1
- package/libx/_runtime/remote/Service.js +25 -25
- package/libx/_runtime/remote/utils/client.js +4 -5
- package/libx/_runtime/remote/utils/cloudSdkProvider.js +0 -3
- package/libx/_runtime/remote/utils/data.js +0 -1
- package/libx/_runtime/sqlite/Service.js +1 -2
- package/libx/_runtime/ucl/Service.js +37 -78
- package/libx/common/assert/index.js +22 -21
- package/libx/common/assert/type-relaxed.js +39 -0
- package/libx/common/assert/utils.js +3 -2
- package/libx/common/assert/validation.js +3 -8
- package/libx/common/utils/index.js +5 -0
- package/libx/common/utils/path.js +51 -0
- package/libx/odata/ODataAdapter.js +126 -0
- package/libx/odata/index.js +15 -2
- package/libx/odata/middleware/batch.js +320 -84
- package/libx/odata/middleware/body-parser.js +33 -0
- package/libx/odata/middleware/create.js +44 -59
- package/libx/odata/middleware/delete.js +23 -12
- package/libx/odata/middleware/error.js +30 -6
- package/libx/odata/middleware/metadata.js +38 -26
- package/libx/odata/middleware/operation.js +93 -69
- package/libx/odata/middleware/parse.js +6 -8
- package/libx/odata/middleware/read.js +117 -93
- package/libx/odata/middleware/service-document.js +22 -19
- package/libx/odata/middleware/stream.js +54 -56
- package/libx/odata/middleware/update.js +79 -87
- package/libx/odata/parse/afterburner.js +191 -175
- package/libx/odata/parse/cqn2odata.js +5 -5
- package/libx/odata/parse/grammar.peggy +27 -20
- package/libx/odata/parse/multipartToJson.js +17 -9
- package/libx/odata/parse/parser.js +1 -1
- package/libx/odata/utils/etag.js +14 -6
- package/libx/odata/utils/index.js +84 -12
- package/libx/odata/utils/metadata.js +161 -0
- package/libx/odata/utils/postProcess.js +89 -0
- package/libx/odata/utils/readAfterWrite.js +134 -17
- package/libx/odata/utils/result.js +36 -142
- package/libx/outbox/index.js +4 -3
- package/libx/rest/RestAdapter.js +115 -182
- package/libx/rest/middleware/create.js +28 -24
- package/libx/rest/middleware/delete.js +7 -10
- package/libx/rest/middleware/error.js +26 -16
- package/libx/rest/middleware/operation.js +48 -41
- package/libx/rest/middleware/parse.js +128 -126
- package/libx/rest/middleware/read.js +20 -27
- package/libx/rest/middleware/update.js +26 -31
- package/package.json +17 -8
- package/server.js +4 -2
- package/apis/cds.d.ts +0 -3
- package/apis/core.d.ts +0 -21
- package/apis/cqn.d.ts +0 -18
- package/apis/csn.d.ts +0 -21
- package/apis/events.d.ts +0 -18
- package/apis/internal/inference.d.ts +0 -18
- package/apis/linked.d.ts +0 -18
- package/apis/log.d.ts +0 -20
- package/apis/models.d.ts +0 -18
- package/apis/ql.d.ts +0 -18
- package/apis/reflect.d.ts +0 -32
- package/apis/server.d.ts +0 -18
- package/apis/services.d.ts +0 -22
- package/bin/cds-serve.js +0 -56
- package/lib/compile/to/gql.js +0 -15
- package/lib/srv/protocols/_legacy.js +0 -44
- package/lib/utils/jest.js +0 -43
- package/libx/_runtime/auth/index.js +0 -193
- package/libx/_runtime/auth/strategies/JWT.js +0 -37
- package/libx/_runtime/auth/strategies/basic.js +0 -20
- package/libx/_runtime/auth/strategies/dummy.js +0 -14
- package/libx/_runtime/auth/strategies/ias-auth.js +0 -1
- package/libx/_runtime/auth/strategies/mock.js +0 -77
- package/libx/_runtime/auth/strategies/xssecUtils.js +0 -93
- package/libx/_runtime/auth/strategies/xsuaa.js +0 -38
- package/libx/_runtime/common/perf/index.js +0 -19
- package/libx/_runtime/common/utils/ensureIEEE754.js +0 -29
- package/libx/_runtime/fiori/draft.js +0 -2
- package/libx/_runtime/fiori/generic/activate.js +0 -190
- package/libx/_runtime/fiori/generic/before.js +0 -201
- package/libx/_runtime/fiori/generic/cancel.js +0 -19
- package/libx/_runtime/fiori/generic/delete.js +0 -21
- package/libx/_runtime/fiori/generic/edit.js +0 -157
- package/libx/_runtime/fiori/generic/index.js +0 -25
- package/libx/_runtime/fiori/generic/new.js +0 -82
- package/libx/_runtime/fiori/generic/patch.js +0 -101
- package/libx/_runtime/fiori/generic/prepare.js +0 -57
- package/libx/_runtime/fiori/generic/read.js +0 -1340
- package/libx/_runtime/fiori/generic/readOverDraft.js +0 -146
- package/libx/_runtime/fiori/utils/csn.js +0 -13
- package/libx/_runtime/fiori/utils/delete.js +0 -114
- package/libx/_runtime/fiori/utils/handler.js +0 -264
- package/libx/_runtime/fiori/utils/lockInfo.js +0 -27
- package/libx/_runtime/fiori/utils/req.js +0 -23
- package/libx/_runtime/fiori/utils/stream.js +0 -36
- package/libx/_runtime/fiori/utils/where.js +0 -254
- package/libx/_runtime/index.js +0 -22
- package/libx/odata/utils/handler.js +0 -120
- package/libx/odata/utils/metaInfo.js +0 -410
- package/libx/odata/utils/path.js +0 -75
- package/libx/rest/RestRequest.js +0 -32
- package/libx/rest/index.js +0 -3
- package/libx/rest/readme.md +0 -1
- /package/libx/common/assert/{type.js → type-strict.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,16 +4,139 @@
|
|
|
4
4
|
- The format is based on [Keep a Changelog](http://keepachangelog.com/).
|
|
5
5
|
- This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## Version 8.0.4 - 2024-07-19
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Atomicity group handling in `$batch`
|
|
12
|
+
- `$batch` im combination with `commit` hooks
|
|
13
|
+
- `continue-on-error` preference for JSON `$batch`
|
|
14
|
+
|
|
15
|
+
## Version 8.0.3 - 2024-07-12
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Translations for the technical SAP language `1Q` used in support scenarios, for example for translation issues. See https://sapui5.hana.ondemand.com/sdk/#/topic/91f21f176f4d1014b6dd926db0e91070 for more.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Empty feature set by switched off feature toggles
|
|
24
|
+
- Allow deviating response types for `$batch`, e. g. input `multipart` and output `json`
|
|
25
|
+
|
|
26
|
+
## Version 8.0.2 - 2024-07-09
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- `express` is now an optional peer dependency, to indicate to applications to install it as part of their dependencies. It is needed for all runtime scenarios, but can be omitted for pure designtime cases like `cds compile` calls.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Creation via draft by association is forbidden with `403` response.
|
|
35
|
+
- New OData adapter captures input of `$search` as plain val without applying OData grammar.
|
|
36
|
+
- ´not null´ is not validated for action/function params. Use `@mandatory` instead.
|
|
37
|
+
- REST adapter rejects unknown input if not annotated with `@open`. Previously, it removed the unknown elements from the payload.
|
|
9
38
|
|
|
10
39
|
### Fixed
|
|
11
40
|
|
|
12
|
-
-
|
|
41
|
+
- `cds.test` recommends version 7 of `chai-as-promised`. Version 8 is ESM-only and does not work with `cds.test` at the moment.
|
|
42
|
+
- Loading of `cds.plugins` now respects the (internal!) property `cds.env.plugins` again.
|
|
43
|
+
- Proper error handling for invalid draft requests in combination with `$apply`
|
|
44
|
+
- Usage of `Date` values in `cds.ql` expressions
|
|
13
45
|
- Error in `enterprise-messaging` deploy script
|
|
46
|
+
- Error handling for bad navigation properties (like in `$orderby=prop1/prop2`) in new OData adapter
|
|
14
47
|
- Properly forward path expression infront of lamda functions for `odata-v2` remote services
|
|
15
|
-
|
|
16
|
-
|
|
48
|
+
|
|
49
|
+
### Removed
|
|
50
|
+
|
|
51
|
+
- Type information is no longer shipped as part of `@sap/cds`. Instead, the `@cap-js/cds-types` package has to be explicitly installed as devDependency for projects requiring type support. Installing the package is sufficient to add type support back in.
|
|
52
|
+
- Invalid annotations `@Common.FieldControl.Mandatory` and `@FieldControl.Mandatory` → use `@Common.FieldControl: #Mandatory` instead
|
|
53
|
+
- Invalid annotations `@Common.FieldControl.ReadOnly` and `@FieldControl.ReadOnly` → use `@Common.FieldControl: #ReadOnly` instead
|
|
54
|
+
|
|
55
|
+
## Version 8.0.1 - 2024-06-20
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
|
|
59
|
+
- always enforce `attic` profile
|
|
60
|
+
|
|
61
|
+
## Version 8.0.0 - 2024-06-19
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
|
|
65
|
+
- Profile `[attic]` to quickly test with deprecated features like so `CDS_ENV=attic cds watch` or `CDS_ENV=attic jest`.
|
|
66
|
+
- New OData Adapter: Default location header for actions that return an entity (custom handler must set the response status code to 201)
|
|
67
|
+
- New `cds.utils` methods `.stack()` and `.location()` to get the stack trace and location of the caller (not publicly released yet).
|
|
68
|
+
- Protected the methods inherited from `LinkedDefinitions` prototype against accidental and undetected interpretation and usage as CSN element: An error is thrown, when trying to access one of the usual CSN properties, like `.name`, `.kind`, `.type`, ... on them.
|
|
69
|
+
- Escaping single quotes with doubled ones `''` in `.properties` files
|
|
70
|
+
- Support for `@sap/xssec^4`
|
|
71
|
+
- New OData and REST adapter pass error to next such that a custom error middleware added to `cds.middlewares.after` is called
|
|
72
|
+
+ Note: The custom middleware must preceed the default error middleware (if it remains), e.g., by adding via `unshift()`
|
|
73
|
+
- Support for extensibility scenarios in RESTful protocol adapters
|
|
74
|
+
- The built-in CORS middleware can be enabled explicitly with `cds.server.cors = true`. By default, this is `false` if in production.
|
|
75
|
+
- Remote Service: `useCache` destination option is enabled by default
|
|
76
|
+
- New model processor `cds.compile.to.hana` to generate `.hdbtable`, `.hdbview` files including migration table support.
|
|
77
|
+
- Added `cds.requires.connectivity` indicating whether SAP BTP Connectivity service is required.
|
|
78
|
+
- Support inline where conditions in `@restrict` like `where: (prop = $user.id)`.
|
|
79
|
+
|
|
80
|
+
### Changed
|
|
81
|
+
|
|
82
|
+
- Meant for tests only: `cds.User.default` points to a singleton instance of `cds.User` instead of a class now.
|
|
83
|
+
- Never public: `express.Request.user` or `.tenant` must not be used anywhere
|
|
84
|
+
> NOTE: that was never public nor guaranteed to exist at all!
|
|
85
|
+
> Always only use `cds.Request.user/tenant` or `cds.context.user/tenant`.
|
|
86
|
+
- Never public: `cds.Request.protocol` was 'odata-v4' and is now 'odata'.
|
|
87
|
+
- Errors sent to clients now include a stack trace in the `stack` property during development and in tests
|
|
88
|
+
> NEVER test with `.toEqual()` but always only with `.toMatchObject()`.
|
|
89
|
+
- Node.js 18 is now the minimum required Node.js version. Version 16 is no longer supported.
|
|
90
|
+
- `cds.fiori.draft_deletion_timeout` is enabled with default value `30d`
|
|
91
|
+
- `srv.on('error')` is only invoked for errors during `srv.dispatch()`, i.e., for errors that occur while the respective request is being processed by a service instance
|
|
92
|
+
+ Specifically, `srv.on('error')` is no longer invoked for an error that occurs in the protocol adapter. Instead, use a custom middleware added to the beginning of `cds.middlewares.after`.
|
|
93
|
+
+ This change does not affect the legacy OData adapter.
|
|
94
|
+
- In `bypass_draft`, direct active modifications now have event `CREATE` instead of `NEW`.
|
|
95
|
+
- `cds compile --to serviceinfo` returns the correct URL path for Java applications.
|
|
96
|
+
- The default index page is no longer served if `NODE_ENV` is set to `production`. Set `cds.server.index = true` to restore previous behavior.
|
|
97
|
+
- Delete deprecated cds build stub.
|
|
98
|
+
- Multiple entries in `cds.requires.<name>.vcap` are now ANDed instead of ORed, so that e.g. multiple bound services of the same kind can be filtered more easily. For example, `{ "vcap": { "label": "xsuaa", "tag": "broker" }}` can be used to only bind an XSUAA instance (out of many) with the `xsuaa` label AND the `broker` tag.
|
|
99
|
+
- Role `cds.Subscriber` removed from predefined mock users.
|
|
100
|
+
- REST adapter uses managed transactions
|
|
101
|
+
- The default index page got a new design.
|
|
102
|
+
- Syntax error in batch body is handled as bad request
|
|
103
|
+
|
|
104
|
+
### Fixed
|
|
105
|
+
|
|
106
|
+
- Failing logins with internal pre-release versions from git main branches.
|
|
107
|
+
- Prevent inconsistent ordering when selecting messages from outbox
|
|
108
|
+
- Creating child-nodes with `@Core.Immutable` fields
|
|
109
|
+
- ETag handling in draft cancel
|
|
110
|
+
- `if-none-match` with asterisk in update handler
|
|
111
|
+
- `odata.mediaContentType` for empty stream is always `null`
|
|
112
|
+
- `$select/$expand` large binaries by draft edit and activate does not return large binaries
|
|
113
|
+
- Error message for actions/functions with wrong path
|
|
114
|
+
- Direct `READ` of entities that are `@cds.autoexposed` when the `cds.env.features.odata_new_adapter` flag is set to `true`
|
|
115
|
+
- Reject `PATCH` requests where foreign keys cannot be determined statically or where multiple entities need to be updated
|
|
116
|
+
- actions / functions bound to a collection of entities in case `cds.features.odata_new_parser` is enabled
|
|
117
|
+
- `cds.compile.to.hana` generates `afterImage` only if migration tables exist.
|
|
118
|
+
|
|
119
|
+
### Removed
|
|
120
|
+
|
|
121
|
+
- Legacy leftovers for old middlewares: `ExtensedModel:middleware4` (in combination with extensibility)
|
|
122
|
+
- Legacy request header `x-correlationid` which was ajways just a misspelled variant of `x-correlation-id`.
|
|
123
|
+
- Legacy configuration option `cds.requires.middlewares = false`
|
|
124
|
+
- Legacy configuration option `cds.features.serve_on_root = true`
|
|
125
|
+
- Legacy draft implementation `cds.fiori.lean_draft = false`
|
|
126
|
+
- Legacy API `req.user.locale`. Use `req.locale` instead.
|
|
127
|
+
- Legacy API `req.user.tenant`. Use `req.tenant` instead.
|
|
128
|
+
- Legacy configuration `cds.drafts.cancellationTimeout`. Use `cds.fiori.draft_lock_timeout` instead.
|
|
129
|
+
- Legacy annotation `@assert.enum`. Use `@assert.range` instead.
|
|
130
|
+
- Legacy properties of `cds.Request`: `req.tokenInfo`, `req._.shared`, and `req.attr`
|
|
131
|
+
- Legacy type facade files from `@sap/cds/apis/...`. Use `@sap/cds` as only type import.
|
|
132
|
+
- Legacy quirks mode. From now on, `cds.ql` generates spec compliant `ref` paths in INSERT/UPDATE/DELETE CQNs. The database services expect the same.
|
|
133
|
+
+ Use `{ INSERT: { into: { ref: ['Authors']}}}` instead of `{ INSERT: { into: 'Authors' }}`
|
|
134
|
+
+ Use `{ UPDATE: { entity: { ref: ['Authors']}}}` instead of `{ UPDATE: { entity: 'Authors' }}`
|
|
135
|
+
+ Use `{ DELETE: { from: { ref: ['Authors']}}}` instead of `{ DELETE: { from: 'Authors' }}`
|
|
136
|
+
- Deprecated csn entity proxy `<entity>_texts`. Use `<entity>.texts` instead.
|
|
137
|
+
- Deprecated built-in `cds.compile.to.gql` and `cds.compile.to.graphql` compile targets. These are provided by `@cap-js/graphql` plugin versions >= 0.9.0.
|
|
138
|
+
- Deprecated API `srv.stream`. Use `SELECT` with a single `cds.LargeBinary` column instead.
|
|
139
|
+
|
|
17
140
|
|
|
18
141
|
## Version 7.9.3 - 2024-06-27
|
|
19
142
|
|
|
@@ -508,7 +631,7 @@ POST /Orders
|
|
|
508
631
|
- Improve error message for unsupported transformations with `$apply`
|
|
509
632
|
- For database dialect H2, specialized, localized views for languages `de` and `fr` are no longer generated.
|
|
510
633
|
- Authentication kinds `jwt`, `xsuaa`, and `ias` throw an error during bootstrapping if the necessary credentials are
|
|
511
|
-
unavailable.
|
|
634
|
+
unavailable.
|
|
512
635
|
Previously, a warning was logged, and authentication was skipped.
|
|
513
636
|
See `cds bind`/ Hybrid Testing in CAPire for how to combine local development and cloud resources.
|
|
514
637
|
- The Typescript definitions now make use of the default export.
|
|
@@ -684,3657 +807,3 @@ parser now removes all unneeded `*`.
|
|
|
684
807
|
- `cds deploy --to hana` is now part of `@sap/cds-dk`.
|
|
685
808
|
- Deprecated compat mode `cds.env.features.cds_tx_protection = false`
|
|
686
809
|
- Beta `AuditLogService` and out-of-the-box audit logging. Use the plugin `@cap-js/audit-logging` instead.
|
|
687
|
-
|
|
688
|
-
## Version 6.8.4 - 2023-06-14
|
|
689
|
-
|
|
690
|
-
### Fixed
|
|
691
|
-
|
|
692
|
-
- `$metadata` requests for multitenant applications
|
|
693
|
-
|
|
694
|
-
## Version 6.8.3 - 2023-06-13
|
|
695
|
-
|
|
696
|
-
### Fixed
|
|
697
|
-
|
|
698
|
-
- `cds build` no longer reports CAP Java Classic runtime usage by mistake.
|
|
699
|
-
- `cds version` prints the local `@sap/cds` version, even if called from a different `@sap/cds` installation.
|
|
700
|
-
- User challenges handling in case of `cds.env.requires.auth.restrict_all_services: false`
|
|
701
|
-
|
|
702
|
-
## Version 6.8.2 - 2023-05-26
|
|
703
|
-
|
|
704
|
-
### Fixed
|
|
705
|
-
|
|
706
|
-
- EDMX texts for extended tenants based on `@sap/cds-mtx` now appear correctly again.
|
|
707
|
-
- `@assert.range` for DateTime/Date/Time/Timestamp
|
|
708
|
-
- Nested `$expand` OData query to the `texts` compiler-generated composition for entities with localized elements.
|
|
709
|
-
For example, similar OData requests `Entity?$expand=items($expand=item($expand=texts))` now should work as expected.
|
|
710
|
-
- `req.subject` would occasionally be incorrect when a query had been executed prior to it.
|
|
711
|
-
- cds plugins are also fetched from the development dependencies (`devDependencies`) section in `package.json`
|
|
712
|
-
- `cds build` now correctly resolves complex models of mtx extension projects
|
|
713
|
-
|
|
714
|
-
## Version 6.8.1 - 2023-05-04
|
|
715
|
-
|
|
716
|
-
### Fixed
|
|
717
|
-
|
|
718
|
-
- DROP statements for SQLite and PostgreSQL no longer miss a comma at the end
|
|
719
|
-
|
|
720
|
-
## Version 6.8.0 - 2023-05-02
|
|
721
|
-
|
|
722
|
-
### Added
|
|
723
|
-
|
|
724
|
-
- Global cds-dk version is now included in tabular output of `cds v -i`.
|
|
725
|
-
- Audit logging support for the OAuth2 Plan
|
|
726
|
-
- Feature flag to limit the maximum number of requests in an OData batch request. The max number can be specified with a number in `cds.odata.batch_limit`.
|
|
727
|
-
- Custom authentication in `enterprise-messaging`
|
|
728
|
-
- Requests with lambda expressions are rejected by remote services of kind `odata-v2`
|
|
729
|
-
- `cds build` ignores invalid entries in `undeploy.json`
|
|
730
|
-
- New `minorUnit` element in `sap.common.Currencies` for how many fractions the minor unit takes (e.g., `0` or `2`). See https://www.npmjs.com/package/@sap/cds-common-content for matching content.
|
|
731
|
-
- Support for `$user.<attr> is null` and `$user.<attr> is not null` in `@restrict.where`. `is null` matches `null` and `[]`, `is not null` matches arrays with at least one entry as well as `!= null` if no array.
|
|
732
|
-
- Plugins are now also fetched from `devDependencies`, unless `NODE_ENV === 'production'`
|
|
733
|
-
- Plugins can now provide `cds` configurations in their package.json.
|
|
734
|
-
- Support in OData entities with special letters (like ó,â,ü) in names.
|
|
735
|
-
|
|
736
|
-
### Changed
|
|
737
|
-
|
|
738
|
-
- Texts for _Country_ are changed to _Country/Region_ in `@sap.common.Countries`
|
|
739
|
-
- Resolved an issue where selection strategies of destination options in multitenant applications were not working correctly, resulting in runtime errors.
|
|
740
|
-
The fix relies on the `@sap-cloud-sdk/connectivity` npm package to be installed.
|
|
741
|
-
- Precision of timestamp used in outbox message increased to 100 nanoseconds (`YYYY-MM-DD hh:mm:ss.nnnnnnn`)
|
|
742
|
-
- When another user locks a draft, the error message now includes the username of that user
|
|
743
|
-
|
|
744
|
-
### Fixed
|
|
745
|
-
|
|
746
|
-
- Fix exported types of the `cds` core API
|
|
747
|
-
- cds build uses the correct path if no project dir is given
|
|
748
|
-
- Read after write for updates on-to-one navigation
|
|
749
|
-
- Error in $orderBy in combination with @Core.MediaType property
|
|
750
|
-
- Fixes in lean-draft
|
|
751
|
-
- Fixed an issue where the combined `$search` and `$expand` query and localized data was returning empty results on SAP HANA
|
|
752
|
-
- Tests using `cds.test` no longer crash with a segmentation fault if `injectGlobals: false` is set in the Jest configuration.
|
|
753
|
-
- Handlers registered with `cds.on('shutdown')` are now called with an `err` argument if the shutdown happened in response to uncaught exceptions or unhandled rejected Promises.
|
|
754
|
-
- Log output on uncaught exceptions, or unhandled rejected Promises now is done via `cds.log` instead of `console`.
|
|
755
|
-
- New config option `cds.env.server.force_exit_timeout` allows to configure the timeout in ms, after which we force-exit the server (default: 1111) if it didn't do so as expected after a prior `server.close()`. Values `false` or `0` disable force-exit.
|
|
756
|
-
- Require custom auth relative to project root when using pluggable middlewares
|
|
757
|
-
|
|
758
|
-
## Version 6.7.2 - 2023-04-24
|
|
759
|
-
|
|
760
|
-
### Fixed
|
|
761
|
-
|
|
762
|
-
- Try to destroy nonexistent socket in case of custom streaming implementation
|
|
763
|
-
- Draft: Missing field `IsActiveEntity` in target path of error messages during `draftActivate`
|
|
764
|
-
- Minor fixes for `cds.fiori.lean_draft`
|
|
765
|
-
- Error in media type check when no `Content-Type` header is found
|
|
766
|
-
|
|
767
|
-
## Version 6.7.1 - 2023-04-14
|
|
768
|
-
|
|
769
|
-
### Changed
|
|
770
|
-
|
|
771
|
-
- Calling a parameterized view without params error now results in the status code 400 with an improved error message.
|
|
772
|
-
|
|
773
|
-
### Fixed
|
|
774
|
-
|
|
775
|
-
- cds build error CreateListFromArrayLike
|
|
776
|
-
- Disabling of arbitrary user config in mock auth config using `"users": { "*": false }`
|
|
777
|
-
- Various fixes for `cds.fiori.lean_draft`
|
|
778
|
-
- User attributes that look like numbers are quoted in SQL clause for `@restrict`
|
|
779
|
-
|
|
780
|
-
## Version 6.7.0 - 2023-03-28
|
|
781
|
-
|
|
782
|
-
### Added
|
|
783
|
-
|
|
784
|
-
- Config `cds.ql.quirks_mode` as a compatibility flag to still support behaviors which are undocumented or even against the specifications, for example, CQN:
|
|
785
|
-
```js
|
|
786
|
-
let q = INSERT.into('Books')
|
|
787
|
-
//> According to CQN spec should return:
|
|
788
|
-
{SELECT:{from:{ref:['Books']}}}
|
|
789
|
-
//> But today returns:
|
|
790
|
-
{SELECT:{from:'Books'}}
|
|
791
|
-
```
|
|
792
|
-
The default in cds6 is `true` → to be changed to `false` with cds7.
|
|
793
|
-
- `cds build` now checks extension point restrictions defined by the SaaS app provider. `cds build` fails if any restrictions are violated.
|
|
794
|
-
- Typings for `cds.spawn()`
|
|
795
|
-
- Typings for `entity.drafts`
|
|
796
|
-
- Typings for Winston logger
|
|
797
|
-
- Typings for `cds.context`
|
|
798
|
-
- Typings for `service.on`, `service.before`, and `service.after` for actions and CRUD events
|
|
799
|
-
- CLI command `cds env` now allows property paths with `/` instead of `.`, which allows usages like that:
|
|
800
|
-
```sh
|
|
801
|
-
cds env requires/cds.xt.ModelProviderService
|
|
802
|
-
```
|
|
803
|
-
- `cds.env` now allows to statically set/add profiles via `cds.profile` and `cds.profiles` in package.json.
|
|
804
|
-
- `cds.env` now also supports using profiles in preset definitions, i.e., in `cds.requires.kinds`.
|
|
805
|
-
- `cds deploy` prints a warning when using Cloud Foundry client version less than 8.
|
|
806
|
-
- `req.subject` to conveniently operate on the subjects targeted by the request. Example usage:
|
|
807
|
-
SELECT.one.from(req.subject) //> returns single
|
|
808
|
-
SELECT.from(req.subject) //> returns array
|
|
809
|
-
UPDATE(req.subject) //> updates one or many
|
|
810
|
-
DELETE(req.subject) //> deletes one or many
|
|
811
|
-
- `cds-serve` as a future replacement for `cds serve` in npm scripts. Applications can adopt this now to ease the transition to the next major version.
|
|
812
|
-
|
|
813
|
-
### Changed
|
|
814
|
-
|
|
815
|
-
- CQL types now attach additional functionality to entities where appropriate
|
|
816
|
-
- `cds.log().trace()` now logs stack traces in `DEBUG` level, before that was on `TRACE`/`SILLY` level only
|
|
817
|
-
- Plain SQL queries now have `req.event === undefined`. Formerly this had non-deterministic values.
|
|
818
|
-
- Plain SQL queries don't allow registering custom handlers, other than for event `'*'`.
|
|
819
|
-
- Plain SQL queries are only supported on database services, not on application services.
|
|
820
|
-
- CQN representation of `columns=*` is not allowed anymore, instead `columns=['*']` should be used. This also applies to expand.
|
|
821
|
-
- Only draft roots can be created via direct, non-navigation OData `POST` requests.
|
|
822
|
-
- Flag `cds.features.fiori_preview` changed to `cds.fiori.preview`. The old flag still works as well.
|
|
823
|
-
- Flag `cds.features.fiori_routes` changed to `cds.fiori.routes`. The old flag still works as well.
|
|
824
|
-
|
|
825
|
-
### Fixed
|
|
826
|
-
|
|
827
|
-
- Specifying a key in `SELECT.from(...)` is now typed to produce a single result instead of an array of results
|
|
828
|
-
- Proper handling of `IsActiveEntity` in error paths
|
|
829
|
-
- For cloud events using AMQP, the type is set to `application/cloudevents+json`
|
|
830
|
-
- Use `message` property in typings.
|
|
831
|
-
- Typings for `cds.on('bootstrap', app => {app.use(...)`
|
|
832
|
-
- Return types for `User` and `delete` in typescript
|
|
833
|
-
- Typings for connect options
|
|
834
|
-
- Typings for `req.error`
|
|
835
|
-
- Deployment in sidecar
|
|
836
|
-
- Error with restricting an entity and requesting it with `$apply` in combination with aggregate
|
|
837
|
-
- Combined usage of `$skiptoken` and `$skip`
|
|
838
|
-
- Error `package.json file is missing` in mtx extension builds
|
|
839
|
-
- CLI commands w/ unknown arguments (`cds --foo`) fail again with a proper error message
|
|
840
|
-
|
|
841
|
-
## Version 6.6.2 - 2023-03-17
|
|
842
|
-
|
|
843
|
-
### Fixed
|
|
844
|
-
|
|
845
|
-
- Exception during `cds deploy` without mtx
|
|
846
|
-
- Service name specified with `cds deploy --to hana:serviceName` takes precedence over environment variables.
|
|
847
|
-
|
|
848
|
-
## Version 6.6.1 - 2023-03-09
|
|
849
|
-
|
|
850
|
-
### Added
|
|
851
|
-
|
|
852
|
-
- `cds.xt.TENANT_UPDATED` event is emitted once a tenant is extended
|
|
853
|
-
|
|
854
|
-
### Fixed
|
|
855
|
-
|
|
856
|
-
- `TypeError` when using the query API with an unknown target in x4 flavor
|
|
857
|
-
- The setting for `cds.requires['cds.xt.DeploymentService'].lazyT0` is now recognized in the VS Code schema validation.
|
|
858
|
-
- The HDI deployment `stdout` logs are now only visible for `DEBUG` level if triggered via `cds-mtxs`. They are also streamed to `logs/<tenant>.log` in case you need the full deployment output, even without `DEBUG` enabled.
|
|
859
|
-
- `.forUpdate` when used for etags
|
|
860
|
-
- Prevent `TypeError` if an existing draft does not have admin data
|
|
861
|
-
- Outbound-streaming error handling
|
|
862
|
-
|
|
863
|
-
## Version 6.6.0 - 2023-02-27
|
|
864
|
-
|
|
865
|
-
### Added
|
|
866
|
-
|
|
867
|
-
- Improved error handling for `cds build` if the SaaS base model is missing in an extension project.
|
|
868
|
-
- Support for reliable paging using `$skiptoken`. Can be activated via `cds.query.limit.reliablePaging = true`
|
|
869
|
-
- Built-in models are now added to existing model options of custom build tasks.
|
|
870
|
-
|
|
871
|
-
### Changed
|
|
872
|
-
|
|
873
|
-
- `cds.serve(ServiceName)` (and `cds serve -s ServiceName`) now exactly serve services with the given names. Previously, all services that ended with the given name were served as well, e.g., `MyServiceName` and `ServiceName`, which might be problematic for applications that bootstrap services one by one.
|
|
874
|
-
- Optimize `@cds.persistence.journal` filtering for `last-dev` CSN file.
|
|
875
|
-
|
|
876
|
-
### Fixed
|
|
877
|
-
|
|
878
|
-
- `cds deploy --to hana` no longer calls `cds bind` when `VCAP_SERVICES` is provided, for example, via `default-env.json`.
|
|
879
|
-
- `$search` on an entity without String elements
|
|
880
|
-
- Only elements from type `cds.String` are searchable when combining `$apply` and `$search`
|
|
881
|
-
- Error message for missing database connection in draft case
|
|
882
|
-
- Extensibility with in-memory Sqlite
|
|
883
|
-
- OData adapter error messages
|
|
884
|
-
- Columns in navigation path are now added to the SELECT.columns in the new parser
|
|
885
|
-
- Application service calls on draft-enabled entities using aliases
|
|
886
|
-
- Custom mtxs build tasks now use the correct default `src` folder value.
|
|
887
|
-
- `cds build` adds a `.hdiconfig` file when creating SAP HANA migration tables if none exists.
|
|
888
|
-
- UPSERTs using reserved keywords
|
|
889
|
-
- Fix outbound-streaming error handling
|
|
890
|
-
- Rollback transaction if inbound streaming fails
|
|
891
|
-
- Custom database initialization in `db/init.js` now skips the `t0` tenant for multitenant apps.
|
|
892
|
-
- Concurrent etag calculation for UPDATE and DELETE
|
|
893
|
-
- Typings for `cds.delete()`
|
|
894
|
-
- CQN for `not` operator with OData functions
|
|
895
|
-
- Expand on composition of aspect for draft-enabled entities
|
|
896
|
-
- Better error messages are provided for errors with HTTP status codes `400`, `500`, and `501`
|
|
897
|
-
|
|
898
|
-
## Version 6.5.0 - 2023-01-27
|
|
899
|
-
|
|
900
|
-
### Added
|
|
901
|
-
|
|
902
|
-
- New aspect `sap.common.TextsAspect` in common.cds
|
|
903
|
-
- New syntax for collection-bound entities
|
|
904
|
-
|
|
905
|
-
### Changed
|
|
906
|
-
|
|
907
|
-
- Successive calls to `SELECT.where()` wraps existing clause in brackets if it contains `or`. E.g.
|
|
908
|
-
```js
|
|
909
|
-
SELECT.from `X` .where `x` .or `y` .where `z`
|
|
910
|
-
//> SELECT from X where (x or y) and z`
|
|
911
|
-
```
|
|
912
|
-
- `cds build` for SAP HANA now adds an `engines.node` version to the generated `db/package.json`. This will help in the future when runtime environments change their default to some version higher than the one supported by `@sap/hdi-deploy`.
|
|
913
|
-
- `cds build` checks the consistency of built-in models for Java projects. An error is logged if some model files cannot successfully be resolved, indicating that a required npm module might be missing.
|
|
914
|
-
- Status code of draft actions are set in respective handler instead of protocol adapter
|
|
915
|
-
- `cds deploy --dry` no longer loads the `sqlite3` module by mistake. This fixes a regression when building Java projects. As a side effect, a file with the name `undefined` was created in the project root folder.
|
|
916
|
-
- Internal representation of pseudo roles `internal-user` and `system-user`
|
|
917
|
-
|
|
918
|
-
### Fixed
|
|
919
|
-
|
|
920
|
-
- Resolve i18n folders from the root directory
|
|
921
|
-
- Types for `cds.test`
|
|
922
|
-
- Types for `srv.send`
|
|
923
|
-
- Optimized Search: Search queries for localized entities will now use default values if no localized data is found in the corresponding localized tables on SAP HANA. Correct aliasing by search queries with navigation.
|
|
924
|
-
- Resolution of `type of` references during minify in bootstrap
|
|
925
|
-
- Generation of odata-v2 URL in case of select=* in `urlify()`
|
|
926
|
-
- Build resets changed `cds.env` and `cds.root` when finished
|
|
927
|
-
- Expand error when using infix filters
|
|
928
|
-
- CDS configuration schema validation for `@sap/cds-mtxs`
|
|
929
|
-
- Typings for QL API
|
|
930
|
-
- Return types of asynchronous service API
|
|
931
|
-
|
|
932
|
-
## Version 6.4.1 - 2022-01-16
|
|
933
|
-
|
|
934
|
-
### Fixed
|
|
935
|
-
|
|
936
|
-
- `cds build` correctly creates a `resources.tgz` file for MTXS projects on Windows
|
|
937
|
-
- `cds.deploy` for SAP HANA now doesn't try to search for a globally installed `@sap/hdi-deploy` if there's no `npm` installed, e.g., on a Node.js server without `npm`
|
|
938
|
-
- Signature for `cds.ql.UPSERT`
|
|
939
|
-
- Signature for `<srv>.delete().where()`
|
|
940
|
-
- Signature for `SELECT.alias`
|
|
941
|
-
- `UPSERT` requests for SQLite if only keys are provided
|
|
942
|
-
- `cds.test` doesn't log database resets with `autoReset` enabled anymore
|
|
943
|
-
- The `cds.deploy` output for SAP HANA is now correctly formatted in Kibana
|
|
944
|
-
- SAP HANA stored procedures containing implicit selects
|
|
945
|
-
- Shorthand configuration for `graphql` in `cds.env.protocols`
|
|
946
|
-
- If `cds.env.protocols` is set, `cds.requires.middlewares` is automatically turned on
|
|
947
|
-
- `cds.context` middleware is split to initial handling of request correlation and user propagation
|
|
948
|
-
- Fix view resolving and managed data for UPSERT
|
|
949
|
-
- `cds.linked` supports polymorphic self links like in: `action foo( self: [many] $self, ...)`
|
|
950
|
-
- Error with `@odata.draft.enabled` and `@restrict`
|
|
951
|
-
- Skip mandatory check on navigation properties for write requests
|
|
952
|
-
|
|
953
|
-
## Version 6.4.0 - 2022-12-15
|
|
954
|
-
|
|
955
|
-
### Added
|
|
956
|
-
|
|
957
|
-
- Signatures for `ql.UPSERT`
|
|
958
|
-
- Runtime support for flat database UPSERTs
|
|
959
|
-
- `enterprise-messaging`: Support for `@sap/cds-mtxs`
|
|
960
|
-
- `persistent-outbox`: Support for parallel processing with option `parallel: true` as well as pluggable processor functions through `service.outbox.process` (beta)
|
|
961
|
-
- `cds version` now also lists packages with `@cap-js/` prefix from dependencies
|
|
962
|
-
- `cds.context.http` is now available for webhook-based requests
|
|
963
|
-
- `cds build` for SAP HANA migration tables now only saves model entities annotated with `@cds.persistence.journal` as `last-dev` version.
|
|
964
|
-
- `cds deploy` now uses the `VCAP_SERVICES` environment variable (if set), and skips `cf` operations in this case
|
|
965
|
-
- Support for timestamp precision greater than 3 digits of fractional seconds
|
|
966
|
-
|
|
967
|
-
### Changed
|
|
968
|
-
|
|
969
|
-
- Added several missing signatures in CQN types that are now in accordance with the current documentation.
|
|
970
|
-
- `.columns(…)` of both `cql.SELECT` and `cql.INSERT` give improved code completion when paired when appropriate type definitions are present
|
|
971
|
-
- Status code of error messages caused by empty `not null` fields is changed from `400` to `500` on database layer. As a result, the error message `Value is required` in production will be replaced by `Internal server error` in the HTTP response.
|
|
972
|
-
- Underscores in environment variables can now be escaped by two `__` to set keys in `cds.env`. For example, use `CDS_FEATURES_WITH__MOCKS=...` to set `features.with_mocks`. Note that previously, this ended up as `features: { with_: { mocks:... }}`, so in rare cases, it might yield unexpected results.
|
|
973
|
-
- `persistent-outbox`: Only programming errors lead to `process.exit()`, unrecoverable ones are only logged, and their `attempts` are updated to `options.maxAttempts`
|
|
974
|
-
- Global configuration of CSRF-token handling for remote services `cds.env.features.fetch_csrf` is deprecated. Instead, please use `csrf: true/false` and `csrfInBatch: true/false` in the configuration of your remote services. These options will allow to configure CSRF-token handling for each remote service separately.
|
|
975
|
-
- `cds build` no longer creates `engines` entry in package.json in case none has been defined. The Node.js version matched the minimal supported version of the CDS runtime and might, therefore already be outdated.
|
|
976
|
-
- For streamlined MTX, `@sap/cds` now uses the custom SAP Service Manager client built into `@sap/cds-mtxs`
|
|
977
|
-
- Require new package `@cap-js/graphql` for `cds compile -2 graphql`
|
|
978
|
-
|
|
979
|
-
### Fixed
|
|
980
|
-
|
|
981
|
-
- Type `expr` of CQN can now describe function calls
|
|
982
|
-
- Added missing optional `options` parameter in signature of `cds.serve`
|
|
983
|
-
- `cds deploy` handles empty result from `cf` call correctly
|
|
984
|
-
- When using CQL projections with array types, the type of the projection variable will now be correctly inferred as a single element of that array
|
|
985
|
-
- `cds deploy` logs without label
|
|
986
|
-
- Localized draft requests with nested expand in the case of `to many` now return localized data
|
|
987
|
-
- Protected service root for REST adapter
|
|
988
|
-
- `cds build` logs tar error message
|
|
989
|
-
- Resolve view only with renamed fields in `orderBy` case
|
|
990
|
-
- In case of `$apply`, no default values for `top` or `skip` are set in subselects
|
|
991
|
-
- Environment variables like `cds.requires.<service>.kind...` now consistently override services set in, e.g. `package.json`
|
|
992
|
-
- Expand of composition backlink now accesses draft instance instead of active
|
|
993
|
-
- Performance of server bootstrap for services with lots of entities
|
|
994
|
-
- Error with virtual properties in expand combined with draft
|
|
995
|
-
- `req.tenant` is properly propagated by custom authentication in odata and rest
|
|
996
|
-
- Error with `SiblingEntity` in draft
|
|
997
|
-
- Quoting of keys typed as `cds.String` in error targets. Error targets are a relative resource path to correlate error
|
|
998
|
-
messages with the corresponding text input filed in the UI in an OData HTTP error response body for errors, warnings,
|
|
999
|
-
and info messages. For example:
|
|
1000
|
-
- Error with `GET` on `actions`
|
|
1001
|
-
|
|
1002
|
-
```diff
|
|
1003
|
-
HTTP/1.1 400 Bad Request
|
|
1004
|
-
OData-Version: 4.0
|
|
1005
|
-
content-type: application/json;odata.metadata=minimal
|
|
1006
|
-
Connection: close
|
|
1007
|
-
Content-Length: 145
|
|
1008
|
-
|
|
1009
|
-
{
|
|
1010
|
-
"error": {
|
|
1011
|
-
"code": "400",
|
|
1012
|
-
"message": "Value is required",
|
|
1013
|
-
- "target": "items(ID=string-key-1)/text",
|
|
1014
|
-
+ "target": "items(ID='string-key-1')/text",
|
|
1015
|
-
"@Common.numericSeverity": 4
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
```
|
|
1019
|
-
|
|
1020
|
-
- Application crash if batched Uri uses invalid percent-encoding
|
|
1021
|
-
- `cds build` for SAP HANA no longer produces `hdbtabledata` for CSV files that refer to non-existing entities. This can be the case for imported content packages that bring CSV files for entities not used in the application model.
|
|
1022
|
-
- `cds build` for SAP HANA now gives precedence for CSV files from application layer. This is important for imported content packages that bring CSV files that shall be overwritten in the application layer.
|
|
1023
|
-
- `cds build` for Java no longer adds the service `cds.xt.MTXServices` to the application model.
|
|
1024
|
-
- `cds build` no longer fails when creating large resource TAR archives for MTXS projects.
|
|
1025
|
-
|
|
1026
|
-
### Removed
|
|
1027
|
-
|
|
1028
|
-
- Removed `PreconditionFailedError` when sending a request with an `if-match` header on an entity without an ETag
|
|
1029
|
-
- Check for forbidden deep operations for associations on database layer. All non-key fields for associations provided by request are ignored. Please check https://cap.cloud.sap/docs/guides/providing-services#associations-vs-compositions for more information. Note that this is a breaking change for applications that rely on checks for forbidden deep operations by runtime.
|
|
1030
|
-
|
|
1031
|
-
## Version 6.3.2 - 2022-11-21
|
|
1032
|
-
|
|
1033
|
-
### Fixed
|
|
1034
|
-
|
|
1035
|
-
- `cds deploy` reports errors correctly
|
|
1036
|
-
- Reference resolution in QL API
|
|
1037
|
-
- `cds.parse.path` to correctly handle special characters
|
|
1038
|
-
- `cds build` issues on Windows: build with a large number of files and build on Git Bash.
|
|
1039
|
-
- `odata` as default protocol for enabled middlewares feature
|
|
1040
|
-
|
|
1041
|
-
## Version 6.3.1 - 2022-11-04
|
|
1042
|
-
|
|
1043
|
-
### Fixed
|
|
1044
|
-
|
|
1045
|
-
- `cds build` no longer reports false positive validation errors for built-in MTX models like `@sap/cds/srv/mtx` or `@sap/cds-mtxs/srv/bootstrap`
|
|
1046
|
-
- `cds deploy` handles empty result from `cf` call correctly
|
|
1047
|
-
- `$search` fails on columns composed by a CQL expression that uses the SAP HANA `coalesce` predicate
|
|
1048
|
-
- Draft ownership was erroneously checked for bound actions on active instances
|
|
1049
|
-
- `cds watch/run/serve --with-mocks` no longer start randomly with missing mocked services. This could happen if previous runs crashed with errors and left a bad state in the local service registry.
|
|
1050
|
-
|
|
1051
|
-
## Version 6.3.0 - 2022-10-28
|
|
1052
|
-
|
|
1053
|
-
### Added
|
|
1054
|
-
|
|
1055
|
-
- Additional type signatures for service methods in the query API
|
|
1056
|
-
- In case of an error in a batch request, the @Core.ContentID is added to the details of the error message
|
|
1057
|
-
- Extensibility: Use i18n files from extensions in edmx calculation
|
|
1058
|
-
- In messaging, you can listen to all messages in a queue by subscribing to `'*'`
|
|
1059
|
-
- Improved Log formatting for Cloud Foundry
|
|
1060
|
-
- In remote services: Correct OData type conversion when using an imported csn
|
|
1061
|
-
- Types for `SELECT.forUpdate({wait})`
|
|
1062
|
-
|
|
1063
|
-
- `cds.ql` now provides a dedicated method `.alias()` to choose table aliases, e.g.:
|
|
1064
|
-
```js
|
|
1065
|
-
SELECT.from(Authors).alias(a)
|
|
1066
|
-
```
|
|
1067
|
-
> Note: unfortunately we can't use method `.as()` instead of `.alias()` for compatibility reasons
|
|
1068
|
-
|
|
1069
|
-
- `cds.ql` now supports constructing queries with `where exists` clauses, e.g.:
|
|
1070
|
-
```js
|
|
1071
|
-
SELECT.from(Authors).where({exists:'books'})
|
|
1072
|
-
SELECT.from(Authors).where({'not exists':'books'})
|
|
1073
|
-
SELECT.from(Authors).alias('a').where({ exists: // or 'not exists'
|
|
1074
|
-
SELECT.from(Books).where({author_ID:{ref:['a','ID']}})
|
|
1075
|
-
})
|
|
1076
|
-
```
|
|
1077
|
-
> Note: last query is equivalent to first
|
|
1078
|
-
- `cds compile` and `cds deploy` now also support dialect `h2`
|
|
1079
|
-
- New (easier) `jwt` and `xsuaa` authentication middleware for pluggable middlewares
|
|
1080
|
-
|
|
1081
|
-
### Changed
|
|
1082
|
-
|
|
1083
|
-
- In `enterprise-messaging`, emitting CloudEvents messages sets the HTTP header `Content-Type: application/cloudevents+json`
|
|
1084
|
-
- Added type definition for `cds.User`
|
|
1085
|
-
|
|
1086
|
-
### Fixed
|
|
1087
|
-
|
|
1088
|
-
- Change signature of cqn `SELECT.limit.offset` and `SELECT.limit.rows` to `val` instead of `number`
|
|
1089
|
-
- Parsing of store procedure SQL calls, including the schema name. For example, `CALL "SCHEMA"."PROC"(?)` and `CALL SCHEMA.PROC(?)`
|
|
1090
|
-
- Add property name in the error message on validation of the value
|
|
1091
|
-
- Kibana and Cloud Foundry formatter: do not log cookie header value
|
|
1092
|
-
- Missing SQL aliases for `$search` queries combined with `$orderBy` query option
|
|
1093
|
-
- The return value of `cds.connect` is now correctly typed as a `Promise`
|
|
1094
|
-
- `req.data` is no longer modified for remote services in the case of `odata-v2` inserts
|
|
1095
|
-
- `cds.localize` no longer ignores i18n files defined within CDS model scope and outside project scope
|
|
1096
|
-
- Don't modify query in `fioriGenericRead` handler
|
|
1097
|
-
|
|
1098
|
-
## Version 6.2.3 - 2022-10-21
|
|
1099
|
-
|
|
1100
|
-
### Fixed
|
|
1101
|
-
|
|
1102
|
-
- New continuation for incoming messages
|
|
1103
|
-
- `cds.test` no longer fails if used in ESM modules with `mocha` (`ERR_REQUIRE_ESM` error)
|
|
1104
|
-
- Collection-bound actions/functions don't need draft ownership check
|
|
1105
|
-
|
|
1106
|
-
## Version 6.2.2 - 2022-10-13
|
|
1107
|
-
|
|
1108
|
-
### Fixed
|
|
1109
|
-
|
|
1110
|
-
- Fix environment variable `OLD_MTX`, allowing `cds build` to create artifacts for classic `@sap/cds-mtx` library
|
|
1111
|
-
|
|
1112
|
-
## Version 6.2.1 - 2022-10-05
|
|
1113
|
-
|
|
1114
|
-
### Fixed
|
|
1115
|
-
|
|
1116
|
-
- In the CDS configuration, custom profiles now have precedence over the (implicit) default `[development]` profile, irrespective of insertion order.
|
|
1117
|
-
- `cds test` is now compatible with new `axios` 1.x
|
|
1118
|
-
|
|
1119
|
-
## Version 6.2.0 - 2022-10-04
|
|
1120
|
-
|
|
1121
|
-
### Added
|
|
1122
|
-
|
|
1123
|
-
- Types for using tagged template variants of several CQL constructs
|
|
1124
|
-
- Types for calling shortcut versions of CQL constructs (`SELECT(...)` in addition to `SELECT.from(...)`, etc.)
|
|
1125
|
-
- Types for `cds.test`
|
|
1126
|
-
- Types for `cds.log().setFormat()`
|
|
1127
|
-
- Support for `redis-messaging` (beta)
|
|
1128
|
-
- Log the cds version when starting the server
|
|
1129
|
-
- Support for non-root entities as the main draft entity
|
|
1130
|
-
- Support for IAS authentication using kind `ias-auth`
|
|
1131
|
-
- Warning if multiple installations of `@sap/cds` were found when serving requests
|
|
1132
|
-
- Wildcard expansion `('*')` of properties in QL is now typed
|
|
1133
|
-
- Support for extended models in custom transactions and background processes
|
|
1134
|
-
- `cds build` logs detailed error messages if required service models cannot be resolved or aren't defined in custom build tasks.
|
|
1135
|
-
- Support for additional data types `cds.UInt8`, `cds.Int16`, `cds.Int32`, `cds.Int64`
|
|
1136
|
-
- Typings for `cds.utils`, `req.entity`
|
|
1137
|
-
- Optimized server startup for projects with large models and high numbers of services.
|
|
1138
|
-
Can be switched off by setting config `cds.features.precompile_edms = false` in case of problems.
|
|
1139
|
-
- Set default header to `application/octet-stream` while sending binary to remote
|
|
1140
|
-
- OData temporal query params `$at`, `$from`, `$to`, `$toInclusive` can be used in custom handlers
|
|
1141
|
-
- Reserved keywords from compiler api available at `cds.compile.to.[cdl, sql.sqlite]`
|
|
1142
|
-
- Improved `winston` integration in `cds.log`
|
|
1143
|
-
|
|
1144
|
-
### Changed
|
|
1145
|
-
|
|
1146
|
-
- `cds.debug()` now returns undefined instead of falsy if debug is switched off. This allows usages like that:
|
|
1147
|
-
```js
|
|
1148
|
-
const DEBUG = cds.debug('whatever')
|
|
1149
|
-
DEBUG?.(...)
|
|
1150
|
-
```
|
|
1151
|
-
- All MTX-related modules have been refactored and moved to `@sap/cds-mtxs`.
|
|
1152
|
-
Ensure to also upgrade to the latest version of `@sap/cds-mtxs` when upgrading `@sap/cds` to avoid any breaking change effects.
|
|
1153
|
-
- SQLite database file endings have been changed to `.sqlite`, so third-party tools (e.g. VS Code extensions) can deduce the file type.
|
|
1154
|
-
- Method `disconnect()` in db services empties db pool w/o removing db services. In special cases (like tests), cleaning-up db service should be done manually while deleting `cds.services.db` and `cds.db`.
|
|
1155
|
-
- Prefer HANA driver that is required in package.json of project root
|
|
1156
|
-
|
|
1157
|
-
### Fixed
|
|
1158
|
-
|
|
1159
|
-
- Queries like `SELECT.from(Foo).where({a:1}).or({b:2}).and({c:3})` erroneously resulted in `SELECT from Foo where (a=1 or b=2) and c=3`
|
|
1160
|
-
- Signatures for QN `order_by` expressions are now in line with the capire doc
|
|
1161
|
-
- Signatures for QL operations are now more specific
|
|
1162
|
-
- `basic-auth` does not inherit users of `mocked-auth`
|
|
1163
|
-
- `cds.localize` now ignores i18n files defined outside the project scope.
|
|
1164
|
-
- Allow `@Capabilities.NavigationRestrictions.RestrictedProperties` to be specified in the format `{ InsertRestrictions: { Insertable: false } }`
|
|
1165
|
-
- Bound actions/functions while calling remote service
|
|
1166
|
-
- `$search`: Search on localized projections/views does not always return the localized data
|
|
1167
|
-
- `cds push` now shows better output for failed extension validations
|
|
1168
|
-
- Aliased parameters in REST parser
|
|
1169
|
-
- `cds.deploy` now logs the correct filename for multitenant SQLite
|
|
1170
|
-
- HDI configuration data (e.g., `./cfg`, `.hdiignore`) and HANA native artifacts have not always been copied into the `sdc` folder of an MTX sidecar module
|
|
1171
|
-
- OData URL to CQN parser (`cds.env.features.odata_new_parser`) now supports functions with no arguments
|
|
1172
|
-
- Runtime exception for `PATCH` HTTP request with an empty payload body and read-only field
|
|
1173
|
-
- Streams in draft caused SQL error
|
|
1174
|
-
- Better response state handling during `cds deploy` to Cloud Foundry.
|
|
1175
|
-
- Draft: patch on draft-enabled entity with a composition of one
|
|
1176
|
-
- Maximum stack trace exceeded in generic audit logging implementation
|
|
1177
|
-
- The protocol adapter logs the decoded URI or the original one if it is invalid
|
|
1178
|
-
- REST: reject action calls with round brackets (parentheses). For example, the request `/Books(1)/bookShelf.CatalogService.rate()` is now rejected.
|
|
1179
|
-
- `cds deploy` and `cds run/serve/watch` no longer print terminal escape sequences (`x1b...`) if they run non-interactively.
|
|
1180
|
-
- Some fields in entities like `path` generated invalid SQL
|
|
1181
|
-
|
|
1182
|
-
## Version 6.1.3 - 2022-09-13
|
|
1183
|
-
|
|
1184
|
-
### Added
|
|
1185
|
-
|
|
1186
|
-
- Configuration to change maximum body size in bytes for remote requests: `cds.env.remote.max_body_length: 1000` sets it to 1 MB
|
|
1187
|
-
|
|
1188
|
-
### Changed
|
|
1189
|
-
|
|
1190
|
-
- For structured input, foreign keys are generated as non-enumerable properties on application-service layer
|
|
1191
|
-
|
|
1192
|
-
### Fixed
|
|
1193
|
-
|
|
1194
|
-
- Deep insert/update/upsert requests where the key of an association is provided in a structured format will not be rejected anymore if the target has default or mandatory fields
|
|
1195
|
-
- For some configurations, mtxs services were bootstrapped twice
|
|
1196
|
-
|
|
1197
|
-
## Version 6.1.2 - 2022-09-05
|
|
1198
|
-
|
|
1199
|
-
### Fixed
|
|
1200
|
-
|
|
1201
|
-
- Missing key insertion from where clauses in references for deep update statements
|
|
1202
|
-
- Prevent duplicate entries for some `INSERT` statements
|
|
1203
|
-
- Log details were not properly displayed in Kibana
|
|
1204
|
-
- getCsn in model-provider if `cds.requires.toggles` is false
|
|
1205
|
-
- HTTP calls in messaging have the correct content length
|
|
1206
|
-
- Performance issue for OData <entity>/$count requests
|
|
1207
|
-
- Typescript definition for SQL-native variant of `srv.run`, like `srv.run('SELECT * from Authors where name like ?',['%Poe%'])`
|
|
1208
|
-
- Typescript definitions for `srv.run( [query] )` and `srv.send( {query, headers} )`
|
|
1209
|
-
- Typescript definitions for `cds.log` are improved, and level indicators like `cds.log()._debug` added
|
|
1210
|
-
- Typescript definitions for `tx` now carry additional service methods
|
|
1211
|
-
- `cds login` now returns errors with better root cause messages
|
|
1212
|
-
- `$expand` requests for to-one associations that do not select the foreign key
|
|
1213
|
-
- `UPDATE` statement accepts empty objects: `UPDATE('Foo').with({ bar: {} })`
|
|
1214
|
-
- URI encoding of parameters in remote service calls
|
|
1215
|
-
|
|
1216
|
-
## Version 6.1.1 - 2022-08-24
|
|
1217
|
-
|
|
1218
|
-
### Added
|
|
1219
|
-
- The configuration schema now includes `cds.extends` and `new-fields` (in `cds.xt.ExtensibilityService`)
|
|
1220
|
-
- Ability to run extension validations as part of `cds lint`
|
|
1221
|
-
- The `/-/cds/login` endpoint now also supports client credentials authentication
|
|
1222
|
-
- `srv.run(fn)` now accepts a function as first argument, which will be run in an active outer transaction, if any, or in a newly created one. This is in contrast to `srv.tx(fn)`, which always creates a new tx.
|
|
1223
|
-
```js
|
|
1224
|
-
cds.run (tx => { // nested operations are guaranteed to run in a tx
|
|
1225
|
-
await INSERT.into (Foo, ...)
|
|
1226
|
-
await INSERT.into (Bar, ...)
|
|
1227
|
-
})
|
|
1228
|
-
```
|
|
1229
|
-
|
|
1230
|
-
### Fixed
|
|
1231
|
-
|
|
1232
|
-
- Erroneous checks for `join` in `SELECT.from(SELECT.from('xxx'))`
|
|
1233
|
-
- Virtual fields with default values in draft context
|
|
1234
|
-
- View resolving without model information doesn't crash
|
|
1235
|
-
- Unable to upload large attachments. Uploading a large attachment (base64 encoded) caused a runtime exception.
|
|
1236
|
-
- `cds.Query.then()` is using `AsyncResource.runInAsyncScope` from now on. → this avoids callstacks being cut off, e.g. in debuggers.
|
|
1237
|
-
- `cds.tx()` and `cds.context` have been fixed to avoid accidental fallbacks to auto-commit mode.
|
|
1238
|
-
- HDI configuration data (e.g. `./cfg`, `.hdiignore`) is now included in the `resources.tgz` file which is required for Streamlined MTX.
|
|
1239
|
-
- `cds deploy` accepts in addition to `VCAP_SERVICES` also `TARGET_CONTAINER` and `SERVICE_REPLACEMENTS` from vcap file when using `--vcap-file` parameter.
|
|
1240
|
-
- `cds build` doesn't duplicate CSV files that are contained in `db/src/**`.
|
|
1241
|
-
- Typescript issues in `apis/log.d.ts`
|
|
1242
|
-
- `cds build` adds OS agnostic base model path to generated feature CSN.
|
|
1243
|
-
- Unhandled promise rejection in `expand` handling
|
|
1244
|
-
- `cds.context.model` middleware is not mounted for not extensible services
|
|
1245
|
-
- `cds.context` continuation was sometimes not reset in REST adapter
|
|
1246
|
-
|
|
1247
|
-
## Version 6.1.0 - 2022-08-10
|
|
1248
|
-
|
|
1249
|
-
### Added
|
|
1250
|
-
|
|
1251
|
-
- Support for `@sap/cds-mtxs` in `enterprise-messaging`
|
|
1252
|
-
- Detailed information about pool state: `borrowed`, `pending`, `size`, `available`, `max` to the timeout error
|
|
1253
|
-
- Odata v2 payloads for `cds.Time` are converted from hh:mm:ss to PThhHmmMssS e.g. 12:34:56 to PT12H34M56S if provided in hh:mm:ss format
|
|
1254
|
-
- Odata v2 payloads for `cds.Integer` are converted to String if not provided as String
|
|
1255
|
-
- New OData parser supports aliased parameters e.g. `...function(ID=@p)?@p=5`
|
|
1256
|
-
- Support for locale "en_US_x_saprigi"
|
|
1257
|
-
- Parameter `rows` in ql API function `limit` can be omitted for remote services, e.g. `SELECT.limit(undefined, 5)`
|
|
1258
|
-
- New OData parser supports $filter with "in" operator, e.g. `$filter=ID in (1,2,3)`
|
|
1259
|
-
- `cds build` copies `package.json` and `.cdsrc.json` into _main folder of MTX sidecar app.
|
|
1260
|
-
- New OData parser supports null parameter in function/action, e.g `/findBooks(author=1,title=null)`
|
|
1261
|
-
- New environment variable `schemas` contains locations for json schemas validating `package.json`, `.cdsrc.json` and `.cdsrc-private.json` in VS Code
|
|
1262
|
-
- `cds.test` can now listen on a fixed port by way of additional arguments '--port', '<PORT_NUMBER>
|
|
1263
|
-
- `cds.requires.db.kind = 'sql-mt'` is introduced as a shorthand for
|
|
1264
|
-
```js
|
|
1265
|
-
"db": {
|
|
1266
|
-
"kind": "sqlite",
|
|
1267
|
-
"[production]": {
|
|
1268
|
-
"kind": "hana-mt"
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
```
|
|
1272
|
-
- `cds build` support for Streamlined MTX extension projects based on build task `mtx-extension`
|
|
1273
|
-
- TS definitions for `SELECT.forSharedLock` and `SELECT.forUpdate`
|
|
1274
|
-
- TS definitions for `log`
|
|
1275
|
-
- Support for new cds build task option `deploy-format`. Java apps may use this option instead of the corresponding global CDS config option.
|
|
1276
|
-
- The `ExtensibilityService` serves an endpoint to retrieve a subdomain-specific JWT, which is used by `cds login`
|
|
1277
|
-
- The endpoint `/-/cds/extensibility/push` now checks restrictions for new extensions. The configuration is added to the `cds.xt.ExtensibilityService`
|
|
1278
|
-
```js
|
|
1279
|
-
"requires": {
|
|
1280
|
-
"cds.xt.ExtensibilityService": {
|
|
1281
|
-
"element-prefix": ["Z_", "ZZ_"],
|
|
1282
|
-
"namespace-blocklist": ["com.sap.", "sap."],
|
|
1283
|
-
"extension-allowlist": [
|
|
1284
|
-
{
|
|
1285
|
-
"for": ["my.bookshop"],
|
|
1286
|
-
"kind": "entity",
|
|
1287
|
-
"new-fields": 2
|
|
1288
|
-
},
|
|
1289
|
-
{
|
|
1290
|
-
"for": ["CatalogService"],
|
|
1291
|
-
"new-entities": 2
|
|
1292
|
-
}
|
|
1293
|
-
]
|
|
1294
|
-
}
|
|
1295
|
-
}
|
|
1296
|
-
```
|
|
1297
|
-
- `cds build` validates required service models `@sap/**` for MTX sidecar app and logs an ERROR if some couldn't be resolved.
|
|
1298
|
-
- Configuration schema for many properties of the `cds` configuration block in `package.json` or `.cdsrc.json`, especially for `cds.requires...`
|
|
1299
|
-
|
|
1300
|
-
### Changed
|
|
1301
|
-
|
|
1302
|
-
- Streamlined calculation of the difference for `DELETE` queries using `req.diff()`
|
|
1303
|
-
- Improved error messages for rest / new odata parser
|
|
1304
|
-
- Adjust types for `SELECT.from` and `SELECT.one` to accept array classes as well
|
|
1305
|
-
- No `"` added around search values in OData v2 e.g. Foo?search=name is passed through as is
|
|
1306
|
-
- If an entity can not be read after write (e.g. insert only entity) no error is shown in the log
|
|
1307
|
-
- Throw not supported error for pagination in `$expand`
|
|
1308
|
-
|
|
1309
|
-
### Fixed
|
|
1310
|
-
|
|
1311
|
-
- Wrong context in `tx.run(query)` when `query` is an array
|
|
1312
|
-
- We now detect and ignore erroneous attempts to re-register framework-generated stubs as handlers for custom actions/functions.
|
|
1313
|
-
- Emits with `persistent-outbox` also work with manual transactions
|
|
1314
|
-
- You can now use `cds.ql` fluent API to query tables not in the model, but in database.
|
|
1315
|
-
For example, within `cap/samples/bookshop` this works now:
|
|
1316
|
-
```sql
|
|
1317
|
-
await SELECT.from('sqlite_master')
|
|
1318
|
-
await cds.read('sqlite_master')
|
|
1319
|
-
```
|
|
1320
|
-
Caveat: The following undocumented usage of unqualified names happened to work in the past.
|
|
1321
|
-
But this was very fragile and caused lots of issues, and therefore was removed:
|
|
1322
|
-
```sql
|
|
1323
|
-
await SELECT.from('Books')
|
|
1324
|
-
await cds.read('Books')
|
|
1325
|
-
```
|
|
1326
|
-
Always use qualified names or reflected definitions instead:
|
|
1327
|
-
```sql
|
|
1328
|
-
const Books = 'sap.capire.bookshop.Books'
|
|
1329
|
-
await SELECT.from(Books)
|
|
1330
|
-
await cds.read(Books)
|
|
1331
|
-
```
|
|
1332
|
-
```sql
|
|
1333
|
-
const {Books} = cds.entities ('sap.capire.bookshop')
|
|
1334
|
-
await SELECT.from(Books)
|
|
1335
|
-
await cds.read(Books)
|
|
1336
|
-
```
|
|
1337
|
-
- Wrong results for expand to many without `orderBy`
|
|
1338
|
-
- `cds deploy` api endpoint regex for cli now ignores trailing version info in url
|
|
1339
|
-
- Default values no longer overwrite payload values on fields of new drafts
|
|
1340
|
-
- Unmanaged to-one navigation caused malformed SQL statement in draft
|
|
1341
|
-
- `cds.compile.to.serviceinfo` fix failure to detect Java services if `odataV4.endpoint.path` or `odataV2.endpoint.path` missing in `cds` configuration in `application.yaml`
|
|
1342
|
-
- Data type conversion did not work in some expand cases
|
|
1343
|
-
- Failed connection to SAP HANA with no or malformed credentials was leading to credentials being written to the log
|
|
1344
|
-
- `cds build` no longer fails with an error `no such file` if one of the following files has been defined in some `srv` subfolder - `package.json, package-lock.json, .cdsrc.json, .npmrc`
|
|
1345
|
-
- Tar issue on Windows: 'The command line is too long'.
|
|
1346
|
-
- `$search`: Lifecycle issue that causes an empty search result when the `$search` and `$expand` query options were combined
|
|
1347
|
-
- Operator `IN` with Tagged Template String Literals e.g.:
|
|
1348
|
-
```sql
|
|
1349
|
-
SELECT.from(Object).where`userId IN ${aUserIDs}`
|
|
1350
|
-
```
|
|
1351
|
-
- `cds build` now uses a closed version range in the node engines version of the deployed application's `package.json`
|
|
1352
|
-
- `cds build` no longer generates EDMX files for services that aren't odata protocol enabled
|
|
1353
|
-
- `cds deploy` handles orgs and spaces containing commas correctly
|
|
1354
|
-
- Incorrect decoding of special characters when reading data of type `cds.LargeString` from SAP HANA using `hdb@^0.19.5` driver
|
|
1355
|
-
- The payload is added to the delete request in rest adapter as `req.data`
|
|
1356
|
-
|
|
1357
|
-
## Version 6.0.4 - 2022-07-20
|
|
1358
|
-
|
|
1359
|
-
### Fixed
|
|
1360
|
-
|
|
1361
|
-
- Local mocking of external services using `cds watch`
|
|
1362
|
-
|
|
1363
|
-
## Version 6.0.3 - 2022-07-14
|
|
1364
|
-
|
|
1365
|
-
### Changed
|
|
1366
|
-
|
|
1367
|
-
- On Business Application Studio, `@sap/cds` now rejects starting on Node 12, as it does locally. This avoids cryptic follow-up errors.
|
|
1368
|
-
|
|
1369
|
-
### Fixed
|
|
1370
|
-
|
|
1371
|
-
- Generic handlers for draft-related operations will trigger a READ event afterwards
|
|
1372
|
-
- `file-based-messaging` only watches the file when at least one handler is registered
|
|
1373
|
-
- `--vap-file` parameter of `cds deploy` is available again
|
|
1374
|
-
- `cds build` no longer throws an error if `@sap/cds-mtx` library (classic MTX) isn't installed locally.
|
|
1375
|
-
- `cds.spawn` no longer tries to reuse a transaction
|
|
1376
|
-
- Custom query parameter caused bad request on certain characters in REST adapter
|
|
1377
|
-
- `cds-ts` no longer fails with an `ERR_UNKNOWN_FILE_EXTENSION` error
|
|
1378
|
-
- Timeouts when sending string payloads to remote services
|
|
1379
|
-
- `cds.context.http` for `$batch` using atomicity groups
|
|
1380
|
-
|
|
1381
|
-
## Version 6.0.2 - 2022-07-06
|
|
1382
|
-
|
|
1383
|
-
### Fixed
|
|
1384
|
-
|
|
1385
|
-
- Jest tests do not fail any longer because of logs during app shutdown
|
|
1386
|
-
- `cds build` now uses the correct `mtx/sidecar` context. This avoids redundant `cds-mtxs` npm dependency for Java projects.
|
|
1387
|
-
|
|
1388
|
-
## Version 6.0.1 - 2022-07-05
|
|
1389
|
-
|
|
1390
|
-
### Added
|
|
1391
|
-
|
|
1392
|
-
- Config option `cds.env.server.port` allows to configure the port to use (in addition to `process.env.PORT` and CLI option `--port`)
|
|
1393
|
-
|
|
1394
|
-
### Changed
|
|
1395
|
-
|
|
1396
|
-
- Plugins cannot be loaded as ES modules, but need to remain CommonJS modules
|
|
1397
|
-
|
|
1398
|
-
### Fixed
|
|
1399
|
-
|
|
1400
|
-
- Removed debug log about shutdown from `cds serve`
|
|
1401
|
-
- Hiding timeout error in production mode
|
|
1402
|
-
|
|
1403
|
-
## Version 6.0.0 - 2022-06-30
|
|
1404
|
-
|
|
1405
|
-
### Added
|
|
1406
|
-
|
|
1407
|
-
- Listeners for `commit` events on the request object are now awaited
|
|
1408
|
-
- Experimental support for ECMAScript modules (ESM): You can now write your custom code, i.e.,
|
|
1409
|
-
service implementations, `server.js`, `db/init.js` using ES6 `import` statements.
|
|
1410
|
-
**Note though** that this is _experimental_ for now. Known limitation: _jest_ doesn't
|
|
1411
|
-
support dynamic imports, which are required for that.
|
|
1412
|
-
|
|
1413
|
-
- Improved `cds.error` to allow these using variants:
|
|
1414
|
-
```js
|
|
1415
|
-
cds.error `Message with formatted: ${{foo:'bar'}}`
|
|
1416
|
-
cds.error ({ message, code, ... })
|
|
1417
|
-
cds.error (message, { code, ... })
|
|
1418
|
-
let e = new cds.error(...) //> will not throw
|
|
1419
|
-
```
|
|
1420
|
-
> Calling `cds.error()` with `new` returns the newly created Error,
|
|
1421
|
-
> while calling it without `new` it throws immediately. The latter is
|
|
1422
|
-
> useful for usages like that:
|
|
1423
|
-
|
|
1424
|
-
- Improved `req.error` to always turn each recorded error into an instance of `Error` with its own stack trace.
|
|
1425
|
-
Multiple errors are finally thrown as an array of these errors with `.message = 'MULTIPLE_ERRORS'`
|
|
1426
|
-
and `.details = this` (the latter is for compatibility to former releases).
|
|
1427
|
-
|
|
1428
|
-
- Public API for `cds.User.roles`: For example, this allows to construct new instances of `cds.User` like so:
|
|
1429
|
-
```js
|
|
1430
|
-
let user = new cds.User ({ id:'me', roles:['admin'] })
|
|
1431
|
-
user.is('admin') //> true
|
|
1432
|
-
```
|
|
1433
|
-
|
|
1434
|
-
- Public API for `cds.context.tx`: This provides access to the current global root `tx`, if any.
|
|
1435
|
-
(This replaces the former undocumented `req._tx`)
|
|
1436
|
-
|
|
1437
|
-
- Public API `cds.User.anonymous` and `cds.User.privileged` which are sealed instances you can use directly
|
|
1438
|
-
instead of always passing `new cds.UserPrivileged`.
|
|
1439
|
-
|
|
1440
|
-
- Public API `cds.context.http` to reliably access inbound http `req` and `res` objects.
|
|
1441
|
-
|
|
1442
|
-
- Persistent outbox now contains last error and timestamp of last attempt
|
|
1443
|
-
- Enable PUT requests for UPDATE queries with CQN for remote services
|
|
1444
|
-
- Support for new major version 2 of SAP Cloud SDK
|
|
1445
|
-
- Support for the `@assert.target` annotation for managed-to-one associations
|
|
1446
|
-
- Support for `FOR SHARE LOCK` on SAP HANA to acquire shared locks on the queried records so that the locked records
|
|
1447
|
-
stay intact until the transaction is committed or rolled back.
|
|
1448
|
-
- Consistent error information for remote batch requests
|
|
1449
|
-
- `cds.env` now supports expanding scalar `cds.requires` entries from `cds.requires.kinds` as follows:
|
|
1450
|
-
```jsonc
|
|
1451
|
-
{ "cds": {
|
|
1452
|
-
"requires": {
|
|
1453
|
-
"mtx-sidecar": true,
|
|
1454
|
-
"db": "sql",
|
|
1455
|
-
"kinds": {
|
|
1456
|
-
"sql": {/* detailed config for sql */},
|
|
1457
|
-
"mtx-sidecar": {/* detailed config */},
|
|
1458
|
-
}
|
|
1459
|
-
}
|
|
1460
|
-
}}
|
|
1461
|
-
```
|
|
1462
|
-
- Support for mTLS in `enterprise-messaging-shared` and `message-queuing`
|
|
1463
|
-
- Allow empty publish and subscribe prefixes for SAP Event Mesh when using the format `cloudevents`
|
|
1464
|
-
- Custom type `sap.common.Locale` in common.cds
|
|
1465
|
-
- Ordering by aggregated value for draft-enabled active entity
|
|
1466
|
-
- `cds build` support for model provider service-based resource deployment.
|
|
1467
|
-
- Remote service:
|
|
1468
|
-
+ Conversion of OData V2 (`"kind": "odata-v2"`) function and action results to OData V4 format
|
|
1469
|
-
+ Conversion of binary data in CQN queries to `base64url` in URL and payload
|
|
1470
|
-
+ Key predicate is omitted for single-key entities in resulting URL (e.g. `GET /Foo(1)` instead of `GET /Foo(ID=1)`)
|
|
1471
|
-
+ Support of views with parameters
|
|
1472
|
-
- Add `@odata.mediaContentType` if selecting stream property
|
|
1473
|
-
- Kubernetes service bindings: Support for servicebinding.io and SAP BTP Service Operator based bindings
|
|
1474
|
-
- `cds build` copies an existing `.npmrc` file located in the root or srv folder of your project into the deployment folder (usually `gen/srv`). This allows for dedicated npm configuration in cloud environments. Can be switched off by cds build option `contentNpmrc`.
|
|
1475
|
-
- `cds build` copies an existing `.cdsrc.json` file located in the root or srv folder of your project into the deployment folder (usually `gen/srv`). The effective CDS configuration is created from the `.cdsrc.json` and CDS configuration defined in the `package.json` file. Can be switched off by cds build option `contentCdsrcJson`.
|
|
1476
|
-
- Beta OData URL to CQN parser (`cds.env.features.odata_new_parser = true`):
|
|
1477
|
-
+ `@odata.context` is derived without using okra, not yet supported:
|
|
1478
|
-
+ `$expand=*` query option
|
|
1479
|
-
+ Support for actions and functions
|
|
1480
|
-
+ Further `$apply` transformations supported
|
|
1481
|
-
+ (nested) `concat` transformations
|
|
1482
|
-
+ `orderBy` transformation
|
|
1483
|
-
+ `top` & `skip` transformation
|
|
1484
|
-
+ `identity` transformation
|
|
1485
|
-
- Log `BEGIN`/`COMMIT`/`ROLLBACK` commands when using SAP HANA as the underlying database
|
|
1486
|
-
- Binary data in payload is validated to be RFC-4648 and OData ABNF conformed
|
|
1487
|
-
- Support multiple media (streaming) properties in one entity
|
|
1488
|
-
- Support for annotation `@protocol:'none'` to mark services as internal
|
|
1489
|
-
- New build task aliases `java` and `nodejs` deprecating `java-cf`and `node-cf`, which are still supported for compatibility reasons.
|
|
1490
|
-
- New shutdown event sent by `cds serve` (beta)
|
|
1491
|
-
- $filter in $expand for remote services
|
|
1492
|
-
- Mapping of aliases in $expand for remote services
|
|
1493
|
-
|
|
1494
|
-
### Changed
|
|
1495
|
-
|
|
1496
|
-
- `@sap/cds` can now be loaded from different install locations like any other module, i.e. `@require('@sap/cds')` will no longer return the same singleton instance.
|
|
1497
|
-
- SAP Cloud SDK is now only an optional dependency and must be installed manually
|
|
1498
|
-
- Improved `cds.context` implementation to use `AsyncLocalStorage` instead of plain `async_hooks` (-> [see Node.js docs](https://nodejs.org/api/async_context.html)); APIs stay the same.
|
|
1499
|
-
- Improved `cds.tx(tx=>{ ... })`: The new `tx` will be set as `cds.context.tx` for the function body's continuation,
|
|
1500
|
-
so all nested service or database operations will be executed within this transaction automatically.
|
|
1501
|
-
- Node.js 14.15 is now the minimum required Node.js version. Version 12 is no longer supported.
|
|
1502
|
-
- Node.js 14.15 is now enforced on loading of `@sap/cds`, for example, on server startup.
|
|
1503
|
-
- Improve error messages in messaging management
|
|
1504
|
-
- `cds.env.requires` formerly inherited from `cds.env.requires.kinds`. This is not the case anymore; hence things like this worked before but don't anymore:
|
|
1505
|
-
```js
|
|
1506
|
-
let sql = cds.requires.sql //> is undefined now
|
|
1507
|
-
let sql = cds.requires.kinds.sql //> use this instead
|
|
1508
|
-
```
|
|
1509
|
-
Alternatively you can add this to your cds config:
|
|
1510
|
-
```json
|
|
1511
|
-
{ "cds": { "requires": { "sql": true } }}
|
|
1512
|
-
```
|
|
1513
|
-
- Details of errors from remote services are now in property `reason` (before it was `innererror`)
|
|
1514
|
-
- `innererror` is not removed from OData error response
|
|
1515
|
-
- The `file` option of file-based messaging is now on top level (before it was in `credentials`)
|
|
1516
|
-
- Optimized Search: `cds.env.features.optimized_search=true` is now the default behavior.
|
|
1517
|
-
- `cds build` no longer generates CF manifest files for Nodejs and HANA db deployer modules.
|
|
1518
|
-
- `cds build` no longer supports WebIDE Fullstack compatibility mode. Consequently, SAP HANA artifacts and service EDMX files for Fiori modules might no longer be correctly generated.
|
|
1519
|
-
- Remote services: Batched `GET` requests will not fetch CSRF tokens
|
|
1520
|
-
- CQN now uses `xpr` correctly instead of brackets in `where`
|
|
1521
|
-
- `process.exit` is called again by `cds run/serve` and `watch`, to gain a reliable `exit` event for cleanup tasks. Before, this would be spoiled by apps that do not shut down the event loop properly.
|
|
1522
|
-
- `cds build` no longer filters `./` file dependencies from package.json in the build output.
|
|
1523
|
-
- Fiori preview no longer supports URL pattern with `service` and `entity` query parameters, e.g. `$fiori-preview?service=...&entity=...`. These URLs were created back in `@sap/cds` 3.x.
|
|
1524
|
-
- `cds build` no longer copies the `node_modules` folder into the deployment folder (usually `gen/db/**` and `gen/srv/**`).
|
|
1525
|
-
- Set default tenant to `undefined` in single-tenant mode
|
|
1526
|
-
- Handle foreign keys of to-one associations which should be set to `null` on db layer
|
|
1527
|
-
- `cds build` uses the native `fs` functions instead of `fs-extra`.
|
|
1528
|
-
- `cds build` supports initial data in CSV files that are located in any 'csv' or 'data' subfolder of some CDS model file. This also implies CSV files stored in reuse modules. Now, this behaviour is consistent with SQLite deployment. If the location of some CSV file has changed, a deployment error might be returned. In that case previously deployed `hdbtabledata` files have to be undeployed.
|
|
1529
|
-
- `cds deploy` reads Cloud Foundry file `config.json` to get org and space information.
|
|
1530
|
-
- New REST adapter replaced old (limited) implementation
|
|
1531
|
-
- Default behavior for runtime integrity checks. From now on no integrity checks will be done by default.
|
|
1532
|
-
Note that this is a breaking change for applications that rely on automatic integrity checks by runtime. We recommend using `cds.env.features.assert_integrity`: `db` to switch on database integrity constraints. The value `app` can be used as fallback to previous behavior.
|
|
1533
|
-
- `cds build` no longer copies `.env` or `default-env.json` files into the deployment folder.
|
|
1534
|
-
- OData `POST`, `PATCH`, and `PUT` requests and draft-related `draftEdit` and `draftActivate` actions are now followed by an additional `READ` request to the application service. Consequently, affected functionality:
|
|
1535
|
-
+ It is now sufficient to have a custom `READ` handler in order to adjust the response (e.g., to handle virtual properties) of the modification request.
|
|
1536
|
-
+ A user is now required to be authorized to read updated data e.g. a user having a role restricted with "INSERT-only" annotation pattern will get empty results in response to `POST` request.
|
|
1537
|
-
+ For compatibility reasons, `req._` of the modification request is uplinked to `req._` of the follow-up `READ` request so that one still can access original `req._.req/res` request objects of the modification request within the corresponding `READ` handlers.
|
|
1538
|
-
+ Modification logs are now followed by corresponding access logs.
|
|
1539
|
-
+ More details can be found in cds v6.0.0 release notes.
|
|
1540
|
-
- Message for PreconditionFailedError is now configurable in messages.properties
|
|
1541
|
-
- Remove circular references in Kibana logging
|
|
1542
|
-
- Error sanitization in production is skipped for custom errors with HTTP code `5xx`. From now on, an app developer can return any error message to the client.
|
|
1543
|
-
Note that this is a breaking change for applications that rely on error sanitization for custom errors in production. The behavior of errors thrown by CAP framework is unchanged.
|
|
1544
|
-
|
|
1545
|
-
### Fixed
|
|
1546
|
-
|
|
1547
|
-
- We don't rely on `global.cds` anymore -> allows to load and correctly work with multiple versions of `cds`
|
|
1548
|
-
- Improved shutdown for AMQP connections and file listeners
|
|
1549
|
-
- Using `CQL` with a tagged template string `SELECT from Foo { null as boo }` threw an exception.
|
|
1550
|
-
- In case of `MULTIPLE_ERRORS` throw an `Error` instead of an object
|
|
1551
|
-
- `cds build` ensures correct precedence of feature annotations. Fixes `Duplicate assignment` compilation errors.
|
|
1552
|
-
- Compatibility with former support to find service `@impl: 'relative/to/cdw'`.
|
|
1553
|
-
- Views on views with parameters where erroneously inherited params through `cds.linked()`.
|
|
1554
|
-
- Authentication: Return HTTP `404 Not Found` rather than `204 No Content` status code for invalid requests.
|
|
1555
|
-
For example, given the following request `/ReqAdmin(1)/toIntermediate/toa` and assuming that the `toIntermediate` instance does not exist,
|
|
1556
|
-
the runtime returned an HTTP `204 No Content` success status response code indicating that the request has succeeded.
|
|
1557
|
-
In such scenarios, now the HTTP `404 Not Found` status code is returned rather than `204 No Content`.
|
|
1558
|
-
- Errors from HTTP requests sent via `cds.test.axios` now are the original Axios errors, i.e. including properties like `request` and `response`, with stack traces from caller.
|
|
1559
|
-
- Errors constructed and thrown by `req.reject()` now have a stack starting at the code calling `req.reject()`.
|
|
1560
|
-
- Auth annotations `@restrict` and `@requires` with empty array do not allow access anymore
|
|
1561
|
-
- Delete on restricted singleton caused request to fail
|
|
1562
|
-
- Add workaround of typescript not complete literal unions, specially when union strings.
|
|
1563
|
-
- Accidental handling of non-proxy entities as they would have been proxies (`cds.env.odata.proxies`) in expands
|
|
1564
|
-
- Boolean keys are properly parsed into JS boolean values
|
|
1565
|
-
- Navigation path segments with aliased keys in structured mode (OData flavors `w4` and `x4`) when using beta OData URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
1566
|
-
- All entities in `@sap/cds/common` have now proper CDS doc comments
|
|
1567
|
-
- `cds build` uses `package.json` and `package-lock.json` files located in `srv` folder for deployment if existing. Before, `package.json` and `package-lock.json` files of the project root folder have always been taken.
|
|
1568
|
-
- Pass options from `cds.parse.expr` to `cdsc.parse.expr`.
|
|
1569
|
-
- Avoid error that is caused, e.g., in a streaming scenario when there is an issue while processing the stream. Trying to change/send the response object could cause a crash because the response was sent already.
|
|
1570
|
-
- Correct URL generation for `Integer64` and `Decimal` for remote services
|
|
1571
|
-
- Operation parameters from structured type and annotated with @open are not filtered from the input query
|
|
1572
|
-
- Services are secured by default in production. Can be disabled via feature flag `cds.env.requires.auth.restrict_all_services: false` or by using `mocked-auth`.
|
|
1573
|
-
- Optimized Search: Exception when searching on views using built-in SQL SAP HANA functions
|
|
1574
|
-
- In some cases, custom error handlers were not called for rest
|
|
1575
|
-
- `cds build` adds newline at EOF for `hdbmigrationtable` files
|
|
1576
|
-
- Static values in on condition were ignored when inserting on navigation
|
|
1577
|
-
- Removed entity key validation by POST request in rest
|
|
1578
|
-
- `$count=false` returned count
|
|
1579
|
-
- `odata_new_parser`: `format=json` allowed as query parameter, other formats not supported and returning 501, trailing `?` allowed e.g. `/Employees?`
|
|
1580
|
-
- `odata_new_parser`: Piped use of same transformations is now supported, like `/Students?$apply=filter(BIRTHYEAR ge 2000)/groupby((UNIVERSITY),aggregate(SUBJECT with countdistinct as distinctSubjects))/filter(UNIVERSITY eq 'Hamburg')`
|
|
1581
|
-
- `odata_new_parser`: Behavior of piped transformations while using `topcount` or `bottomcount` is now correct
|
|
1582
|
-
- Better error message for missing `exists` predicate in `@restrict.where`
|
|
1583
|
-
- Reading raw Binary data provided as a `base64` (standard or url-safe) string by means of a `$value` query option
|
|
1584
|
-
- Selecting a navigation with `$select` ended up in database error
|
|
1585
|
-
- `cds.compile` no longer fails for cds sources that contain the `file:` pattern
|
|
1586
|
-
- $select=IsActiveEntity did not work on draft enabled entity, when requesting active data via navigation
|
|
1587
|
-
- not equal operator `<>` treated the same way as `!=`
|
|
1588
|
-
- `cds.localize` now respects custom i18n file names (which is not recommended though)
|
|
1589
|
-
- `cds version` now handles array-valued entries for `folders.db`and `folders.srv` gracefully when looking for MTX sidecar
|
|
1590
|
-
- OData access of entities named `get` and `set`
|
|
1591
|
-
- missing brackets for OR condition in `.where()` when requesting by navigation
|
|
1592
|
-
- `cds build` now correctly supports Node.js apps that do not have a service module defined. In these cases, the build task's _src_ folder has to be configured as "."
|
|
1593
|
-
- `cds build <dir>` is now correctly executed if called by npm script or mta build.
|
|
1594
|
-
- `cds deploy` now shows a better error message on INSERT errors (on SQLite).
|
|
1595
|
-
|
|
1596
|
-
### Removed
|
|
1597
|
-
|
|
1598
|
-
- Deprecated option to send synchronous requests via `srv.emit()` -> use `srv.send()` for that
|
|
1599
|
-
- Deprecated feature flag `cds.env.features.implicit_sorting`
|
|
1600
|
-
- Deprecated feature flag `cds.env.features.update_managed_properties`
|
|
1601
|
-
- Deprecated feature flag `cds.env.features.resolve_views`
|
|
1602
|
-
- Deprecated feature flag `cds.env.features.spaced_columns`
|
|
1603
|
-
- Deprecated feature flag `cds.env.features.throw_diff_error`
|
|
1604
|
-
- Deprecated feature flag `cds.env.features.delay_assert_deep_assoc`
|
|
1605
|
-
- Deprecated feature flag `cds.env.features.auto_fetch_expand_keys`
|
|
1606
|
-
- Deprecation warning for query parameters `sap-valid-from` and `sap-valid-to`
|
|
1607
|
-
- Built-in graphql support → moved to new `@sap/cds-graphql`
|
|
1608
|
-
- Deprecated feature flag `cds.env.features.extract_vals`
|
|
1609
|
-
- Support for CQN `where in` syntax `{ val: [1, 2, 3] }` without `list`. Use `{ list: [{ val: 1 }, { val: 2 }, { val: 3 }] }` instead.
|
|
1610
|
-
- Support for selects in restrict entries, e.g. `where : 'exists (select 1 from MyTable where a = b)'` is not allowed anymore
|
|
1611
|
-
- Input validation for deep `INSERT`/`UPDATE` for associations in the service layer
|
|
1612
|
-
- Support for `@odata.contained` annotation. Use Compositions instead.
|
|
1613
|
-
- Support for `@odata.on.insert/update` annotation. Use `cds.on.insert/update` instead.
|
|
1614
|
-
- Support for expressions in references, for example: `ref: ['foo as bar']`).
|
|
1615
|
-
- Generic support of `$expand` and `$select` OData query options for custom actions and functions
|
|
1616
|
-
|
|
1617
|
-
## Version 5.9.8 - 2022-06-24
|
|
1618
|
-
|
|
1619
|
-
### Fixed
|
|
1620
|
-
|
|
1621
|
-
- Application model is now again properly updated after extension activation
|
|
1622
|
-
- Avoid crashes during `cds version` when `folders.db` or `folders.srv` are array-valued instead of strings
|
|
1623
|
-
- `cds build` correctly validates MTX extension allow lists and doesn't log false positive warning messages
|
|
1624
|
-
|
|
1625
|
-
## Version 5.9.7 - 2022-06-13
|
|
1626
|
-
|
|
1627
|
-
### Fixed
|
|
1628
|
-
|
|
1629
|
-
- Deleting a parent will delete all compositions, also texts
|
|
1630
|
-
- Views with aliased elements in `orderBy`
|
|
1631
|
-
|
|
1632
|
-
## Version 5.9.6 - 2022-05-24
|
|
1633
|
-
|
|
1634
|
-
### Fixed
|
|
1635
|
-
|
|
1636
|
-
- Ignored requests in batch requests
|
|
1637
|
-
- `pool` module for logger facade is separated from `hana` database logger. Timeout error by acquiring client from pool is now enhanced with `_poolState` providing current pool attibutes.
|
|
1638
|
-
- Multiple errors did not have correct HTTP response status code
|
|
1639
|
-
- `POST|PUT|PATCH` requests with `charset` directive in `Content-Type` header (e.g., `Content-Type: application/json; charset=utf-8`) no longer issues an error "Invalid content type" in REST adapters
|
|
1640
|
-
- Call SAP HANA procedure:
|
|
1641
|
-
+ accepted are any symbols in a procedure name if it is delimited with a double quotation (`"`)
|
|
1642
|
-
+ fixed results for table output parameters when using `@sap/hana-client`; **limitation**: output parameters in a `CALL` statement must follow the same order used in a stored procedure definition
|
|
1643
|
-
- `@odata.context` considers `cds.env.odata.contextAbsoluteUrl` when requesting an OData Service
|
|
1644
|
-
|
|
1645
|
-
## Version 5.9.5 - 2022-05-09
|
|
1646
|
-
|
|
1647
|
-
### Fixed
|
|
1648
|
-
|
|
1649
|
-
- `HDB_TCP_KEEP_ALIVE_IDLE` config
|
|
1650
|
-
- A combination of `!=` operator and `or` in `where` clauses of `@restrict` annotations or when adjusting `req.query` in custom handlers (OData services only)
|
|
1651
|
-
- Programmatic calls to bound actions/functions do have keys in `req.data` again if compat flag `cds.env.features.keys_in_data_compat` is set
|
|
1652
|
-
|
|
1653
|
-
## Version 5.9.4 - 2022-05-02
|
|
1654
|
-
|
|
1655
|
-
### Fixed
|
|
1656
|
-
|
|
1657
|
-
- Error messages are improved if no `passport` module was found or if no `xsuaa` service binding is available
|
|
1658
|
-
- Issue fixed for `srv.get()`. It was returning `TypeError` in plain REST usage for external services, e.g. `srv.get('/some/arbitrary/path/111')`
|
|
1659
|
-
- Allow unrestricted services to run unauthenticated, removing the `Unable to require required package/file "passport"` error. Totally not recommended in production. Note that though this restores pre 5.9.0 behavior, this will come again starting in 6.0.
|
|
1660
|
-
- Audit logging of sensitive data in a composition child if its parent is annotated with `@PersonalData.EntitySemantics: 'Other'` and has no data privacy annotations other than `@PersonalData.FieldSemantics: 'DataSubjectID'` annotating a corresponding composition, for example:
|
|
1661
|
-
```js
|
|
1662
|
-
annotate Customers with @PersonalData : {
|
|
1663
|
-
DataSubjectRole : 'Address',
|
|
1664
|
-
EntitySemantics : 'Other'
|
|
1665
|
-
} {
|
|
1666
|
-
addresses @PersonalData.FieldSemantics: 'DataSubjectID';
|
|
1667
|
-
}
|
|
1668
|
-
annotate CustomerPostalAddress with @PersonalData : {
|
|
1669
|
-
DataSubjectRole : 'Address',
|
|
1670
|
-
EntitySemantics : 'DataSubject'
|
|
1671
|
-
} {
|
|
1672
|
-
ID @PersonalData.FieldSemantics : 'DataSubjectID';
|
|
1673
|
-
street @PersonalData.IsPotentiallyPersonal;
|
|
1674
|
-
town @PersonalData.IsPotentiallySensitive;
|
|
1675
|
-
}
|
|
1676
|
-
```
|
|
1677
|
-
|
|
1678
|
-
## Version 5.9.3 - 2022-04-25
|
|
1679
|
-
|
|
1680
|
-
### Fixed
|
|
1681
|
-
|
|
1682
|
-
- Since 5.8.2 `req.target` for requests like `srv.put('/MyService.entity')` is defined, but `req.query` undefined (before `req.target` was also undefined). This was leading to accessing undefined, which has been fixed.
|
|
1683
|
-
- Custom actions with names conflicting with methods from service base classes, e.g. `run()`, could lead to hard-to-detect errors. This is now detected and avoided with a warning.
|
|
1684
|
-
- Typed methods for custom actions were erroneously applied to `cds.db` service, which led to server crashes, for example, when the action was named `deploy()`.
|
|
1685
|
-
- Invalid batch requests were further processed after error response was already sent to client, leading to an InternalServerError
|
|
1686
|
-
- Full support of `SELECT` queries with operator expressions (`xpr`)
|
|
1687
|
-
|
|
1688
|
-
## Version 5.9.2 - 2022-04-07
|
|
1689
|
-
|
|
1690
|
-
### Fixed
|
|
1691
|
-
|
|
1692
|
-
- i18n translation for errors did not work correctly in some cases
|
|
1693
|
-
- Normalization in custom `getRestrictions`
|
|
1694
|
-
- Throw exception by `INSERT` into HANA queries if number of provided rows deviates from number of affected rows returned by hdb to prevent data losses
|
|
1695
|
-
- Handler detection for extended services
|
|
1696
|
-
- Speed-up in localization handling
|
|
1697
|
-
- Draft: navigation via an association to many from a non-draft enabled entity to a draft-enabled entity
|
|
1698
|
-
- Limited support of `SELECT` queries with operator expressions (`xpr`)
|
|
1699
|
-
|
|
1700
|
-
## Version 5.9.1 - 2022-03-31
|
|
1701
|
-
|
|
1702
|
-
### Fixed
|
|
1703
|
-
|
|
1704
|
-
- Function arguments might be escaped too often
|
|
1705
|
-
- URL encoding for remote services for CQN queries
|
|
1706
|
-
- `cds serve` during development again redirects URLs for UI apps in a folder with the same name as a service, so `/foo/webapp` would redirect to `/foo` again. This got broken in 5.8.3.
|
|
1707
|
-
- Endless loop in localization handling
|
|
1708
|
-
- Ensure service implementation while extending entity from the service
|
|
1709
|
-
- Post-processing of custom draft queries
|
|
1710
|
-
- `cds build` no longer omits unused CDS type definitions, leading to Java compiler errors
|
|
1711
|
-
|
|
1712
|
-
## Version 5.9.0 - 2022-03-25
|
|
1713
|
-
|
|
1714
|
-
### Added
|
|
1715
|
-
|
|
1716
|
-
- Enable custom audit logging implementation by subclassing or prepending `cds.AuditLogService`
|
|
1717
|
-
- Log authentication/authorization traces, for example, authentication strategy and access control decisions to facilitate troubleshooting in debug mode.
|
|
1718
|
-
- Bound functions and actions calls with odata-v2 from remote service
|
|
1719
|
-
- Beta support for procedure calls with table output data (SAP HANA only)
|
|
1720
|
-
+ Both hdb and `@sap/hana-client` currently do not support parameter metadata for table output. To provide the functionality anyways, CAP must fetch the metadata itself. As this is not CAP's expertise, the feature is only beta.
|
|
1721
|
-
+ All parameters must be named or unnamed, that is `CALL EXAMPLE_PROC(PARAM_1 => ?,PARAM_2 => ?)` or `CALL EXAMPLE_PROC(?,?)`
|
|
1722
|
-
- Alpha `cds.ApplicationService.getRestrictions(definition, event, user)`, which returns the applicable restrictions for the current request as follows:
|
|
1723
|
-
+ `null`: unrestricted access
|
|
1724
|
-
+ `[]`: no applicable restrictions -> no access
|
|
1725
|
-
+ `[{ grant: '...', to: ['...'], where: '...' }, ...]`: applicable restrictions with grant normalized to strings
|
|
1726
|
-
+ That is, `grant: ['CREATE', 'UPDATE']` in model becomes `[{ grant: 'CREATE' }, { grant: 'UPDATE' }]`
|
|
1727
|
-
+ Promise resolving to any of the above (needed for CAS override)
|
|
1728
|
-
- Internal model provider service can be used for obtaining dynamic csn, including features and key user extensions
|
|
1729
|
-
- Support insert of SQL snippets for HANA migration tables using @sql.append and @sql.prepend annotations.
|
|
1730
|
-
- Support for the `@odata.draft.enclosed` annotation on associations targeted via navigation — previously only supported for `$expand`
|
|
1731
|
-
- Pseudo role `internal-user` for technical user tokens acquired from own XSUAA instance
|
|
1732
|
-
- Include globally-installed cds-dk version in output of `cds version`.
|
|
1733
|
-
- Include version of cds-mtx in output of `cds version`, if available.
|
|
1734
|
-
- Feature toggle support in `cds build` for cloud deployments. Create language bundles and parsed CSN for all features.
|
|
1735
|
-
- Support for `@Aggregation.default` in new OData parser (`cds.env.features.odata_new_parser = true`)
|
|
1736
|
-
|
|
1737
|
-
### Changed
|
|
1738
|
-
|
|
1739
|
-
- Cleaned up `cds.env.requires` towards a consistent usage:
|
|
1740
|
-
+ Moved all entries of `cds.requires` to `cds.requires.kinds` → `cds.requires` is empty now by default, but has `cds.requires.kinds` as prototype, so e.g. `cds.requires.sql` will still return a match.
|
|
1741
|
-
+ Added support for db-specific `cds.requires.db.deploy-format` → deprecating `cds.hana.deploy-format` (which is still supported for compatibility)
|
|
1742
|
-
+ Introduced `cds.requires.kinds.hana-cloud` as `{kind:hana, deploy-format:hdbtable}` → to be used by default for production
|
|
1743
|
-
+ Changed `cds.requires.audit-log` to be consistent to all other; also got moved to `cds.requires.kinds.audit-log`, so it is no longer activated by default.
|
|
1744
|
-
+ Added support for `cds.requires.foo: true` with `foo` being a preset/prototype entry in `cds.requires.kinds` → allows to more easily switch on pre-configured services.
|
|
1745
|
-
- Update-managed properties (`@cds.on.update`) are always updated
|
|
1746
|
-
+ Example: `UPDATE('Books').set({}).where({ ID: 1 })` leads to new modifiedAt and modifiedBy
|
|
1747
|
-
+ Does not apply to nested entities that are only preserved by specifying their primary keys in the data
|
|
1748
|
-
+ Deactivate during two month grace period via compact feature flag `cds.env.features.update_managed_properties = false`
|
|
1749
|
-
- Response no longer contains keys neither technical draft properties (e.g. `HasDraftEntity` or `InProcessByUser`) in expanded data if they were not requested explicitly when using `cds.Service` API
|
|
1750
|
-
+ Example:
|
|
1751
|
-
```js
|
|
1752
|
-
> await srv.read('Authors', a => { a.name, a.books(b => { b.title }) }).where({ ID: 1 })
|
|
1753
|
-
// -> "old behaviour" result
|
|
1754
|
-
[{ name: 'Emily Brontë', books: [{ title: 'Wuthering Heights', ID: 201 }] }]
|
|
1755
|
-
// -> "new behaviour" result
|
|
1756
|
-
[{ name: 'Emily Brontë', books: [{ title: 'Wuthering Heights' }] }]
|
|
1757
|
-
```
|
|
1758
|
-
+ Technical draft properties are not automatically fetched also on a root level
|
|
1759
|
-
+ Deactivate during two month grace period via compat feature flag `cds.env.features.auto_fetch_expand_keys = true`
|
|
1760
|
-
- Access control is checked in generic handlers (rather than handlers materialized on app startup)
|
|
1761
|
-
- Expand restriction check moved to pre-before phase
|
|
1762
|
-
- The active state of an entity is read instead of the draft state when navigating from a draft entity to a draft-enabled entity via an association.
|
|
1763
|
-
- Authentication middleware is always mounted (used to be only for restricted services)
|
|
1764
|
-
- Fiori preview now uses the Horizon theme
|
|
1765
|
-
- 'Preview' links in generic index.html page no longer get the word _preview_ appended automatically, allowing for more flexible naming. Link providers should make sure to add the _preview_ word if necessary.
|
|
1766
|
-
- Don't throw error in GraphQL adapter if update mutation filter does not match any entries (to be consistent with delete mutations)
|
|
1767
|
-
- Remote call of unbound action/function returns octet-stream instead of string by default
|
|
1768
|
-
- Default pool's behavior has been changed from `FIFO` (queue) to `LIFO` (stack). Can be changed in pool configuration.
|
|
1769
|
-
- `cds run/serve` now gracefully shuts down the HTTP server before exiting. Custom handlers for signals like `SIGTERM` or `SIGINT` can now be processed.
|
|
1770
|
-
- `cds build` no longer creates `COMMENT` statements for HANA if doc comments are present in CDS models. The statements caused superfluous table migrations during HANA deployments.
|
|
1771
|
-
|
|
1772
|
-
### Fixed
|
|
1773
|
-
|
|
1774
|
-
- Logging of failed requests to remote services was incompatible to Elasticsearch
|
|
1775
|
-
- `cds serve --project <dir>` didn't serve static web resources from `<dir>`
|
|
1776
|
-
- `cds serve -p <dir>` was meant to be a shortcut for `cds serve --project <dir>`
|
|
1777
|
-
- Messaging: Use correct kind for logging
|
|
1778
|
-
- Incorrect return values for update-managed properties (`@cds.on.update`) of child entities that were not changed in request
|
|
1779
|
-
- `$filter` with navigation to-one eq null
|
|
1780
|
-
- Calculation of `DraftIsProcessedByMe` when navigating to `DraftAdministrativeData`
|
|
1781
|
-
- Inbound streaming with media type annotated as `@Core.Computed`
|
|
1782
|
-
- Pass column expression into `SELECT()` (example: `SELECT('SUBSTRING(locale,0,2) as loc').from(<entity>)`)
|
|
1783
|
-
- Annotation `@cds.api.ignore` ignores key in new parser
|
|
1784
|
-
- Inconsistencies in actions and functions API
|
|
1785
|
-
- Opening root transaction in `srv.run` if none exists
|
|
1786
|
-
- Glitches in handling of `req.user.tenant` and `req.user.locale`
|
|
1787
|
-
- Flattened keys in URL are resolved correctly if they are unique in new REST adapter
|
|
1788
|
-
- Actions and functions in REST adapter
|
|
1789
|
-
- Empty string as key does not work in new parser
|
|
1790
|
-
- Requesting property of an entity caused error in new parser
|
|
1791
|
-
- The SQLite CSV import now imports `"true"` and `"false"` as strings instead of Booleans
|
|
1792
|
-
- Fixed loading mechanism for custom build task handlers
|
|
1793
|
-
- `req.diff()` for `UPDATE` on a view with renamed property in `orderBy`
|
|
1794
|
-
- `$user.<attr>` for managed properties (`@cds.on.insert`/`@cds.on.update`)
|
|
1795
|
-
- GraphQL `__typename` meta field if it is the only selected field of an association/composition
|
|
1796
|
-
- Command shortcuts like `cds c` are now handled properly if executed in an NPM script
|
|
1797
|
-
- ETag is not included in expanded entities using `$select`, for example: `Books(1)?$expand=author($select=ID)`
|
|
1798
|
-
- `cds.compile.to...` no longer crashes if called with a CSN that has a dangling ref
|
|
1799
|
-
- Requests to remote services via navigation path without explicit `$select`, but having `$expand` query option
|
|
1800
|
-
- `cds.compile` correctly supports reserved namespaces like `cds.foundation`.
|
|
1801
|
-
- `cds.compile.to.serviceinfo` now uses the correct configuration for the base URL paths for Java services
|
|
1802
|
-
- `cds deploy --to sqlite` correctly localizes texts in deployed views. Before not all localized texts have been correctly resolved.
|
|
1803
|
-
- `cds deploy --to hana` reports missing org or space info with a better message.
|
|
1804
|
-
- Using combinations of `.` and `_` in CSN definition names
|
|
1805
|
-
|
|
1806
|
-
### Removed
|
|
1807
|
-
|
|
1808
|
-
- Redundant locale implementation
|
|
1809
|
-
|
|
1810
|
-
## Version 5.8.4 - 2022-03-17
|
|
1811
|
-
|
|
1812
|
-
### Fixed
|
|
1813
|
-
|
|
1814
|
-
- `UPDATE` singleton entity does not require to provide singleton keys in a payload
|
|
1815
|
-
- CQN queries with operator expressions (`xpr`) in ON-conditions of unmanaged associations and compositions
|
|
1816
|
-
|
|
1817
|
-
## Version 5.8.3 - 2022-03-01
|
|
1818
|
-
|
|
1819
|
-
### Fixed
|
|
1820
|
-
|
|
1821
|
-
- `queries` property for application-defined destinations of remote services
|
|
1822
|
-
- `cds serve --watch` no longer fails if `@sap/cds-dk` is installed only globally
|
|
1823
|
-
- `cds serve` during development longer redirects URLs with similar path segments from different services, like `/service/one` and `/service`
|
|
1824
|
-
- `cds deploy --to sqlite` now ignores a `_texts.csv` file again if there is a language-specific file like `_texts_en.csv` present
|
|
1825
|
-
- Using logical blocks (surrounded with `(` and `)`) in ON-conditions of unmanaged associations and compositions
|
|
1826
|
-
- Skip "with parameters" clause if no order by clause or all columns in the order by clause are not strings when using parametrized views on SAP HANA
|
|
1827
|
-
- Limited support for binary data in OData
|
|
1828
|
-
- Using of `base64` encoded string values in `WHERE IN` on SAP HANA
|
|
1829
|
-
- `base64url` values in `@odata.context` annotation
|
|
1830
|
-
- `cds.context` is set in GraphQL adapter
|
|
1831
|
-
- Using payloads with `@odata.type` annotating primitive properties no longer crashes the application. `#` in type value may be omitted. Example:
|
|
1832
|
-
|
|
1833
|
-
```json
|
|
1834
|
-
{
|
|
1835
|
-
"ID": 201,
|
|
1836
|
-
"title@odata.type": "#String",
|
|
1837
|
-
"title": "Wuthering Heights",
|
|
1838
|
-
"stock@odata.type": "Int32",
|
|
1839
|
-
"stock": 12
|
|
1840
|
-
}
|
|
1841
|
-
```
|
|
1842
|
-
|
|
1843
|
-
- Unicode support for i18n bundles
|
|
1844
|
-
|
|
1845
|
-
## Version 5.8.2 - 2022-02-22
|
|
1846
|
-
|
|
1847
|
-
### Fixed
|
|
1848
|
-
|
|
1849
|
-
- Crash if error does not have a stack in Kibana logging
|
|
1850
|
-
- Allow short names for bound operations in odata-server
|
|
1851
|
-
- Performance issue during deep operations
|
|
1852
|
-
- Resolving views with parameters
|
|
1853
|
-
- Expanding association-to-many within draft union scenario
|
|
1854
|
-
- Erroneous invalidation of deep `INSERT|UPDATE|DELETE` operations if root entity has managed to-one association to non-writable view
|
|
1855
|
-
- Handling of falsy results when sending requests to remote services
|
|
1856
|
-
- Resolving foreign key propagations for views with union
|
|
1857
|
-
|
|
1858
|
-
## Version 5.8.1 - 2022-02-11
|
|
1859
|
-
|
|
1860
|
-
### Fixed
|
|
1861
|
-
|
|
1862
|
-
- Use single transaction for update mutations in GraphQL adapter
|
|
1863
|
-
- ODATA to CQN parser returned not selected keys in `@odata.context`
|
|
1864
|
-
- Draft: `$expand` with special draft columns in `$orderBy` for active entities
|
|
1865
|
-
- Reading distinct values of draft enabled entity
|
|
1866
|
-
- Handling of LOB data on HANA
|
|
1867
|
-
- Fix streaming draft by navigation
|
|
1868
|
-
- Empty to-many arrays are not removed from req.data for inserts
|
|
1869
|
-
- `$filter` query option in structured mode (OData flavors `w4` and `x4`)
|
|
1870
|
-
+ Using JSON-stringified objects no longer occasionally crashes an application
|
|
1871
|
-
+ Filtering on a structured element with `ne null` condition also selects data having some `null` properties within
|
|
1872
|
-
- Rest: `Content-type` header is set to `text/plain` for primitive data types in response (except for `Boolean`)
|
|
1873
|
-
|
|
1874
|
-
## Version 5.8.0 - 2022-01-27
|
|
1875
|
-
|
|
1876
|
-
### Added
|
|
1877
|
-
|
|
1878
|
-
- Custom `server.js` don't have to export `cds.server` anymore -> we use that by default now.
|
|
1879
|
-
- In `cds.requires`: Support to replace primitive values with objects
|
|
1880
|
-
- Support filter functions on renamed properties from external service
|
|
1881
|
-
- Results of database queries use `big.js` for values of type `cds.Decimal` and `cds.Integer64` if enabled via `cds.env.features.bigjs`
|
|
1882
|
-
- Support lambda in `$filter` in `$expand`
|
|
1883
|
-
- Support for `GET` requests on service root in REST adapter (old and new)
|
|
1884
|
-
- Support for `HEAD` requests in REST adapter (old and new)
|
|
1885
|
-
- New hook `req.before('commit')`
|
|
1886
|
-
- Draft (Access control for bound actions): Only the user that is the owner of the draft can execute its bound actions.
|
|
1887
|
-
- Check that all keys are provided in REST adapter
|
|
1888
|
-
- Restrict access to all services via `cds.env.requires.auth.restrict_all_services = true`
|
|
1889
|
-
- That is, all unrestricted services (i.e., w/o own `@requires`) are treated as having `@requires: 'authenticated-user'`
|
|
1890
|
-
- Threshold for automatically sending GET requests as `$batch` (beta, cf. @sap/cds@5.6.0) can be configured per remote service via `cds.env.requires.<srv>.max_get_url_length` (if not configured on service, the global config applies)
|
|
1891
|
-
- Limited support for binary data in OData
|
|
1892
|
-
- In payloads, the binary data must be a base64 encoded string
|
|
1893
|
-
- In URLs, the binary data must have the following format: `binary'<url-safe base64 encoded>'`, e.g., `$filter=ID eq binary'Q0FQIE5vZGUuanM='`
|
|
1894
|
-
- The use of binary data in some advanced constructs like `$apply` and `/any()` may be limited
|
|
1895
|
-
- On SQLite, the base64 encoded string is stored in the database
|
|
1896
|
-
- It’s strongly discouraged to use binary data as keys. See "Primary Keys — Best Practices" in the documentation.
|
|
1897
|
-
- Support for OData annotation `@Core.ContentDisposition.Type` with `attachment` as the default value
|
|
1898
|
-
- Support for returning custom stream objects in custom handlers (beta):
|
|
1899
|
-
- Example:
|
|
1900
|
-
|
|
1901
|
-
```js
|
|
1902
|
-
return {
|
|
1903
|
-
value: instanceof Readable || null,
|
|
1904
|
-
$mediaContentType = 'image/jpeg',
|
|
1905
|
-
$mediaContentDispositionFilename = 'foo.bar', // > optional
|
|
1906
|
-
$mediaContentDispositionType = 'inline' // > optional
|
|
1907
|
-
}
|
|
1908
|
-
```
|
|
1909
|
-
|
|
1910
|
-
### Changed
|
|
1911
|
-
|
|
1912
|
-
- `cds deploy --to hana` now uses `cf curl` instead of `cf` command natively
|
|
1913
|
-
- Event Mesh: In multitenancy mode, messaging artifacts are also deployed for provider accounts (unless the service option `deployForProvider` is set to `false`)
|
|
1914
|
-
- Status code in case of multiple errors (rules apply in order):
|
|
1915
|
-
+ If all errors have the same status code, that status code is used
|
|
1916
|
-
+ If there is at least one 5xx status code, the resulting status code is 500
|
|
1917
|
-
+ If there is at least one 4xx status code, the resulting status code is 400
|
|
1918
|
-
+ If none of the rules apply, the resulting status code is 500
|
|
1919
|
-
- Ignore the `If-Match` HTTP request header for `UPDATE`/`DELETE` requests whose target entities are not annotated with the `@odata.etag` annotation.
|
|
1920
|
-
- I18n template strings now are replaced in EDMX documents such that they can occur multiple times. For example, the `{i18n>key1} - {i18n>key2}` template results in `value1 - value2`, while previously only the first string was replaced, leading to `value1 - {i18n>key2}`. This is helpful for the [`Template` strings of `UI.ConnectedFields`](https://github.com/SAP/odata-vocabularies/blob/ac9fe832df9b8c8d35517c637dba7c0ac2753b0f/vocabularies/UI.xml#L168).
|
|
1921
|
-
|
|
1922
|
-
### Fixed
|
|
1923
|
-
|
|
1924
|
-
- At Node.js runtime, the `development` configuration profile is no longer active if `CDS_ENV` is set to `production` and `NODE_ENV` is undefined
|
|
1925
|
-
- Enterprise Messaging: The user is now privileged for AMQP
|
|
1926
|
-
- `cds.spawn` also works with synchronous functions
|
|
1927
|
-
- Foreign keys in parent are set to `null` when deleting composition of one
|
|
1928
|
-
- `cds version` now always prints the version of `@sap/cds-dk`, especially if `cds version` was called from within an npm script, i.e. not from `cds-dk`'s CLI.
|
|
1929
|
-
- Better error message in case destination of Remote Service isn’t found
|
|
1930
|
-
- Differentiate between draft already exists and entity locked
|
|
1931
|
-
- OData adapter: roll back transaction before re-throwing standard error in case of atomicity group
|
|
1932
|
-
- Results of actions/functions do not ignore custom data when using `$expand` query option
|
|
1933
|
-
- `req.data` is available in custom error handler in case of deserialization error thrown by legacy OData server
|
|
1934
|
-
- Joining entities with renamed foreign keys (limited to single-level projections)
|
|
1935
|
-
- Requests with draft and `$expand=*` caused problems in some cases
|
|
1936
|
-
- `cds serve` during development longer redirects URLs with similar path segments like `/browse/123/browse/` to e.g. `/browse/`
|
|
1937
|
-
- Post-processing for renamed columns in expand
|
|
1938
|
-
- Deploy to SAP HANA: passing of options to `hdi-deploy` via `HDI_DEPLOY_OPTIONS` now possible
|
|
1939
|
-
- Keys as path segments in beta OData to CQN parser
|
|
1940
|
-
- OData V2 Remote Service (`"kind": "odata-v2"`):
|
|
1941
|
-
+ Request data properties of types `cds.Date`, `cds.DateTime`, and `cds.Timestamp` are converted accordingly to OData V2 specification
|
|
1942
|
-
+ Response data properties of types `cds.Decimal`, `cds.DecimalFloat` (deprecated) and `cds.Integer64` are handled properly when using `Accept` header with `IEEE754Compatible=true/false` and `ExponentialDecimals=true/false` format parameters
|
|
1943
|
-
|
|
1944
|
-
## Version 5.7.6 - 2022-02-23
|
|
1945
|
-
|
|
1946
|
-
### Fixed
|
|
1947
|
-
|
|
1948
|
-
- `draftActivate` action does not return children if not requested
|
|
1949
|
-
|
|
1950
|
-
## Version 5.7.5 - 2022-01-14
|
|
1951
|
-
|
|
1952
|
-
### Fixed
|
|
1953
|
-
|
|
1954
|
-
- Instance-based restriction for activation of draft-enabled entities using `or` in restriction
|
|
1955
|
-
- Messaging: Duplicate handler execution if application service registered events twice
|
|
1956
|
-
- Post of a deeply nested sub-entity with structured parent keys
|
|
1957
|
-
- Negating lambda expressions in OData using the `not` operator
|
|
1958
|
-
- Event Mesh: Redelivery count when using AMQP
|
|
1959
|
-
- OData requests using lambda expressions on localized data
|
|
1960
|
-
- `cds.db.exists` wrongly generated a `SELECT * FROM ...` for OData flavor x4
|
|
1961
|
-
- Return localized texts on draft activate
|
|
1962
|
-
- Unicode characters in unquoted search terms in beta OData to CQN parser
|
|
1963
|
-
|
|
1964
|
-
## Version 5.7.4 - 2021-12-22
|
|
1965
|
-
|
|
1966
|
-
### Fixed
|
|
1967
|
-
|
|
1968
|
-
- Complex `@restrict.where: 'exists [...] or (... or ...) or ...'` in draft union scenario no longer crashes the application
|
|
1969
|
-
- Sanitization of null values for `cds.RemoteService`
|
|
1970
|
-
- Handling of boolean values in draft union scenario with `$expand` query option
|
|
1971
|
-
- `_4odata` flag in CQN stays non-enumerable when forwarding to another application service
|
|
1972
|
-
- Handling of type references on properties of associations in `cds.minify`
|
|
1973
|
-
|
|
1974
|
-
## Version 5.7.3 - 2021-12-16
|
|
1975
|
-
|
|
1976
|
-
### Fixed
|
|
1977
|
-
|
|
1978
|
-
- Message Queuing now accepts `amqp` options
|
|
1979
|
-
- OData requests using lambda expressions with `contains` function
|
|
1980
|
-
- Result of OData query option `$count=true` when using `$apply`
|
|
1981
|
-
- `$filter` with navigation to-one equals value crashes
|
|
1982
|
-
- `$skiptoken` query option allows using arbitrary symbols except of `&` with beta OData URL to CQN parser (`cds.env.features.odata_new_parser`). In this non-integer value case, the value won’t be parsed into CQN.
|
|
1983
|
-
- Function names in `$filter` can now be case insensitive (as per OData 4.01)
|
|
1984
|
-
- `$count` in `$expand` caused server to crash
|
|
1985
|
-
|
|
1986
|
-
## Version 5.7.2 - 2021-12-09
|
|
1987
|
-
|
|
1988
|
-
### Fixed
|
|
1989
|
-
|
|
1990
|
-
- Instance-based restriction for activation of draft-enabled entities
|
|
1991
|
-
- `.columns('*')` on projections of remote services using renamed properties
|
|
1992
|
-
- GraphQL filters on nested fields are now applied correctly
|
|
1993
|
-
- Performance degradation during the processing of `where exists`
|
|
1994
|
-
- Read drafts via navigation with complex filter expression
|
|
1995
|
-
|
|
1996
|
-
## Version 5.7.1 - 2021-12-06
|
|
1997
|
-
|
|
1998
|
-
### Fixed
|
|
1999
|
-
|
|
2000
|
-
- Draft (OData flavors `w4`, `x4`, and `v4` with structs): Flags `HasActiveEntity`, `HasDraftEntity`, and `IsActiveEntity` are now included in the HTTP response for GET requests.
|
|
2001
|
-
- Instance-based restriction on entities using localized fields in draft
|
|
2002
|
-
- Results of actions/functions do not ignore nested data if query options are present
|
|
2003
|
-
|
|
2004
|
-
## Version 5.7.0 - 2021-12-03
|
|
2005
|
-
|
|
2006
|
-
### Added
|
|
2007
|
-
|
|
2008
|
-
- Deferred emitting via persistent outbox, enabled through service `outbox` of kind `persistent-outbox`
|
|
2009
|
-
- Support for compiler-generated referential constraints (beta)
|
|
2010
|
-
+ Activate via `cds.env.features.assert_integrity: '<preset>'`
|
|
2011
|
-
+ Available presets:
|
|
2012
|
-
+ `off`: no database constraints and no runtime checks
|
|
2013
|
-
+ `app`: runtime checks by default
|
|
2014
|
-
+ `db`: database constraints by default
|
|
2015
|
-
+ "by default": if not excluded, the runtime check or database constraint applies
|
|
2016
|
-
+ "opt-in": if included, the runtime check or database constraint applies
|
|
2017
|
-
+ Behavior can be overridden via `@assert.integrity: <true/false/'RT'/'DB'>` on property, entity, or service level (lowest applies)
|
|
2018
|
-
- Allow `--with-mocks` in production via `cds.env.features.with_mocks = true`
|
|
2019
|
-
- Set media type from content-type header while inbound streaming
|
|
2020
|
-
- Support for navigations with `$count` in `$filter`, for example `GET Entity?$filter=toMany/$count gt 0`
|
|
2021
|
-
- Draft: Generate UUIDs for request payloads to which extra data items are added (without the UUID keys) in a custom application handler.
|
|
2022
|
-
- Generate GraphQL schema via `cds compile -2 gql` (alpha)
|
|
2023
|
-
- Log requests to remote services if the respective log level is set to `debug`
|
|
2024
|
-
- Beta OData URL to CQN parser (`cds.env.features.odata_new_parser`):
|
|
2025
|
-
+ Support for `$skiptoken` query option
|
|
2026
|
-
+ Limited support for `$apply` query option
|
|
2027
|
-
+ Supported are the following transformations and their combinations: `aggregate`, `groupby`, `topcount`, `bottomcount`, `filter`, `search`
|
|
2028
|
-
+ Not supported:
|
|
2029
|
-
+ Transformations `topsum`, `bottomsum`, `toppercent`, `bottompercent`, `expand`, `concat`, `compute`, `identity`
|
|
2030
|
-
+ `rollup` and `$all` in `groupby` transformation
|
|
2031
|
-
+ Filter function `isdefined`
|
|
2032
|
-
+ Custom aggregation methods, arithmetic operators (`add`, `sub`, `mul`, and so on), and keyword `from` in `aggregate` transformation
|
|
2033
|
-
+ OData vocabulary for Data Aggregation, `@Aggregation.default` annotation
|
|
2034
|
-
+ Out of scope:
|
|
2035
|
-
+ Draft handling
|
|
2036
|
-
- Out-of-the-box audit logging for draft enabled entities
|
|
2037
|
-
- Support for `@sap/instance-manager`'s hybrid mode
|
|
2038
|
-
+ Enable via `cds.env.features.hybrid_instance_manager`
|
|
2039
|
-
+ Respective version of `@sap/instance-manager` required
|
|
2040
|
-
- `cds.minify()` (alpha) as static method
|
|
2041
|
-
- Annotation `@open` for actions in new Rest Adapter
|
|
2042
|
-
- Audit logging (`cds.env.features.audit_personal_data`) supports annotation `@PersonalData.EntitySemantics: 'Other'` and allows an arbitrary composition of entities with respect to `@PersonalData.EntitySemantics` annotations
|
|
2043
|
-
|
|
2044
|
-
### Changed
|
|
2045
|
-
|
|
2046
|
-
- `if-match` and `if-none-match` headers are ignored for entities without etags
|
|
2047
|
-
- Improve response time of `SELECT` queries that check referential integrity by adding an upper bound `LIMIT 1`
|
|
2048
|
-
- Leaner implementation for `sap-statistics`
|
|
2049
|
-
- Leading and trailing whitespaces are allowed for `$search` query parameter
|
|
2050
|
-
- Insert / Update of Composition of one with empty object is not allowed for non UUID keys
|
|
2051
|
-
- Search behavior of whitespaces changed as follows:
|
|
2052
|
-
+ Searches for plain whitespace, for example, `"$search= "` matches the complete data set.
|
|
2053
|
-
+ Searches for whitespace surrounded by double-quotes, for example, `$search=" "` matches all entries containing whitespaces.
|
|
2054
|
-
- In single-tenant mode, the default SQLite database is used, regardless of `context.tenant`
|
|
2055
|
-
- `cds build` for Node.js projects now copies `package-lock.json` files into the staging folder (usually `gen/srv`). This allows the execution of `npm ci` there.
|
|
2056
|
-
- Relaxed UUIDs in beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
2057
|
-
- Authentication strategies `dummy` and `mock` no longer require `passport`
|
|
2058
|
-
- In production, debug logs of `cds.DatabaseService` and `cds.RemoteService` have sanitized values
|
|
2059
|
-
+ Deactivate via `cds.env.log.sanitize_values = false`
|
|
2060
|
-
|
|
2061
|
-
### Fixed
|
|
2062
|
-
|
|
2063
|
-
- Path resolution for references in sub-selects
|
|
2064
|
-
- Where exists without infix filter, e.g., `@restrict.where: 'exists author'`
|
|
2065
|
-
- `@restrict.where: 'exists [...]'` in draft union scenario
|
|
2066
|
-
- Select query with path exists predicates, for example, `WHERE EXISTS books[year = 2000].pages[wordcount > 1000]`
|
|
2067
|
-
- Proper registration of audit log event handlers
|
|
2068
|
-
- Draft: Generate foreign keys for request payloads to which extra data items are added in a custom application handler.
|
|
2069
|
-
- `cds build` correctly merges `hdbmigrationtable` files that have multiple new migration versions defined.
|
|
2070
|
-
- `cds.test` converts response data of failed requests to JSON to prevent lost error details
|
|
2071
|
-
- Instance-based restriction for draft enabled entities
|
|
2072
|
-
- Delete requests for localized with compositions
|
|
2073
|
-
- Ignore input for static and calculated fields during draft activate
|
|
2074
|
-
- Clear extension map entry on error during CSN fetching
|
|
2075
|
-
- Do not ignore errors during diff calculation
|
|
2076
|
-
- Requests to mocked remote service when using custom service name with `.service` property
|
|
2077
|
-
- Rollback on already backrolled or committed transactions are ignored
|
|
2078
|
-
- Rollback handling in spawned background job
|
|
2079
|
-
- `cds.spawn()` throws error if passed option is an instance of `cds.EventContext`
|
|
2080
|
-
- Delete `timestamp` from options passed to `cds.spawn()` (transactions create their own timestamp)
|
|
2081
|
-
- Type error during programmatic action/function call if no params defined
|
|
2082
|
-
- Fully qualified bound actions/ functions in beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
2083
|
-
- Draft handling: `GET` requests with navigation via `SiblingEntity` and expand to-one
|
|
2084
|
-
- No audit log if sensitive data not selected
|
|
2085
|
-
- Kibana formatter: do not log authorization header value
|
|
2086
|
-
- Audit logging (`cds.env.features.audit_personal_data`) no longer crashes the application
|
|
2087
|
-
+ when using the same entity as a composition child in different parent entities
|
|
2088
|
-
+ when accessing a not existing entity
|
|
2089
|
-
|
|
2090
|
-
### Removed
|
|
2091
|
-
|
|
2092
|
-
- Deprecated feature flags `cds.env.runtime.skipWithParameters` and `cds.env.features.skip_with_parameters`. Use `cds.env.features.with_parameters` instead.
|
|
2093
|
-
|
|
2094
|
-
## Version 5.6.4 - 2021-11-23
|
|
2095
|
-
|
|
2096
|
-
### Fixed
|
|
2097
|
-
|
|
2098
|
-
- Preserve log level in Kibana formatter
|
|
2099
|
-
- RFC 3986 compliant segment recognition in beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
2100
|
-
- Support for `$skiptoken` OData query option when using beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
2101
|
-
- OData requests with `$skip` and without `$top` query option to services with defined default limit (`cds.query.limit.default`)
|
|
2102
|
-
- Creating entities with binary keys. Currently, the binary keys may be provided only as Node.js `Buffer` instances using a custom handler.
|
|
2103
|
-
- Requests with a payload containing nested arrayed elements no longer crash the application
|
|
2104
|
-
|
|
2105
|
-
## Version 5.6.3 - 2021-11-15
|
|
2106
|
-
|
|
2107
|
-
### Fixed
|
|
2108
|
-
|
|
2109
|
-
- `cds run` does not fail if `cds.requires.multitenancy` is explicitly set to `false`
|
|
2110
|
-
- Calculation of `DraftIsCreatedByMe` or `DraftIsProcessedByMe` when expanding or navigating to `DraftAdministrativeData`
|
|
2111
|
-
- Nested `any` in `$filter` query option
|
|
2112
|
-
- Crash on draft activate after draft edit for not existing composition of one if no explicit DB service is defined
|
|
2113
|
-
- Typescript definition of `srv.delete` no longer leads to a duplication error
|
|
2114
|
-
|
|
2115
|
-
## Version 5.6.2 - 2021-11-08
|
|
2116
|
-
|
|
2117
|
-
### Fixed
|
|
2118
|
-
|
|
2119
|
-
- Handle arrayed elements using templating mechanism
|
|
2120
|
-
- OData requests to `$count` endpoint of ETag enabled entity
|
|
2121
|
-
- `cds.test` does no longer crash if executed in `cds repl` on a remote service call
|
|
2122
|
-
- Crash on draft activate after draft edit for not existing composition of one
|
|
2123
|
-
- Ensure request correlation (with default server)
|
|
2124
|
-
- `<entity>.texts` points to real text entity
|
|
2125
|
-
- Draft union with expand to to-one and to-many
|
|
2126
|
-
- No columns in draft lock statement (i.e., use `SELECT 1`)
|
|
2127
|
-
|
|
2128
|
-
## Version 5.6.1 - 2021-11-02
|
|
2129
|
-
|
|
2130
|
-
### Fixed
|
|
2131
|
-
|
|
2132
|
-
- UAA credentials lookup
|
|
2133
|
-
- Revert return type validation for `cds.String` for compatibility with older `@sap/cds-mtx` versions
|
|
2134
|
-
- Messaging: Ill-defined incoming AMQP messages will not crash the app
|
|
2135
|
-
- `cds compile -l` does no longer crash if called without `--to` option
|
|
2136
|
-
|
|
2137
|
-
## Version 5.6.0 - 2021-10-29
|
|
2138
|
-
|
|
2139
|
-
### Added
|
|
2140
|
-
|
|
2141
|
-
- New REST protocol adapter (beta)
|
|
2142
|
-
+ Makes use of the beta OData URL to CQN parser. Hence, almost all OData requests are supported (see limitations below).
|
|
2143
|
-
+ Activate via `cds.env.features.rest_new_adapter = true`
|
|
2144
|
-
+ Out of scope (compared to OData protocol adapter):
|
|
2145
|
-
+ OData query option `$apply`
|
|
2146
|
-
+ Batch requests (with or without atomicity groups)
|
|
2147
|
-
+ Draft handling
|
|
2148
|
-
- New GraphQL protocol adapter (alpha)
|
|
2149
|
-
+ Serves single endpoint for all services based on `served` event at `/graphql` (subject to change).
|
|
2150
|
-
+ Activate via `cds.env.features.graphql = true`
|
|
2151
|
-
+ Required additional dependencies: `@graphql-tools/schema`, `express-graphql`, and `graphql`
|
|
2152
|
-
+ Not meant for productive use! For example, authentication and authorization are out of scope.
|
|
2153
|
-
- Support of the following features when using beta OData URL to CQN parser (`cds.env.features.odata_new_parser`):
|
|
2154
|
-
+ REST-style URLs (example: `GET /Foo/1`)
|
|
2155
|
-
+ `$expand=*` query option on different nested expand levels (`$levels` isn’t yet supported)
|
|
2156
|
-
+ Draft handling
|
|
2157
|
-
+ Structured keys
|
|
2158
|
-
+ Streaming
|
|
2159
|
-
+ Navigation to primitive properties without `$value` query option
|
|
2160
|
-
- Optimized Search: Support `$filter` query option in combination with optimize `$search` and localized data (when the environment variable `cds.env.features.optimized_search` is set to `true`)
|
|
2161
|
-
- `GET` requests support static values in ON-conditions of composition parents when using unmanaged backlinks
|
|
2162
|
-
- `destinationOptions` can be configured for Remote Services
|
|
2163
|
-
+ Example:
|
|
2164
|
-
```json
|
|
2165
|
-
{"cds":{"requires":{
|
|
2166
|
-
"S4": {
|
|
2167
|
-
"destinationOptions": {
|
|
2168
|
-
"selectionStrategy": "subscriberFirst",
|
|
2169
|
-
...
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
2172
|
-
}}}
|
|
2173
|
-
```
|
|
2174
|
-
- `forwardAuthToken` can be configured for Remote Services
|
|
2175
|
-
+ Example:
|
|
2176
|
-
```json
|
|
2177
|
-
{"cds":{"requires":{
|
|
2178
|
-
"credentials": {
|
|
2179
|
-
"url": "...",
|
|
2180
|
-
"forwardAuthToken": true
|
|
2181
|
-
}
|
|
2182
|
-
}
|
|
2183
|
-
}}}
|
|
2184
|
-
```
|
|
2185
|
-
- File to store private project settings `.cdsrc-private.json` (shouldn’t be checked in source code management)
|
|
2186
|
-
- Read additional configuration from JSON files or directory structures using `CDS_CONFIG` env variable
|
|
2187
|
-
- Missing typescript definitions for services' `.send` shortcuts `get`, `put`, `post`, `patch`, and `delete`
|
|
2188
|
-
- Build VCAP_SERVICES env variable dynamically for compatibility (`cds.env.features.emulate_vcap_services`)
|
|
2189
|
-
- GET requests to Remote OData Service are automatically sent as `$batch` if the generated URL is too long
|
|
2190
|
-
+ Can be configured via `cds.env.remote.max_get_url_length` (beta, default: 1028).
|
|
2191
|
-
- Provide ETag in response headers in case of `prefer: return=minimal`
|
|
2192
|
-
- Kibana formatter: log the user's id via `cds.env.log.user = true` (beta)
|
|
2193
|
-
+ Consider the data privacy implications!
|
|
2194
|
-
- Experimental support for uiflex running locally on sqlite by setting `cds.requires.extensibility.kind = uiflex`
|
|
2195
|
-
- Minified `cds.model` (deactivate via `cds.env.features.skip_unused = false`)
|
|
2196
|
-
|
|
2197
|
-
### Changed
|
|
2198
|
-
|
|
2199
|
-
- Query API: Specified keys are now part of the target path, e.g. `SELECT.from('Books', 1)` will move the key condition into `SELECT.from.ref`.
|
|
2200
|
-
+ Deactivate during two-month grace period via compat feature flag `cds.env.features.keys_into_where = true`
|
|
2201
|
-
- Removed duplicate integrity checks
|
|
2202
|
-
- Optimized search: Optimize queries for non-localized elements
|
|
2203
|
-
- OData to CQN parsing changed to enable remote service consumption. As a side effect, application code in `srv.on('READ', handler)` custom handlers relaying on CQN might need to be adapted. The following has changed:
|
|
2204
|
-
- Previously, columns in `req.query.SELECT.columns` were always defined. Now, in case there is no `$select` and `$expand` query options in the OData query, `req.query.SELECT.columns` is `undefined`.
|
|
2205
|
-
- Previously, if the `$expand` query option was specified in the OData query, all elements of the expanded navigation property were listed explicitly in the CQN query. Now, an `*` (asterisk) is listed instead.
|
|
2206
|
-
- Non-specified columns are resolved at database layer
|
|
2207
|
-
- `cds deploy` no longer enforces the presence of SAP CommonCryptoLib (checked with env variable `SECUDIR`) on Windows since it uses now the built-in security libraries
|
|
2208
|
-
- Target keys are not included in the body when sending `PATCH` requests to external services
|
|
2209
|
-
|
|
2210
|
-
### Fixed
|
|
2211
|
-
|
|
2212
|
-
- Audit logging of non-string values
|
|
2213
|
-
- Query API compilation error when keys start with `{`
|
|
2214
|
-
- Handling of wrong Edm.DateTimeOffset values
|
|
2215
|
-
- Using UUIDs in search with beta OData URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
2216
|
-
- Runtime exception for READ requests with deeply nested navigation and structured keys, for example:
|
|
2217
|
-
`GET foo/Bar/b708ad6c-2dd4-40d5-91c0-2e3eacf306d2/Info/sales(a='1010',b='10',c='00')/functions(functionName='error')`
|
|
2218
|
-
- The check for the minimum Node.js version now properly enforces version 12.18, i.e. aborts server startup.
|
|
2219
|
-
- `cds.test` fails with a clearer error message if the server wasn't started at all
|
|
2220
|
-
- Audit logging for modification of personal or sensitive data when using same entity as a composition child in different parent entities
|
|
2221
|
-
- Deleting an entity defined with managed composition of one, whereas a dependent entity is defined as having an independent managed association to its composition parent no longer crashes the application
|
|
2222
|
-
- Audit logging for entities having arrayed elements
|
|
2223
|
-
- Filtering for `cds.Date` on Remote OData V2 services
|
|
2224
|
-
- Crash when `rollup` function was used in groupBy in OData requests
|
|
2225
|
-
- Or for $filter with IsActiveEntity=true for access to active entities
|
|
2226
|
-
- Reading draft-enabled entity with `$expand` targeting non-draft associations
|
|
2227
|
-
- Delete with sub-select
|
|
2228
|
-
- Runtime exception when streaming property annotated with `@Core.MediaType: 'application/json'`
|
|
2229
|
-
- Reading streams via navigation when entity containing large data is a part of a draft-enabled composition tree
|
|
2230
|
-
- Read draft entity with nested exists restriction
|
|
2231
|
-
- Activate draft of entity having `to-one` and `to-many` compositions
|
|
2232
|
-
- Caching issue that causes the OData `omit-values` preference in `Prefer` HTTP headers to misbehaves
|
|
2233
|
-
- Deletion of draft instances if multiple draft enabled entities are used within one service
|
|
2234
|
-
- Queries with `contains` filter targeting a remote OData v2 service
|
|
2235
|
-
- Schema evolution support for nested CDS entities in `cds build`
|
|
2236
|
-
- I18n texts with quotes and other special characters get escaped correctly if they appear in XML and JSON documents
|
|
2237
|
-
- Execution of plain SQL statements on SQLite
|
|
2238
|
-
- `Content-Disposition` header is now URL encoded
|
|
2239
|
-
|
|
2240
|
-
### Removed
|
|
2241
|
-
|
|
2242
|
-
- Usage of `@sap/xsenv` is superseded with `cds.env` in node.js cds-runtime
|
|
2243
|
-
- `@odata.on.insert/update` and `#user/now` are deprecated and will be removed in the next major version. Use `@cds.on.insert/update` and `$user/now` instead.
|
|
2244
|
-
|
|
2245
|
-
## Version 5.5.5 - 2021-10-20
|
|
2246
|
-
|
|
2247
|
-
### Fixed
|
|
2248
|
-
|
|
2249
|
-
- Action parameters set to null
|
|
2250
|
-
- Restrictions with "where exists" clause and filter on ambiguous fields
|
|
2251
|
-
- Nulled user attribute in restrictions with "where exists" clause
|
|
2252
|
-
- Wait for all queries to settle during deep operation
|
|
2253
|
-
|
|
2254
|
-
## Version 5.5.4 - 2021-10-12
|
|
2255
|
-
|
|
2256
|
-
### Fixed
|
|
2257
|
-
|
|
2258
|
-
- Backwards compatibility for `cds.tx({ user: new User ({ tenant, locale }) })`
|
|
2259
|
-
- Transaction API fix: `cds.tx ({ tenant }, tx => { ... })` instead of `cds.tx (tx => { ... }, { tenant })`
|
|
2260
|
-
- Writable and reliable `query._target`
|
|
2261
|
-
- `req.target` in REST with navigations in URL
|
|
2262
|
-
|
|
2263
|
-
## Version 5.5.3 - 2021-10-06
|
|
2264
|
-
|
|
2265
|
-
### Fixed
|
|
2266
|
-
|
|
2267
|
-
- Resolving of views for view definitions using aliases
|
|
2268
|
-
- `cds.test` in `cds repl` no longer yields an error with the `beforeEach` function not found
|
|
2269
|
-
- Aliasing in case of draft union when expanding more than one `to-one` association
|
|
2270
|
-
- Resolving of views if intermediate views are defined in database namespace
|
|
2271
|
-
|
|
2272
|
-
## Version 5.5.2 - 2021-09-29
|
|
2273
|
-
|
|
2274
|
-
### Fixed
|
|
2275
|
-
|
|
2276
|
-
- `$expand` requests with virtual fields with the same name in root and child
|
|
2277
|
-
- Requests expanding `DraftAdministrativeData` when compound keys are used
|
|
2278
|
-
- `SELECT.columns` with an empty array as argument
|
|
2279
|
-
- Queries with complex lambda filters
|
|
2280
|
-
|
|
2281
|
-
## Version 5.5.1 - 2021-09-24
|
|
2282
|
-
|
|
2283
|
-
### Added
|
|
2284
|
-
|
|
2285
|
-
- Support for casting SQL function input
|
|
2286
|
-
|
|
2287
|
-
### Fixed
|
|
2288
|
-
|
|
2289
|
-
- Typo in `DELETE` method of `cds.test`
|
|
2290
|
-
- View resolving for intermediate queries
|
|
2291
|
-
- Result post-processing for renamed expands
|
|
2292
|
-
- Don't use placeholder values for `null`
|
|
2293
|
-
|
|
2294
|
-
## Version 5.5.0 - 2021-09-23
|
|
2295
|
-
|
|
2296
|
-
### Added
|
|
2297
|
-
|
|
2298
|
-
- Support for minified models
|
|
2299
|
-
- Messaging: Support for string payloads
|
|
2300
|
-
- Messaging: Webhooks use 'application/json' as the default content type
|
|
2301
|
-
- Messaging: If senders don't use `data` as a property of the payload, then the whole payload is interpreted as `data`
|
|
2302
|
-
- Messaging: Support for `$namespace` placeholer in queue name
|
|
2303
|
-
- Support for deletable singletons with `@odata.singleton.nullable`
|
|
2304
|
-
- Remote requests set the `accept-language` header according to the original request or the user's locale
|
|
2305
|
-
- Support for choosing data source names different from names of respective service definitions.
|
|
2306
|
-
+ Example:
|
|
2307
|
-
```json
|
|
2308
|
-
{"cds":{"requires":{
|
|
2309
|
-
"S4": {
|
|
2310
|
-
"model": "...", "service": "API_BUSINESS_PARTNER"
|
|
2311
|
-
}
|
|
2312
|
-
}}}
|
|
2313
|
-
```
|
|
2314
|
-
- When calling `cds.tx()` to create new transactions, this now automatically inherits the current event context from `cds.context`. In case that creates issues set `cds.env.features.cds_tx_inheritance = false` to restore the former behaviour. You can still overwrite individual context settings, for example:
|
|
2315
|
-
```js
|
|
2316
|
-
const tx = cds.tx() // inherits tenant and user
|
|
2317
|
-
const tx = cds.tx({ // inherits tenant
|
|
2318
|
-
user: new cds.User.Privileged
|
|
2319
|
-
})
|
|
2320
|
-
```
|
|
2321
|
-
- Method `cds.tx()` now allows to pass a function which will be executed within a new managed transaction, with `tx.commit/rollback()` handled automatically. For example:
|
|
2322
|
-
```js
|
|
2323
|
-
await cds.tx (tx => {
|
|
2324
|
-
await tx.insert (...)
|
|
2325
|
-
await tx.read (...)
|
|
2326
|
-
})
|
|
2327
|
-
```
|
|
2328
|
-
is equivalent to:
|
|
2329
|
-
```js
|
|
2330
|
-
const tx = cds.tx ()
|
|
2331
|
-
try {
|
|
2332
|
-
await tx.insert (...)
|
|
2333
|
-
await tx.read (...)
|
|
2334
|
-
await tx.commit()
|
|
2335
|
-
} catch {
|
|
2336
|
-
await tx.rollback()
|
|
2337
|
-
}
|
|
2338
|
-
```
|
|
2339
|
-
- Method `cds.tx({user})` now allows specifying a user as a plain string, for example:
|
|
2340
|
-
```js
|
|
2341
|
-
cds.tx ({ user:'me' })
|
|
2342
|
-
```
|
|
2343
|
-
is equivalent to:
|
|
2344
|
-
```js
|
|
2345
|
-
cds.tx ({ user: new cds.User('me') })
|
|
2346
|
-
```
|
|
2347
|
-
- Newly introduced method `cds.spawn()` allows correctly and conveniently spawning background jobs from within event handlers. Thereby ensuring a detached fully-managed ACID transaction set as `cds.context` for each execution of the background job, inheriting the current event context from the outer `cds.context` by default. Usage options:
|
|
2348
|
-
```js
|
|
2349
|
-
cds.spawn (async ()=>{
|
|
2350
|
-
await INSERT.into ('Ticker') ...
|
|
2351
|
-
})
|
|
2352
|
-
```
|
|
2353
|
-
```js
|
|
2354
|
-
cds.spawn (async ()=>{
|
|
2355
|
-
await INSERT.into ('Ticker') ...
|
|
2356
|
-
},{ after: 111 /* ms */ })
|
|
2357
|
-
```
|
|
2358
|
-
```js
|
|
2359
|
-
let n=0, handle = cds.spawn (async ()=>{
|
|
2360
|
-
await INSERT.into ('Ticker') ...
|
|
2361
|
-
if (++n>9) clearTimeout (handle)
|
|
2362
|
-
},{ every: 111 /* ms */ })
|
|
2363
|
-
```
|
|
2364
|
-
```js
|
|
2365
|
-
cds.spawn (async ()=>{
|
|
2366
|
-
await INSERT.into ('Ticker') ...
|
|
2367
|
-
},{ // inherits tenant
|
|
2368
|
-
every: 111 /* ms */,
|
|
2369
|
-
user: new cds.User.Privileged
|
|
2370
|
-
})
|
|
2371
|
-
```
|
|
2372
|
-
- Default server is CORS-enabled for all origins if not in production
|
|
2373
|
-
- Default lock acquire timeout for `SELECT FOR UPDATE` via `cds.env.sql.lock_acquire_timeout`
|
|
2374
|
-
- Optimized search: Support `groupby` for localized data (when the environment variable `cds.env.features.optimized_search` is set to `true` on SAP HANA)
|
|
2375
|
-
- Out-of-the-box audit logging for deep structures without own association to data subject
|
|
2376
|
-
+ limited to one data subject per role per composition tree
|
|
2377
|
-
- Support for reading streams via `GET /<Entity>(<ID>)/$value`
|
|
2378
|
-
- Draft choreography: support of navigation with `SiblingEntity`
|
|
2379
|
-
- Support for where exists with infix filters in `@restrict`
|
|
2380
|
-
- Support annotation `@Capabilities.ExpandRestrictions.NonExpandableProperties`
|
|
2381
|
-
- `@Core.ContentID` added to OData error responses if `content-id` header is specified
|
|
2382
|
-
- New OData URL to CQN parser (`cds.env.features.odata_new_parser`):
|
|
2383
|
-
+ support of navigation to primitive properties using `$value`
|
|
2384
|
-
+ support of `not` operator with string functions (`contains`, `startswith`, `endswith`)
|
|
2385
|
-
- Support for default values for virtual fields
|
|
2386
|
-
- Payload for non-writable navigation targets removed from `req.data`
|
|
2387
|
-
- `cds build` supports i18n message bundles for Java and Nodejs apps and a default CSN format option for Java
|
|
2388
|
-
- View resolving considers renaming of foreign keys and `excluding` names when `columns` are explicitly provided in CQN
|
|
2389
|
-
- Resilient acquire for SAP HANA via `cds.env.requires.db.connection_attempts = <number>` (alpha; hard max of 3 enforced)
|
|
2390
|
-
|
|
2391
|
-
### Changed
|
|
2392
|
-
|
|
2393
|
-
- Messaging: Webhooks will always generate tokens
|
|
2394
|
-
- Messaging: In multitenancy mode, messaging artifacts are only deployed to subscribers (unless the service option `deployForProvider` is set to `true`)
|
|
2395
|
-
- Messaging: Incoming messages without corresponding handlers aren’t acknowledged
|
|
2396
|
-
- If a service executes a query targeting a projection on one of its entities, the query is resolved along with projections to an entity known by the executing service. The result is post-processed to reflect the expected result of the incoming query. The reason is that no handlers of the executing service were executed as they didn’t know the query target.
|
|
2397
|
-
+ Deactivate during two-month grace period via compat feature flag `cds.env.features.resolve_views = false`
|
|
2398
|
-
- Use `@sap/cds-compiler`'s `smartId` function to determine whether a reference needs to be quoted.
|
|
2399
|
-
+ Allows the use of non-word characters in column names, for example `entity Foo { ![bar/bz]: String; }`.
|
|
2400
|
-
+ Support for columns with spaces with feature flag `cds.env.features.spaced_columns`.
|
|
2401
|
-
+ Note: Restrictions in other layers (example: OData's simple identifier schema) still apply.
|
|
2402
|
-
+ Note: Expressions in references (example: `ref: ['foo as bar']`) currently works but were never intended to and will be removed in future versions.
|
|
2403
|
-
- Clear draft data based on their draft UUID instead of via deep delete
|
|
2404
|
-
- Support `@sap/cds-compiler`'s changes for DB constraints: managed and unmanaged compositions of one behave like associations. This means that only `$self`-managed composition of one gets `DELETE CASCADE` constraint. Since all other "2one" cases require extra `DELETE` handled by the runtime, that constraint is ignored.
|
|
2405
|
-
- Value with regards to date and time functions aren’t converted to strings in the OData protocol adapter
|
|
2406
|
-
- No placeholders for `LIMIT` to enable statement caching during pagination
|
|
2407
|
-
- Arrayed elements stringified in DB layer
|
|
2408
|
-
- Return values of handlers will have precedence over database reads
|
|
2409
|
-
- Error of a failed request to a Remote Service contains now the response payload if available
|
|
2410
|
-
- Configuring ad-hoc destinations via `credentials.url` is now allowed in `NODE_ENV=production`
|
|
2411
|
-
- New OData URL to CQN parser (`cds.env.features.odata_new_parser`):
|
|
2412
|
-
+ CQN for `$select` and `$expand` columns
|
|
2413
|
-
|
|
2414
|
-
### Fixed
|
|
2415
|
-
|
|
2416
|
-
- `SELECT.from (Foo, f => f.bar('*').where(...))` resulted in a runtime exception
|
|
2417
|
-
- Preserved locales are now considered when accessing database tables
|
|
2418
|
-
- Integrity checks for compositions by draft enabled entities
|
|
2419
|
-
- Constant columns must not be quoted anymore, i.e. `{ val: "'myValue'", as: "myColumn"}` must be changed to `{ val: "myValue", as: "myColumn" }`
|
|
2420
|
-
- Accidental `tx.run()` after prior `tx.commit/rollback()` lead to acquired connections not returned to pool. This is detected and disallowed now. In case that creates issues set `cds.env.features.cds_tx_protection = false` to restore the former behaviour.
|
|
2421
|
-
- Structured keys are correctly resolved with pegjs-based parser
|
|
2422
|
-
- Template processing for columns with spaces in their name
|
|
2423
|
-
- Deep delete with recursions in composition tree (with limited recursion depth)
|
|
2424
|
-
- Draft edit with recursions in composition tree (with limited recursion depth)
|
|
2425
|
-
- `emit` for messaging services now also works in custom express middlewares
|
|
2426
|
-
- `req.query` is a CQN object (previously array with one entry) in case of batch insert in REST adapter
|
|
2427
|
-
- HasActiveEntity flag with expand
|
|
2428
|
-
- `compile.to.serviceinfo` now honors default Java endpoint paths if none are configured in `application.yaml`
|
|
2429
|
-
- `PATCH` request to a non-existent entity annotated with the `@PersonalData` annotation
|
|
2430
|
-
- `req.diff()` while deep updating via composition
|
|
2431
|
-
- Convert data type of elements in sub-entities (to one association) when forwarding responses to external services
|
|
2432
|
-
- Update children of a composition of many (`INSERT > DELETE`) with `PATCH/PUT` having at the same time another association to one composition child respects foreign key constraints.
|
|
2433
|
-
- Handling of virtual fields used in the `$filter` query option of navigation requests
|
|
2434
|
-
- Copy texts in default language from active to draft table on draft edit
|
|
2435
|
-
- Optimized search: Escape double quotation marks and backslashes (when the environment variable `cds.env.features.optimized_search` is set to `true`)
|
|
2436
|
-
- Update for multiple rows
|
|
2437
|
-
- Expand during draft union
|
|
2438
|
-
- Validate content type for `$batch` requests
|
|
2439
|
-
- Support for `SELECT` statements in `where` clauses when resolving views
|
|
2440
|
-
- `INSERT.rows()` doesn’t silently fill in `INSERT.entries` anymore → use `INSERT.entries()` to do so instead.
|
|
2441
|
-
- `UPDATE(Foo).with({foo:{'=':'bar'})` erroneously produced:
|
|
2442
|
-
```js
|
|
2443
|
-
{UPDATE:{..., with:{foo:{ref:['bar']}}}} //> wrong
|
|
2444
|
-
```
|
|
2445
|
-
instead of:
|
|
2446
|
-
```js
|
|
2447
|
-
{UPDATE:{..., data:{foo:'bar'}}} // correct
|
|
2448
|
-
```
|
|
2449
|
-
→ to produce the ref, use one of:
|
|
2450
|
-
```js
|
|
2451
|
-
UPDATE(Foo).with ({foo:{ref:['bar']}})
|
|
2452
|
-
UPDATE(Foo).with `foo=bar`
|
|
2453
|
-
```
|
|
2454
|
-
- `UPDATE.with` property stays undefined until actually filled with data
|
|
2455
|
-
- Differentiate between require and initialize error of audit logging client
|
|
2456
|
-
- The built-in model tree-shaking erroneously deleted explicitly modeled `.texts` entities
|
|
2457
|
-
- Actions and functions with `Integer` response type in REST services
|
|
2458
|
-
- Occasional drop of conditions in `WHERE` depending on the value when using structured types
|
|
2459
|
-
- `PATCH` fixed for singletons and when having a keyless, for example, managed to-one navigation path
|
|
2460
|
-
- Internal server error when forwarding a query to an external service whose target entity doesn’t contain keys
|
|
2461
|
-
- Nested where exists in `@restrict` via navigation (CRUD-only; beta)
|
|
2462
|
-
- Expand to one in draft union
|
|
2463
|
-
- Patch to auto exposed entity through composition of aspect from SAP Fiori Elements
|
|
2464
|
-
- Diff for delete in draft
|
|
2465
|
-
- Streaming requests on views with joins no longer crash the application
|
|
2466
|
-
|
|
2467
|
-
### Removed
|
|
2468
|
-
|
|
2469
|
-
- Direct usage of body-parser
|
|
2470
|
-
- Queries constructed from `cds.ql` do not have the _internal_ property `cqn` anymore
|
|
2471
|
-
- Inofficial variant `SELECT({'expand(foo)':['a','b']})` is not supported anymore
|
|
2472
|
-
→ use one of these official APIs for expands instead:
|
|
2473
|
-
```js
|
|
2474
|
-
SELECT(x => { x.a, x.foo (f =>{ f.b, f.c }) })
|
|
2475
|
-
SELECT(['a',{ref:['foo'], expand:['b','c']}])
|
|
2476
|
-
```
|
|
2477
|
-
- Inofficial variant `SELECT.orderBy('foo','desc')` is not supported anymore
|
|
2478
|
-
→ use one of these official APIs instead:
|
|
2479
|
-
```js
|
|
2480
|
-
SELECT.from(Foo).orderBy({foo:'desc'})
|
|
2481
|
-
SELECT.from(Foo).orderBy('foo desc')
|
|
2482
|
-
```
|
|
2483
|
-
- Inofficial variant `SELECT.orderBy('foo, bar desc')` is not supported anymore
|
|
2484
|
-
→ use one of these official APIs instead:
|
|
2485
|
-
```js
|
|
2486
|
-
SELECT.from(Foo).orderBy({foo:1,bar:-1})
|
|
2487
|
-
SELECT.from(Foo).orderBy('foo','bar desc')
|
|
2488
|
-
SELECT.from(Foo).orderBy `foo, bar desc`
|
|
2489
|
-
```
|
|
2490
|
-
- Inofficial variant `SELECT.where({ or: [{ foo: 'bar' }, { foo: 'baz' }] })` is not supported anymore
|
|
2491
|
-
→ use one of these official APIs instead:
|
|
2492
|
-
```js
|
|
2493
|
-
SELECT.from(Foo).where({ foo: 'bar', or: { foo: 'baz' } })
|
|
2494
|
-
SELECT.from(Foo).where `foo='bar' or foo='baz'`
|
|
2495
|
-
```
|
|
2496
|
-
- Usage of SQL window functions during expand on SAP HANA
|
|
2497
|
-
- Hidden symbol for where clause elements originating from `@restrict`
|
|
2498
|
-
- Error masking gate keeper for `cds.env.log.levels.cli`
|
|
2499
|
-
|
|
2500
|
-
## Version 5.4.6 - 2021-09-18
|
|
2501
|
-
|
|
2502
|
-
### Added
|
|
2503
|
-
|
|
2504
|
-
- Support for nested where exists in `@restrict` (CRUD-only; beta)
|
|
2505
|
-
|
|
2506
|
-
### Fixed
|
|
2507
|
-
|
|
2508
|
-
- Inverse transition mapping calculation
|
|
2509
|
-
- Skip empty structures during deep update
|
|
2510
|
-
|
|
2511
|
-
## Version 5.4.5 - 2021-09-15
|
|
2512
|
-
|
|
2513
|
-
### Fixed
|
|
2514
|
-
|
|
2515
|
-
- Processing of null elements during deep update
|
|
2516
|
-
- Performance issue during template processing
|
|
2517
|
-
|
|
2518
|
-
## Version 5.4.4 - 2021-09-09
|
|
2519
|
-
|
|
2520
|
-
### Fixed
|
|
2521
|
-
|
|
2522
|
-
- For drafts, the query parameter `$top=0` in combination with `$count=true` now returns the correct `@odata.count` value
|
|
2523
|
-
- Deep delete with composition of one with structured key in target
|
|
2524
|
-
- Implicit delete of child with structured key
|
|
2525
|
-
- Update of deeply nested entity with structured key
|
|
2526
|
-
- Order by join column during draft union
|
|
2527
|
-
- Skip calculated properties while following projections
|
|
2528
|
-
- The `with parameters` clause is now correctly handled in sub-selects if the locale parameter exceeds three characters
|
|
2529
|
-
- Statement already finalized error on SQLite
|
|
2530
|
-
|
|
2531
|
-
## Version 5.4.3 - 2021-08-16
|
|
2532
|
-
|
|
2533
|
-
### Fixed
|
|
2534
|
-
|
|
2535
|
-
- Skip calculated properties while following projections
|
|
2536
|
-
- Unrestricted subclauses in `@restrict.where`
|
|
2537
|
-
- Safe access to `cds.env.log.levels.cli`
|
|
2538
|
-
|
|
2539
|
-
## Version 5.4.2 - 2021-08-11
|
|
2540
|
-
|
|
2541
|
-
### Fixed
|
|
2542
|
-
|
|
2543
|
-
- Where condition in draft union in case of multiple keys
|
|
2544
|
-
- Handling of nulled properties in Service Consumption
|
|
2545
|
-
- Requests to Remote Services returning `text/html` result in an error
|
|
2546
|
-
- View resolving is more robust for path expressions
|
|
2547
|
-
- Skip foreign properties (e.g., mixins via associations) while following projections
|
|
2548
|
-
- UPDATE entity with composition to aspect with structure type property
|
|
2549
|
-
|
|
2550
|
-
## Version 5.4.1 - 2021-08-03
|
|
2551
|
-
|
|
2552
|
-
### Fixed
|
|
2553
|
-
|
|
2554
|
-
- Erroneously added Brazilian Portuguese (`pt_BR`) removed from the list of normalized locales
|
|
2555
|
-
|
|
2556
|
-
## Version 5.4.0 - 2021-08-02
|
|
2557
|
-
|
|
2558
|
-
### Added
|
|
2559
|
-
|
|
2560
|
-
- Messaging: Support for format `cloudevents`
|
|
2561
|
-
- Messaging: Support for `@topic`
|
|
2562
|
-
- Messaging: Support for `subscribePrefix` and `publishPrefix`
|
|
2563
|
-
- Support for `ReadByKeyRestrictions` annotations
|
|
2564
|
-
- Support for OData `omit-values` preference in `Prefer` HTTP header
|
|
2565
|
-
- Object variant of service methods
|
|
2566
|
-
- Brazilian Portuguese (`pt_BR`) is now on the list of [normalized locales](https://cap.cloud.sap/docs/guides/i18n#normalized-locales)
|
|
2567
|
-
- Support for actions and functions on Remote Service
|
|
2568
|
-
|
|
2569
|
-
### Changed
|
|
2570
|
-
|
|
2571
|
-
- In multitenant `enterprise-messaging`: If a tenant subscribes, the messaging artifact generation is awaited. In your provisioning service configuration, make sure to set `onSubscriptionAsync` to `true` and `callbackTimeoutMillis` to more than 10 minutes.
|
|
2572
|
-
- In `enterprise-messaging`: Messages are sent via HTTP
|
|
2573
|
-
- Computed values are preserved during draft activate
|
|
2574
|
-
- Messaging: No more topic manipulation per default
|
|
2575
|
-
- For consistency reasons `cds build` now determines the default model path using cds resolve
|
|
2576
|
-
- Match XSUAA's user attribute value `$UNRESTRICTED` case insensitive
|
|
2577
|
-
- CDS build now uses new CDS logging facade to allow for consistent logging behaviour across the different CDS modules
|
|
2578
|
-
|
|
2579
|
-
### Fixed
|
|
2580
|
-
|
|
2581
|
-
- Disable persistency check for requests without a target
|
|
2582
|
-
- Expand at draft edit
|
|
2583
|
-
- Remove restriction for `$search` queries not accepting brackets
|
|
2584
|
-
- Select query with infix filter in custom handler
|
|
2585
|
-
- Order by on same named properties of different associations in draft
|
|
2586
|
-
- Allow to call bound actions and functions of read-only entities
|
|
2587
|
-
- Writing draft-enabled entities with composition of aspects (a.k.a. managed compositions)
|
|
2588
|
-
- Expand to autoexposed association/composition in draft case
|
|
2589
|
-
- `cds.parse.xpr()` always returns an array
|
|
2590
|
-
- Allow boolean options in `cds build` CLI
|
|
2591
|
-
- Integrity check in case of bulk query execution
|
|
2592
|
-
|
|
2593
|
-
### Removed
|
|
2594
|
-
|
|
2595
|
-
- Messaging: The topic prefix `topic:` is deprecated
|
|
2596
|
-
- Messaging: No default headers for format not equal to `cloudevents`
|
|
2597
|
-
|
|
2598
|
-
## Version 5.3.3 - 2021-07-28
|
|
2599
|
-
|
|
2600
|
-
### Fixed
|
|
2601
|
-
|
|
2602
|
-
- Validation of arrayed parameters of actions and functions
|
|
2603
|
-
- Skip not-to-be-audited entities in composition tree
|
|
2604
|
-
- In draft, `<entity>.texts` can be used without explicit exposure
|
|
2605
|
-
|
|
2606
|
-
## Version 5.3.2 - 2021-07-16
|
|
2607
|
-
|
|
2608
|
-
### Added
|
|
2609
|
-
|
|
2610
|
-
- `enterprise-messaging`: Experimental support to send messages via HTTP (`emitPerHTTP: true`)
|
|
2611
|
-
|
|
2612
|
-
### Changed
|
|
2613
|
-
|
|
2614
|
-
- Aligned Node.js and Java auditlog APIs
|
|
2615
|
-
- `enterprise-messaging`: No topic manipulation for outbound events beginning with a different namespace
|
|
2616
|
-
|
|
2617
|
-
### Fixed
|
|
2618
|
-
|
|
2619
|
-
- Call `init()` and register custom handlers for every new `cds.ApplicationService` created in extensibility scenarios
|
|
2620
|
-
- Structured keys for deep operations in OData flavor `x4`
|
|
2621
|
-
- Wrong user in messaging requests coming from webhooks
|
|
2622
|
-
- Improvements in log formatter for Kibana:
|
|
2623
|
-
+ Remove redundant metadata information
|
|
2624
|
-
+ Add information from `req.headers`
|
|
2625
|
-
+ Treat error-like objects like errors
|
|
2626
|
-
+ Custom fields (alpha)
|
|
2627
|
-
- Minor fix for *optimized search* on SAP HANA
|
|
2628
|
-
|
|
2629
|
-
## Version 5.3.1 - 2021-07-12
|
|
2630
|
-
|
|
2631
|
-
### Changed
|
|
2632
|
-
|
|
2633
|
-
- Task `@sap/cds-runtime/lib/messaging/deploy.js` moved to `@sap/cds/tasks/enterprise-messaging-deploy.js` after module merge
|
|
2634
|
-
- Parse OData lambda expression on collection of scalars with equals operator (i.e., `.../any(d:d = "<val>")`) to CQN with `contains` (pegjs-based parser only)
|
|
2635
|
-
|
|
2636
|
-
### Fixed
|
|
2637
|
-
|
|
2638
|
-
- Improved error message in case custom `server.js` doesn't export a function
|
|
2639
|
-
- Kibana formatter: `stacktrace` as array of strings
|
|
2640
|
-
- Bootstrapping for feature toggles
|
|
2641
|
-
- Deep operations for certain composition constellations
|
|
2642
|
-
- Aliasing on SQL layer for OData `ne` operator
|
|
2643
|
-
- Fixed scope issues in manual deployment for messaging
|
|
2644
|
-
- Projections with infix filters and cardinality changes are safely ignored during `CREATE`/`UPDATE`
|
|
2645
|
-
- Resolving of views if underlying projection has explicit aliases
|
|
2646
|
-
|
|
2647
|
-
## Version 5.3.0 - 2021-07-07
|
|
2648
|
-
|
|
2649
|
-
### Added
|
|
2650
|
-
|
|
2651
|
-
- `cds serve` and `cds deploy` now also load `.ts` Typescript files if started with [`ts-node`](https://www.npmjs.com/package/ts-node)
|
|
2652
|
-
- Log formatter for Kibana (beta) via `cds.env.features.kibana_formatter`
|
|
2653
|
-
- First version of the `AuditLogService` (beta)
|
|
2654
|
-
+ Supported events: `dataAccessLog`, `dataModificationLog`, `configChangeLog`, and `securityLog`
|
|
2655
|
-
+ Usage: `const AuditLogService = await cds.connect.to('audit-log'); await AuditLogService.emit/send('<event>', <data>)`
|
|
2656
|
-
+ Out-of-the-box audit logging for modification of personal data and access to sensitive personal data via `cds.env.features.audit_personal_data`
|
|
2657
|
-
- Support for deep updates with compositions of one in `UPDATE(...).with(...)`
|
|
2658
|
-
- Support for logical events in `composite-messaging`
|
|
2659
|
-
- Initial support for generating OData V2 queries
|
|
2660
|
-
- Preserve `DraftAdministrativeData_DraftUUID` if OData v2 client (indicated by `@sap/cds-odata-v2-adapter-proxy`)
|
|
2661
|
-
- Use placeholder values for numbers with `cds.env.features.parameterized_numbers` (alpha)
|
|
2662
|
-
- Support for argument-less SQL functions (e.g., `current_date`)
|
|
2663
|
-
- Performance optimization: Resolve localized texts for `$search` queries at runtime (alternative to localized views resolution) to avoid the performance overhead of the SQL `coalesce` function in filter operations. To enable this *experimental feature* for SAP HANA, you can set the `cds.env.features.optimized_search` environment variable to `true`
|
|
2664
|
-
- Performance optimization: Optimize `$search` queries using the `CONTAINS` predicate instead of the `LIKE` predicate in the `WHERE` clause of a `SELECT` statement. To enable this *experimental feature* for SAP HANA, you can set the `cds.env.features.optimized_search` environment variable to `true`
|
|
2665
|
-
- OData lambda expressions in `$filter`:
|
|
2666
|
-
+ Basic support of structured types (`cds.env.odata.flavor = x4`) on SAP HANA
|
|
2667
|
-
+ Support of navigation paths on SAP HANA, for example, `GET /Books?$filter=author/books/all(d:d/stock gt 10)`
|
|
2668
|
-
|
|
2669
|
-
### Changed
|
|
2670
|
-
|
|
2671
|
-
- Custom build tasks are no longer restricted to `@SAP` namespace.
|
|
2672
|
-
- CDS build tasks of type `fiori` are no longer copying files located in the UI module folder into the deployment staging folder.
|
|
2673
|
-
- Leaner error messages for unsuccessful remote service calls
|
|
2674
|
-
- Incoming messages now contain a privileged user
|
|
2675
|
-
- `SELECT.where(...)` generates CQN with list of values for `in` operator
|
|
2676
|
-
- Always use flag `u` during input validation via `@assert.format`
|
|
2677
|
-
- Intermediate CQN format for lambda expressions with preceding navigation path
|
|
2678
|
-
- Better error messages for draft enabled entities
|
|
2679
|
-
|
|
2680
|
-
### Fixed
|
|
2681
|
-
|
|
2682
|
-
- Projecting data works also for projections where one field maps to multiple entries
|
|
2683
|
-
- `SELECT` queries without user-specified columns only modify draft columns if the entity is draft-enabled.
|
|
2684
|
-
- Generated `index.html` erroneously showed entries for `contained` entities from managed compositions.
|
|
2685
|
-
- Use OData simple identifier format for links to entity sets in generated `index.html`.
|
|
2686
|
-
- `cds build` logged duplicate compilation errors for the identical `.cds` file, but with different relative path names.
|
|
2687
|
-
- `cds serve` no longer tries to redirect Fiori URLs starting with `$` to service URLs.
|
|
2688
|
-
- `cds build` now supports `HANA Table data properties files` in SaaS applications. These files haven’t been copied into the sidecar folder.
|
|
2689
|
-
- `cds deploy --dry` generates DROP/CREATE DDL statements with an order that also H2 can handle, i.e. with dependant views dropped before basic views.
|
|
2690
|
-
- `cds build` now correctly handles symbolic links for nodejs projects on Windows.
|
|
2691
|
-
- `cds build` now correctly filters CDS source files when building SaaS applications.
|
|
2692
|
-
- Deploy endpoint for messaging artifacts includes the needed roles
|
|
2693
|
-
- Detection of mocked services and forced resolving of views
|
|
2694
|
-
- `POST/PATCH/PUT` requests on `Composition of many` with association as key and custom `on` conditions
|
|
2695
|
-
- `$expand` on entities with `.` in name
|
|
2696
|
-
- Filter on external service when using `ne null`
|
|
2697
|
-
- Primitive property access of Singletons defined without keys via URL like `/Singleton/name`
|
|
2698
|
-
- Expand and navigation in draft-enabled entity with composition of aspects
|
|
2699
|
-
- `@Core.ContentDisposition.Filename` instead of `@Core.ContentDisposition`
|
|
2700
|
-
- Select query with `$count` with combination with `$search`
|
|
2701
|
-
- Parsing of `Timestamp`, `DateTime` and `Date` values in OData request when using beta URL to CQN parser (`cds.env.features.odata_new_parser`)
|
|
2702
|
-
- Reset temporal session contexts
|
|
2703
|
-
- Caching of runtime aspects
|
|
2704
|
-
- Handling of foreign keys as well as an input validation when using nested associations as keys
|
|
2705
|
-
- Transaction handling in case of multiple changesets
|
|
2706
|
-
- Hana procedure call with output parameter
|
|
2707
|
-
- Skip foreign key propagation if target is annotated with `@cds.persistence.skip`
|
|
2708
|
-
- Values misidentified as operators in `$search`
|
|
2709
|
-
- Ensure UTC valus are written to DB
|
|
2710
|
-
- Etag handling in case of action with `$select`
|
|
2711
|
-
- Fix draft related issues in odata2cqn
|
|
2712
|
-
- Where clause in `@restrict` gets duplicated if `$search` query option is used
|
|
2713
|
-
|
|
2714
|
-
## Version 5.2.0 - 2021-05-31
|
|
2715
|
-
|
|
2716
|
-
### Fixed
|
|
2717
|
-
|
|
2718
|
-
- Virtual fields are not filtered out before application service handlers
|
|
2719
|
-
- Clarification: the minimum required Node.js version is 12.18. Versions < 12.18 might not work.
|
|
2720
|
-
- `cds build` supports validation of `extension-allowlist` which is replacing `entity-whitelist` or `service-whitelist` with cds-mtx 2.0. Warnings are no longer returned if neither entity-whitelist nor service-whitelist is defined.
|
|
2721
|
-
- `cds compile -2 sql/edmx` erroneously wrote excessive compiler output to stderr
|
|
2722
|
-
- Resolve the correct `enterprise-messaging-shared` credentials from VCAP_SERVICES by default
|
|
2723
|
-
- `cds compile --to sql` now completes the last SQL statement with a proper semicolon
|
|
2724
|
-
|
|
2725
|
-
## Version 5.1.5 - 2021-05-21
|
|
2726
|
-
|
|
2727
|
-
### Added
|
|
2728
|
-
|
|
2729
|
-
- `cds build` adds `engines.node` version to `package.json` if not present, in order to match the minimum required node version of CDS.
|
|
2730
|
-
- Generate an invocation context identifier (`cds.context.id`) if none can be derived
|
|
2731
|
-
|
|
2732
|
-
### Changed
|
|
2733
|
-
|
|
2734
|
-
- Better support for UI tools to get metadata for projects with both a Node.js and Java server
|
|
2735
|
-
|
|
2736
|
-
### Fixed
|
|
2737
|
-
|
|
2738
|
-
- Match locales in all upper-case (for example `ZH-CN` instead of `zh-CN`)
|
|
2739
|
-
- Key elements got lost in `cds.linked` when using type refs referring to other key elements
|
|
2740
|
-
- Tree shaking erroneously removed types `Foo` when only referred to by type refs like `bar : Foo:bar`
|
|
2741
|
-
- Fixed an error in transaction handling, that lead to db connections not released in rare cases
|
|
2742
|
-
- SQL names option gets properly propagated
|
|
2743
|
-
- No longer erroneously exclude entities explicitly marked with `cds.persistence:{table, skip:false}`, as in [cap/samples/suppliers](https://github.com/SAP-samples/cloud-cap-samples/blob/6b08826af51651f6b31fce8454fbadd23c634b85/suppliers/srv/mashup.cds#L46)
|
|
2744
|
-
|
|
2745
|
-
## Version 5.1.4 - 2021-05-12
|
|
2746
|
-
|
|
2747
|
-
### Fixed
|
|
2748
|
-
|
|
2749
|
-
- Error when using complex type references, as in:
|
|
2750
|
-
```swift
|
|
2751
|
-
entity Foo { bar: Tic:tac.toe; }
|
|
2752
|
-
entity Tic { tac: Composition of { toe:String } }
|
|
2753
|
-
```
|
|
2754
|
-
|
|
2755
|
-
## Version 5.1.3 - 2021-05-12
|
|
2756
|
-
|
|
2757
|
-
### Fixed
|
|
2758
|
-
|
|
2759
|
-
- `cds` does not check for the min. Node.js on BAS, for now
|
|
2760
|
-
|
|
2761
|
-
## Version 5.1.2 - 2021-05-12
|
|
2762
|
-
|
|
2763
|
-
### Fixed
|
|
2764
|
-
|
|
2765
|
-
- `cds compile --for odata` now honors the OData version again
|
|
2766
|
-
- `cds compile --for odata` now honors the SQL naming mode (`sql.names`) again
|
|
2767
|
-
- `cds serve` does not run in an infinite bootstrap loop if `cds.server()` is called in `server.js`
|
|
2768
|
-
|
|
2769
|
-
## Version 5.1.1 - 2021-05-07
|
|
2770
|
-
|
|
2771
|
-
### Fixed
|
|
2772
|
-
|
|
2773
|
-
- `cds build` is now always adding `.hdbview, .hdbtable, .hdbconstraint or .hdbindex` plugin mappings to `.hdiconfig` to avoid that deployment is failing in case such files exist in an already deployed container, but are no longer generated.
|
|
2774
|
-
- `cds compile --dest <dir>` no longer crashes creating the destination folder
|
|
2775
|
-
|
|
2776
|
-
## Version 5.1.0 - 2021-05-05
|
|
2777
|
-
|
|
2778
|
-
### Added
|
|
2779
|
-
|
|
2780
|
-
- Custom error handler via `srv.on('error', function (err, req) { ... })` (beta)
|
|
2781
|
-
+ Synchronous modification of passed error only
|
|
2782
|
-
- `cds.log.format()` for custom log formatting
|
|
2783
|
-
|
|
2784
|
-
### Fixed
|
|
2785
|
-
|
|
2786
|
-
- `cds build` now correctly handles `message.properties` files used for Nodejs runtime messages if these files have been defined in an i18n content folder located at project root.
|
|
2787
|
-
- Nodejs custom handlers are now correctly resolved if a dedicated destination folder has been configured for the build task.
|
|
2788
|
-
- Now, the `.csv` file reader correctly closes open file descriptors to avoid memory leaks during `cds build`.
|
|
2789
|
-
|
|
2790
|
-
### Changed
|
|
2791
|
-
|
|
2792
|
-
- Clean up obsolete compiler option `snapi`.
|
|
2793
|
-
- `cds build` is no longer validating Nodejs custom service handlers that have been registered using service `@impl` annotation.
|
|
2794
|
-
|
|
2795
|
-
## Version 4.6.6 - 2021-05-05
|
|
2796
|
-
|
|
2797
|
-
### Fixed
|
|
2798
|
-
|
|
2799
|
-
- Now, the `.csv` file reader correctly closes open file descriptors to avoid memory leaks during `cds build`.
|
|
2800
|
-
- Fixed i18n handling causing `cds build` to fail with error message `bundle is not iterable`.
|
|
2801
|
-
- Nodejs custom handlers are now correctly resolved if a dedicated destination folder has been configured for the build task.
|
|
2802
|
-
|
|
2803
|
-
## Version 5.0.7 - 2021-04-21
|
|
2804
|
-
|
|
2805
|
-
### Fixed
|
|
2806
|
-
|
|
2807
|
-
- Internal test stabilizations
|
|
2808
|
-
|
|
2809
|
-
## Version 5.0.6 - 2021-04-16
|
|
2810
|
-
|
|
2811
|
-
### Fixed
|
|
2812
|
-
|
|
2813
|
-
- `cds build` no longer fails with `TypeError: x.startsWith is not a function` in some situations
|
|
2814
|
-
|
|
2815
|
-
## Version 5.0.5 - 2021-04-15
|
|
2816
|
-
|
|
2817
|
-
### Changed
|
|
2818
|
-
|
|
2819
|
-
- Internal errors are no longer decorated with `Please report this`. People interpreted the text as to only include the stack trace in error reports and to omit other valuable context information.
|
|
2820
|
-
|
|
2821
|
-
### Fixed
|
|
2822
|
-
|
|
2823
|
-
- `cds build` now correctly creates the deployment layout for multitenant applications (sdc folder contents) that have dedicated folder paths configured for db, srv, and app modules.
|
|
2824
|
-
- `cds deploy --to sqlite` now ignores a `_texts.csv` file again if there is a language-specific file like `_texts_en.csv` present
|
|
2825
|
-
- `cds env` no longer fails to parse `.env` files with JSON values containing `=` characters
|
|
2826
|
-
|
|
2827
|
-
## Version 5.0.4 - 2021-04-07
|
|
2828
|
-
|
|
2829
|
-
### Fixed
|
|
2830
|
-
|
|
2831
|
-
- `cds build` no longer fails with a `task.apply is not a function` error when used in an npm script.
|
|
2832
|
-
|
|
2833
|
-
## Version 5.0.3 - 2021-04-06
|
|
2834
|
-
|
|
2835
|
-
### Fixed
|
|
2836
|
-
|
|
2837
|
-
- `cds.compile` got thoroughly cleaned up and enhanced as the single API to compile models
|
|
2838
|
-
- `cds.compile.to.cdl` was missing in 5.0.2
|
|
2839
|
-
- `cds build` no longer uses reflected CSN which caused odata and EDMX transformation to fail.
|
|
2840
|
-
As a consequence language specific EDMX files were missing.
|
|
2841
|
-
|
|
2842
|
-
### Removed
|
|
2843
|
-
|
|
2844
|
-
The following undocumented, internal functions have been removed.
|
|
2845
|
-
In case you spotted and used them, please replace as given below.
|
|
2846
|
-
|
|
2847
|
-
- `cds.compile.cdl` → use `cds.compile` instead
|
|
2848
|
-
- `cds.compile.to.parsed.csn` → use `cds.parse` instead
|
|
2849
|
-
- `cds.compile.to.xtended.csn` → use `cds.compile` instead
|
|
2850
|
-
- `cds.compile.to.inferred.csn` → use `cds.compile` instead
|
|
2851
|
-
- `cds.compile.to.hdi` → use `cds.compile.to.hdbtable` instead
|
|
2852
|
-
- `cds.compile.to.hana` → use `cds.compile.to.hdbcds` instead
|
|
2853
|
-
- `cds.compile.to.xsuaa` → still available in CLI thru `cds compile -2 xsuaa`
|
|
2854
|
-
- `cds.compile.to.serviceinfo` → still available in CLI thru `cds compile -2 serviceinfo`
|
|
2855
|
-
- `cds.compile.to['edmx-v2']` → still available in CLI thru `cds compile -2 edmx-v2`
|
|
2856
|
-
- `cds.compile.to['edmx-v4']` → still available in CLI thru `cds compile -2 edmx-v4`
|
|
2857
|
-
- `cds.compile.to['edmx-w4']` → still available in CLI thru `cds compile -2 edmx-w4`
|
|
2858
|
-
- `cds.compile.to['edmx-x4']` → still available in CLI thru `cds compile -2 edmx-x4`
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
## Version 5.0.2 - 2021-03-30
|
|
2862
|
-
|
|
2863
|
-
### Added
|
|
2864
|
-
|
|
2865
|
-
- Ensure correlation id and set intermediate `cds.context` in default `server.js`
|
|
2866
|
-
|
|
2867
|
-
### Fixed
|
|
2868
|
-
|
|
2869
|
-
- `cds build` no longer aborts for CAP Java SDK based projects with `compiler version 2 not supported` message.
|
|
2870
|
-
|
|
2871
|
-
## Version 5.0.1 - 2021-03-25
|
|
2872
|
-
|
|
2873
|
-
### Added
|
|
2874
|
-
|
|
2875
|
-
- `cds.load.properties` and `cds.parse.properties` to load and parse content in .properties format
|
|
2876
|
-
- `cds.load.csv` and `cds.parse.csv` to load and parse csv content
|
|
2877
|
-
- `CDL`, `CQL`, and `CXL` as new global methods for tagged template strings generating [CSN], [CQN], or [CXN] objects
|
|
2878
|
-
- Fluent API classes provided through `cds.ql` also support tagged template strings now in these methods: `SELECT`, `SELECT.from`, `SELECT.where`, `UPDATE`, `UPDATE.with`, `UPDATE.where`, `INSERT.into`, `DELETE.from`, `DELETE.where`
|
|
2879
|
-
|
|
2880
|
-
Example:
|
|
2881
|
-
```js
|
|
2882
|
-
let Authors = SELECT `ID` .from `Authors` .where `name like ${'%Brontë%'}`
|
|
2883
|
-
let Books = SELECT `ID,title` .from `Books` .where `author_ID in ${Authors}`
|
|
2884
|
-
await UPDATE`Books`.with`x = x-${amount}`.where`ID=${ID}`
|
|
2885
|
-
```
|
|
2886
|
-
|
|
2887
|
-
### Changed
|
|
2888
|
-
|
|
2889
|
-
- Minimum required Node.js version is now 12. Support for Node.js 10 is dropped.
|
|
2890
|
-
- `req.timestamp` is a Date object now; was a UNIX epoch integer before, i.e., Date.now()
|
|
2891
|
-
|
|
2892
|
-
### Fixed
|
|
2893
|
-
|
|
2894
|
-
- Fixed race conditions in `cds.serve` leading to broken services
|
|
2895
|
-
- Fixed typos in API type definitions
|
|
2896
|
-
- Fixed `cds.reflect.forall` for CSN extensions
|
|
2897
|
-
- Fixed orphaned `_texts` proxies, causing init from csv to fail with "no such table" errors
|
|
2898
|
-
|
|
2899
|
-
## Version 5.0.0 - 2021-03-19
|
|
2900
|
-
|
|
2901
|
-
### Added
|
|
2902
|
-
|
|
2903
|
-
- MTX APIs are now automatically served when `cds.requires.multitenancy` exists. This renders an application-level server start script for multitenancy unnecessary.
|
|
2904
|
-
- Auto-connect to a live reload server started by `cds watch`
|
|
2905
|
-
- `cds.parse` now offers tagged template strings. E.g. const {CDL,CQL,CXL} = cds.parse; CQL`SELECT from Books where stock > 111`.
|
|
2906
|
-
- `cds.log` now supports config options for Loggers and log levels via `cds.env.log`
|
|
2907
|
-
- `cds.entity.draft` as a stable way to read from draft data
|
|
2908
|
-
- `cds.linked` now correctly links, events, action params and results, which were not linked before
|
|
2909
|
-
- `cds.env.features.skip_unused = 'all'` removes all definitions from csn which are not reachable by defined services. Especially when using comprehensive reuse models, like ODM, this significantly reduces both, memory consumption as well as excess tables and views in databases
|
|
2910
|
-
|
|
2911
|
-
### Changed
|
|
2912
|
-
|
|
2913
|
-
- Upgraded major version of dependency `@sap/cds-compiler`
|
|
2914
|
-
- `cds.requires.db.multiTenant` is deprecated. Multitenancy can now be enabled by adding a `cds.requires.multitenancy` configuration.
|
|
2915
|
-
- `cds deploy --to hana` no longer adds a driver for SAP HANA to `package.json`. This can be done with `cds add hana`.
|
|
2916
|
-
- `cds deploy --to hana` no longer adds configuration for SAP HANA to `package.json`. This can be done with `cds add hana`.
|
|
2917
|
-
- `cds deploy --to hana` drops support for the classic CAP Java runtime, i.e. longer writes credentials for SAP HANA to `connection.properties`.
|
|
2918
|
-
- Fiori preview now [loads and shows data initially](https://sapui5.hana.ondemand.com/1.84.0/#/topic/1cf5c7f5b81c4cb3ba98fd14314d4504) in its list page
|
|
2919
|
-
- I18n template strings now are replaced in EDMX documents such that they retain their surrounding string. For example, the `"{i18n>key1} - {i18n>key2}"` template results in `"value1 - value2"`, while previously the first match replaced the entire string, leading to `"value1"`. This is helpful for the [`Template` strings of `UI.ConnectedFields`](https://github.com/SAP/odata-vocabularies/blob/ac9fe832df9b8c8d35517c637dba7c0ac2753b0f/vocabularies/UI.xml#L168).
|
|
2920
|
-
- CDS drops compiler v2 support for classic CAP Java runtime projects. `cds build` returns an error if compiler version 2 is used. For further details regarding migration to CAP Java SDK runtime see https://cap.cloud.sap/docs/java/migration.
|
|
2921
|
-
|
|
2922
|
-
### Fixed
|
|
2923
|
-
|
|
2924
|
-
- `cds.connect.to` no longer returns `undefined` in concurrent cases where `connect` is called again while a datasource is about to be connected.
|
|
2925
|
-
- `cds.log` formerly wrote log and debug output to stderr, now writes that to stdout
|
|
2926
|
-
- `cds.server` now accepts port `0` as a number
|
|
2927
|
-
- Race conditions in `cds.serve` and `cds.connect` lead to wrong Service instances to lost handler registrations
|
|
2928
|
-
|
|
2929
|
-
### Removed
|
|
2930
|
-
|
|
2931
|
-
- Compiler non-snapi support → see `cds.env.features.snapi` option
|
|
2932
|
-
- In recent releases we added methods `cds.compile.to.hdbtabledata` and `cds.compile.to.hdbmigration`, intentionally undocumented, as they were meant to be private. Nobody should ever have used these methods, hence nobody should be affected by their removal.
|
|
2933
|
-
|
|
2934
|
-
## Version 4.6.5 - 2021-03-12
|
|
2935
|
-
|
|
2936
|
-
### Fixed
|
|
2937
|
-
|
|
2938
|
-
- `cds build` now correctly parses `.hdbtablemigration` files on Windows
|
|
2939
|
-
- `compile --to serviceinfo` no longer crashes for Spring configuration in multi-root `yaml` files
|
|
2940
|
-
|
|
2941
|
-
## Version 4.6.4 - 2021-03-01
|
|
2942
|
-
|
|
2943
|
-
### Fixed
|
|
2944
|
-
|
|
2945
|
-
- Fix call to `to.hdi.migration` compiler API
|
|
2946
|
-
- `cds build` for SAP HANA now correctly passes `sql_mapping` options to new hdimigration compiler API.
|
|
2947
|
-
|
|
2948
|
-
## Version 4.6.3 - 2021-02-26
|
|
2949
|
-
|
|
2950
|
-
### Added
|
|
2951
|
-
|
|
2952
|
-
- [beta] `cds build` for SAP HANA now provides schema evolution support for multitenant application extensions.
|
|
2953
|
-
|
|
2954
|
-
### Fixed
|
|
2955
|
-
|
|
2956
|
-
- `cds compile --to serviceinfo` returns better results for Java projects
|
|
2957
|
-
- `cds.connect.to('srv-missing')` called twice with `srv-missing` not configured, would have failed with an error on the first call, but got stuck in the Promise chain for all subsequent calls.
|
|
2958
|
-
- `.after` handlers are called with result based on request, e.g., array for collection and object for entity, instead of always array
|
|
2959
|
-
- Deactivate during two month grace period via compat feature flag `cds.env.features.arrayed_after = true`
|
|
2960
|
-
|
|
2961
|
-
## Version 4.6.1 - 2021-02-11
|
|
2962
|
-
|
|
2963
|
-
### Added
|
|
2964
|
-
|
|
2965
|
-
- [beta] `cds build` for SAP HANA now supports the generation of `hdbmigrationtable` design-time artifacts for big volume tables allowing for schema evolution capabilities. Model entities annotated with `@cds.persistence.journal` will be deployed as `hdbmigrationtable` artifacts instead of `hdbtable`.
|
|
2966
|
-
|
|
2967
|
-
## Version 4.5.3 - 2021-02-19
|
|
2968
|
-
|
|
2969
|
-
### Fixed
|
|
2970
|
-
|
|
2971
|
-
- `cds deploy` and `build` now refer to the latest HDI deployer which supports Node.js 14
|
|
2972
|
-
|
|
2973
|
-
## Version 4.5.2 - 2021-02-17
|
|
2974
|
-
|
|
2975
|
-
### Fixed
|
|
2976
|
-
|
|
2977
|
-
- `cds serve --with-mocks` now also works in `production` environment if `cds.features.mocked_bindings` is true. Previously, mocks were always disabled in `production`.
|
|
2978
|
-
- `cds serve` now only fires the `listening` event once
|
|
2979
|
-
- `cds build` redacts cds configuration data in log messages
|
|
2980
|
-
|
|
2981
|
-
## Version 4.5.1 - 2021-02-01
|
|
2982
|
-
|
|
2983
|
-
### Fixed
|
|
2984
|
-
|
|
2985
|
-
- Update `@sap/cds-runtime` dependency
|
|
2986
|
-
|
|
2987
|
-
## Version 4.5.0 - 2021-02-01
|
|
2988
|
-
|
|
2989
|
-
### Added
|
|
2990
|
-
|
|
2991
|
-
- `cds.server` provides an option to switch off automatically generated `index.html` served at `/`:
|
|
2992
|
-
Do that in a custom `server.js`:
|
|
2993
|
-
```js
|
|
2994
|
-
const cds = require('@sap/cds')
|
|
2995
|
-
// ...
|
|
2996
|
-
module.exports = (o) => cds.server({ ...o, index:false })
|
|
2997
|
-
```
|
|
2998
|
-
- The default `index.html` now honors the system's setting for dark mode.
|
|
2999
|
-
- Former package `@sap/cds-reflect` is now embedded in `@sap/cds`
|
|
3000
|
-
|
|
3001
|
-
### Changed
|
|
3002
|
-
|
|
3003
|
-
- Fiori preview is now disabled if `NODE_ENV` is `production`, to avoid any runtime overhead there. You can enable it with configuration `cds.features.fiori_preview: true`.
|
|
3004
|
-
|
|
3005
|
-
### Fixed
|
|
3006
|
-
|
|
3007
|
-
- `cds build` now correctly supports multitenant applications defining multiple database modules, e.g. one database for tenant related data and one for shared data.
|
|
3008
|
-
- `cds deploy --to hana` does no longer fail with an invalid service name error if '.' is used in the MTA ID.
|
|
3009
|
-
|
|
3010
|
-
## Version 4.4.10 - 2021-01-18
|
|
3011
|
-
|
|
3012
|
-
### Changed
|
|
3013
|
-
|
|
3014
|
-
- `cds build` for SAP HANA now only filters csv files if it's needed, e.g. if they contain comment lines.
|
|
3015
|
-
|
|
3016
|
-
## Version 4.4.9 - 2021-01-12
|
|
3017
|
-
|
|
3018
|
-
### Fixed
|
|
3019
|
-
- `cds build` for SAP HANA no longer fails sporadically with `ENOENT` when writing CSV files.
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
## Version 4.4.8 - 2021-01-07
|
|
3023
|
-
|
|
3024
|
-
### Fixed
|
|
3025
|
-
|
|
3026
|
-
- Add missing setter for `user.locale`
|
|
3027
|
-
|
|
3028
|
-
## Version 4.4.7 - 2020-12-18
|
|
3029
|
-
|
|
3030
|
-
### Fixed
|
|
3031
|
-
|
|
3032
|
-
- `cds build` for Java now also creates a default edmx file (the one w/o language suffix) if the `cds.i18n.languages` array is configured with a set of languages. Runtime systems expect this file.
|
|
3033
|
-
- `cds build` now skips empty lines in CSV files when preparing SAP HANA deployment. This doesn’t happens if the build target folder is `.`, because there CSV files are sources that are not touched.
|
|
3034
|
-
- `cds build` for SAP HANA now writes CSV files more reliably, avoiding sporadic `ENOENT` errors.
|
|
3035
|
-
|
|
3036
|
-
## Version 4.4.6 - 2020-12-08
|
|
3037
|
-
|
|
3038
|
-
### Fixed
|
|
3039
|
-
|
|
3040
|
-
- Compat `.emit()` for synchronous events with object as first parameter
|
|
3041
|
-
|
|
3042
|
-
## Version 4.4.5 - 2020-12-07
|
|
3043
|
-
|
|
3044
|
-
### Fixed
|
|
3045
|
-
|
|
3046
|
-
- Revert of _cds serve --at / now can overwrite the default /index.html route_, which caused problems in some applications
|
|
3047
|
-
|
|
3048
|
-
## Version 4.4.4 - 2020-12-04
|
|
3049
|
-
|
|
3050
|
-
### Added
|
|
3051
|
-
|
|
3052
|
-
- `cds.User.default` allows to override the default user, e.g. to be `cds.User.Privileged` in tests. By default this is `cds.User.Anonymous`.
|
|
3053
|
-
|
|
3054
|
-
### Changed
|
|
3055
|
-
|
|
3056
|
-
- `cds compile` and `build` now do a faster localization of edmx files. If there are no text keys inside these files, the content is no longer duplicated in memory.
|
|
3057
|
-
- `cds serve --at /` now can overwrite the default `/index.html` route
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
## Version 4.4.3 - 2020-12-03
|
|
3061
|
-
|
|
3062
|
-
### Fixed
|
|
3063
|
-
|
|
3064
|
-
- `srv.on` can now be used for async events w/o having to call `next` in each handler
|
|
3065
|
-
- `srv.emit` constructs instances of `cds.Event` from given arguments, as intended
|
|
3066
|
-
- `srv.send` constructs instances of `cds.Request` from given arguments
|
|
3067
|
-
- Revert of: `cds build` filters `i18n` files for nodejs staging builds
|
|
3068
|
-
|
|
3069
|
-
## Version 4.4.2 - 2020-12-01
|
|
3070
|
-
|
|
3071
|
-
### Added
|
|
3072
|
-
|
|
3073
|
-
- `cds.context` always allows access to the current request context when running in Node v12.18 and higher. It uses Node.js' `async_hooks` API for so-called continuation-local storage, and supercedes the need for `srv.tx(req)` in custom handlers.
|
|
3074
|
-
- Custom functions/actions can now be implemented with plain JavaScript methods in subclasses of `cds.Service`
|
|
3075
|
-
|
|
3076
|
-
### Changed
|
|
3077
|
-
|
|
3078
|
-
- `cds.unfold` was long-term deprecated, and removed now → use `cds.compile`
|
|
3079
|
-
- `cds.config` was long-term deprecated, and removed now → use `cds.env`
|
|
3080
|
-
- `cds.session` was long-term deprecated, and removed now → use `cds.db`
|
|
3081
|
-
|
|
3082
|
-
## Version 4.4.1 - 2020-11-27
|
|
3083
|
-
|
|
3084
|
-
### Fixed
|
|
3085
|
-
|
|
3086
|
-
- When two services `Foo` and `FooBar` were defined, with one services's name being a substring of the other service's name,
|
|
3087
|
-
it may have happened that the same EDMX, i.e. that of `FooBar`, was erroneously returned for both.
|
|
3088
|
-
- On Windows, the index page now shows normalized links to embedded html pages, i.e. `foo/bar.html` instead of `foo\bar.html`.
|
|
3089
|
-
- `cds build` now consistently uses build target folder `'.'` as default for Java projects - also if custom build tasks have been defined.
|
|
3090
|
-
- Requests that contain `*` as `Accept-Language` header value do no longer fail.
|
|
3091
|
-
|
|
3092
|
-
## Version 4.4.0 - 2020-11-18
|
|
3093
|
-
|
|
3094
|
-
### Changed
|
|
3095
|
-
|
|
3096
|
-
- Propagate correlation id header to subrequests
|
|
3097
|
-
|
|
3098
|
-
### Fixed
|
|
3099
|
-
|
|
3100
|
-
- `cds.debug` now reacts on the `DEBUG` environment variable set in a `.env` file
|
|
3101
|
-
- `cds build` filters `i18n` files for nodejs staging builds
|
|
3102
|
-
- Language headers with values `en-US-x-[saptrc, sappsd]` are now mapped to user locale `en-US-[saptrc, sappsd]`.
|
|
3103
|
-
- Messages are kept in their respective request (i.e., not propagated to the request's context, if exists)
|
|
3104
|
-
- Log requests in atomicity groups
|
|
3105
|
-
- `cds build` now creates correct custom handler path for nodejs projects in WebIDE fullstack.
|
|
3106
|
-
|
|
3107
|
-
## Version 4.3.2 - 2020-12-18
|
|
3108
|
-
|
|
3109
|
-
### Fixed
|
|
3110
|
-
|
|
3111
|
-
- use `@sap/cds-runtime~2.6`
|
|
3112
|
-
|
|
3113
|
-
## Version 4.3.1 - 2020-11-20
|
|
3114
|
-
|
|
3115
|
-
### Fixed
|
|
3116
|
-
|
|
3117
|
-
- `cds build` now creates correct custom handler path for nodejs projects in WebIDE fullstack.
|
|
3118
|
-
|
|
3119
|
-
## Version 4.3.0 - 2020-11-03
|
|
3120
|
-
|
|
3121
|
-
### Added
|
|
3122
|
-
|
|
3123
|
-
- Helper function `cds.utils.uuid` to generate a UUID
|
|
3124
|
-
- Support `SELECT[...].limit(0, ...)`
|
|
3125
|
-
- `hdbtabledata` generation can be disabled using `cds build` task option `skipHdbtabledataGeneration`.
|
|
3126
|
-
|
|
3127
|
-
### Changed
|
|
3128
|
-
|
|
3129
|
-
- Optimized `cds build` performance when creating OData EDMX output.
|
|
3130
|
-
|
|
3131
|
-
### Fixed
|
|
3132
|
-
|
|
3133
|
-
- `cds build` now classifies the severity of compile messages the same way as the low-level compiler. As a consequence, messages with severity _warning_ might now be classified as _error_.
|
|
3134
|
-
- Now, cds CLI logs errors based on _log-level_ setting.
|
|
3135
|
-
- `cds compile --to sql` no longer creates SQLite-specific views if in `hana` SQL dialect
|
|
3136
|
-
- The `node-cf` build task of `cds build` now also filters `./` file dependencies from package.json in the build output.
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
# Version 4.2.8 - 2020-10-27
|
|
3140
|
-
|
|
3141
|
-
### Fixed
|
|
3142
|
-
|
|
3143
|
-
- `cds compile --to edmx --dest` creates files with `.xml` ending again.
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
# Version 4.2.7 - 2020-10-26
|
|
3147
|
-
|
|
3148
|
-
### Fixed
|
|
3149
|
-
|
|
3150
|
-
- SAP Fiori Elements preview finds the `express` package again in the case where no `express` is installed in the application's `node_modules`.
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
# Version 4.2.6 - 2020-10-26
|
|
3154
|
-
|
|
3155
|
-
### Fixed
|
|
3156
|
-
|
|
3157
|
-
- `cds run` finds the `express` package again in the case where no `express` is installed in the application's `node_modules`.
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
# Version 4.2.5 - 2020-10-23
|
|
3161
|
-
|
|
3162
|
-
### Fixed
|
|
3163
|
-
|
|
3164
|
-
- `cds compile --to edmx-v2` and `edmx-v4` now again write to the folder given with `--dest`.
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
# Version 4.2.4 - 2020-10-16
|
|
3168
|
-
|
|
3169
|
-
### Fixed
|
|
3170
|
-
|
|
3171
|
-
- `cds compile --to edmx-v2/4` no longer crashes
|
|
3172
|
-
- `cds watch` no longer shows an error in absence of model files
|
|
3173
|
-
- `cds build` no longer fails with an error about module './old/compile'
|
|
3174
|
-
- Stack trace of some errors have been improved
|
|
3175
|
-
- The `.hdiconfig` file created by `cds build` now includes SAP HANA artifact types from undeploy.json
|
|
3176
|
-
|
|
3177
|
-
# Version 4.2.3 - 2020-10-12
|
|
3178
|
-
|
|
3179
|
-
### Fixed
|
|
3180
|
-
|
|
3181
|
-
- Leading `#` comments in CSV files sporadically caused `cds build` to fail on Windows with error `EPERM: operation not permitted`.
|
|
3182
|
-
- Method `req.user.is()` returns boolean
|
|
3183
|
-
|
|
3184
|
-
# Version 4.2.2 - 2020-10-07
|
|
3185
|
-
|
|
3186
|
-
## Added
|
|
3187
|
-
|
|
3188
|
-
- `cds.env.odata.containment` to use OData v4 Containment NavigationProperties feature
|
|
3189
|
-
- `cds.env.odata.structs` to preserve struct elements as ComplexTypes in OData EDMX instead of flattening
|
|
3190
|
-
- `cds.env.odata.refs` which uses NavigationProperties in OData EDMX instead of adding foreign keys
|
|
3191
|
-
- `cds.env.odata.proxies` to add proxy EntityTypes for external Association targets
|
|
3192
|
-
- `cds.env.odata.flavors` which contain presets for the afore-mentioned flags
|
|
3193
|
-
- `cds.env.odata.flavor` to choose from the afore-mentioned presets
|
|
3194
|
-
- `cds.load` option `plain` replacing former option `clean` (which still is silently supported for compatibility).
|
|
3195
|
-
- `cds.get` now supports option `flavor` with values: `files` | `sources` | `parsed` | `resolved` | `compiled`.
|
|
3196
|
-
- `sap.common.Currencies`, `Countries`, and `Languages` now have their `code` element annotated with `@Common.Text` pointing to the `name`. In SAP Fiori's value list with fixed values, this will show the `name` rather than the code itself. As before, this only has an effect if `@Common.TextArrangement` is set to `#TextOnly` on the entity the code list is used as `ValueList` for.
|
|
3197
|
-
|
|
3198
|
-
## Changed
|
|
3199
|
-
|
|
3200
|
-
- Replaced `cds.PrivilegedUser` with `cds.User.Privileged`
|
|
3201
|
-
- `cuid` in `@sap/cds/common` is now defined as an `aspect` to align it with the other definitions. The previous definition as `abstract entity` is equivalent and was only needed for historic reasons.
|
|
3202
|
-
- `cds deploy --to sqlite` now skips columns from csv files if the header value is empty. This allows for ad-hoc 'disabling' of columns. For SAP HANA, the generated `hdbtabledata` files now also skip empty columns, restoring the behavior from cds 3.
|
|
3203
|
-
- `cds deploy --to sqlite` has aligned its escaping rules for parsing csv data with SAP HANA's `hdbtabledata`. A `"` character can be escaped by another `"` as before, but only if contained in a quoted string, i.e. `"A""B"` leads to `A"B`, while `A""B` stays `A""B`, and `""` results in an empty string.
|
|
3204
|
-
|
|
3205
|
-
## Fixed
|
|
3206
|
-
|
|
3207
|
-
- A `manifest.yml` file is now also generated for nodejs applications if a sqlite database is used.
|
|
3208
|
-
- `cds build` did not correctly validate custom service handler implementations, warnings have been logged by mistake.
|
|
3209
|
-
- The default memory size for nodejs applications has been increased in `manifest.yml` to avoid out-of-memory issues for cloud native deployments.
|
|
3210
|
-
- `cds build` is now correctly creating external CSN output for Java multi-tenant applications.
|
|
3211
|
-
|
|
3212
|
-
# Version 4.1.10 - 2020-09-11
|
|
3213
|
-
|
|
3214
|
-
## Added
|
|
3215
|
-
|
|
3216
|
-
- Much like SQLite deployment, `cds deploy --to hana` and `cds build` can now cope with leading `#` comments in csv files, i.e. the comments get removed before deployment.
|
|
3217
|
-
- `cds deploy` now can handle empty strings in CSV values (use `""`)
|
|
3218
|
-
|
|
3219
|
-
## Fixed
|
|
3220
|
-
- `cds v` and `cds --version` now work again when called from `npm run` or `npx`.
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
# Version 4.1.9 - 2020-09-02
|
|
3224
|
-
|
|
3225
|
-
## Added
|
|
3226
|
-
|
|
3227
|
-
- `cds.PrivilegedUser`, e.g., for transactions with super user
|
|
3228
|
-
|
|
3229
|
-
# Version 4.1.8 - 2020-09-02
|
|
3230
|
-
|
|
3231
|
-
## Changed
|
|
3232
|
-
|
|
3233
|
-
- The `node-cf` build task of `cds build` now removes file dependencies in `package.json` in the build output. These are anyways not resolvable on CF, but are handy at build time to [refer to other CDS modules](https://github.com/SAP-samples/cloud-cap-samples/blob/6fdd91b8c810d4367aa6dfc0a91e06dc467686ed/bookshop/package.json#L6).
|
|
3234
|
-
- `cds deploy --to sqlite` can now cope with leading `#` comments in csv files
|
|
3235
|
-
- `cds version --all` now includes `@sap/cds-sidecar-client`
|
|
3236
|
-
|
|
3237
|
-
## Fixed
|
|
3238
|
-
|
|
3239
|
-
- `cds.entities` w/o namespace parameter now works properly when running out of a compiled model (aka `csn.json` aka 'on Cloud Foundry').
|
|
3240
|
-
- `cds deploy --to hana` now also handles SAP HANA Cloud services on trial, which are created by the `hana` broker (in contrast to the `hanatrial` broker which still provisions older SAP HANA instances).
|
|
3241
|
-
- `cds deploy --to hana` no longer uses `cf marketplace`, which has changed its parameters in CF CLI v7.
|
|
3242
|
-
- SAP Fiori Elements preview's html no longer provokes Javascript errors in the SAP Fiori client.
|
|
3243
|
-
- For DB services of kind `sql` the service implementation is now set correctly in the cds configuration. Previously, `sql` services got a `sqlite` implementation even if they were set to `hana` in production.
|
|
3244
|
-
- Custom event handlers that do not register with a path (only with event and function) no longer crash the runtime
|
|
3245
|
-
- In Typescript typings, the API declaration for `cds.load` and the `bootstrap` event is now fixed.
|
|
3246
|
-
|
|
3247
|
-
# Version 4.1.7 - 2020-08-17
|
|
3248
|
-
|
|
3249
|
-
## Added
|
|
3250
|
-
|
|
3251
|
-
- Shortcut to class `cds.ApplicationService` in cds facade
|
|
3252
|
-
- Shortcut to class `cds.DatabaseService` in cds facade
|
|
3253
|
-
- Shortcut to class `cds.RemoteService` in cds facade
|
|
3254
|
-
- Shortcut to class `cds.MessagingService` in cds facade
|
|
3255
|
-
- Shortcut to class `cds.Event` as new base class of `cds.Request`
|
|
3256
|
-
|
|
3257
|
-
## Fixed
|
|
3258
|
-
|
|
3259
|
-
- Race condition on two parallel `cds.connect` to same service
|
|
3260
|
-
- **`cds deploy --no-save`** extends the list of files it does not modify to `package.json`, `default-env.json` and `connection.properties`
|
|
3261
|
-
- **Add meaningful error message if hdi-deploy cannot be loaded** — during `cds deploy --to hana`.
|
|
3262
|
-
|
|
3263
|
-
# Version 4.1.6 - 2020-08-07
|
|
3264
|
-
|
|
3265
|
-
## Added
|
|
3266
|
-
|
|
3267
|
-
- `req.notify()` as a new varient besides `req.info()`, which should display as toaster notifications on Fiori elements or other UIs.
|
|
3268
|
-
|
|
3269
|
-
## Fixed
|
|
3270
|
-
|
|
3271
|
-
- `req.target` for unbound actions/functions is now `undefined` again, as documented
|
|
3272
|
-
- Handlers registered with `srv.on(<CRUD>, 'Some/path', ...)` were never invoked
|
|
3273
|
-
- Queries to remote services via `srv.on(..., ()=> other.read('Something'))` weren't sent to remote
|
|
3274
|
-
|
|
3275
|
-
# Version 4.1.5 - 2020-07-31
|
|
3276
|
-
|
|
3277
|
-
## Removed
|
|
3278
|
-
|
|
3279
|
-
The following changes affect undocumented internal implementations, and hence should not affect CAP-based projects.
|
|
3280
|
-
Nevertheless, they are listed here for your reference.
|
|
3281
|
-
|
|
3282
|
-
- `db.disconnect()` → no replacement; no need to disconnect before shutdown.
|
|
3283
|
-
- `db.run(()=>{})` → use `cds.run([...multiple queries])` instead.
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
## Changed
|
|
3287
|
-
|
|
3288
|
-
- **Most CLI commands have moved** to `@sap/cds-dk`. Make sure to install the latest version with `npm i -g @sap/cds-dk`.
|
|
3289
|
-
|
|
3290
|
-
- **Default OData version** in `cds configuration` is now `v4`. For `Node.js` projects and `Java` projects using new stack the cds configuration of `odata.version = 'v4'` is no longer required. For `Java` projects using old Java stack, OData v2 will still be used.
|
|
3291
|
-
|
|
3292
|
-
- **Always do `await cds.connect.to()`** — in former versions `cds.connect.to()` returned some magic thenables, meant to ease the [_Promise Hell_](https://medium.com/@pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513); now it always returns plain-standard Promises. Likely you never used this undocumented former behaviour, but in case: Just ensure to always call `cds.connect` with `await`.
|
|
3293
|
-
|
|
3294
|
-
- **Deprecated `cds.connect()`** — please prefer `cds.connect.to('db')` instead, which has the very same effect but is more in line with the notion of potentially working with multiple database services.
|
|
3295
|
-
|
|
3296
|
-
- **Deprecated `cds.hana.syntax` configuration**. Use `cds.hana.deploy-format`=`hdbtable` instead to switch deployment from `hdbcds` to `hdbtable` for SAP HANA Cloud.
|
|
3297
|
-
|
|
3298
|
-
- **Faster generation of `hdbtabledata` files** from csv data. It no longer tries to check the existence of element or column names. Such checks are anyways done during SAP HANA deployment. This behavior is now symmetrical to SQLite deployment.
|
|
3299
|
-
|
|
3300
|
-
- **Removed legacy cds build system** — the fallback using `cds.features.build.legacy` is no longer supported.
|
|
3301
|
-
|
|
3302
|
-
- **`cds deploy --to hana` changes kind** to `hana` only if it is not already `sql`.
|
|
3303
|
-
|
|
3304
|
-
- **Consistent default naming scheme for applications and services deployed to CF** across the following `cds` commands `build`, `deploy`, `init` and `add`. For an application named `myapp` the SAP HANA deployer app name is `myapp-db-deployer`, the SAP HANA DB service name is `myapp-db`. `cds build` now generates the application manifest file with a different name `manifest.yml`.
|
|
3305
|
-
|
|
3306
|
-
- **`cds build`** no longer creates service metadata for the UI service binding by default. For SAP Web IDE Full-Stack compatibility a corresponding metadata.xml is still generated. A `fiori` build task has to be defined otherwise.
|
|
3307
|
-
|
|
3308
|
-
- **`cds build` creates `hana` build results only** if either a corresponding build task has been configured or if kind `hana` or kind `sql` has been defined. A `production` build is required for the latter. A fallback is used for Web IDE Fullstack and legacy build configs.
|
|
3309
|
-
|
|
3310
|
-
## Added
|
|
3311
|
-
|
|
3312
|
-
- **Common `cds.service.factory`** — `cds.serve` and `cds.connect` now use a common `cds.service.factory` to construct instances of `cds.Service`, as well as adding custom-provided handlers and implementations. This applies the same consistent ways to register new implementations via `cds.env.requires` options, model annotations `@impl` and `@kind`, or the well known `.cds`/`.js` sibling files mechanism.
|
|
3313
|
-
|
|
3314
|
-
- **Common `cds.Service` base class** — `cds.Service` is the newly introduced common base class for all connected or provided services — i.e. all service instances contructed thru `cds.service.factory`. It provides uniform consumption APIs, as well as event handling APIs and capabilities for all services.
|
|
3315
|
-
|
|
3316
|
-
- **Custom `cds.Service` subclasses** — besides providing `cds.service.impl` functions as of before, custom service implementations can now return subclasses of `cds.Service`, thereby plugging into the framework even more.
|
|
3317
|
-
|
|
3318
|
-
- **New `srv.after('each', row => ...)`** — the former technique to register per-row handlers `srv.after('READ', each => ...)` broke when code was minified. The new method using pseudo event `'each'` is minifier-safe.
|
|
3319
|
-
|
|
3320
|
-
- **New `srv.prepend(srv => ...)`** — use `srv.prepend(...)` to register event handlers to be executed _before_ the already reistered handlers. For example, extensions of reused implementations sometimes need to use this.
|
|
3321
|
-
|
|
3322
|
-
- **Reflect `srv.events`** — base class `cds.Service` provides a new getter `srv.events` to reflect on declared events in the service definition, similar to the already existing `srv.entities`, `srv.types` and `srv.operations`.
|
|
3323
|
-
|
|
3324
|
-
- **Experimental `cds.ql(req)`** — event handlers can now use the like of `const {SELECT} = cds.ql(req)` to ensure transaction-managed and tenant-isolated execution of queries, instead of `srv.tx(req)`. **Note** though, that this is an **experimental** feature, which might change or be removed in future versions.
|
|
3325
|
-
|
|
3326
|
-
- **Using `await` in `cds repl`** — we now support using `await` directly on `cds repl` prompt inputs. This feature is provided through [Node's _--experimental-repl-await_ option](https://nodejs.org/api/repl.html#repl_await_keyword).
|
|
3327
|
-
|
|
3328
|
-
- **CLI shortcut `--odata <v2|v4|x4>`** — the newly introduced general CLI option _**--odata** <v2/v4>_ acts as a shortcut to _--odata-version <v2/v4>_. In addition, _--odata **x4**_ acts as shortcut to _--odata-version v4 --odata-format structured --odata-containement true_.
|
|
3329
|
-
|
|
3330
|
-
- **`cds build --production`** — builds the project using the `production` profile - same when `NODE_ENV` or `CDS_ENV` environment variable is set to `production`. This will create HANA deployment artifacts if `kind: "sql"` has been defined.
|
|
3331
|
-
|
|
3332
|
-
- **`cds build --for <hana|java-cf|node-cf|mtx> --opts <...>`** — now supports execution of auto-created or configured build tasks. Individual properties can be overwritten by passing corresponding CLI options, defaults are used otherwise. For example, `cds build --for hana --dest target --opts model=[data,srv,app]`. **Note:** The parameter `options-model` has been deprecated use `--opts model=[...]`instead.
|
|
3333
|
-
|
|
3334
|
-
- The set of languages that is honored for the `i18n.json` language pack can now be configured through `i18n.languages`. Default is still `all`, which means the sum of language files found next to models.
|
|
3335
|
-
|
|
3336
|
-
## Fixed
|
|
3337
|
-
- SAP Fiori Elements preview is now working again with the latest version of SAP UI5.
|
|
3338
|
-
|
|
3339
|
-
- **Use latest SAP CommonCryptoLib help** — when SAP CommonCryptoLib is missing during `cds deploy --to hana`.
|
|
3340
|
-
|
|
3341
|
-
- `sql_mapping` is only written to `csn.json` if the classic Java runtime and no default naming is used.
|
|
3342
|
-
|
|
3343
|
-
- SAP Fiori Elements dev support in `cds run` now also honors `/v2` URLs. These are installed by default by the `@sap/cds-odata-v2-adapter-proxy`.
|
|
3344
|
-
|
|
3345
|
-
- npm scripts that wrap around cds-dk commands like `cds watch` now also work on Windows. Previously they couldn't find the cds command.
|
|
3346
|
-
|
|
3347
|
-
- When extracting the base model of a multi-tenant application `cds build` now ensures that only files having project scope are copied, a warning is logged otherwise.
|
|
3348
|
-
|
|
3349
|
-
- `cds build` now no longer crashes if exactly one custom language is given in `options.lang` of the `java-cf` build task.
|
|
3350
|
-
|
|
3351
|
-
- `cds compile` now fails with a non-zero exit code in case of compilation errors.
|
|
3352
|
-
|
|
3353
|
-
# Version 3.35.0 - 2020-05-08
|
|
3354
|
-
|
|
3355
|
-
## Changed
|
|
3356
|
-
- The new compiler implementation, a.k.a SNAPI, is now the default. Can be disabled with `cds.features.snapi=false`.
|
|
3357
|
-
|
|
3358
|
-
# Version 3.34.3 - 2020-06-19
|
|
3359
|
-
|
|
3360
|
-
## Changed
|
|
3361
|
-
|
|
3362
|
-
- Faster generation of `hdbtabledata` files from csv data. It no longer tries to check the existence of element or column names. Such checks are anyways done during SAP HANA deployment. This behavior is now symmetrical to SQLite deployment.
|
|
3363
|
-
|
|
3364
|
-
# Version 3.34.2 - 2020-05-30
|
|
3365
|
-
|
|
3366
|
-
## Changed
|
|
3367
|
-
|
|
3368
|
-
- Use `cds.hana.deploy-format`=`hdbtable` instead of `cds.hana.syntax` to switch deployment from `hdbcds` to `hdbtable` for SAP HANA Cloud.
|
|
3369
|
-
- `cds run` now supports relative `dataSource` URLs in SAP UI5 manifests again, so that UI5 apps can be served w/o approuter. This support is only active in development mode.
|
|
3370
|
-
- `cds deploy --to hana` changes kind to `hana` only if it is not already `sql`
|
|
3371
|
-
|
|
3372
|
-
## Fixed
|
|
3373
|
-
|
|
3374
|
-
- The `UI.Identification` annotation for `sap.common.CodeList` got a correct value, pointing to its `name` element.
|
|
3375
|
-
- Configuration `requires.<foo>.credentials.destination` is now preserved again when running with `VCAP_SERVICES`. In version 3.34.1 it was cleared.
|
|
3376
|
-
- Entities annotated with `@cds.persistence.skip:if-unused` (like `sap.common.Languages`) now again are skipped when compiling to SAP HANA output. This got broken in previous versions when using the new compiler APIs.
|
|
3377
|
-
- `sql_mapping` is again written to `csn.json` as it's required by classic Java runtime.
|
|
3378
|
-
- `default-env.json` is now read even in production, which is in line with the behavior of other modules that honor this file. Real prod environments like CF will still overwrite these defaults.
|
|
3379
|
-
- `cds build` caused error `invalid option` — when passing command line options like `log-level`, `src` or `for`.
|
|
3380
|
-
|
|
3381
|
-
# Version 3.34.0 - 2020-04-27
|
|
3382
|
-
|
|
3383
|
-
## Added
|
|
3384
|
-
|
|
3385
|
-
- `cds version` option `-ls` prints an `npm ls` subtree.
|
|
3386
|
-
- `cds serve` / `run` now also accept package names as arguments, e.g. `cds serve --project @capire/bookshop`.
|
|
3387
|
-
- `cds compile` option `--parse` provides minimal, parsed-only CSN output.
|
|
3388
|
-
- New Node.js method `cds.compile()` allows compiling CDS sources in-process.
|
|
3389
|
-
- `cds build` now supports cds configuration `requires.db.kind:"sql"` which allows seamless production deployments using HANA db and development deployments using sqlite db.
|
|
3390
|
-
- Default maximum query size limit of 1000 (overridable via `@cds.query.limit.max`).
|
|
3391
|
-
- Improved error message during `cds deploy` on Windows when `SAP CommonCryptoLib` is missing.
|
|
3392
|
-
- `cds build` now checks that `entity-whitelist` and `service-whitelist` have been defined for SaaS applications - a warning is reported otherwise. `cds build` will fail if invalid entries exist.
|
|
3393
|
-
- Parameter `--vcap-file` lets `cds deploy --to hana` use an existing `default-env.json` file for the deployment credentials, instead of always creating new credentials from Cloud Foundry. Note that this is a beta feature.
|
|
3394
|
-
- `cds build --log-level` allows to choose which messages to see, default log level is `warn`.
|
|
3395
|
-
- Labels of `@sap/cds/common` texts are now available in many languages
|
|
3396
|
-
|
|
3397
|
-
## Changed
|
|
3398
|
-
|
|
3399
|
-
- Node.js method `cds.parse()` has been changed to now truely return parsed-only models, with extensions not applied yet.
|
|
3400
|
-
**Note:** If you'need the former (erroneous) behaviour, please use `cds.compile` for that from now on.
|
|
3401
|
-
- Node.js method `cds.get()` now returns parsed-only models; same as `cds.parse()`.
|
|
3402
|
-
- `cds serve` / `run` / `watch` now reduce logging of details for the bound DB on connect, leading to less clutter.
|
|
3403
|
-
- Precision for `validTo` and `validFrom` defined in the `temporal` aspect in `@sap/cds/common` changed from `DateTime` to `Timestamp`.
|
|
3404
|
-
- Some administrative fields of SAP Fiori draft documents are now hidden on the UI. The rest got labels.
|
|
3405
|
-
- Renamed cds configuration setting `features.messageLevel` to `log-level` to be consistent with command line option, e.g. `cds build --log-level`.
|
|
3406
|
-
|
|
3407
|
-
- `cds extend` and `cds activate` commands have been moved to `@sap/cds-dk`. `cds disconnect` has been moved there under a different name.
|
|
3408
|
-
|
|
3409
|
-
## Fixed
|
|
3410
|
-
- `cds build` - improvements in the area of error handling and error reporting.
|
|
3411
|
-
- `cds env` and Node.js runtime now properly complete configuration like `requires.db.kind.sql` with VCAP_SERVICES, so that in `production` an SAP HANA service is bound.
|
|
3412
|
-
- `cds build` now localizes edmx files properly if `cds.env.features.snapi` is turned on.
|
|
3413
|
-
- `cds deploy --to hana` no longer crashes if called with `NODE_ENV=production`.
|
|
3414
|
-
|
|
3415
|
-
## Removed
|
|
3416
|
-
|
|
3417
|
-
# Version 3.33.1 - 2020-03-24
|
|
3418
|
-
|
|
3419
|
-
## Fixed
|
|
3420
|
-
- `cds build` now correctly supports options.model definitions of type string
|
|
3421
|
-
- Details navigation in Fiori preview works again since it's pinned to SAP UI5 1.73. Actual cause still needs to be investigated.
|
|
3422
|
-
- `cds deploy` now adds `@sap/hana-client` to package.json instead of `hdb`.
|
|
3423
|
-
- `cds deploy` adds kind `sql` to requires section.
|
|
3424
|
-
|
|
3425
|
-
# Version 3.33.0 - 2020-03-19
|
|
3426
|
-
|
|
3427
|
-
## Added
|
|
3428
|
-
- `cds deploy` uses information from existing `default-env.json`.
|
|
3429
|
-
|
|
3430
|
-
- `cds version` now also lists all dependencies of your local package.json and has an updated CLI commend help, documenting option `--all`.
|
|
3431
|
-
- `cds compile` option `--docs` preserve contents of `/** ... */` doc comments in CSN output as well as in EDMX outputs (as _Core.Description_ annotations).
|
|
3432
|
-
- `cds compile` option `--clean` tells the compiler to not add any derived information, but return a CSN which reflects only what was actually found in a `.cds` source.
|
|
3433
|
-
- `cds serve` option `--watch` starts the specific serve command in nodemon watch mode
|
|
3434
|
-
- Node.js: `cds.env` now supports camel case env variables as well as dot-notated keys in `.env`
|
|
3435
|
-
|
|
3436
|
-
## Changed
|
|
3437
|
-
|
|
3438
|
-
- Labels for the `createdAt` and `changedAt` in the `@sap/cds/common#managed` entity have been adjusted to reflect the SAP Fiori design guidelines.
|
|
3439
|
-
- `cds build` now delegates to the modular build system by default (known as `cds build/all`). The modular build system is compatible, but supports additional features, e.g. staging build, SAP HANA Cloud Edition support, populating initial data from .csv by generating .hdbtabledata files, etc. The legacy build is still available as a fallback in case of issues - use setting `cds.features.build.legacy: true` or ENV variable `CDS_FEATURES_BUILD_LEGACY=true`.
|
|
3440
|
-
|
|
3441
|
-
## Fixed
|
|
3442
|
-
|
|
3443
|
-
- `cds build` now correctly logs warnings returned by cds compiler. The message log level can be customized using cds configuration setting `cds.features.messageLevel` - default is `warn`.
|
|
3444
|
-
- `cds.env.roots` now properly picks up a changed value of `cds.env.folders`
|
|
3445
|
-
- `hdbtabledata` is no longer generated for entities that are marked with `@cds.persistence.skip`
|
|
3446
|
-
|
|
3447
|
-
## Removed
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
# Version 3.32.0 - 2020-03-06
|
|
3451
|
-
|
|
3452
|
-
## Fixed
|
|
3453
|
-
- An issue where all Node.js runtime sessions where disconnected when one tenant offboarded.
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
# Version 3.31.2 - 2020-03-05
|
|
3457
|
-
|
|
3458
|
-
## Fixed
|
|
3459
|
-
- `cds deploy` does not crash if _texts.csv is provided for skipped entities
|
|
3460
|
-
- `cds serve foo.cds` does no longer load same model twice
|
|
3461
|
-
- `cds compile --to edmx` no longer creates files with csn instead of edmx content in case no language bundles are found
|
|
3462
|
-
- Both `cds env` and `cds compile` no longer write terminal escape sequences if only stdout is redirected, but not stderr.
|
|
3463
|
-
- No longer enforce Node.js version 8 in `db/package.json`. Cloud Foundry environment does not support it anymore, as this version is out of maintenance.
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
# Version 3.31.1 - 2020-02-26
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
## Fixed
|
|
3470
|
-
|
|
3471
|
-
- Removed `npm-shrinkwrap.json`
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
# Version 3.31.0 - 2020-02-25
|
|
3475
|
-
|
|
3476
|
-
## Added
|
|
3477
|
-
|
|
3478
|
-
Generation of `hdbtabledata` files now reports if CSV file names don't match entity names, and if header names don't match element names in an entity. Watch out for such logs in case CSV files are not deployed to SAP HANA.
|
|
3479
|
-
|
|
3480
|
-
## Fixed
|
|
3481
|
-
|
|
3482
|
-
- `cds compile --to hdbtabledata` no longer crashes with `_texts.csv` files referring to a non-`localized` entity
|
|
3483
|
-
- `cds build/all` adds `app` folder to the list of model folders for HANA database builds. Draft tables are missing if the corresponding annotation model is missing.
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
# Version 3.30.0 - 2020-02-10
|
|
3487
|
-
|
|
3488
|
-
## Added
|
|
3489
|
-
|
|
3490
|
-
- `cds compile --log-level` allows to choose which messages to see
|
|
3491
|
-
- `cds deploy --dry` prints DDL statements to stdout instead of executing them
|
|
3492
|
-
- `cds deploy --with-mocks` also adds tables for required services
|
|
3493
|
-
- `cds serve --mocked` allows mocking individual required services
|
|
3494
|
-
- ( → learn more about these things using `cds help ...` )
|
|
3495
|
-
- `cds.env` now also loads from `.env` files in properties format
|
|
3496
|
-
- [`cds.resolve/load('*')`](https://cap.cloud.sap/docs/node.js/api#cds-load) resolves or loads all models in a project including those for required services. It ist controlled and configurable through `cds.env.folders` and `.roots``. Try this in `cds repl` launched from your project root to see that in action:
|
|
3497
|
-
```js
|
|
3498
|
-
cds.env.folders // = folders db, srv, app by default
|
|
3499
|
-
cds.env.roots // + schema and services in cwd
|
|
3500
|
-
cds.resolve('*',false) // + models in cds.env.requires
|
|
3501
|
-
cds.resolve('*') // > the resolved existing files
|
|
3502
|
-
```
|
|
3503
|
-
|
|
3504
|
-
- Added `cds.debug(<id>)` as a convenient helper for debug output controlled by `process.env.DEBUG`. For example, use it as follows:
|
|
3505
|
-
```js
|
|
3506
|
-
const DEBUG = cds.debug('my-module')
|
|
3507
|
-
DEBUG && DEBUG ('my debug info:', foo, ...)
|
|
3508
|
-
```
|
|
3509
|
-
```sh
|
|
3510
|
-
> DEBUG=my-module cds run
|
|
3511
|
-
```
|
|
3512
|
-
|
|
3513
|
-
- Added `cds.error(<msg>)` as a convenient helper for throwing errors whose stack traces start from the actual point of invocation. For example, use it as follows:
|
|
3514
|
-
```js
|
|
3515
|
-
const {error} = cds
|
|
3516
|
-
if (...) throw error `Something's wrong with ${whatever}`
|
|
3517
|
-
const foo = bar || error `Bar is missing!` // short circuit exits
|
|
3518
|
-
```
|
|
3519
|
-
|
|
3520
|
-
## Changed
|
|
3521
|
-
|
|
3522
|
-
This version brings a major refactoring and streamlining of service runtime implementations,
|
|
3523
|
-
which stays fully compatible regarding all documented APIs but in case you used internal
|
|
3524
|
-
not documented (non-)APIs, you should know these:
|
|
3525
|
-
|
|
3526
|
-
Removed undocumented features
|
|
3527
|
-
|
|
3528
|
-
- Annotation `@source` from models loaded for runtime
|
|
3529
|
-
- Property `cds.serve.app` → use `cds.app` instead
|
|
3530
|
-
- Property `source` from CSN entity/view definition objects
|
|
3531
|
-
|
|
3532
|
-
> It's very unlikely that you ever used these undocumented internal features at all.
|
|
3533
|
-
> In case you did, this should never have been done and you should fix that asap.
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
Deprecated features (→ might get removed in upcoming versions)
|
|
3537
|
-
|
|
3538
|
-
- Property `cds.session` → use `cds.db` instead
|
|
3539
|
-
- Property `cds.options` → use `cds.db.options` instead
|
|
3540
|
-
- Property `cds.unfold` → use `cds.compile` instead
|
|
3541
|
-
- Property `cds.config` → use `cds.env` instead
|
|
3542
|
-
|
|
3543
|
-
> These properties actually where duplicates to the mentioned alternatives.
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
`cds run` and `cds watch` have been re-implemented as convenience shortcuts to `cds serve`, which acts as the central orchestrator for bootstrapping now. (→ see `cds run ?` or `cds watch ?` to learn more)
|
|
3547
|
-
|
|
3548
|
-
`cds serve` now optionally bootstraps from project-local `./server.js` or `./srv/server.js`, if exist, thus giving more control while still benefitting from `cds serve`'s intrinsic support for options like `--in-memory` or `--with-mocks`.
|
|
3549
|
-
|
|
3550
|
-
`cds serve` now uses `cds.load('*')` to load a single effective model once, assigned to `cds.model`, and reused for db as well as all provided and required services . As that avoids loading models redundantly, it drastically improves both, bootstrapping performance as well as memory consumption.
|
|
3551
|
-
|
|
3552
|
-
`cds deploy` does not (have to) register the default models to `package.json` anymore. For example, unlike before, `cds deploy -2 sqlite` will merely add an entry: `db:{kind:'sqlite'}`, without an additional `model` property anymore.
|
|
3553
|
-
|
|
3554
|
-
`cds deploy --to hana` does not create `connection.properties` file any longer, but only modify existing one
|
|
3555
|
-
|
|
3556
|
-
`modifiedAt` and `modifiedBy` from `@sap/cds/common`
|
|
3557
|
-
- Are now mutable for OData, i.e. no longer carry the `@Core.Immutable: true` annotation.
|
|
3558
|
-
- Are set by the Node.js runtime whenever the respective row was modified, i.e. also during `CREATE` operations.
|
|
3559
|
-
|
|
3560
|
-
Support for `cds init` is now moved to `@sap/cds-dk`.
|
|
3561
|
-
|
|
3562
|
-
## Fixed
|
|
3563
|
-
|
|
3564
|
-
- There was a bug in that caused a service names `FooBarV2` to erroneously be mapped to mount point `/foo-barv2` instead of `/foo-bar-v2` as intended and was the case before. → in case you started a project in this interims phase and had a service name with that pattern you may encounter this fix as an incompatible change, but it's actually reverting to the former compatible way.
|
|
3565
|
-
|
|
3566
|
-
- `cds.env` erroneously overrode profiled entries depending on properties order
|
|
3567
|
-
|
|
3568
|
-
- Fiori preview now uses latest version of SAP UI5 again
|
|
3569
|
-
|
|
3570
|
-
- `cds deploy` verifies returned service key to ensure target service is not of type `managed`.
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
# Version 3.21.3 - 2020-02-05
|
|
3576
|
-
## Fixed
|
|
3577
|
-
- Fiori preview no longer catches service URLs with an arbitrary prefix (e.g. `/foo/browse` instead of just `/browse`).
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
# Version 3.21.1 - 2020-01-07
|
|
3581
|
-
## Fixed
|
|
3582
|
-
- SAP Fiori Elements preview no longer crashes since it's pinned to SAP UI5 1.72.3. Actual cause still needs to be investigated.
|
|
3583
|
-
|
|
3584
|
-
## Version 3.21.0 - 2019-12-11
|
|
3585
|
-
|
|
3586
|
-
- `cds add`, `import`, and `watch` now print installation hints if `@sap/cds-dk` is not installed
|
|
3587
|
-
|
|
3588
|
-
- Experimental option `hana.syntax=hdi` to create `hdbtable` files instead of `hdbcds`. May still change!
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
## Changed
|
|
3592
|
-
|
|
3593
|
-
- In development mode, the `mock` authorization strategy is automatically activated with two fake users `alice` and `bob`, which allows for out-of-the-box testing of `@requires` annotations. This means that, unlike before, the `JWT` authorization strategy needs to be activated explicitly (through `{auth: { passport: { strategy: 'mock' }}}`. In production, no change is required.
|
|
3594
|
-
|
|
3595
|
-
- You might see a `MODULE_NOT_FOUND` error for `@sap/xsenv` in case you use the `JWT` strategy but have not bound any xsuaa service. In this case either bind such a service instance, add the `@sap/xsenv` dependency, or use a different strategy like `mock`. The trigger of this error is `@sap/xssec` 2.2.4 no longer requiring `@sap/xsenv`.
|
|
3596
|
-
|
|
3597
|
-
- Renovated and streamlined `cds init`. It prints a hint now if it's called with old-style parameters, as well as that it wants to be used from `@sap/cds-dk`. Check out `cds help init` for more.
|
|
3598
|
-
|
|
3599
|
-
- Removed the experimental `--args` parameter of `cds compile`. This turned out to be cumbersome to use in shells. Replacement is the standard configuration mechanism, e.g. use an environment variable `CDS_FOO_BAR` to activate option `cds.foo.bar`.
|
|
3600
|
-
|
|
3601
|
-
## Fixed
|
|
3602
|
-
- `SELECT.one/distinct(Fool,[...])` failed when passing an array for columns as argument two
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
# Version 3.20.1 - 2019-11-26
|
|
3607
|
-
## Fixed
|
|
3608
|
-
- Fix 'duplicate versions' errors by loading `@sap/cds` again from the current project if possible.
|
|
3609
|
-
|
|
3610
|
-
# Version 3.20.0 - 2019-11-19
|
|
3611
|
-
|
|
3612
|
-
## Added
|
|
3613
|
-
- Mention xsuaa in help of `cds compile`
|
|
3614
|
-
|
|
3615
|
-
## Fixed
|
|
3616
|
-
- Typings for `UPDATE` function no longer contain duplicates.
|
|
3617
|
-
|
|
3618
|
-
## Also see
|
|
3619
|
-
- Changes of `@sap/cds-compiler` 1.20.3
|
|
3620
|
-
- Changes of `@sap/cds-ql` 1.21.0
|
|
3621
|
-
- Changes of `@sap/cds-services` 1.21.0
|
|
3622
|
-
- Changes of `@sap/cds-messaging` 1.4.0
|
|
3623
|
-
- Changes of `@sap/generator-cds` 2.10.2
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
# Version 3.18.4 - 2019-11-15
|
|
3628
|
-
|
|
3629
|
-
## Fixed
|
|
3630
|
-
- `.cfignore` files now get created by `cds build/all` to improve the overall deployment turnaround
|
|
3631
|
-
of `cf push`. Also, this avoids failures of CF node.js buildpack trying to rebuild sqlite binaries.
|
|
3632
|
-
- Generated `manifest.yaml` files for Cloud Foundry now contain a `path` attribute that allows
|
|
3633
|
-
pushing from an outside folder. Also, they specify reduced memory requirements.
|
|
3634
|
-
- Generated `manifest.yaml` for HDI deployer does not create a route, and specifies a valid `health-check-type`.
|
|
3635
|
-
- `cds deploy --to hana` now also includes models in the `srv` folder.
|
|
3636
|
-
- `cds deploy` no longer writes model folders to `package.json` that do not exist.
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
# Version 3.19.0 - 2019-10-31
|
|
3640
|
-
|
|
3641
|
-
## Added
|
|
3642
|
-
- Deployments for sqlite and SAP HANA now find CSV files in the form `_texts_LOCALE.csv`,
|
|
3643
|
-
like `Books_texts_fr.csv`. This file layout allows splitting translated texts into one file
|
|
3644
|
-
per language.
|
|
3645
|
-
- Deployment for sqlite now also imports initial data from JSON files
|
|
3646
|
-
- `cds version` has learned about `@sap/cds-dk`
|
|
3647
|
-
|
|
3648
|
-
## Fixed
|
|
3649
|
-
- `cds watch --help` works again, if used from `@sap/cds-dk`
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
# Version 3.18.3 - 2019-10-28
|
|
3653
|
-
## Fixed
|
|
3654
|
-
- Fixed a crash in `cds run --watch` with changing directories.
|
|
3655
|
-
- `cds watch` is now also found if called from an NPM script.
|
|
3656
|
-
- `cds watch` now uses the same lookup paths for models as `cds run`
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
# Version 3.18.1 - 2019-10-17
|
|
3660
|
-
## Fixed
|
|
3661
|
-
- Fixed a crash during sqlite deployment if there were csv files that did not match an entity name
|
|
3662
|
-
- `cds deploy --to hana` now does a build for SAP HANA even if no matching build task is available.
|
|
3663
|
-
- `cds deploy` now tries to add `.gitignore` entries only once
|
|
3664
|
-
- In `@source` annotations of csn.json files generated for cloud deployments,
|
|
3665
|
-
now posix file paths (with `/`) are written, and no Windows paths.
|
|
3666
|
-
- `cds serve` and `run` now shuts down gracefully in case of `SIGHUP` signals emitted by
|
|
3667
|
-
e.g. the VS Code terminal.
|
|
3668
|
-
- `cds watch` now is found even if `@sap/cds-dk` is not installed locally.
|
|
3669
|
-
|
|
3670
|
-
## Also see
|
|
3671
|
-
- Changes of `@sap/cds-ql` 1.19.2
|
|
3672
|
-
- Changes of `@sap/cds-services` 1.19.1
|
|
3673
|
-
- Changes of `@sap/cds-messaging` 1.2.1
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
# Version 3.18.0 - 2019-10-09
|
|
3677
|
-
|
|
3678
|
-
## Added
|
|
3679
|
-
- Compiler options for SAP HANA backend can now be set in configuration in the `cdsc.toHana` block
|
|
3680
|
-
(e.g. `cds.cdsc.toHana.joins`)
|
|
3681
|
-
- `service.tx()` as a shortcut for `service.transaction()`
|
|
3682
|
-
|
|
3683
|
-
## Fixed
|
|
3684
|
-
- `cds deploy --to hana` now adds the tunnel address to the JDBC URL
|
|
3685
|
-
- Boolean and number values from `default-env.json` now are accepted in configuration (`cds env`)
|
|
3686
|
-
- For applications deployed to Cloud Foundry, custom handlers are now properly resolved using their names.
|
|
3687
|
-
- `cds serve`/`run` now properly log `$batch` requests of OData
|
|
3688
|
-
|
|
3689
|
-
## Also see
|
|
3690
|
-
- Changes of `@sap/cds-compiler` 1.19.1
|
|
3691
|
-
- Changes of `@sap/cds-messaging` 1.2.0
|
|
3692
|
-
- Changes of `@sap/cds-ql` 1.19.1
|
|
3693
|
-
- Changes of `@sap/cds-reflect` 2.8.0
|
|
3694
|
-
- Changes of `@sap/cds-rest` 1.2.0
|
|
3695
|
-
- Changes of `@sap/cds-services` 1.19.0
|
|
3696
|
-
- Changes of `@sap/generator-cds` 2.9.0
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
# Version 3.17.8 - 2019-09-25
|
|
3700
|
-
|
|
3701
|
-
## Fixed
|
|
3702
|
-
|
|
3703
|
-
- `UPDATE(entity, key)` statement
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
# Version 3.17.7 - 2019-09-24
|
|
3707
|
-
|
|
3708
|
-
## Fixed
|
|
3709
|
-
|
|
3710
|
-
- `cds deploy`
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
# Version 3.17.6 - 2019-09-23
|
|
3714
|
-
|
|
3715
|
-
## Changed
|
|
3716
|
-
|
|
3717
|
-
- Improved `cds env`
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
# Version 3.17.5 - 2019-09-20
|
|
3721
|
-
|
|
3722
|
-
## Fixed
|
|
3723
|
-
|
|
3724
|
-
- `cds deploy` did not work properly
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
# Version 3.17.4 - 2019-09-19
|
|
3728
|
-
|
|
3729
|
-
## Also see
|
|
3730
|
-
- Changes of `@sap/cds-rest` 1.1.2
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
-
# Version 3.17.3 - 2019-09-19
|
|
3734
|
-
|
|
3735
|
-
## Fixed
|
|
3736
|
-
|
|
3737
|
-
- `cds deploy --to hana`
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
# Version 3.17.2 - 2019-09-19
|
|
3741
|
-
|
|
3742
|
-
## Also see
|
|
3743
|
-
- Changes of `@sap/cds-services` 1.18.2
|
|
3744
|
-
- Changes of `@sap/generator-cds` 2.8.2
|
|
3745
|
-
|
|
3746
|
-
|
|
3747
|
-
# Version 3.17.1 - 2019-09-18
|
|
3748
|
-
|
|
3749
|
-
## Also see
|
|
3750
|
-
- Changes of `@sap/cds-compiler` 1.18.2
|
|
3751
|
-
- Changes of `@sap/cds-ql` 1.18.2
|
|
3752
|
-
- Changes of `@sap/cds-services` 1.18.1
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
# Version 3.17.0 - 2019-09-10
|
|
3756
|
-
|
|
3757
|
-
## Added
|
|
3758
|
-
- `cds run` has learned a new `--watch` option, which provides automatic restarts of the server on file changes. [nodemon](https://www.npmjs.com/package/nodemon) package is required for this to work.
|
|
3759
|
-
|
|
3760
|
-
## Fixed
|
|
3761
|
-
- `cds deploy` now writes `true` and `false` values in csv files as boolean to sqlite
|
|
3762
|
-
- Console output of `cds run` now waits until the server is really up and running before it declares success.
|
|
3763
|
-
- `cds deploy` and `build/all` do not write `hdbtabledata` files if some are already present.
|
|
3764
|
-
|
|
3765
|
-
## Also see
|
|
3766
|
-
- Changes of `@sap/cds-compiler` 1.18.1
|
|
3767
|
-
- Changes of `@sap/cds-ql` 1.18.1
|
|
3768
|
-
- Changes of `@sap/cds-reflect` 2.7.1
|
|
3769
|
-
- Changes of `@sap/cds-services` 1.18.0
|
|
3770
|
-
- Changes of `@sap/generator-cds` 2.8.1
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
# Version 3.16.2 - 2019-08-27
|
|
3775
|
-
|
|
3776
|
-
## Also see
|
|
3777
|
-
- Changes of `@sap/cds-compiler` 1.17.1
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
# Version 3.16.0 - 2019-08-22
|
|
3782
|
-
|
|
3783
|
-
## Added
|
|
3784
|
-
- `cds run` has learned a new `--in-memory` option, which connects and deploys to an SQLite in-memory database. There is no need to call `cds deploy` before.
|
|
3785
|
-
- `cds deploy --to hana` now can also be executed in Java projects
|
|
3786
|
-
- `cds run`'s index.html got a favicon, to give a visual clue in browsers.
|
|
3787
|
-
- `cds.requires.<datasource>.model` configuration can now also point to a node.js module, e.g. `@my/module`.
|
|
3788
|
-
Previously, only a relative file path was supported.
|
|
3789
|
-
- Improved logging of query objects
|
|
3790
|
-
- `cds compile` now understands `--to edmx-v2` and `--to edmx-v4` to produce OData metadata of versions 2 or 4, respectively.
|
|
3791
|
-
|
|
3792
|
-
## Changed
|
|
3793
|
-
- SAP Fiori Elements preview in `cds run` now is only added if OData services are being served.
|
|
3794
|
-
For other protocols like `rest`, no SAP Fiori Elements preview is provided. Same holds true for the `$metadata` link.
|
|
3795
|
-
- `cds compile` now behaves better in non-TTY scenarios (e.g. when piping to files). It writes a proper JSON
|
|
3796
|
-
string instead of a Javascript object. Previously, one had to enforce JSON using the `--to json` processor. Compare e.g. the output of `cds compile model.cds` to `cds compile model.cds > model.json`.
|
|
3797
|
-
|
|
3798
|
-
## Fixed
|
|
3799
|
-
- Fiori preview in `cds run` now also works for services with namespaces
|
|
3800
|
-
- In services of CF marketplace, `cds deploy --to hana` now only accepts services with plan `hdi-shared`.
|
|
3801
|
-
Previously, it could get confused with services of type `hana` but of other (non-HDI) plans.
|
|
3802
|
-
- Localized edmx files are now produced also for i18n.json files.
|
|
3803
|
-
|
|
3804
|
-
## Also see
|
|
3805
|
-
- Changes of `@sap/cds-compiler` 1.17.0
|
|
3806
|
-
- Changes of `@sap/cds-ql` 1.17.0
|
|
3807
|
-
- Changes of `@sap/cds-services` 1.17.0
|
|
3808
|
-
- Changes of `@sap/generator-cds` 2.7.0
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
# Version 3.15.0 - 2019-07-26
|
|
3813
|
-
|
|
3814
|
-
## Added
|
|
3815
|
-
- `hdbtabledata` files are now generated automatically as part of `cds deploy --to hana` for given set of CSV files. CSV file names must follow the pattern `<namespace>-entity.csv` (same as for SQLite deployment) and be located in `db/csv` or `db/data`.
|
|
3816
|
-
- For Node.js, multiple configuration profiles can now be activated at the same time, e.g. by setting both `NODE_ENV` and `CDS_ENV`, or by setting a multi-value list: `CDS_ENV=profile1,profile2`.
|
|
3817
|
-
- New labels for `sap.common.*.code` and `sap.common.Currencies.symbol` (part of `@sap/cds/common`).
|
|
3818
|
-
- Better message for `Duplicate definition` errors, where the same `cds` file is referenced from different locations.
|
|
3819
|
-
To fix this, check all dependencies to `@sap/cds` in your package.json and those of reused packages and ensure they allow deduped use of `@sap/cds`.
|
|
3820
|
-
|
|
3821
|
-
## Also see
|
|
3822
|
-
- Changes of `@sap/cds-compiler` 1.16.1
|
|
3823
|
-
- Changes of `@sap/cds-ql` 1.16.0
|
|
3824
|
-
- Changes of `@sap/cds-services` 1.16.0
|
|
3825
|
-
- Changes of `@sap/generator-cds` 2.6.1
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
# Version 3.14.0 - 2019-07-11
|
|
3829
|
-
|
|
3830
|
-
## Added
|
|
3831
|
-
- Support for `SELECT.distinct.from(Foo)` and `SELECT.one.from(Foo)` queries in Node.js
|
|
3832
|
-
- [Beta] `cds deploy --to hana` deploys to SAP HANA on Cloud Foundry
|
|
3833
|
-
- For Node.js, `cds env` now activates the `development` profile automatically,
|
|
3834
|
-
unless `CDS_ENV` or `NODE_ENV` are set. This is in line with `NODE_ENV` defaulting to `development`.
|
|
3835
|
-
|
|
3836
|
-
## Also see
|
|
3837
|
-
- Changes of `@sap/cds-ql` 1.15.0
|
|
3838
|
-
- Changes of `@sap/cds-services` 1.15.0
|
|
3839
|
-
- Changes of `@sap/generator-cds` 2.5.0
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
# Version 3.13.0 - 2019-06-26
|
|
3843
|
-
|
|
3844
|
-
## Added
|
|
3845
|
-
- `cds serve` now provides a preview of the services in a list page of SAP Fiori Elements
|
|
3846
|
-
|
|
3847
|
-
## Changed
|
|
3848
|
-
- `cds serve` now yields an error if there are no services defined in the model
|
|
3849
|
-
|
|
3850
|
-
## Also see
|
|
3851
|
-
- Changes of `@sap/cds-compiler` 1.15.0
|
|
3852
|
-
- Changes of `@sap/cds-ql` 1.14.0
|
|
3853
|
-
- Changes of `@sap/cds-services` 1.14.0
|
|
3854
|
-
- Changes of `@sap/generator-cds` 2.4.11
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
# Version 3.12.0 - 2019-06-17
|
|
3859
|
-
|
|
3860
|
-
## Added
|
|
3861
|
-
- On request, `cds build/all` now generates OData EDMX files for node.js services
|
|
3862
|
-
- Performance optimizations for `cds build/all`
|
|
3863
|
-
|
|
3864
|
-
## Fixed
|
|
3865
|
-
- `cds deploy` no longer fails if `data` dir is not present
|
|
3866
|
-
- `cds build/all` no longer prints a message if `mta.yaml` does not exist
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
## Also see
|
|
3870
|
-
- Changes of `@sap/cds-compiler` 1.14.1
|
|
3871
|
-
- Changes of `@sap/cds-ql` 1.13.0
|
|
3872
|
-
- Changes of `@sap/cds-services` 1.13.0
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
# Version 3.11.1 - 2019-06-03
|
|
3876
|
-
|
|
3877
|
-
## Fixed
|
|
3878
|
-
- `cds deploy` honors saved datasource configuration again
|
|
3879
|
-
- localization works again for sqlite datasources defined in `package.json`
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
# Version 3.11.0 - 2019-06-03
|
|
3883
|
-
|
|
3884
|
-
## Added
|
|
3885
|
-
|
|
3886
|
-
- `cds deploy` now also finds `.csv` files in imported reuse packages
|
|
3887
|
-
- Better error messages for various `cds` CLI calls
|
|
3888
|
-
|
|
3889
|
-
## Changed
|
|
3890
|
-
- `cds build/all` for Node.js projects generates proper CSN in `gen/csn.json`.
|
|
3891
|
-
A warning is emitted if `cds serve` is run with the previous format. Rebuild the project if you see this warning.
|
|
3892
|
-
|
|
3893
|
-
## Also see
|
|
3894
|
-
- Changes of `@sap/cds-compiler` 1.14.0
|
|
3895
|
-
- Changes of `@sap/cds-ql` 1.12.0
|
|
3896
|
-
- Changes of `@sap/cds-services` 1.12.0
|
|
3897
|
-
- Changes of `@sap/generator-cds` 2.4.10
|
|
3898
|
-
|
|
3899
|
-
# Version 3.10.0 - 2019-05-21
|
|
3900
|
-
|
|
3901
|
-
## Added
|
|
3902
|
-
- Tables and view for localized entities are created by default now, both for SAP HANA and SQLite.
|
|
3903
|
-
- Internal errors are now marked as such in all CLI commands, with a request to report them.
|
|
3904
|
-
|
|
3905
|
-
## Changed
|
|
3906
|
-
- `cds compile --service all` no longer fails in case no services are found.
|
|
3907
|
-
This better matches higher level commands like `cds build` that should not fail in this instance.
|
|
3908
|
-
Note that `--service Foo` fails as before in case `Foo` is not found.
|
|
3909
|
-
- `cds run` and `cds serve` now serve the generic index page at `/`, while previously this was `/$index`.
|
|
3910
|
-
- `cds build/all` now auto-creates build tasks from `mta.yaml` definition if no build tasks have been
|
|
3911
|
-
defined in `.cdsrc.json`. If no `mta.yaml` file exists, cds configuration data respectively defaults
|
|
3912
|
-
are used for build task configuration.
|
|
3913
|
-
|
|
3914
|
-
## Fixed
|
|
3915
|
-
- CLI now shows compilation warnings in all commands, e.g. in `build`, `deploy`, or `compile`.
|
|
3916
|
-
Previously warnings were only shown in case of compilation errors.
|
|
3917
|
-
- `cds help` no longer inserts terminal escape sequences if stdout is redirected to a file.
|
|
3918
|
-
- Errors in custom handlers are no longer shadowed in `cds serve` or `cds run`.
|
|
3919
|
-
|
|
3920
|
-
## Also see
|
|
3921
|
-
- Changes of `@sap/cds-compiler` 1.13.4
|
|
3922
|
-
- Changes of `@sap/cds-ql` 1.11.1
|
|
3923
|
-
- Changes of `@sap/cds-reflect` 2.5.0
|
|
3924
|
-
- Changes of `@sap/cds-services` 1.11.1
|
|
3925
|
-
- Changes of `@sap/generator-cds` 2.4.8
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
# Version 3.9.0 - 2019-05-08
|
|
3930
|
-
|
|
3931
|
-
## Added
|
|
3932
|
-
- `cds.serve` now reads passport for services from `auth.passport` configuration property
|
|
3933
|
-
|
|
3934
|
-
## Fixed
|
|
3935
|
-
- `cds.compile` now really skips entities marked with `if-unused`
|
|
3936
|
-
- Build tasks are now listed with `cds env`
|
|
3937
|
-
- `cds serve` now supports the `--at`, `--to`, and `--with` arguments as specified.
|
|
3938
|
-
- `cds deploy --to sqlite` now better handles csv files with empty values
|
|
3939
|
-
|
|
3940
|
-
## Also see
|
|
3941
|
-
- Changes of `@sap/cds-compiler` 1.12.0
|
|
3942
|
-
- Changes of `@sap/cds-ql` 1.10.2
|
|
3943
|
-
- Changes of `@sap/cds-reflect` 2.5.0
|
|
3944
|
-
- Changes of `@sap/cds-services` 1.10.2
|
|
3945
|
-
- Changes of `@sap/generator-cds` 2.4.6
|
|
3946
|
-
|
|
3947
|
-
|
|
3948
|
-
|
|
3949
|
-
# Version 3.8.1 - 2019-04-30
|
|
3950
|
-
|
|
3951
|
-
## Fixed
|
|
3952
|
-
- Texts in deep annotations, e.g. `@UI.Facet`, are now properly localized in OData metadata
|
|
3953
|
-
|
|
3954
|
-
|
|
3955
|
-
# Version 3.8.0 - 2019-04-09
|
|
3956
|
-
|
|
3957
|
-
## Fixed
|
|
3958
|
-
- Make tests run on Windows again
|
|
3959
|
-
- Various fixes in `cds build/all`
|
|
3960
|
-
- Adjustments to latest compiler for localizing models
|
|
3961
|
-
- `.hdbcds` and `.hdbtabledata` files are now copied over in `cds build/all`
|
|
3962
|
-
|
|
3963
|
-
## Also see
|
|
3964
|
-
- Changes of `@sap/cds-compiler` 1.11.0
|
|
3965
|
-
- Changes of `@sap/cds-ql` 1.8.1
|
|
3966
|
-
- Changes of `@sap/cds-services` 1.8.1
|
|
3967
|
-
- Changes of `@sap/generator-cds` 2.4.4
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
# Version 3.7.1 - 2019-03-25
|
|
3972
|
-
|
|
3973
|
-
## Fixed
|
|
3974
|
-
- `cds serve` now honors `newCsn` configuration when serving from precompiled csn.json files.
|
|
3975
|
-
- `cds init` creates samples correctly when project already contains files.
|
|
3976
|
-
- `cds build` for node.js projects will now show up compilation errors. Formatting has been improved as well.
|
|
3977
|
-
- Better support for finding `cds` executable in VSCode.
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
## Also see
|
|
3981
|
-
- Changes of `@sap/cds-compiler` 1.10.0
|
|
3982
|
-
- Changes of `@sap/cds-ql` 1.7.1
|
|
3983
|
-
- Changes of `@sap/cds-services` 1.7.2
|
|
3984
|
-
- Changes of `@sap/generator-cds` 2.4.4
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
# Version 3.6.0 - 2019-02-27
|
|
3989
|
-
|
|
3990
|
-
## Added
|
|
3991
|
-
- In `cds init`:
|
|
3992
|
-
- Add modules via `cds init --modules` to an existing project.
|
|
3993
|
-
- Do not allow project creation via `cds init` outside of current working folder, e.g. init ../../some/where/else is not allowed.
|
|
3994
|
-
- No output at all (not even error messages) when using `cds init --quiet`.
|
|
3995
|
-
- Create a module folder using `cds init --modules...` even if it is empty based on the supplied options.
|
|
3996
|
-
- Parameter `--modules` only supports one folder of each type.
|
|
3997
|
-
- Alpha support for `@cds.odata.valuelist`: Adding `@cds.odata.valuelist` to `@cds.autoexposed` entities will automatically equip all associations referring to such entities with a corresponding `@Common.ValueList.entity`
|
|
3998
|
-
|
|
3999
|
-
## Changed
|
|
4000
|
-
- Simplified code lists: removed superfluous types `LanguageCode`, `CountryCode`, and `CurrencyCode` from `@sap/cds/common`
|
|
4001
|
-
- `cds build/all` now does `--clean` by default and is less verbose in its output
|
|
4002
|
-
|
|
4003
|
-
## Fixed
|
|
4004
|
-
- `cds.load` no longer fails if reading in a CSN file in version `0.1.0`
|
|
4005
|
-
|
|
4006
|
-
## Also see
|
|
4007
|
-
- Changes of `@sap/cds-compiler` 1.9.0
|
|
4008
|
-
- Changes of `@sap/cds-reflect` 2.4.0
|
|
4009
|
-
- Changes of `@sap/cds-ql` 1.6.0
|
|
4010
|
-
- Changes of `@sap/cds-services` 1.6.0
|
|
4011
|
-
- Changes of `@sap/generator-cds` 2.4.0
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
# Version 3.5.2 - 2019-02-20
|
|
4016
|
-
|
|
4017
|
-
## Fixed
|
|
4018
|
-
- Node.js projects created with `cds init` now
|
|
4019
|
-
- Bind the service module to an HDI service in `mta.yaml`.
|
|
4020
|
-
- Invoke CDS build when building the database module.
|
|
4021
|
-
- No longer create old-style `service` configuration in `package.json`.
|
|
4022
|
-
- For datasources with kind `hana` we now also find `hanatrial` services in trial landscapes by matching their tag `hana`.
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
# Version 3.5.1 - 2019-02-14
|
|
4027
|
-
|
|
4028
|
-
## Fixed
|
|
4029
|
-
- In `cds serve` service providers where added twice to the express app. This is fixed.
|
|
4030
|
-
- In the logs of `cds serve` false warnings on SAP Fiori Elements requests are now gone.
|
|
4031
|
-
- `cds serve` no longer fails on localization for unbound actions.
|
|
4032
|
-
- The project template was fixed to properly wire up the connection to SAP HANA.
|
|
4033
|
-
|
|
4034
|
-
## Also see
|
|
4035
|
-
- Changes of `@sap/cds-compiler` 1.8.1
|
|
4036
|
-
- Changes of `@sap/cds-ql` 1.5.1
|
|
4037
|
-
- Changes of `@sap/cds-services` 1.5.2
|
|
4038
|
-
- Changes of `@sap/generator-cds` 2.3.7
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
# Version 3.5.0 - 2019-02-07
|
|
4043
|
-
|
|
4044
|
-
## Added
|
|
4045
|
-
- `cds compile -2 xsuaa` now generates default values for `xsappname` and `tenant-mode`
|
|
4046
|
-
- All commands now can be called with `--help`, where previously only `cds help <command>` was allowed.
|
|
4047
|
-
|
|
4048
|
-
## Changed
|
|
4049
|
-
- The minimum required Node.js version is now set more specifically to _8.9_ LTS. Previously, just Node.js 8 was mentioned.
|
|
4050
|
-
- The `cds build/all` (experimental build command for Node.js) emits a warning for existing projects to add build task configuration. Watch out for such a warning in the console and follow its instructions.
|
|
4051
|
-
|
|
4052
|
-
## Fixed
|
|
4053
|
-
- Service handlers are now also found on CF if CDS models are served from a `csn.json` file instead as from `.cds` sources.
|
|
4054
|
-
- An issue where projects w/o `db` dir could not be built using `cds build`.
|
|
4055
|
-
- Unclear documentation of `cds deploy` on where it looks up the data source.
|
|
4056
|
-
- `cds env` to load configuration profiles in lower-prio files (`.cdsrc.json`) with higher precedence than default configuration in higher-prio files (`package.json`).
|
|
4057
|
-
|
|
4058
|
-
## Also see
|
|
4059
|
-
- Changes of `@sap/cds-compiler` 1.8.0
|
|
4060
|
-
- Changes of `@sap/cds-reflect` 2.3.0
|
|
4061
|
-
- Changes of `@sap/cds-ql` 1.5.0
|
|
4062
|
-
- Changes of `@sap/cds-services` 1.5.0
|
|
4063
|
-
- Changes of `@sap/generator-cds` 2.3.6
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
# Version 3.4.1 - 2019-01-24
|
|
4067
|
-
|
|
4068
|
-
## Fixed
|
|
4069
|
-
|
|
4070
|
-
- Restore cds-compiler `.version`
|
|
4071
|
-
|
|
4072
|
-
## Also see
|
|
4073
|
-
- Changes of `@sap/cds-compiler` 1.7.1
|
|
4074
|
-
- Changes of `@sap/cds-reflect` 2.2.1
|
|
4075
|
-
- Changes of `@sap/cds-ql` 1.4.0
|
|
4076
|
-
- Changes of `@sap/cds-services` 1.4.0
|
|
4077
|
-
- Changes of `@sap/generator-cds` 2.2.0
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
# Version 3.4.0 - 2019-01-22
|
|
4081
|
-
|
|
4082
|
-
## Added
|
|
4083
|
-
|
|
4084
|
-
- `cds.env` supports loading from `default-env.json`
|
|
4085
|
-
- Support base models for `cds compile -2 xsuaa`
|
|
4086
|
-
|
|
4087
|
-
## Also see
|
|
4088
|
-
- Changes of `@sap/cds-compiler` 1.7.0
|
|
4089
|
-
- Changes of `@sap/cds-reflect` 2.2.0
|
|
4090
|
-
- Changes of `@sap/cds-ql` 1.4.0
|
|
4091
|
-
- Changes of `@sap/cds-services` 1.4.0
|
|
4092
|
-
- Changes of `@sap/generator-cds` 2.2.0
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
# Version 3.3.0 - 2019-01-11
|
|
4096
|
-
|
|
4097
|
-
## Also see
|
|
4098
|
-
- Changes of `@sap/cds-compiler` 1.6.0
|
|
4099
|
-
- Changes of `@sap/cds-reflect` 2.1.0
|
|
4100
|
-
- Changes of `@sap/cds-ql` 1.3.0
|
|
4101
|
-
- Changes of `@sap/cds-services` 1.3.0
|
|
4102
|
-
- Changes of `@sap/generator-cds` 2.2.0
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
# Version 3.2.0 - 2018-12-21
|
|
4106
|
-
## Changed
|
|
4107
|
-
- cdsc 2sql output may also contain .types
|
|
4108
|
-
- Add labels to CodeLists in common.cds
|
|
4109
|
-
- Improved cds error messages
|
|
4110
|
-
|
|
4111
|
-
## Also see
|
|
4112
|
-
- Changes of `@sap/cds-compiler` 1.6.0
|
|
4113
|
-
- Changes of `@sap/cds-reflect` 2.1.0
|
|
4114
|
-
- Changes of `@sap/cds-ql` 1.2.0
|
|
4115
|
-
- Changes of `@sap/cds-services` 1.2.0
|
|
4116
|
-
- Changes of `@sap/generator-cds` 2.2.0
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
# Version 3.1.1 - 2018-12-13
|
|
4120
|
-
## Changed
|
|
4121
|
-
- Better console output from cds compile
|
|
4122
|
-
|
|
4123
|
-
## Fixed
|
|
4124
|
-
- cds.compile ignored configured odata.version
|
|
4125
|
-
|
|
4126
|
-
## Also see
|
|
4127
|
-
- Changes of `@sap/cds-compiler` 1.6.0
|
|
4128
|
-
- Changes of `@sap/cds-reflect` 2.1.0
|
|
4129
|
-
- Changes of `@sap/cds-ql` 1.1.0
|
|
4130
|
-
- Changes of `@sap/cds-services` 1.1.0
|
|
4131
|
-
- Changes of `@sap/generator-cds` 2.2.0
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
# Version 3.0.0
|
|
4135
|
-
## Changed
|
|
4136
|
-
- Reworked configuration options to center around required 'data sources'.
|
|
4137
|
-
- As an example see the snippted that e.g. `cds deploy --to sqlite:my.db` generates into `package.json`.
|
|
4138
|
-
- The former `cds` options from `package.json` are deprectated but still supported.
|
|
4139
|
-
- Clean up of many Node.js APIs, mainly for `cds.serve` and `cds.connect`. See the [Javacript APIs documentation](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/a131984aefe94ff884e6b6819ee76bd9.html) for details.
|
|
4140
|
-
- Node.js 8 is now the minimum required runtime version.
|
|
4141
|
-
- Simplified `cds init`. By default it creates a plain project suitable for local CDS development.
|
|
4142
|
-
|
|
4143
|
-
## Added
|
|
4144
|
-
- `cds env` allows for inspecting the effective configuration
|
|
4145
|
-
|
|
4146
|
-
## Also see
|
|
4147
|
-
- Changes of `@sap/cds-compiler` 1.5.0
|
|
4148
|
-
- Changes of `@sap/cds-reflect` 2.0.0
|
|
4149
|
-
- Changes of `@sap/cds-ql` 1.0.0
|
|
4150
|
-
- Changes of `@sap/cds-services` 1.0.0
|
|
4151
|
-
- Changes of `@sap/generator-cds` 2.0.0
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
# Version 2.11.2
|
|
4155
|
-
## Fixes
|
|
4156
|
-
- During `cds init/new` only install `@sap/generator-cds` 1.x
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
# Version 2.11.0
|
|
4160
|
-
## Added
|
|
4161
|
-
- Reuse aspect `cuid` to `@sap/cds/common`
|
|
4162
|
-
- Support for smart to-many Associations finding backlinks automatically (→not for production!)
|
|
4163
|
-
- Support to fill DBs with initial data from CSV files (fetched from folder `db/csv/`)
|
|
4164
|
-
- New CLI command `cds run` - today a mere wrapper for `cds serve all` but meant to serve microservice test scenarios
|
|
4165
|
-
- `cds deploy` can be configured not to modify `package.json` through the `--no-save` option.
|
|
4166
|
-
|
|
4167
|
-
## Also see
|
|
4168
|
-
- Changes of `@sap/cds-compiler` 1.2.0
|
|
4169
|
-
- Changes of `@sap/cds-reflect` 1.8.0
|
|
4170
|
-
- Changes of `@sap/cds-ql` 0.12.0
|
|
4171
|
-
- Changes of `@sap/cds-services` 0.12.0
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
# Version 2.10.3
|
|
4175
|
-
## Fixes
|
|
4176
|
-
- During `cds init/new` only install `@sap/generator-cds` 1.x
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
# Version 2.10.0
|
|
4180
|
-
## Added
|
|
4181
|
-
- Support for Fiori Draft
|
|
4182
|
-
|
|
4183
|
-
## Fixes
|
|
4184
|
-
- Enhanced server.js to also include links to entities
|
|
4185
|
-
|
|
4186
|
-
## Also see
|
|
4187
|
-
- Changes of `@sap/cds-compiler` 1.1.3
|
|
4188
|
-
- Changes of `@sap/cds-reflect` 1.7.0
|
|
4189
|
-
- Changes of `@sap/cds-ql` 0.11.0
|
|
4190
|
-
- Changes of `@sap/cds-services` 0.11.0
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
# Version 2.9.1
|
|
4194
|
-
## Fixes
|
|
4195
|
-
- `cds build` no longer blocks if running inside a Maven build.
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
# Version 2.9.0
|
|
4199
|
-
## Added
|
|
4200
|
-
- `common.cds` model got annotations for title, description, and value lists.
|
|
4201
|
-
- `cds` executable now can read from stdin, e.g. `echo 'entity Foo {ID:UUID;}' | cds -2 sql`
|
|
4202
|
-
- `cds -2 sql` now outputs plain (non-HANA) SQL. Use `-2 hana` for HANA SQL.
|
|
4203
|
-
- `cds config` shows the current CDS configuration. Use `cds help config` to learn more.
|
|
4204
|
-
|
|
4205
|
-
## Fixes
|
|
4206
|
-
- Entities from `common.cds` like `Languages`, `Countries`, and `Currencies` are now only persisted to the database if they are actually used.
|
|
4207
|
-
|
|
4208
|
-
## Also see
|
|
4209
|
-
- Changes of `@sap/cds-compiler` 1.1.2
|
|
4210
|
-
- Changes of `@sap/cds-reflect` 1.6.0
|
|
4211
|
-
- Changes of `@sap/cds-ql` 0.10.0
|
|
4212
|
-
- Changes of `@sap/cds-services` 0.10.1
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
# Version 2.8.0
|
|
4216
|
-
## Added
|
|
4217
|
-
- Support was added to build node.js service modules
|
|
4218
|
-
- `cds init` has been reimplemented with a better commandline experience, along with updated templates. Plugin `@sap/generator-cds`, which is required for `cds init`, is now automatically installed when `init` is called for the first time. `cds new` is still available and is now just a synonym for `init`.
|
|
4219
|
-
|
|
4220
|
-
## Also see
|
|
4221
|
-
- Changes of `@sap/cds-compiler` 1.1.1
|
|
4222
|
-
- Changes of `@sap/cds-services` 0.9.0
|
|
4223
|
-
- Changes of `@sap/cds-ql` 0.9.0
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
# Version 2.7.0
|
|
4227
|
-
## Also see
|
|
4228
|
-
- Changes of `@sap/cds-compiler` 1.0.32
|
|
4229
|
-
- Changes of `@sap/cds-services` 0.8.1
|
|
4230
|
-
- Changes of `@sap/cds-ql` 0.8.1
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
# Version 2.6.0
|
|
4234
|
-
## Also see
|
|
4235
|
-
- Changes of `@sap/cds-compiler` 1.0.31
|
|
4236
|
-
- Changes of `@sap/cds-services` 0.7.0
|
|
4237
|
-
- Changes of `@sap/cds-ql` 0.7.0
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
# Version 2.5.1
|
|
4241
|
-
## Also see
|
|
4242
|
-
- Changes of `@sap/cds-services` 0.6.0
|
|
4243
|
-
- Changes of `@sap/cds-ql` 0.6.0
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
# Version 2.5.0
|
|
4247
|
-
## Added
|
|
4248
|
-
- Instead of compiling each `.cds` service file separately, `cds build` now combines all those files from the same folder, creating only one `csn.json` file for them.
|
|
4249
|
-
|
|
4250
|
-
## Fixes
|
|
4251
|
-
- Shortcuts of `cds init` work again
|
|
4252
|
-
|
|
4253
|
-
## Also see
|
|
4254
|
-
- Changes of `@sap/cds-compiler` 1.0.30
|
|
4255
|
-
- Changes of `@sap/cds-services` 0.5.0
|
|
4256
|
-
- Changes of `@sap/cds-ql` 0.5.0
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
# Version 2.4.2
|
|
4260
|
-
Same as version 2.3.2, but including the generic service provider for Node.js (`@sap/cds-services` and `@sap/cds-ql`).
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
# Version 2.3.2
|
|
4264
|
-
## Changed
|
|
4265
|
-
- The default for SQL name mapping is changed to `plain`. This means that
|
|
4266
|
-
- The name of a table/view in the database catalog is obtained from the name of the corresponding entity in the CDS model in the following way:
|
|
4267
|
-
- replace all "." by "_"
|
|
4268
|
-
- convert everything to upper case
|
|
4269
|
-
- The name of a table/view column in the database catalog is obtained from the name of the corresponding entity element in the csn in the following way:
|
|
4270
|
-
- convert everything to upper case
|
|
4271
|
-
|
|
4272
|
-
Note that this is a breaking change for appliations that rely on the previous value of `quoted`. In order to get this value back, add the following to `package.json`: `"cds": { "data": { "sql_mapping" : "quoted" } }`
|
|
4273
|
-
|
|
4274
|
-
## Fixes
|
|
4275
|
-
- Special output formatting in CLI is only done for `cds eval` and `cds repl`, but not for programmatic usage.
|
|
4276
|
-
- Links to external documentation are now point to correct help documents.
|
|
4277
|
-
|
|
4278
|
-
## Also see
|
|
4279
|
-
- Changes of `@sap/cds-compiler` 1.0.30
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
# Version 2.3.0
|
|
4284
|
-
## Added
|
|
4285
|
-
- SQL names can now be configured with `{ data: {sql_mapping: "plain/quoted"} }`. Default is `quoted`, but will be changed to `plain` soon. If you need to stay with `quoted` in the futute, e.g. due to data compatibility reasons, you can configure this mode already now.
|
|
4286
|
-
|
|
4287
|
-
## Fixes
|
|
4288
|
-
- The `csn.json` file produced by `cds build` now contains the properly unfolded model for OData. Previously this was the normalized model, which led to runtime errors in the Java service provider.
|
|
4289
|
-
- Invalid configuration data in `package.json` now leads to a build error again.
|
|
4290
|
-
- Console output of `cds build` now presents files paths sorted.
|
|
4291
|
-
|
|
4292
|
-
## Also see
|
|
4293
|
-
- Changes of CDS compiler 1.0.27
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
# Version 2.2.0
|
|
4298
|
-
## Added
|
|
4299
|
-
- CDS configuration in `package.json` can now be omitted if you follow the standard project layout, i.e. if you place your model files in `db/`, `srv/`, and `app/` folders.
|
|
4300
|
-
|
|
4301
|
-
## Changed
|
|
4302
|
-
- Previously data models needed to include import statements to the service models (e.g. `using from '../srv'`), so that the Java runtime could use these service views on the DB to execute queries. The views are now included automatically, so that you can remove the explicit `using` clauses.
|
|
4303
|
-
- Calling just `cds` on the command line now prints its help. The previously started REPL is now available with `cds repl` (or just `cds r`).
|
|
4304
|
-
|
|
4305
|
-
## Fixes
|
|
4306
|
-
- Some cds commands failed on Windows. This is fixed.
|
|
4307
|
-
|
|
4308
|
-
## Also see
|
|
4309
|
-
- Changes of CDS compiler 1.0.24
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
|
|
4313
|
-
# Version 2.1.0
|
|
4314
|
-
## Added
|
|
4315
|
-
- Service edmx files are now written to UI app folders if their manifest.json contains a reference to the service. This allows Web IDE's annotation modeler to work on up to date service files.
|
|
4316
|
-
- The results of `cds.compile.to...` commands are now automatically formatted if called in `cds -e...` or cds repl. You don't need to append `console.log` to the call chain.
|
|
4317
|
-
|
|
4318
|
-
## Fixes
|
|
4319
|
-
- Language properties are now found in all folders, also ones that are outside of the current module
|
|
4320
|
-
- csn.json is written with line breaks and indentation
|
|
4321
|
-
|
|
4322
|
-
## Also see
|
|
4323
|
-
- Changes of CDS compiler 1.0.21
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
# Version 2.0.0
|
|
4327
|
-
## Added
|
|
4328
|
-
- All-new command-line interface. See `cds help` for information on the available commands.
|
|
4329
|
-
- `cds compile` exposes CDS model transformations with various options.
|
|
4330
|
-
- `cds build` automatically writes localized edmx files.
|
|
4331
|
-
- `cds build` now writes the version to the build log.
|
|
4332
|
-
- `cds version` does the usual thing.
|
|
4333
|
-
- `cds init` scaffolds CDS projects.
|
|
4334
|
-
- CDS repl (read-eval-print-loop): just type `cds` and play with CDS API.
|
|
4335
|
-
|
|
4336
|
-
## Fixes
|
|
4337
|
-
Too many to mention :)
|
|
4338
|
-
|
|
4339
|
-
## Also see
|
|
4340
|
-
- Changes of CDS compiler 1.0.19
|