@sap/cds-dk 9.7.0 → 9.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/bin/version.js +4 -3
- package/lib/build/buildTaskFactory.js +2 -2
- package/lib/build/plugin.js +3 -3
- package/lib/build/provider/fiori/index.js +3 -3
- package/lib/build/provider/mtx-sidecar/index.js +1 -1
- package/lib/build/util.js +18 -36
- package/lib/init/constants.js +1 -1
- package/lib/init/index.js +9 -4
- package/lib/init/projectReader.js +1 -0
- package/lib/init/template/approuter/files/values.yaml.hbs +1 -0
- package/lib/init/template/completion/completionSetup.js +1 -1
- package/lib/init/template/data/as-csv.js +4 -1
- package/lib/init/template/html5-repo/index.js +6 -5
- package/lib/init/template/initial/files/readme.md +2 -4
- package/lib/init/template/kyma/index.js +6 -2
- package/lib/init/template/xsuaa/index.js +1 -1
- package/lib/util/cf.js +1 -1
- package/npm-shrinkwrap.json +23 -23
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,27 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
|
8
8
|
|
|
9
|
+
## Version 9.7.2 - tbd
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- `cds build --for mtx-sidecar` correctly resolves `@source` in custom MTX sidecar services.
|
|
14
|
+
- `cds build` now utilises caching for workspace resolution, which will speed up build times for projects with many workspaces.
|
|
15
|
+
- `cds add` commands don't augment Helm Charts if not managed by CAP.
|
|
16
|
+
- `cds add approuter` for Kyma configures token exchange for managed approuter scenarios.
|
|
17
|
+
- `cds bind` reports additional error information while accessing Cloud Foundry services.
|
|
18
|
+
|
|
19
|
+
## Version 9.7.1 - 2026-02-05
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- `cds add completion` now works without specifying the project runtime.
|
|
24
|
+
|
|
25
|
+
- `cds add xsuaa` correctly adds the the binding for the `html5-apps-deployer` on Kyma.
|
|
26
|
+
- `cds version` prints an older format in a legacy situation.
|
|
27
|
+
- `cds add nodejs` is automatically added in BAS scenarios for compatibility if no other runtime is specified.
|
|
28
|
+
- `cds add data -n` works correctly for `Composition of one` scenarios.
|
|
29
|
+
|
|
9
30
|
## Version 9.7.0 - 2026-02-02
|
|
10
31
|
|
|
11
32
|
### Added
|
package/bin/version.js
CHANGED
|
@@ -203,9 +203,10 @@ function print_versions (rows, o, cwd = o.root+'/') {
|
|
|
203
203
|
if (!rows || rows.length === 0) return console.error (YELLOW, ' No CAP packages found.', RESET)
|
|
204
204
|
const local = o.abs ? p => p : p => !p ? '' : p.startsWith(cwd) ? p.replace(cwd,'./') : p.replace(home,'~')
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
206
|
+
// cds10: remove and offer --json option instead
|
|
207
|
+
if (cds.env['project-nature'] === 'java' || process.env.WS_BASE_URL) {
|
|
208
|
+
console.log(rows.map(([name,version,location]) => `${GREEN}${name === 'cds.home'?'home':name}:${RESET} ${version??location}`).join('\n'))
|
|
209
|
+
return
|
|
209
210
|
}
|
|
210
211
|
|
|
211
212
|
// compute column widths for tabular printing
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
const cds = require('../cds')
|
|
3
3
|
const BuildTaskProviderFactory = require('./buildTaskProviderFactory')
|
|
4
|
-
const { hasJavaNature,
|
|
4
|
+
const { hasJavaNature, getDefaultModelPaths, hasOptionValue, BuildError } = require('./util')
|
|
5
5
|
const { OPTION_WS, IGNORE_DEFAULT_MODELS, NODEJS_MODEL_EXCLUDE_LIST, BUILD_TASK_NODEJS, BUILD_TASK_NODE_CF } = require("./constants")
|
|
6
6
|
const DEBUG = cds.debug('cli|build')
|
|
7
7
|
|
|
@@ -74,7 +74,7 @@ module.exports = class BuildTaskFactory {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
static _getExistingTasks() {
|
|
77
|
-
return Array.isArray(
|
|
77
|
+
return Array.isArray(cds.env.build?.tasks) ? structuredClone(cds.env.build.tasks) : []
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
static async _applyCommonTaskDefaults(tasks) {
|
package/lib/build/plugin.js
CHANGED
|
@@ -7,7 +7,7 @@ const IS_WIN = os.platform() === 'win32';
|
|
|
7
7
|
const { OUTPUT_MODE, OUTPUT_MODE_FILESYSTEM, SEVERITY_INFO, SEVERITY_WARNING, SEVERITY_ERROR } = require('./constants')
|
|
8
8
|
|
|
9
9
|
const { find } = require('../util/fs')
|
|
10
|
-
const { hasOptionValue,
|
|
10
|
+
const { hasOptionValue, relativePaths, BuildMessage, filterFeaturePaths } = require('./util')
|
|
11
11
|
|
|
12
12
|
const DEBUG = cds.debug('cli|build')
|
|
13
13
|
|
|
@@ -286,9 +286,9 @@ class Plugin {
|
|
|
286
286
|
// Returns the value of the given build option defined for this build task.
|
|
287
287
|
_getBuildOption(qualifiedName) {
|
|
288
288
|
// build task options overwriting other settings
|
|
289
|
-
let value =
|
|
289
|
+
let value = this.context.options[qualifiedName] // command line
|
|
290
290
|
if (value === undefined) {
|
|
291
|
-
value =
|
|
291
|
+
value = this.task.options[qualifiedName] // task options
|
|
292
292
|
}
|
|
293
293
|
return value
|
|
294
294
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const path = require('path')
|
|
2
2
|
const cds = require('../../../cds')
|
|
3
3
|
const EdmxBuildPlugin = require('../edmxBuildPlugin')
|
|
4
|
-
const {
|
|
4
|
+
const { relativePaths } = require('../../util')
|
|
5
5
|
const { OUTPUT_MODE, OUTPUT_MODE_RESULT, BUILD_TASK_FIORI, CDS_CONFIG_PATH_SEP, OUTPUT_MODE_FILESYSTEM } = require('../../constants')
|
|
6
6
|
const DEBUG = cds.debug('cli|build')
|
|
7
7
|
|
|
@@ -105,14 +105,14 @@ class FioriBuildPlugin extends EdmxBuildPlugin {
|
|
|
105
105
|
return
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
const mainService =
|
|
108
|
+
const mainService = manifest?.['sap.app']?.dataSources?.mainService
|
|
109
109
|
if (!mainService) {
|
|
110
110
|
// no mainService defined - not supported
|
|
111
111
|
DEBUG?.(`UI module does not have a datasource [mainService], [${relativePaths(cds.root, manifestPath)}], skipping build`)
|
|
112
112
|
return
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
const localUri =
|
|
115
|
+
const localUri = mainService?.settings?.localUri
|
|
116
116
|
const uri = mainService.uri
|
|
117
117
|
|
|
118
118
|
if (!localUri || !uri) {
|
|
@@ -148,7 +148,7 @@ module.exports = class extends require('../nodejs') {
|
|
|
148
148
|
// existing compilation error messages that have been downgraded to warnings
|
|
149
149
|
// see cap/issues/issues/16401#issuecomment-7205397
|
|
150
150
|
const messages = []
|
|
151
|
-
const model = cds.load(modelFilePaths, { sync: true, messages })
|
|
151
|
+
const model = cds.load(modelFilePaths, { sync: true, messages, cwd: this.task.src })
|
|
152
152
|
messages.forEach(msg => this.messages.push(msg))
|
|
153
153
|
return model
|
|
154
154
|
}
|
package/lib/build/util.js
CHANGED
|
@@ -21,32 +21,6 @@ const FLATTEN_MAX_DEPTH = 20 // should suffice, was infinite in earlier versions
|
|
|
21
21
|
/** @typedef {object[] | object} Credentials */
|
|
22
22
|
/** @typedef {(string | NestedStringArray)[]} NestedStringArray */
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* @param {object} src - object to get property from
|
|
26
|
-
* @param {string | string[]} segments - property path
|
|
27
|
-
*/
|
|
28
|
-
function getProperty(src, segments) {
|
|
29
|
-
segments = Array.isArray(segments) ? segments : segments.split('.')
|
|
30
|
-
return segments.reduce((p, n) => p && p[n], src)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @param {object} src - object to set property on
|
|
35
|
-
* @param {string | string[]} segments - property path
|
|
36
|
-
* @param {unknown} value - value to set
|
|
37
|
-
*/
|
|
38
|
-
function setProperty(src, segments, value) {
|
|
39
|
-
segments = Array.isArray(segments) ? segments : segments.split('.')
|
|
40
|
-
segments.reduce((p, n, idx) => {
|
|
41
|
-
if (segments.length === idx + 1) {
|
|
42
|
-
p[n] = value
|
|
43
|
-
} else if (p[n] === undefined) {
|
|
44
|
-
p[n] = {}
|
|
45
|
-
}
|
|
46
|
-
return p[n]
|
|
47
|
-
}, src)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
24
|
/**
|
|
51
25
|
* Returns whether this project is a java project or not.
|
|
52
26
|
*/
|
|
@@ -352,33 +326,43 @@ function filterFeaturePaths(model, modelPaths) {
|
|
|
352
326
|
return sources
|
|
353
327
|
}
|
|
354
328
|
|
|
329
|
+
// spawning npm ls is expensive. In projects with many workspaces,
|
|
330
|
+
// this can significantly increase build time, despite the result being the same.
|
|
331
|
+
const _cachedWsRoots = new Map()
|
|
355
332
|
/**
|
|
356
333
|
* Read installed npm workspaces using 'npm ls -ws --json'.
|
|
357
334
|
* There is currently no easier way for this, as workspaces
|
|
358
|
-
* could contain globs. Glob resolution will be supported
|
|
335
|
+
* could contain globs. Glob resolution will be supported.
|
|
336
|
+
* The result is cached by workspace root!
|
|
359
337
|
* natively in the future (fs.glob is in experimental state as of Node23).
|
|
360
338
|
* @param {import('fs').PathLike} wsRoot - the root directory of the workspace
|
|
361
339
|
* @returns {Promise<string[]>} list of package paths, or an empty array if either
|
|
362
340
|
* no workspaces are defined or have not been installed.
|
|
363
341
|
*/
|
|
364
342
|
async function _execNpmWs(wsRoot) {
|
|
343
|
+
const cached = _cachedWsRoots.get(wsRoot)
|
|
344
|
+
if (cached) {
|
|
345
|
+
return cached
|
|
346
|
+
}
|
|
347
|
+
/** @type {string[]} */
|
|
348
|
+
let result = []
|
|
365
349
|
try {
|
|
366
350
|
const cmdLine = 'npm ls -ws --json'
|
|
367
351
|
DEBUG?.(`execute ${cmdLine}`)
|
|
368
352
|
// @ts-expect-error - TODO: shell should be a string. But can probably be removed altogether?
|
|
369
|
-
const
|
|
370
|
-
|
|
371
|
-
const jsonResult = JSON.parse(result.stdout)
|
|
353
|
+
const { stdout } = await execAsync(cmdLine, { shell: IS_WIN, stdio: ['inherit', 'pipe', 'inherit'], cwd: wsRoot })
|
|
354
|
+
const jsonResult = JSON.parse(stdout)
|
|
372
355
|
if (jsonResult.dependencies) {
|
|
373
|
-
|
|
356
|
+
result = Object.keys(jsonResult.dependencies)
|
|
374
357
|
} else if (jsonResult.name) {
|
|
375
|
-
|
|
358
|
+
result = [jsonResult.name]
|
|
376
359
|
}
|
|
377
360
|
} catch (/** @type {{stderr: string}} */e) {
|
|
378
|
-
e.stderr = e.stderr?.replace(/npm ERR! /
|
|
361
|
+
e.stderr = e.stderr?.replace(/npm ERR! /gi, '')
|
|
379
362
|
throw e
|
|
380
363
|
}
|
|
381
|
-
|
|
364
|
+
_cachedWsRoots.set(wsRoot, result)
|
|
365
|
+
return result
|
|
382
366
|
}
|
|
383
367
|
|
|
384
368
|
function _validateWsDependencies(wsRoot, dependencies, devDependencies) {
|
|
@@ -510,8 +494,6 @@ class BuildError extends Error {
|
|
|
510
494
|
}
|
|
511
495
|
|
|
512
496
|
module.exports = {
|
|
513
|
-
getProperty,
|
|
514
|
-
setProperty,
|
|
515
497
|
hasJavaNature,
|
|
516
498
|
hasOptionValue,
|
|
517
499
|
relativePaths,
|
package/lib/init/constants.js
CHANGED
package/lib/init/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
const { readdirSync } = require('node:fs')
|
|
3
3
|
const { basename, join, relative, resolve } = require('node:path')
|
|
4
|
-
const { OPTIONS, COMMAND_INIT } = require('./constants'), { JAVA } = OPTIONS
|
|
4
|
+
const { OPTIONS, COMMAND_INIT } = require('./constants'), { JAVA, COMPLETION } = OPTIONS
|
|
5
5
|
const validate = require('./validate')
|
|
6
6
|
const cmd = require('../util/command')
|
|
7
7
|
|
|
@@ -91,7 +91,7 @@ module.exports = class CDSGenerator {
|
|
|
91
91
|
command: COMMAND_INIT,
|
|
92
92
|
// keep caller independent from internal names
|
|
93
93
|
options: {
|
|
94
|
-
|
|
94
|
+
...options,
|
|
95
95
|
add: new Set(options.add)
|
|
96
96
|
},
|
|
97
97
|
argv:[]
|
|
@@ -143,8 +143,9 @@ module.exports = class CDSGenerator {
|
|
|
143
143
|
const cmds = Object.values(OPTIONS)
|
|
144
144
|
const byPriority = (a, b) => cmds.indexOf(a) - cmds.indexOf(b)
|
|
145
145
|
const sorted = Array.from(plugins).sort(byPriority)
|
|
146
|
+
const skipLogFacets = ['initial', COMPLETION]
|
|
146
147
|
for (const [i, facet] of Object.entries(sorted)) {
|
|
147
|
-
if (!cds.cli.options.dry && facet
|
|
148
|
+
if (!cds.cli.options.dry && !skipLogFacets.includes(facet))
|
|
148
149
|
console.log(`Adding facet: ${BOLD + facet + RESET}`)
|
|
149
150
|
const template = this.templateList[i]
|
|
150
151
|
await template.run()
|
|
@@ -243,7 +244,7 @@ module.exports = class CDSGenerator {
|
|
|
243
244
|
_alias('kibana', 'application-logging')
|
|
244
245
|
_alias('kibana-logging', 'application-logging')
|
|
245
246
|
|
|
246
|
-
const runtimeAgnostic = { initial:1, 'tiny-sample':1, data:1 }
|
|
247
|
+
const runtimeAgnostic = { initial:1, 'tiny-sample':1, data:1, completion: 1 }
|
|
247
248
|
if (!(plugin in runtimeAgnostic)) {
|
|
248
249
|
const creating = ['java', 'nodejs', 'typescript', 'esm', 'extension']
|
|
249
250
|
const { command, options, argv } = cds.cli
|
|
@@ -324,6 +325,10 @@ module.exports = class CDSGenerator {
|
|
|
324
325
|
|
|
325
326
|
if (cds.cli.command === COMMAND_INIT && !options.add.has(JAVA)) {
|
|
326
327
|
options.add.add('initial')
|
|
328
|
+
|
|
329
|
+
// cds10: remove
|
|
330
|
+
const { isBas } = require('./projectReader').readProject()
|
|
331
|
+
if (isBas) options.add.add('nodejs')
|
|
327
332
|
}
|
|
328
333
|
}
|
|
329
334
|
}
|
|
@@ -331,4 +331,5 @@ function _normalizeSpringBootCfg(obj) {
|
|
|
331
331
|
* @property {String} githubSlug GitHub org/repo.
|
|
332
332
|
* @property {boolean} isMonorepoMicroservice Indicates if the project is a monorepo microservice.
|
|
333
333
|
* @property {String} npmWorkspaceRoot The root path of the monorepo workspace.
|
|
334
|
+
* @property {String} isBas Indicates if the project is running in Business Application Studio (BAS).
|
|
334
335
|
*/
|
|
@@ -90,7 +90,7 @@ module.exports = new class CompletionSetup {
|
|
|
90
90
|
profileFile = '.config/fish/config.fish';
|
|
91
91
|
break;
|
|
92
92
|
default:
|
|
93
|
-
throw `Completion is only supported for ${SUPPORTED_LINUX_SHELLS.join(', ')}.`;
|
|
93
|
+
throw `Current shell is '${shell}'. Completion is only supported for ${SUPPORTED_LINUX_SHELLS.join(', ')}.`;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
profileFile = path.join(os.homedir(), profileFile);
|
|
@@ -28,7 +28,10 @@ module.exports = async (data={}, csn, { headerOnly=false, separator=',' }={}) =>
|
|
|
28
28
|
if (value === undefined)
|
|
29
29
|
continue
|
|
30
30
|
if (element._type === 'cds.Composition') {
|
|
31
|
-
|
|
31
|
+
const t = element.target
|
|
32
|
+
if (data[t] === undefined) {
|
|
33
|
+
data[t] = value // Add object for a new entity. Next pass will process it.
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
else if (element._type === 'cds.Association') {
|
|
34
37
|
if (element.on) {
|
|
@@ -37,8 +37,8 @@ module.exports = class Html5RepoTemplate extends require('../../plugin') {
|
|
|
37
37
|
const project = readProject()
|
|
38
38
|
const {
|
|
39
39
|
isJava, srvPath, appPath, apps,
|
|
40
|
-
hasApprouter,
|
|
41
|
-
addSample,
|
|
40
|
+
hasApprouter, hasMta, addMta, hasKyma, hasXsuaa, hasMultitenancy, hasUI5,
|
|
41
|
+
addSample, addApprouter, addContainerize, addKyma, addHelm, addHelmUnifiedRuntime, addMultitenancy, addWorkzoneStandard, addXsuaa, addIas
|
|
42
42
|
} = project
|
|
43
43
|
|
|
44
44
|
await Promise.all(apps.map(async ({ app }) => {
|
|
@@ -65,7 +65,8 @@ module.exports = class Html5RepoTemplate extends require('../../plugin') {
|
|
|
65
65
|
await merge({ cds: { requires: { 'html5-repo': true } } }).into('mtx/sidecar/package.json')
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
const affected = addXsuaa || addApprouter || addWorkzoneStandard || addMultitenancy || addSample || addIas
|
|
69
|
+
if (addMta || affected && hasMta) {
|
|
69
70
|
const srv = srv4(srvPath)
|
|
70
71
|
project.apps = apps
|
|
71
72
|
const relationships = [{
|
|
@@ -109,7 +110,7 @@ module.exports = class Html5RepoTemplate extends require('../../plugin') {
|
|
|
109
110
|
})
|
|
110
111
|
}
|
|
111
112
|
|
|
112
|
-
// cds10
|
|
113
|
+
// cds10: change to if (addKyma)
|
|
113
114
|
// needed because of adding kyma to cli options in case of helm
|
|
114
115
|
if (addContainerize || (addKyma && !addHelm && !addHelmUnifiedRuntime)) {
|
|
115
116
|
const additions = [{
|
|
@@ -119,7 +120,7 @@ module.exports = class Html5RepoTemplate extends require('../../plugin') {
|
|
|
119
120
|
await merge(__dirname, '/files/containerize.yaml.hbs').into('containerize.yaml', { with: project, additions })
|
|
120
121
|
}
|
|
121
122
|
|
|
122
|
-
if (addKyma) {
|
|
123
|
+
if (addKyma || affected && hasKyma) {
|
|
123
124
|
await renderAndCopy(join(__dirname, 'files/html5-deployer.package.json.hbs'), 'app/html5-deployer/package.json', project)
|
|
124
125
|
await merge(__dirname, 'files/values.yaml.hbs').into('chart/values.yaml', { with: project })
|
|
125
126
|
}
|
|
@@ -11,14 +11,12 @@ File or Folder | Purpose
|
|
|
11
11
|
`srv/` | your service models and code go here
|
|
12
12
|
`readme.md` | this getting started guide
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
## Next Steps
|
|
16
15
|
|
|
17
16
|
- Open a new terminal and run `cds watch`
|
|
18
17
|
- (in VS Code simply choose _**Terminal** > Run Task > cds watch_)
|
|
19
|
-
- Start
|
|
20
|
-
|
|
18
|
+
- Start with your domain model, in a CDS file in `db/`
|
|
21
19
|
|
|
22
20
|
## Learn More
|
|
23
21
|
|
|
24
|
-
Learn more
|
|
22
|
+
Learn more at <https://cap.cloud.sap>.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { join } = require('path')
|
|
2
2
|
const cds = require('../../../cds')
|
|
3
|
-
const { exists, rimraf, copy, yaml } = cds.utils
|
|
3
|
+
const { exists, rimraf, copy, yaml, fs } = cds.utils
|
|
4
4
|
const { readProject } = require('../../projectReader')
|
|
5
5
|
const { merge } = require('../../merge')
|
|
6
6
|
const { ask4 } = require('../../../util/question')
|
|
@@ -21,7 +21,11 @@ module.exports = class KymaTemplate extends require('../../plugin') {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
static hasInProduction() {
|
|
24
|
-
|
|
24
|
+
if (exists('chart/Chart.yaml')) {
|
|
25
|
+
const chartYaml = yaml.parse(fs.readFileSync(join(cds.root, 'chart', 'Chart.yaml'), 'utf8'))
|
|
26
|
+
return chartYaml.annotations?.["app.kubernetes.io/managed-by"] === 'cds-dk/helm'
|
|
27
|
+
}
|
|
28
|
+
return false
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
async canRun() {
|
|
@@ -83,7 +83,7 @@ module.exports = class XsuaaTemplate extends require('../../plugin') {
|
|
|
83
83
|
await merge(__dirname, 'files/mta.yaml.hbs').into('mta.yaml', { project, additions, overwrites, relationships })
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
if (addKyma ||
|
|
86
|
+
if (addKyma || addMultitenancy && hasKyma) {
|
|
87
87
|
const overwrites = addMultitenancy ? [{ item: 'xsuaa.parameters.tenant-mode', withValue: 'shared' }] : []
|
|
88
88
|
await merge(__dirname, 'files/values.yaml.hbs').into('chart/values.yaml', { with: project, overwrites })
|
|
89
89
|
await merge({
|
package/lib/util/cf.js
CHANGED
|
@@ -101,7 +101,7 @@ module.exports = new class CfUtil {
|
|
|
101
101
|
if (err.response?.data?.errors[0]) {
|
|
102
102
|
throw JSON.stringify(err.response.data.errors[0], null, 4);
|
|
103
103
|
}
|
|
104
|
-
throw err.message
|
|
104
|
+
throw `${err.name} ${err.code} ${err.status||''}: ${err.message} while accessing ${url}`;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap/cds-dk",
|
|
3
|
-
"version": "9.7.
|
|
3
|
+
"version": "9.7.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@sap/cds-dk",
|
|
9
|
-
"version": "9.7.
|
|
9
|
+
"version": "9.7.2",
|
|
10
10
|
"license": "SEE LICENSE IN LICENSE",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@cap-js/asyncapi": "^1.0.0",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"node_modules/@cap-js/db-service": {
|
|
44
|
-
"version": "2.8.
|
|
45
|
-
"integrity": "sha512-
|
|
44
|
+
"version": "2.8.2",
|
|
45
|
+
"integrity": "sha512-5BUWnoRX7LQBEWvEZmq0urEkxWPIIUnV9v2uFYop19W10jtmK6bxKqk+oUGD/7o6C9GNiFcZoLpja7SFohfKOg==",
|
|
46
46
|
"devOptional": true,
|
|
47
47
|
"license": "Apache-2.0",
|
|
48
48
|
"dependencies": {
|
|
@@ -64,12 +64,12 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"node_modules/@cap-js/sqlite": {
|
|
67
|
-
"version": "2.1.
|
|
68
|
-
"integrity": "sha512-
|
|
67
|
+
"version": "2.1.3",
|
|
68
|
+
"integrity": "sha512-JkIAR8khPEW0jgw440JrtOzsj+TacZmACJsifGnCWpgrC17f2q8r15pzrCnvvCmkLXTqUW1kRg5/B3nLbaO86Q==",
|
|
69
69
|
"license": "Apache-2.0",
|
|
70
70
|
"optional": true,
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@cap-js/db-service": "^2.8.
|
|
72
|
+
"@cap-js/db-service": "^2.8.2",
|
|
73
73
|
"better-sqlite3": "^12.0.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
}
|
|
90
90
|
},
|
|
91
91
|
"node_modules/@sap/cds": {
|
|
92
|
-
"version": "9.7.
|
|
93
|
-
"integrity": "sha512-
|
|
92
|
+
"version": "9.7.1",
|
|
93
|
+
"integrity": "sha512-DCMCB3FiQoWVeHQulSFbZMkmuoW0z6tJRP85Xv2Bd2Cl2J2I4+LQD1GKDiUXrlJXm0CtKsFQcrsxcQmUeO5uXw==",
|
|
94
94
|
"license": "SEE LICENSE IN LICENSE",
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"@sap/cds-compiler": "^6.4",
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
118
|
"node_modules/@sap/cds-compiler": {
|
|
119
|
-
"version": "6.7.
|
|
120
|
-
"integrity": "sha512-
|
|
119
|
+
"version": "6.7.3",
|
|
120
|
+
"integrity": "sha512-MlKvr3b7meSD4UsMr/u5eXUS0q226MyHg/+x5xKOxxdqhh1yGGnJD0lj0USqo4S3rggFfCSgWypTAjD7VLZdUw==",
|
|
121
121
|
"license": "SEE LICENSE IN LICENSE",
|
|
122
122
|
"bin": {
|
|
123
123
|
"cdsc": "bin/cdsc.js",
|
|
@@ -137,8 +137,8 @@
|
|
|
137
137
|
}
|
|
138
138
|
},
|
|
139
139
|
"node_modules/@sap/cds-mtxs": {
|
|
140
|
-
"version": "3.7.
|
|
141
|
-
"integrity": "sha512-
|
|
140
|
+
"version": "3.7.1",
|
|
141
|
+
"integrity": "sha512-yMsD6C4UAPozvm4TNUojAFYYC13au45hamr+S7cXT7K9ufYl7zzLGQ3Z/bE91D57z0IfryCXMsxk437P3cEJuA==",
|
|
142
142
|
"license": "SEE LICENSE IN LICENSE",
|
|
143
143
|
"dependencies": {
|
|
144
144
|
"@sap/hdi-deploy": "^5"
|
|
@@ -251,12 +251,12 @@
|
|
|
251
251
|
"license": "MIT"
|
|
252
252
|
},
|
|
253
253
|
"node_modules/axios": {
|
|
254
|
-
"version": "1.13.
|
|
255
|
-
"integrity": "sha512-
|
|
254
|
+
"version": "1.13.5",
|
|
255
|
+
"integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
|
|
256
256
|
"license": "MIT",
|
|
257
257
|
"dependencies": {
|
|
258
|
-
"follow-redirects": "^1.15.
|
|
259
|
-
"form-data": "^4.0.
|
|
258
|
+
"follow-redirects": "^1.15.11",
|
|
259
|
+
"form-data": "^4.0.5",
|
|
260
260
|
"proxy-from-env": "^1.1.0"
|
|
261
261
|
}
|
|
262
262
|
},
|
|
@@ -935,8 +935,8 @@
|
|
|
935
935
|
}
|
|
936
936
|
},
|
|
937
937
|
"node_modules/hdb": {
|
|
938
|
-
"version": "2.
|
|
939
|
-
"integrity": "sha512-
|
|
938
|
+
"version": "2.27.1",
|
|
939
|
+
"integrity": "sha512-xYL/W+fq2TyGHyzm8muolQnw8tdh4+2NQ8mQP2FpLSuhfJ8l0jQNSUZoAXic7NfMEan1Jvf8V1L4blwkgTc6+A==",
|
|
940
940
|
"license": "Apache-2.0",
|
|
941
941
|
"dependencies": {
|
|
942
942
|
"iconv-lite": "0.7.0"
|
|
@@ -1334,8 +1334,8 @@
|
|
|
1334
1334
|
}
|
|
1335
1335
|
},
|
|
1336
1336
|
"node_modules/qs": {
|
|
1337
|
-
"version": "6.14.
|
|
1338
|
-
"integrity": "sha512-
|
|
1337
|
+
"version": "6.14.2",
|
|
1338
|
+
"integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
|
|
1339
1339
|
"license": "BSD-3-Clause",
|
|
1340
1340
|
"dependencies": {
|
|
1341
1341
|
"side-channel": "^1.1.0"
|
|
@@ -1447,8 +1447,8 @@
|
|
|
1447
1447
|
}
|
|
1448
1448
|
},
|
|
1449
1449
|
"node_modules/semver": {
|
|
1450
|
-
"version": "7.7.
|
|
1451
|
-
"integrity": "sha512-
|
|
1450
|
+
"version": "7.7.4",
|
|
1451
|
+
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
|
1452
1452
|
"devOptional": true,
|
|
1453
1453
|
"license": "ISC",
|
|
1454
1454
|
"bin": {
|