Release Notes
3.22.0 [Core Modules] - October 04, 2024
Compatibility Notes
- [eslint-config] Remove
import/no-relative-parent-imports
rule that has never worked correctly as provided. (a729a72)
New Functionalities
- [eslint-config] Add
@typescript-eslint/consistent-type-imports
to the ruleset. (252c338) - [openapi-generator] Add support for discriminator properties in schemas that include
oneOf
andanyOf
. Also add support for incorrect usage of the discriminator property with schemas of typeobject
. (d073a48)
Fixed Issues
- [eslint-config] Fix incorrect resolution of imports for TypeScript. This may result in a lot more findings. (a729a72)
- [openapi-generator] Ignore charset parameter in media types given in OpenAPI specification. (c4153b9)
3.21.0 [Core Modules] - September 18, 2024
Improvements
- [openapi-generator] Update generation of properties with
nullable: true
in the spec to includetype | null
in the output types. (d2a2394) - [openapi-generator] Normalize schemas that have
allOf
,anyOf
, oroneOf
alongside properties defined at the same level. (d2a2394) - [openapi-generator] Configure generated OpenAPI clients to handle
text/plain
,application/octet-stream
, and wildcard*/*
content types in response headers. (89f77cd)
3.20.0 [Core Modules] - August 27, 2024
Compatibility Notes
- [connectivity] Throw an error if a JWT for caching was provided, but doesn't contain tenant information. (39eb88c)
Fixed Issues
- [connectivity] Derive tenant information for destination caching also for IAS tokens.
- @sap-cloud-sdk/resilience@3.20.0
- @sap-cloud-sdk/util@3.20.0 (39eb88c)
3.19.0 [Core Modules] - August 23, 2024
Fixed Issues
- [openapi-generator] Prevent query parameters from being optional when header parameters are required in signature. (a566fdd)
3.18.1 [Core Modules] - August 16, 2024
Fixed Issues
- [connectivity] Fix IAS to XSUAA token exchange to have less strict verification.
- @sap-cloud-sdk/resilience@3.18.1
- @sap-cloud-sdk/util@3.18.1 (c1bf319)
3.18.0 [Core Modules] - August 07, 2024
New Functionalities
- [connectivity] Support IAS tokens without the need to pass
iss
in the destination fetch options. (06e5c72) - [openapi-generator, generator-common] Introduce option
generateESM
in OpenAPI generator to generate ESM compatible code. (3a93e38)
Fixed Issues
- [connectivity] Fix the JwtPayload import.
- @sap-cloud-sdk/resilience@3.18.0
- @sap-cloud-sdk/util@3.18.0 (c23ccfd)
- [mail-client] Fix the type of
replyTo
property in theMailConfig
interface. (00fa35d)
3.17.0 [Core Modules] - July 30, 2024
New Functionalities
- [connectivity] Add
getTenantId()
function for convenience. (dbad36f) - [mail-client] Add support for multi-tenancy for on-premise mail destinations. (68a07d6)
Improvements
- [connectivity] Use tenant ID instead of tenant-aware authentication URL for the client credentials cache. (54a46a3)
- [connectivity] Retrieve service token for OAuth2ClientCredentials authentication only once. (99b5009)
- [openapi-generator] Generated OpenAPI clients support
application/merge-patch+json
media type for patch requests. (e9a243a)
Fixed Issues
- [connectivity] Fix token fetching for mail multi-tenancy scenarios.
- @sap-cloud-sdk/resilience@3.17.0
- @sap-cloud-sdk/util@3.17.0 (86f4158)
- [mail-client] Fix token fetching for mail multi-tenancy scenarios. (86f4158)
3.16.0 [Core Modules] - June 27, 2024
Compatibility Notes
- [connectivity] The JKU header in JWTs is no longer verified. Instead the signature of the JWT is verified, which is more secure. (4f29615)
- [generator] Generation of OData clients does no longer fail if
basePath
value cannot be determined. It will be set to/
by default. (ef3a800)
New Functionalities
-
[connectivity] Add convenience function
transformServiceBindingToDestination()
to create destination from service bindings. The following service bindings are supported:- business-logging
- destination
- s4-hana-cloud
- saas-registry
- workflow
- service-manager
- xsuaa
- aicore (efa75d3)
Improvements
- [connectivity] Expose
getServiceBinding()
. This was previously an internal function. (efa75d3) - [generator] Generated clients support
noImplicitOverride
config option intsconfig.json
. (022adae) - [generator] If
basePath
cannot be determined, it is set to/
, and generation no longer fails. (28ab1a4) - [openapi-generator] Generate OpenAPI clients with header parameters. (aa0b849)
Fixed Issues
- [generator] Fix incorrect warning logs for operation imports that have a matching operation in the service specification. (9efe37e)
3.15.0 [Core Modules] - May 02, 2024
Improvements
- [openapi] Expose custom type for addCustomRequestConfiguration method of Openapi Request Builder (4b3ebfd)
- [eslint-config] Add a config based on the new Eslint flat config format. The new config can be used inside a
eslint.config.js
file. (7760692)
3.14.0 [Core Modules] - April 17, 2024
Fixed Issues
- [openapi-generator] Fix nested array type in generated OpenAPI schemas such that array wraps the whole object. (ff3ede6)
- [openapi-generator] Fix serialization of path params that contain quotes to avoid syntax error and failing client generation (b4bc9ad)
3.13.0 [Core Modules] - March 21, 2024
New Functionalities
- [connectivity] Support the AI Core Service Binding when creating destinations from service bindings (f72986a)
3.12.1 [Core Modules] - March 08, 2024
Fixed Issues
- [connectivity] Fix
fetchDestinationWithoutTokenRetrieval
to correctly return instance and subaccount destinations.- @sap-cloud-sdk/resilience@3.12.1
- @sap-cloud-sdk/util@3.12.1 (60fdc04)
- [openapi, odata-common] Fix type in
addCustomRequestConfiguration
method to accept values of typeany
. (60fdc04)
3.12.0 [Core Modules] - February 09, 2024
New Functionalities
- [connectivity] Support certificates in PEM format for
ClientCertificateAuthentication
. (36be489)
Fixed Issues
- [openapi] Fix incorrect encoding of query parameters in OpenAPI requests. Query parameters (except for additional custom parameters) are now encoded by default. To change this behavior overwrite the
parameterEncoder
in the request options. (d6b1c5b) - [openapi-generator] Fix types in generated OpenAPI schemas to have proper types instead of type
any
. (6bbdd4d)
3.11.0 [Core Modules] - January 23, 2024
Improvements
- [mail-client] Add optional
logger
property to enable console logs. Defaults tofalse
. (7ec62fa)
Fixed Issues
- [mail-client] Fix "Hostname/IP does not match certificate's altnames" issues with "localhost" when sending e-mails OnPremise. Always pass the host and port of the MAIL destination explicitly to the underlying
nodemailer
instead of falling back to the default.- @sap-cloud-sdk/connectivity@3.11.0
- @sap-cloud-sdk/util@3.11.0 (62f31fb)
3.10.0 [Core Modules] - January 05, 2024
Compatibility Notes
- [connectivity] The SAP Cloud SDK used to get all subaccount and instance destinations, that are available with your JWT (without potentially required token retrieval), through two requests to the destination service (
/subaccountDestinations
and/instanceDestinations
). While this approach can have advantages when caching, it can cause severe performance issues without caching. Therefore, from now on, only one destination is retrieved per requested destination through/destinations
. You can no longer rely on the SDK to automatically cache all destinations on the first request. If needed, you can callgetAllDestinationsFromDestinationService()
with cache enabled instead. (c721bbd) - [connectivity] Using Principal Propagation through authentication type
NoAuthentication
is no longer supported. This resulted in erroneous behavior for destinations with authentication typeNoAuthentication
. If you need to use Principal Propagation use authentication typePrincipalPropagation
. (28c9cb7)
New Functionalities
- [util] Add support for setting log level for newly created logger using environment variable
SAP_CLOUD_SDK_LOG_LEVEL
. (4d2b49b)
Improvements
- [connectivity] Retrieve only one destination per requested destination instead of all subaccount and instance destinations. (See compatibility notes.) (c721bbd)
Fixed Issues
- [connectivity] Allow the use of authentication type
NoAuthentication
with proxy typeOnPremise
without requiring theSAP-Connectivity-Authentication
header. (28c9cb7)
3.9.0 [Core Modules] - December 08, 2023
Fixed Issues
- [odata-common] Add support for subrequest serialization where a batch request may only contain an entity with no path. (a87dd7f)
3.8.1 [Core Modules] - November 20, 2023
Improvements
- [eslint-config] Update eslint plugins (d6bbd3210)
3.8.0 [Core Modules] - November 17, 2023
Compatibility Notes
- [connectivity] Remove unused internal functionality around JWT property access, like
userFromJwt
(removed) andaudiences
(changed). (693cd655f)
New Functionalities
- [mail-client] Add Support for
Location ID
in destinations of typeMAIL
(8516b7f04)
Fixed Issues
- [generator] Don't generate
delete()
,update()
, andgetByKey()
methods in the RequestBuilder of an entity without keys.- @sap-cloud-sdk/generator-common@3.8.0
- @sap-cloud-sdk/odata-common@3.8.0
- @sap-cloud-sdk/odata-v2@3.8.0
- @sap-cloud-sdk/odata-v4@3.8.0
- @sap-cloud-sdk/util@3.8.0 (34ef77a1c)
3.7.0 [Core Modules] - October 17, 2023
Fixed Issues
- [odata-common, odata-v2, odata-v4, generator, generator-common] Do not send
null
values in the request payload for properties that are not set while creating or updating an entity. - [odata-common, odata-v2, odata-v4, generator, generator-common] Fix
RangeError: Maximum call stack size exceeded
error that occurs when updating an entity after callinggetByKey
. (bdcf14f85)
3.6.0 [Core Modules] - October 02, 2023
Compatibility Notes
- [connectivity] Proxy configuration is no longer realized through a proxy agent, but with the native axios proxy setting instead. (025b6aa2c)
- [http-client, connectivity] When using proxies with
@sap-cloud-sdk/connectivity@>=3.6.0
, you must upgrade to@sap-cloud-sdk/http-client@>=3.6.0
. Proxies in@sap-cloud-sdk/connectivity@>=3.6.0
are not compatible with@sap-cloud-sdk/http-client@<3.6.0
. (025b6aa2c)
Fixed Issues
- [connectivity] Use axios native proxy, instead of proxy agent, which causes connection issues for write requests on SAP Cloud Connector. (025b6aa2c)
- [http-client] Fix CSRF token fetching against OnPremise systems. (c2a2987c5)
3.5.0 [Core Modules] - September 13, 2023
Fixed Issues
- [connectivity] Compare
selectionStrategy
inDestinationFetchOptions
based on value instead of reference. (7ed5ceb52) - [connectivity] Fix destination caching for destinations from service bindings. The destinations are not cached repeatedly. The function
getDestinationFromServiceBinding()
returnsundefined
for destinations which have expired JWTs. (bf54df09b) - [connectivity] Support destinations of type
ClientCertificateAuthentication
without password.- @sap-cloud-sdk/resilience@3.5.0
- @sap-cloud-sdk/util@3.5.0 (2277f9443)
- [odata-common, odata-v2, odata-v4] Fix OData v2 serialization for
Edm.Decimal
to serialize tostring
. (ee7477ce2)
3.4.0 [Core Modules] - July 31, 2023
Compatibility Notes
- [connectivity] Deprecate
destinationForServiceBinding()
andPartialDestinationFetchOptions
. UsegetDestinationFromServiceBinding()
andServiceBindingTransformOptions
instead. (bde64634d)
New Functionalities
- [connectivity] Always add a name to destinations from service bindings created with
getDestinationFromServiceBinding()
. (db0780f1b) - [connectivity] Support forwarding of auth tokens for destinations from the destination service, service bindings and environment variables. (bde64634d)
Fixed Issues
- [odata-common, odata-v4] Serialize properties of type "Edm.Decimal" to numbers when they are within the safe range and strings when they are not. (431d2a542)
3.3.0 [Core Modules] - July 21, 2023
Compatibility Notes
-
[connectivity] The
expiresIn
property ofauthTokens
on aDestination
can be undefined. (c09b1d06f) -
[connectivity] Deprecate
getAgentConfig()
:- Temporarily use replacement function
getAgentConfigAsync()
. - Rename
getAgentConfigAsync()
togetAgentConfig()
in next major version. (36a01f775)
- Temporarily use replacement function
New Functionalities
- [connectivity] Add option to cache mTLS certificates. (36a01f775)
Improvements
- [connectivity] Do not rely on XSUAA service when caching service tokens. Cache keys are now based on service credentials URL. (0583836bc)
- [connectivity] Do not rely on the XSUAA service binding to retrieve tenant information when registering destinations. If tenant is unknown and no binding is found, set it to a default value (
'tenant_id'
). (8f54207b6) - [connectivity] Read mTLS certificates asynchronously. (36a01f775)
Fixed Issues
- [connectivity] Remove dependency to XSUAA service binding when checking whether a JWT was issued by XSUAA for destination retrieval. Now, the
ext_attr.ehancer
property is checked. (6b58354e8) - [http-client] Do not set default tenant ID in the context of middlewares, if the tenant ID is unknown. In those cases it will be
undefined
from now on. (8f54207b6)
3.2.0 [Core Modules] - May 30, 2023
New Functionalities
- [connectivity] Enable the use of mTLS certificates for registered destinations on CloudFoundry. (616d77b85)
Improvements
- [connectivity] Set the default validity time of the client credentials token cache to 5 minutes instead of never expiring. (782b9e37e)
Fixed Issues
- [connectivity, http-client] Forward the user JWT irrespective of the destination authentication type when
forwardAuthToken
is set to true on a destination (56c3f70f4) - [http-client] Improve CSRF token fetching for large requests. (73ff0ab03)
- [odata-common] Remove encoding of keys in the
getEntityKeys()
as it should only happen once ingetResourcePathForKeys()
.Fixes the errorvalue.format is not a function
when executing requests for entities withEdm.Date
type key property. (aa1a4bdb0) - [resilience] Fix parsing error when the last response in a chain of retries returned undefined.
- @sap-cloud-sdk/util@3.2.0 (234675fc3)
3.1.1 [Core Modules] - April 14, 2023
Fixed Issues
- [resilience] Fix transpilation on OData generation, where types for 'opossum' could not be found.
- @sap-cloud-sdk/util@3.1.1 (166a16d82)
3.1.0 [Core Modules] - April 06, 2023
Compatibility Notes
- [connectivity] The combination of
iss
andjwt
is now supported when fetching destinations. When both properties are set, theiss
property is no longer ignored. (28b7af86f)
New Functionalities
- [connectivity] Add support for authentication type
NoAuthentication
on-premise destinations. (039412e59) - [connectivity] Allow combination of
iss
anjwt
when fetching a destination. In this case theiss
URL will be used to fetch the destination service token andjwt
will be used for thex-user-token
header of user based authentication types. (28b7af86f)
Fixed Issues
- [odata-common] Adjust
FromJsonType
to stricter typings in TypeScript 5. (cc8425abc)
3.0.2 [Core Modules] - March 23, 2023
Compatibility Notes
- [odata-common, odata-v2, odata-v4] The
ActionFunctionImportRequestBuilderBase
has an additional mandatory type parameter to pass the according (de-)serializer type. This was missing previously due to a bug. (2fa8c36a6)
Fixed Issues
- [connectivity] Fix the
The proxy configuration is undefined
error for OnPremMAIL
destinations by removing theisHttpDestination
check when adding proxyConfiguration to the destination object.- @sap-cloud-sdk/resilience@3.0.2
- @sap-cloud-sdk/util@3.0.2 (47fc7278d)
- [mail-client] Fix error
Greeting never received
when sending emails to On-Premise mail servers. The_readableListening
property of socket is set totrue
to allow nodemailer to receive SMTP greeting messages. (47fc7278d) - [mail-client] Fix
Invalid greeting
error from nodemailer by removing thetransport.verify
function call. (be04dafc2) - [odata-common, odata-v2, odata-v4] Fix batch requests to accept only functions or actions. (2fa8c36a6)
3.0.1 [Core Modules] - March 01, 2023
Compatibility Notes
- [resilience] Deprecate erroneously exposed
circuitBreakerHttp()
function in favor ofcircuitBreaker()
.- @sap-cloud-sdk/util@3.0.1 (fcab06c4b)
Improvements
- [generator-common] Improve logs when generating OData clients without package.json
- @sap-cloud-sdk/util@3.0.1 (c78c16ddf)
3.0.0 [Core Modules] - February 28, 2023
Compatibility Notes
- [connectivity] The generic types of
JwtKeyMapping
is simplified so the second type argumentJwtKeysT
are always strings. (1b974095f) - [connectivity] The
Protocol
enum was replaced with a string literal union type. Now, instead of passingProtocol.HTTPS
pass 'https'. (1b974095f) - [connectivity, http-client, openapi, odata-common, odata-v2, resilience] Remove the options
timeout
andenableCircuitBreaker
from all BTP service interactions i.e. destination and token fetching. (1b974095f) - [connectivity, http-client, mail-client, openapi, odata-common, odata-v2, odata-v4, eslint-config, generator, test-util, util, openapi-generator, generator-common, temporal-de-serializers, resilience] Switch the compilerOptions.module to
Node16
instead ofCommonJS
for better interoperability with ES modules. See the TypeScript handbook for technical details if needed. (1b974095f) - [connectivity] The enum
IsolationStrategy
was replaced with a string literal union type of the same name. Use 'tenant' and 'tenant-user' instead ofIsolationStrategy.Tenant
andIsolationStrategy.Tenant_User
. (1b974095f) - [connectivity, http-client, odata-common] The
url
property inDestination
is now optional as destinations of typeMAIL
do not have a URL. (1b974095f) - [http-client, openapi, odata-common] Remove
timeout()
method from the request builders and thetimeout
options from theexecuteHttpRequest()
function. Visit the documentation portal to see how to add a timeout using middlewares. (1b974095f) - [http-client] Removed overload of executeHttpRequest
The overload, that accepted
HttpRequestConfigWithOrigin
as a parameter, is removed and replaced by the functionexecuteHttpRequestWithOrigin
. (1b974095f) - [odata-common, generator, util] By default, generation of OData clients fails if a service path cannot be determined. Either provide
servicePath
value in theoptions-per-service.json
or setskipValidation
to true, in which case,/
will be used. (1b974095f) - [odata-common] The constructor of
ODataRequestConfig
was changed so that the third parameter cannot be astring
anymore. Passing in a string which was then interpreted as the value for theContent-Type
HTTP header was deprecated. The type of the parameter is nowRecord<string, any>
, and if only want to set theContent-Type
HTTP header you can do so by passing{'content-type': 'some-value'}
to the constructor. (1b974095f) - [odata-common] The constructor of the entity API is private to avoid accidental usage. Use the service object to get a API instance. (1b974095f)
- [odata-common, generator, openapi-generator] The
serviceMapping
option of the OData generator has been renamed tooptionsPerService
. The mapping file,service-mapping.json
has also been renamed tooptions-per-service.json
. By default, an options file will not be generated. (1b974095f) - [odata-common] Setting custom fields in
fromJson
through the_customFields
property has been removed. Add custom properties to your JSON object instead. (1b974095f) - [generator] The options per service behavior is now the same as for the OpenApi generator. For details on how to migrate and what has change look at the migration guide. (1b974095f)
- [generator] The deprecated
forceOverwrite
option of the generator is removed. Use theoverwrite
option instead. - [generator] The deprecated
generatePackageJson
option of the generator is removed. Use thepackageJson
option instead. - [generator] The deprecated
writeReadme
option of the generator is removed. Use thereadme
option instead. - [generator] The deprecated
processesJsGeneration
option of the generator is removed. Use thetranspilationProcesses
option instead. - [generator] The internal options
sdkAfterVersionScript
,s4HanaCloud
andpackageVersion
of the generator are removed. These were hidden options never meant for external usage and there is no replacement. - [generator] The deprecated
generateNpmrc
option of the generator is removed. Use theinclude
option to add a.npmrc
to the generated code if needed. (1b974095f) - [generator] Add
verbose
generator option. By default, only error and warning logs will be displayed. Ifverbose
is set totrue
, all logs will be displayed. (1b974095f) - [generator] The
generateJs
option has been replaced with thetranspile
option. Transpilation is not enabled by default. (1b974095f) - [generator] The command line argument
inputDir
of the OData generator is renamed toinput
. The newinput
options accepts now also file paths and glob patterns. (1b974095f) - [generator] The OData generator won't automatically rename identifiers to avoid name conflicts.
The generation process will fail if identifiers have conflicting names.
Switch on the
skipValidation
flag if you want to generate despite name conflicts and are okay with changed identifier names to avoid conflicts. (1b974095f) - [generator, openapi-generator, generator-common] Removed the option
versionInPackageJson
from the OData and OpenAPI generator. If the optionpackageJson
is enabled now apackage.json
with a default version1.0.0
is created. If necessary use theinclude
option to add apackage.json
with a custom value. - [generator, openapi-generator] Removed the option
licenseInPackageJson
from the OData and OpenAPI generator. If the optionpackageJson
is enabled now apackage.json
with a default licenseUNLICENSED
is created. If necessary use theinclude
option to add apackage.json
with a custom value. (1b974095f) - [generator, openapi-generator] Rename servicePath to basePath. (1b974095f)
- [generator] The option
generateCSN
is removed. There is no replacement. (1b974095f) - [generator] The type for paths in the
GeneratorOptions
is changed fromfs.PathLike
tostring
. In case you passed a buffer object please resolve it to a string before passing it to the SAP Cloud SDK. (1b974095f) - [generator, openapi-generator, generator-common] The two generators use the same CLI parsing code now, aligning the way paths are resolved.
In case you experience problems with the new logic, enable the
verbose
flag to investigate the new paths. (1b974095f) - [util] The function
variadicArgumentToArray
is replaced by the functiontransformVariadicArgumentToArray
. (1b974095f) - [util] The field
logger
on the interfaceLoggerOptions
was not used and is removed from the interface. (1b974095f) - [openapi-generator] The internal option
packageVersion
of the OpenAPI generator is removed. (1b974095f) - [openapi-generator]
tsConfig
option has been renamed totsconfig
. (1b974095f) - [generator-common] The generator does not create
d.ts.map
files per default anymore. If you need them include a customtsconfig.json
. - [connectivity, http-client, mail-client, openapi, odata-common, odata-v2, odata-v4, eslint-config, generator, test-util, util, openapi-generator, generator-common, temporal-de-serializers, resilience] All SAP Cloud SDK packages ship without
d.ts.map
files from now on. Modern IDEs don't require those files for code navigation, thus they are removed to decrease download size of the SDK. (1b974095f)
New Functionalities
- [connectivity] Support
OAuth2RefreshToken
authentication type (1b974095f) - [connectivity] Add a
retry
option in theDestinationFetchOption
. Enable this options if the token exchange done by the destination service is unstable. (1b974095f) - [connectivity, resilience] Add
ResilienceOptions
andresilience()
function. The function returns an array of middlewares based on the provided options. (1b974095f) - [http-client, resilience] The request configuration used in the final request is now part of the middleware context.
User can implement middlewares to change request properties like
headers
using this reference in the middleware context. The request configuration contains theurl
,headers
and all other properties of the HTTP request. (1b974095f) - [http-client, openapi, odata-common] Introduce the middleware on the request builders and http-client. Visit the documentation portal to see how to use middlewares. (1b974095f)
- [generator, generator-common] Introduced options
transpile
andtsconfig
to configure transpilation for generated OData clients. (1b974095f)
Improvements
- [connectivity] Replace
Protocol
enum with a string literal union type. (1b974095f) - [connectivity] Replace
IsolationStrategy
enum with union type. (1b974095f) - [generator] Align naming rules for operations and properties in OData clients by removing
_
prefix (1b974095f)
Fixed Issues
- [connectivity] Fix the combination of providing the
iss
together withOnPremise
basic destinations. (1b974095f) - [odata-v2] Allow to update OData v2 entities to
null
. Fixes 3204. (1b974095f) - [generator] Allow OData service to contain an entity name 'Service'. (1b974095f)
- [generator] Now links to the correct generator binary. (1b974095f)