Socket
Socket
Sign inDemoInstall

@sap/cds-mtxs

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sap/cds-mtxs - npm Package Compare versions

Comparing version 1.13.3 to 1.13.4

6

CHANGELOG.md

@@ -9,2 +9,8 @@ # Change Log

## Version 1.13.4 - 2023-12-07
### Changed
- The built-in Service Manager client uses async APIs for creating or deleting service bindings by default.
## Version 1.13.3 - 2023-12-05

@@ -11,0 +17,0 @@

2

package.json
{
"name": "@sap/cds-mtxs",
"version": "1.13.3",
"version": "1.13.4",
"description": "SAP Cloud Application Programming Model - Multitenancy library",

@@ -5,0 +5,0 @@ "homepage": "https://cap.cloud.sap/",

@@ -33,3 +33,3 @@ const cds = require('@sap/cds/lib')

tenantToDbUrl = (await hana.getAll(tenants)).reduce((res, t) => {
const id = t.labels.tenant_id[0]
const id = t.tenant_id ?? t.labels.tenant_id[0]
if (!t.credentials) throw new Error('Credentials for tenant ' + id + ' are not available.')

@@ -36,0 +36,0 @@ return { ...res, [id]: `${t.credentials.host}:${t.credentials.port}` }

@@ -27,7 +27,7 @@ const https = require('https')

try {
_instance = await api.post('service_instances', {
_instance = await api.post('service_instances?async=true', {
name, service_plan_id, parameters: provisioning_parameters,
labels: { tenant_id: [tenant] },
})
service_instance_id = await _poll(_instance.headers.location)
service_instance_id = (await _poll(_instance.headers.location)).resource_id
} catch (e) {

@@ -37,7 +37,8 @@ if (e.status === 409) service_instance_id = (await _instance4(tenant)).id

}
const { data } = await api.post('service_bindings', {
const _binding = await api.post('service_bindings?async=true', {
name: tenant + `-${uuid()}`, service_instance_id, binding_parameters,
labels: { tenant_id: [tenant], service_plan_id: [service_plan_id], managing_client_lib: ['instance-manager-client-lib'] }
})
const binding = { ...data, tags: ['hana'] }
await _poll(_binding.headers.location)
const binding = { ...await get(tenant), tags: ['hana'] }
return cacheBindings ? _bindings4.cached[tenant] = binding : binding

@@ -53,6 +54,4 @@ }

// TODO revisit control flow
async function get(tenant, options) {
let credentials
let result
let credentials, result
try {

@@ -78,3 +77,5 @@ [{ credentials } = {}] = await _bindings4([tenant], options)

const bindings = await _bindings4([tenant], { disableCache: true })
const _deleteBindings = bindings.map(({id}) => api.delete(`service_bindings/${id}`))
const _deleteBindings = bindings.map(async ({ id }) =>
_poll((await api.delete(`service_bindings/${id}?async=true`)).headers.location)
)
if (cacheBindings) delete _bindings4.cached[tenant]

@@ -86,3 +87,3 @@ const failedDeletions = (await Promise.allSettled(_deleteBindings)).filter(d => d.status === 'rejected')

if (instance) {
const _deleteInstance = await api.delete(`service_instances/${instance.id}`)
const _deleteInstance = await api.delete(`service_instances/${instance.id}?async=true`)
if (_deleteInstance.headers.location) await _poll(_deleteInstance.headers.location)

@@ -98,3 +99,3 @@ }

const fieldQuery = `name eq '${await _instanceName4(tenant)}'`
const instances = await api.get('service_instances', { params: { fieldQuery }})
const instances = await api.get('service_instances?async=true', { params: { fieldQuery }})
return instances.data.items[0]

@@ -167,4 +168,4 @@ }

const _next = async (resolve, reject) => {
const { data: { state, resource_id, errors }} = await api.get(location.slice(4)) // Remove '/v1/'
if (state === 'succeeded') return resolve(resource_id)
const { data, data: { state, errors } } = await api.get(location.slice('/v1/'.length))
if (state === 'succeeded') return resolve(data)
if (state === 'failed') return reject(errors[0] ?? errors)

@@ -171,0 +172,0 @@ if (attempts > 20) return reject(new Error(`Polling ${location} timed out`))

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc