@sap/cds-dk 9.8.0 → 9.8.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 CHANGED
@@ -6,6 +6,25 @@ 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.8.2 - 2026-03-25
10
+
11
+ ### Added
12
+
13
+ - `cds init` now removes the `.vscode` folder when creating projects in SAP Business Application Studio in order to restore compatibility with other project generators. This is a temporary solution likely to be reverted in cds-dk 10.
14
+
15
+ ### Fixed
16
+
17
+ - `cds add workzone` for Kyma correctly adds the `html5-apps-repo-runtime` to its `Chart.yaml`.
18
+ - `cds add app-front` in combination with `cds add ias` correctly includes all `IASDependencyName` settings.
19
+ - `cds build` has improved performance in some scenarios.
20
+
21
+ ## Version 9.8.1 - 2026-03-13
22
+
23
+ ### Fixed
24
+
25
+ - `cds build` plugins correctly formats a thrown `BuildError` in the logs.
26
+ - `cds version` also reports a cds-dk installation in Java projects that don't have such a dependency in their `package.json`.
27
+
9
28
  ## Version 9.8.0 - 2026-03-09
10
29
 
11
30
  ### Added
package/bin/build.js CHANGED
@@ -167,7 +167,7 @@ async function build([project], options = {}) {
167
167
  }
168
168
  const { build, BuildError } = require('../lib/build')
169
169
  try {
170
- return build(options)
170
+ return await build(options)
171
171
  } catch (e) {
172
172
  if (e instanceof BuildError || e.constructor.name === 'CompilationError') {
173
173
  cds._log(e.messages.length ? e.messages : e.message, { 'log-level': options['log-level'] || cds.env['log-level'] })
package/bin/version.js CHANGED
@@ -100,6 +100,7 @@ function canonic_options4 ([pattern], options) {
100
100
  const o = {
101
101
  root: cds.root,
102
102
  depth: options.all ? 11 : 1,
103
+ java: cds.env['project-nature'] === 'java',
103
104
  ...options,
104
105
  }
105
106
  if (pattern) o.pattern = pattern
@@ -128,7 +129,7 @@ async function node_versions(o) {
128
129
  const _pkg = o.pattern ? RegExp(o.pattern) : cap_packages
129
130
  const deps = lines.map (line => {
130
131
  let [, path, name, version, location = path ] = _line.exec(line) || []
131
- if (!location || location.includes('EXTRANEOUS')) return
132
+ if (!location || (location.includes('EXTRANEOUS') && !o.java)) return
132
133
  if (name.match(_pkg)) return [ name, version, location ]
133
134
  }) .filter (x => x)
134
135
 
@@ -174,7 +175,7 @@ async function node_versions(o) {
174
175
 
175
176
 
176
177
  function java_versions (o) {
177
- const javaInfo = !cds.env.cli?.version?.skipjava && cds.env['project-nature'] === 'java'
178
+ const javaInfo = !cds.env.cli?.version?.skipjava && o.java
178
179
  if (!javaInfo) return []
179
180
  else if (process.stderr.isTTY && !o.json) console.warn (DIMMED, 'This takes a while. Collecting Java versions...', RESET)
180
181
  const { MAVEN_ARCHETYPE_VERSION:mav } = require ('../lib/init/constants')
@@ -214,7 +215,7 @@ function print_versions (rows, o, cwd = o.root+'/') {
214
215
  if (!rows || rows.length === 0) return console.error (YELLOW, ' No CAP packages found.', RESET)
215
216
 
216
217
  // cds10: remove and offer --json option instead
217
- if (process.env.WS_BASE_URL || cds.env['project-nature'] === 'java' || findPom(cwd)) {
218
+ if (process.env.WS_BASE_URL || o.java || findPom(cwd)) {
218
219
  console.log(rows.map(([name,version,location]) => `${GREEN}${name === 'cds.home'?'home':name}:${RESET} ${version??location}`).join('\n'))
219
220
  return
220
221
  }
@@ -34,11 +34,12 @@ module.exports = class FeatureTogglesBuildPlugin extends require('./internal') {
34
34
 
35
35
  if (dictionary.features) {
36
36
  // create language bundles for all features
37
- for (const ftName in dictionary.features) {
37
+ const featureBundleTasks = Object.keys(dictionary.features).map(async ftName => {
38
38
  // attach the sources information for i18n location reference
39
39
  dictionary.features[ftName]['$sources'] = paths.features[ftName]
40
40
  await this.collectLanguageBundles(dictionary.features[ftName], path.join(destFts, ftsName, ftName, i18nFolder))
41
- }
41
+ })
42
+ await Promise.all(featureBundleTasks)
42
43
  }
43
44
  }
44
45
 
@@ -51,7 +52,7 @@ module.exports = class FeatureTogglesBuildPlugin extends require('./internal') {
51
52
  const ftsName = path.dirname(cds.env.features.folders || 'fts/*')
52
53
 
53
54
  // create feature models
54
- for (const ftName in ftsPaths) {
55
+ await Promise.all(Object.keys(ftsPaths).map(async ftName => {
55
56
  const ftCsn = await cds.load(ftsPaths[ftName], options)
56
57
  const ftPath = path.join(destFts, ftsName, ftName)
57
58
 
@@ -62,7 +63,7 @@ module.exports = class FeatureTogglesBuildPlugin extends require('./internal') {
62
63
  await this.compileToJson(ftCsn, path.join(ftPath, DEFAULT_CSN_FILE_NAME))
63
64
  this._validateFeature(ftCsn, baseCsn)
64
65
  features[ftName] = ftCsn
65
- }
66
+ }))
66
67
  return features
67
68
  }
68
69
 
@@ -64,8 +64,6 @@ module.exports = class FioriBuildPlugin extends require('../edmx') {
64
64
  const model = await cds.load(modelPaths, options)
65
65
  fioriBuildOptions.appModel.set(appFolder, model)
66
66
 
67
- await this.compileToEdmx(model)
68
-
69
67
  // cache edmx per fiori app root folder
70
68
  this._cachedEdmx = new Map()
71
69
  await this.compileToEdmx(model)
@@ -141,13 +141,17 @@ module.exports = class HanaBuildPlugin extends require('../internal') {
141
141
  csvFolder = !dbCSVs.length || dbCSVs.some(res => res && res.startsWith(csvPath)) ? "data" : "csv"
142
142
  }
143
143
 
144
- // await each copy as order is important - reuse resources first and app resources last
144
+ // preserve last-write-wins semantics for duplicate basenames while parallelizing distinct file copies
145
+ const csvResourcesByName = new Map()
145
146
  for (const res of resources) {
146
147
  // do not duplicate resources that are already contained in db/src/**
147
148
  if (res && /\.csv$/.test(res) && !res.startsWith(dbSrc)) {
148
- await this.copy(res).to(path.join(this.task.options.compileDest, csvFolder, path.basename(res)))
149
+ csvResourcesByName.set(path.basename(res), res)
149
150
  }
150
151
  }
152
+ await Promise.all(Array.from(csvResourcesByName.entries()).map(([fileName, res]) => {
153
+ return this.copy(res).to(path.join(this.task.options.compileDest, csvFolder, fileName))
154
+ }))
151
155
  }
152
156
 
153
157
  if (this.isStagingBuild()) {
@@ -227,14 +227,7 @@ module.exports = class Plugin {
227
227
  DEBUG?.(`model: ${relativePaths(cds.root, files).join(", ")}`)
228
228
 
229
229
  const options = { ...this.options(), cwd: cds.root }
230
-
231
- this.context._modelCache ??= new Map()
232
- const cacheKey = JSON.stringify({ files, options })
233
- if (!this.context._modelCache.has(cacheKey)) {
234
- const _load = cds.load(files, options)
235
- this.context._modelCache.set(cacheKey, _load)
236
- }
237
- return this.context._modelCache.get(cacheKey)
230
+ return cds.load(files, options)
238
231
  }
239
232
 
240
233
  /**
@@ -248,7 +241,12 @@ module.exports = class Plugin {
248
241
  return model
249
242
  }
250
243
  const sources = filterFeaturePaths(model, this.task.options.model || this.task.src)
251
- return sources.features ? cds.load(sources.base, this.options()) : model
244
+ if (!sources.features) {
245
+ return model
246
+ }
247
+
248
+ const options = this.options()
249
+ return cds.load(sources.base, options)
252
250
  }
253
251
 
254
252
  options() {
@@ -5,7 +5,7 @@ module.exports = {
5
5
  COMMAND_ADD: 'add',
6
6
 
7
7
  JAVA_LTS_VERSIONS: [17, 21],
8
- MAVEN_ARCHETYPE_VERSION: '4.7.0',
8
+ MAVEN_ARCHETYPE_VERSION: '4.8.0',
9
9
 
10
10
  OPTIONS: Object.freeze({
11
11
  COMPLETION: 'completion',
@@ -6,12 +6,6 @@ modules:
6
6
  type: {{language}}
7
7
  path: {{& srvPath}}
8
8
 
9
- - name: {{appName}}
10
- type: approuter.nodejs
11
- path: {{& approuterPath}}
12
- requires:
13
- - name: {{appName}}-html5-runtime
14
-
15
9
  - name: {{appName}}-app-deployer
16
10
  type: com.sap.application.content
17
11
  path: {{#isNodejs}}gen{{/isNodejs}}{{#isJava}}.{{/isJava}}
@@ -25,19 +19,22 @@ modules:
25
19
  target-path: {{#isNodejs}}{{& appPath }}{{/isNodejs}}{{#isJava}}resources{{/isJava}}
26
20
  {{/apps}}
27
21
  requires:
28
- - name: srv-api
29
22
  {{#hasXsuaa}}
30
23
  - name: {{appName}}-auth
31
24
  {{/hasXsuaa}}
25
+ - name: srv-api
32
26
  - name: {{appName}}-app-front
33
27
  parameters:
34
- content-target: true
28
+ content-target: true{{#hasIas}}
29
+ config:
30
+ IASDependencyName: {{appName}}-ias-api{{/hasIas}}
35
31
  parameters:
36
32
  config:
37
33
  destinations:
38
34
  - name: srv-api
39
35
  url: ~{srv-api/srv-url}
40
- forwardAuthToken: true
36
+ forwardAuthToken: true{{#hasIas}}
37
+ IASDependencyName: {{appName}}-ias-api{{/hasIas}}
41
38
  {{#hasUI5}}
42
39
  - name: ui5
43
40
  url: https://ui5.sap.com
@@ -1,7 +1,7 @@
1
- const { join } = require('path')
1
+ const { join } = require('node:path')
2
2
  const { readProject } = require('../../projectReader')
3
3
  const { merge } = require('../../merge')
4
- const { srv4, appDeployer, appFront } = require('../../registries/mta')
4
+ const { srv4, appDeployer, appFront, xsuaa } = require('../../registries/mta')
5
5
  const { odataApi } = require('../../registries/xs-app')
6
6
  const { renderAndCopy } = require('../../template')
7
7
  const { exists } = require('../../../cds').utils
@@ -45,7 +45,10 @@ module.exports = class extends require('../../plugin') {
45
45
 
46
46
  async combine() {
47
47
  const project = readProject()
48
- const { srvPath, appPath, addMta, apps } = project
48
+ const {
49
+ srvPath, appPath, apps,
50
+ hasMta, addMta, hasXsuaa, addSample, addApprouter, addWorkzoneStandard, addXsuaa, addIas
51
+ } = project
49
52
 
50
53
  await Promise.all(apps.map(async ({ app }) => {
51
54
  project.app = app
@@ -59,21 +62,31 @@ module.exports = class extends require('../../plugin') {
59
62
  // await merge({ cds: { requires: { 'app-front':true } } }).into('mtx/sidecar/package.json')
60
63
  // }
61
64
 
62
- if (addMta) {
65
+ const affected = addXsuaa || addApprouter || addWorkzoneStandard || addSample || addIas
66
+ if (addMta || affected && hasMta) {
63
67
  const srv = srv4(srvPath)
64
68
  project.apps = apps
65
- const appModules = project.apps.map(app => ({
66
- in: 'modules',
67
- where: { type: 'html5', path: `${appPath}${app.app}` }
68
- }))
69
- const additions = [srv, appDeployer, appFront, ...appModules]
70
69
  const relationships = [{
71
70
  insert: [appFront, 'name'],
72
71
  into: [appDeployer, 'requires', 'name'],
73
72
  }]
73
+ const appModules = []
74
+ for (const { app } of project.apps) {
75
+ const html5App = { in: 'modules', where: { type: 'html5', path: `${appPath}${app}` } }
76
+ relationships.push({
77
+ insert: [html5App],
78
+ into: [appDeployer, 'build-parameters.requires'],
79
+ })
80
+ }
81
+ if (hasXsuaa) {
82
+ relationships.push({
83
+ insert: [xsuaa, 'name'],
84
+ into: [appDeployer, 'requires']
85
+ })
86
+ }
74
87
  await merge(__dirname, 'files/mta.yaml.hbs').into('mta.yaml', {
75
88
  with: project,
76
- additions,
89
+ additions: [srv, appDeployer, appFront, ...appModules],
77
90
  relationships
78
91
  })
79
92
  }
@@ -40,7 +40,7 @@ module.exports = class HelmTemplate extends require('../../plugin') {
40
40
  }
41
41
 
42
42
  async run() {
43
- console.warn(term.warn(`The "cds add helm" command is deprecated and will be removed in the next major release. Please use the "cds add kyma" command instead.`))
43
+ console.log(term.warn(`The "cds add helm" command is deprecated and will be removed in the next major release. Please use the "cds add kyma" command instead.`))
44
44
  const project = readProject()
45
45
  let registry, domain, tag
46
46
  if (!HelmTemplate.hasInProduction() && !project.isBas /* don't run this for the BAS Yeoman generator */) {
@@ -24,6 +24,15 @@ modules:
24
24
  - name: {{appName}}-app-deployer
25
25
  type: com.sap.application.content
26
26
  path: {{#isNodejs}}gen{{/isNodejs}}{{#isJava}}.{{/isJava}}
27
+ build-parameters:
28
+ build-result: {{#isNodejs}}{{& appPath }}{{/isNodejs}}{{#isJava}}resources{{/isJava}}
29
+ requires:
30
+ {{#apps}}
31
+ - name: {{strippedAppName}}{{strippedApp}}
32
+ artifacts:
33
+ - {{app}}.zip
34
+ target-path: {{#isNodejs}}{{& appPath }}{{/isNodejs}}{{#isJava}}resources{{/isJava}}
35
+ {{/apps}}
27
36
  requires:
28
37
  {{#hasXsuaa}}
29
38
  - name: {{appName}}-auth
@@ -35,15 +44,6 @@ modules:
35
44
  config:
36
45
  HTML5Runtime_enabled: true{{#hasIas}}
37
46
  IASDependencyName: {{appName}}-ias-api{{/hasIas}}
38
- build-parameters:
39
- build-result: {{#isNodejs}}{{& appPath }}{{/isNodejs}}{{#isJava}}resources{{/isJava}}
40
- requires:
41
- {{#apps}}
42
- - name: {{strippedAppName}}{{strippedApp}}
43
- artifacts:
44
- - {{app}}.zip
45
- target-path: {{#isNodejs}}{{& appPath }}{{/isNodejs}}{{#isJava}}resources{{/isJava}}
46
- {{/apps}}
47
47
  {{#hasWorkzoneStandard}}
48
48
  {{#hasMultitenancy}}
49
49
  parameters:
@@ -0,0 +1,19 @@
1
+ node_modules/
2
+ target/
3
+ _out/
4
+ gen/
5
+
6
+ .cdsrc-private.json
7
+ default-*.json
8
+ *.sqlite
9
+
10
+ # MTA
11
+ mta_archives/
12
+ *_mta_build_tmp
13
+ *.mtar
14
+
15
+ # Other
16
+ .DS_Store
17
+
18
+ # @cap-js/cds-typer
19
+ @cds-models
@@ -1,7 +1,7 @@
1
1
  const { join } = require('path')
2
2
  const cds = require('../../../cds')
3
- const { mkdirp, path } = cds.utils
4
- const { env4 } = require('../../projectReader')
3
+ const { mkdirp, path, rimraf } = cds.utils
4
+ const { env4, readProject } = require('../../projectReader')
5
5
  const { renderAndCopy } = require('../../template')
6
6
 
7
7
  module.exports = class extends require('../../plugin') {
@@ -10,6 +10,13 @@ module.exports = class extends require('../../plugin') {
10
10
  const { db, srv, app } = env4('production').folders
11
11
  await renderAndCopy(join(__dirname, 'files'), cds.root, { projectName: path.basename(cds.root) })
12
12
  await Promise.all([db, srv, app].map(p => mkdirp(p)))
13
- }
14
13
 
14
+ // cds10: remove
15
+ // Delete .vscode folder if running in BAS
16
+ const { isBas } = readProject()
17
+ if (isBas) {
18
+ const vscodeFolder = join(cds.root, '.vscode')
19
+ await rimraf(vscodeFolder)
20
+ }
21
+ }
15
22
  }
@@ -81,17 +81,17 @@ module.exports = class KymaTemplate extends require('../../plugin') {
81
81
  async combine() {
82
82
  // REVISIT: This must be moved to the respective plugins
83
83
  const {
84
- addHana, addMultitenancy, addXsuaa,
85
- addApprouter, addIas, addAms, hasXsuaa, hasMultitenancy,
86
- addHtml5Repo, hasHtml5Repo,
84
+ addHana, addMultitenancy, addXsuaa, hasApprouter,
85
+ addApprouter, addIas, addAms, hasXsuaa, hasMultitenancy, addWorkzoneStandard,
86
+ addHtml5Repo, hasHtml5Repo
87
87
  } = readProject()
88
88
 
89
- if (addHtml5Repo || addApprouter && hasHtml5Repo) {
89
+ if (addHtml5Repo || addWorkzoneStandard || addApprouter && hasHtml5Repo) {
90
90
  if (addHtml5Repo) {
91
91
  await KymaTemplate.mergeDependency('service-instance', 'html5-apps-repo-host')
92
92
  await KymaTemplate.mergeDependency('content-deployment', 'html5-apps-deployer')
93
93
  }
94
- if (addApprouter) {
94
+ if (hasApprouter && hasHtml5Repo) {
95
95
  await KymaTemplate.mergeDependency('service-instance', 'html5-apps-repo-runtime')
96
96
  }
97
97
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "9.39.3",
2
+ "version": "9.39.4",
3
3
  "help": "\n# SYNOPSIS\n\n *cds lint* [options] file.js [file.js] [dir]\n\n Runs environment checks and/or checks the specified models\n based on the ESLint framework\n\n# OPTIONS\n \n Basic configuration:\n --no-config-lookup Disable look up for eslint.config.js\n -c, --config path::String Use this configuration instead of eslint.config.js, eslint.config.mjs, or eslint.config.cjs\n --inspect-config Open the config inspector with the current configuration\n --ext [String] Specify additional file extensions to lint\n --global [String] Define global variables\n --parser String Specify the parser to be used\n --parser-options Object Specify parser options\n \n Specify Rules and Plugins:\n --plugin [String] Specify plugins\n --rule Object Specify rules\n \n Fix Problems:\n --fix Automatically fix problems\n --fix-dry-run Automatically fix problems without saving the changes to the file system\n --fix-type Array Specify the types of fixes to apply (directive, problem, suggestion, layout)\n \n Ignore Files:\n --no-ignore Disable use of ignore files and patterns\n --ignore-pattern [String] Patterns of files to ignore\n \n Use stdin:\n --stdin Lint code provided on <STDIN> - default: false\n --stdin-filename String Specify filename to process STDIN as\n \n Handle Warnings:\n --quiet Report errors only - default: false\n --max-warnings Int Number of warnings to trigger nonzero exit code - default: -1\n \n Output:\n -o, --output-file path::String Specify file to write report to\n -f, --format String Use a specific output format - default: stylish\n --color, --no-color Force enabling/disabling of color\n \n Inline configuration comments:\n --no-inline-config Prevent comments from changing config or rules\n --report-unused-disable-directives Adds reported errors for unused eslint-disable and eslint-enable directives\n --report-unused-disable-directives-severity String Chooses severity level for reporting unused eslint-disable and eslint-enable directives - either: off, warn, error, 0, 1, or 2\n --report-unused-inline-configs String Adds reported errors for unused eslint inline config comments - either: off, warn, error, 0, 1, or 2\n \n Caching:\n --cache Only check changed files - default: false\n --cache-file path::String Path to the cache file. Deprecated: use --cache-location - default: .eslintcache\n --cache-location path::String Path to the cache file or directory\n --cache-strategy String Strategy to use for detecting changed files in the cache - either: metadata or content - default: metadata\n \n Suppressing Violations:\n --suppress-all Suppress all violations - default: false\n --suppress-rule [String] Suppress specific rules\n --suppressions-location path::String Specify the location of the suppressions file\n --prune-suppressions Prune unused suppressions - default: false\n --pass-on-unpruned-suppressions Ignore unused suppressions - default: false\n \n Miscellaneous:\n --init Run config initialization wizard - default: false\n --env-info Output execution environment information - default: false\n --no-error-on-unmatched-pattern Prevent errors when pattern is unmatched\n --exit-on-fatal-error Exit with exit code 2 in case of fatal error - default: false\n --no-warn-ignored Suppress warnings when the file list includes ignored files\n --pass-on-no-patterns Exit with exit code 0 in case no file patterns are passed\n --debug Output debugging information\n -h, --help Show help\n -v, --version Output the version number\n --print-config path::String Print the configuration for the given file\n --stats Add statistics to the lint report - default: false\n --flag [String] Enable a feature flag\n --mcp Start the ESLint MCP server\n --concurrency Int|String Number of linting threads, auto to choose automatically, off for no multithreading - default: off\n \n",
4
4
  "options": [
5
5
  "--config",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "9.8.0",
3
+ "version": "9.8.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sap/cds-dk",
9
- "version": "9.8.0",
9
+ "version": "9.8.2",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@cap-js/asyncapi": "^1.0.0",
@@ -41,20 +41,20 @@
41
41
  }
42
42
  },
43
43
  "node_modules/@cap-js/db-service": {
44
- "version": "2.8.2",
45
- "integrity": "sha512-5BUWnoRX7LQBEWvEZmq0urEkxWPIIUnV9v2uFYop19W10jtmK6bxKqk+oUGD/7o6C9GNiFcZoLpja7SFohfKOg==",
44
+ "version": "2.9.0",
45
+ "integrity": "sha512-WCXhoqezaF6A5I2l0MNZeHKXXtHRNEq7Rp0R89/uccOHQIx0DuU0U9NuJJPV/1G5RGk2QKQ9VBo/KYn+MZuuNQ==",
46
46
  "devOptional": true,
47
47
  "license": "Apache-2.0",
48
48
  "dependencies": {
49
49
  "generic-pool": "^3.9.0"
50
50
  },
51
51
  "peerDependencies": {
52
- "@sap/cds": ">=9.4.5"
52
+ "@sap/cds": ">=9.8"
53
53
  }
54
54
  },
55
55
  "node_modules/@cap-js/openapi": {
56
- "version": "1.3.1",
57
- "integrity": "sha512-2QqqZlOxfvp/DDmGgTdwbBAAMjaPrrdPCbNC4+z6wjn2jXXk40j0XX7DHNnF4BU8R9LFxaUCHt2x8/9PzE83uA==",
56
+ "version": "1.4.0",
57
+ "integrity": "sha512-/LRSwn4SDxAi3qKwl09zoOhEVGaPGlYOPz/0S3UBnaMJVvaLyPiKbbaOtOnrrgulUX5OXt+ujPIQznOsbTzuAw==",
58
58
  "license": "Apache-2.0",
59
59
  "dependencies": {
60
60
  "pluralize": "^8.0.0"
@@ -64,16 +64,22 @@
64
64
  }
65
65
  },
66
66
  "node_modules/@cap-js/sqlite": {
67
- "version": "2.1.3",
68
- "integrity": "sha512-JkIAR8khPEW0jgw440JrtOzsj+TacZmACJsifGnCWpgrC17f2q8r15pzrCnvvCmkLXTqUW1kRg5/B3nLbaO86Q==",
67
+ "version": "2.2.0",
68
+ "integrity": "sha512-FPj+uVU/14vtGUl2P/Q8y7XhZbsLgrCav2O5PjHPXnupegjby4sMJkgVNxVHnkyKPFgO/W8uEsq9r5TU9VPx8w==",
69
69
  "license": "Apache-2.0",
70
70
  "optional": true,
71
71
  "dependencies": {
72
- "@cap-js/db-service": "^2.8.2",
72
+ "@cap-js/db-service": "^2.9.0",
73
73
  "better-sqlite3": "^12.0.0"
74
74
  },
75
75
  "peerDependencies": {
76
- "@sap/cds": ">=9"
76
+ "@sap/cds": ">=9.8",
77
+ "sql.js": "^1.13.0"
78
+ },
79
+ "peerDependenciesMeta": {
80
+ "sql.js": {
81
+ "optional": true
82
+ }
77
83
  }
78
84
  },
79
85
  "node_modules/@eslint/js": {
@@ -97,8 +103,8 @@
97
103
  }
98
104
  },
99
105
  "node_modules/@sap/cds": {
100
- "version": "9.8.0",
101
- "integrity": "sha512-Tiax/4R/y1dJJsl53VjMKe5VM0FtxLwG4BOPuLVnJhCawMxMlebXM+jlIFkrXhUL2bVet0uUdjAH/Dq4uVwVOg==",
106
+ "version": "9.8.3",
107
+ "integrity": "sha512-up/kNVCZK8bOTyye1QN2BjMpH+IgcdyhT3U9mS3TqkpmjNE2JXq8Qz1iNAN+nYcXRWJ1XAUNpgebLfuh/49MGQ==",
102
108
  "license": "SEE LICENSE IN LICENSE",
103
109
  "dependencies": {
104
110
  "@sap/cds-compiler": "^6.4",
@@ -145,8 +151,8 @@
145
151
  }
146
152
  },
147
153
  "node_modules/@sap/cds-mtxs": {
148
- "version": "3.8.0",
149
- "integrity": "sha512-8P/CKQbdbKH/1ZmgrRWiReXFb9MjLf/TjEH/MrbiJEGWCIv/bTKL6nNb0BIcBa7HQhekVqapa/cwx241NEnAVQ==",
154
+ "version": "3.8.1",
155
+ "integrity": "sha512-FUm1of08WsZ1O3eur7OGj7ZYp9Gy3RuYEGBZK+zosSPyJ3QrBhBzKwYvbh2DJdbv3P/xuk46NGg5yz914qZxrw==",
150
156
  "license": "SEE LICENSE IN LICENSE",
151
157
  "dependencies": {
152
158
  "@sap/hdi-deploy": "^5"
@@ -289,8 +295,8 @@
289
295
  "optional": true
290
296
  },
291
297
  "node_modules/better-sqlite3": {
292
- "version": "12.6.2",
293
- "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==",
298
+ "version": "12.8.0",
299
+ "integrity": "sha512-RxD2Vd96sQDjQr20kdP+F+dK/1OUNiVOl200vKBZY8u0vTwysfolF6Hq+3ZK2+h8My9YvZhHsF+RSGZW2VYrPQ==",
294
300
  "hasInstallScript": true,
295
301
  "license": "MIT",
296
302
  "optional": true,
@@ -1119,8 +1125,8 @@
1119
1125
  }
1120
1126
  },
1121
1127
  "node_modules/micromatch/node_modules/picomatch": {
1122
- "version": "2.3.1",
1123
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1128
+ "version": "2.3.2",
1129
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
1124
1130
  "license": "MIT",
1125
1131
  "engines": {
1126
1132
  "node": ">=8.6"
@@ -1211,8 +1217,8 @@
1211
1217
  "license": "MIT"
1212
1218
  },
1213
1219
  "node_modules/node-abi": {
1214
- "version": "3.87.0",
1215
- "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==",
1220
+ "version": "3.89.0",
1221
+ "integrity": "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==",
1216
1222
  "license": "MIT",
1217
1223
  "optional": true,
1218
1224
  "dependencies": {
@@ -1448,8 +1454,8 @@
1448
1454
  "license": "MIT"
1449
1455
  },
1450
1456
  "node_modules/sax": {
1451
- "version": "1.5.0",
1452
- "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==",
1457
+ "version": "1.6.0",
1458
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
1453
1459
  "license": "BlueOak-1.0.0",
1454
1460
  "engines": {
1455
1461
  "node": ">=11.0.0"
@@ -1792,8 +1798,8 @@
1792
1798
  "license": "ISC"
1793
1799
  },
1794
1800
  "node_modules/ws": {
1795
- "version": "8.19.0",
1796
- "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
1801
+ "version": "8.20.0",
1802
+ "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
1797
1803
  "license": "MIT",
1798
1804
  "engines": {
1799
1805
  "node": ">=10.0.0"
@@ -1823,8 +1829,8 @@
1823
1829
  }
1824
1830
  },
1825
1831
  "node_modules/yaml": {
1826
- "version": "2.8.2",
1827
- "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
1832
+ "version": "2.8.3",
1833
+ "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
1828
1834
  "license": "ISC",
1829
1835
  "bin": {
1830
1836
  "yaml": "bin.mjs"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "9.8.0",
3
+ "version": "9.8.2",
4
4
  "description": "Command line client and development toolkit for the SAP Cloud Application Programming Model",
5
5
  "homepage": "https://cap.cloud.sap/",
6
6
  "keywords": [