@sap/cds-dk 4.6.2 → 4.6.3

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,15 @@ This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
7
  The format is based on [Keep a Changelog](http://keepachangelog.com/).
8
8
 
9
+ ## Version 4.6.3 - 2021-11-16
10
+
11
+ ### Fixed
12
+
13
+ - `cds watch` recovers again from compilation errors and properly prints these
14
+ - `cds import` fix for omitting empty `doc` components.
15
+ - `cds add lint` no longer duplicates initial contents in `package.json`
16
+ - `cds add data` no longer ignores imported services for which credentials are stored in the project
17
+
9
18
  ## Version 4.6.2 - 2021-11-09
10
19
 
11
20
  ### Fixed
package/bin/watch.js CHANGED
@@ -206,7 +206,7 @@ if (!module.parent) (async()=>{ // launched by nodemon
206
206
  case 'NO_SERVICES_FOUND': return _no_services_found(e)
207
207
  case 'MODEL_NOT_FOUND': return _no_models_found(e)
208
208
  case 'EADDRINUSE': return process.send(e) //> tell cds watch
209
- default: console.error(e)
209
+ default: { throw e } // cli error handling will catch and format
210
210
  }}
211
211
  function _no_models_found(e) { console.log (`
212
212
  No models found in ${cds.resolve(e.model||'*',false)}.
@@ -20,11 +20,7 @@ const JOB_STATUS = {
20
20
  };
21
21
 
22
22
  async function checkFinished(jobId, statusUrl, params, finisher) {
23
- const requestOptions = Object.assign({
24
- method: 'GET'
25
- }, params.get('reqAuth'));
26
-
27
- const { status, error } = (await axios(statusUrl, requestOptions)).data;
23
+ const { status, error } = (await axios.get(statusUrl, params.get('reqAuth'))).data;
28
24
 
29
25
  if ((status === JOB_STATUS.FINISHED || status === JOB_STATUS.FAILED) && !finisher.finished) {
30
26
  finisher.finished = true;
@@ -170,7 +166,6 @@ module.exports = class Activate extends BaseCommand {
170
166
 
171
167
  activationUrl = Activate.getMtxApiUrl(params.get('appUrl'), COMMAND_URL_SUFFIX);
172
168
  const requestOptions = Object.assign({
173
- method: 'POST',
174
169
  headers: {},
175
170
  data: {
176
171
  extension: [...allFiles],
@@ -179,7 +174,7 @@ module.exports = class Activate extends BaseCommand {
179
174
  }, params.get('reqAuth'));
180
175
  requestOptions.headers['Content-Type'] = 'application/json';
181
176
 
182
- return axios(activationUrl, requestOptions);
177
+ return axios.post(activationUrl, requestOptions);
183
178
  })
184
179
  .then(response => {
185
180
  if (response === null) {
@@ -227,7 +222,6 @@ module.exports = class Activate extends BaseCommand {
227
222
 
228
223
  const customFileUrl = Activate.getMtxApiUrl(params.get('appUrl'), Activate.UPDATE_CUSTOM_FILE_URL_SUFFIX);
229
224
  const requestOptions = Object.assign({
230
- method: 'POST',
231
225
  headers: {},
232
226
  data: {
233
227
  content: customFilesSerialized
@@ -235,7 +229,7 @@ module.exports = class Activate extends BaseCommand {
235
229
  }, params.get('reqAuth'));
236
230
  requestOptions.headers['Content-Type'] = 'application/json';
237
231
 
238
- await axios(customFileUrl, requestOptions);
232
+ await axios.post(customFileUrl, requestOptions);
239
233
 
240
234
  Logger.log('Custom file upload finished');
241
235
  }
@@ -58,7 +58,7 @@ async function retrieveTokenOrPasscodeUrl(params) {
58
58
 
59
59
  let response;
60
60
  try {
61
- response = await axios(tokenUrl, { method: 'GET' });
61
+ response = await axios.get(tokenUrl);
62
62
  } catch (error) {
63
63
  throw new Error(`Failed to get authentication token: ${error}.\nResponse body: ${util.inspect(response && response.data)}`);
64
64
  }
@@ -104,15 +104,12 @@ module.exports = class Extend extends BaseCommand {
104
104
  }
105
105
 
106
106
  static async runExtend(params) {
107
- const extendUrl = Extend.getMtxApiUrl(params.get('appUrl'), COMMAND_URL_SUFFIX);
108
- const requestOptions = Object.assign({
109
- method: 'GET',
110
- retry: 0
111
- }, params.get('reqAuth'));
107
+ const contentUrl = Extend.getMtxApiUrl(params.get('appUrl'), COMMAND_URL_SUFFIX);
108
+ const requestOptions = Object.assign({ retry: 0 }, params.get('reqAuth'));
112
109
 
113
110
  Logger.log('Retrieving files...');
114
111
 
115
- const [ response ] = (await axios(extendUrl, requestOptions)).data;
112
+ const [ response ] = (await axios.get(contentUrl, requestOptions)).data;
116
113
 
117
114
  Logger.log('\nWriting files to: ' + params.get('projectFolder'));
118
115
 
@@ -142,11 +139,9 @@ module.exports = class Extend extends BaseCommand {
142
139
  }
143
140
 
144
141
  if (params.get('wsdl')) {
145
-
146
142
  Logger.log('Writing custom files');
147
-
148
143
  const customFileUrl = Extend.getMtxApiUrl(params.get('appUrl'), Extend.CUSTOM_FILE_URL_SUFFIX);
149
- const customFiles = (await axios(customFileUrl, params)).data;
144
+ const customFiles = (await axios.get(customFileUrl, requestOptions)).data;
150
145
  await Extend.storeCustomFiles(params.get('projectFolder'), customFiles);
151
146
  }
152
147
  }
@@ -472,7 +472,7 @@ function _getServiceEntityProperty(
472
472
  {
473
473
  propertyJson = propertyJson + '\n}'
474
474
  }
475
- if(documentation != -1 && documentation != undefined){
475
+ if(documentation != -1 && documentation){
476
476
  propertyJson = propertyJson + ',\n"doc":"' + documentation + '"';
477
477
  }
478
478
 
@@ -674,7 +674,7 @@ function _getFunctionImport(functionImport,isBounded) {
674
674
  csn = csn + _getServiceEntityProperty(noValue,functionImport[2],noValue,noValue,noValue,noValue,noValue,noValue,isCollection);
675
675
  csn = csn + '\n }';
676
676
  }
677
- if(functionImport[4] !== -1)
677
+ if(functionImport[4] !== -1 && functionImport[4])
678
678
  {
679
679
  csn = csn + ',\n "doc": "' + _replaceSpecialCharacters(functionImport[4]) + '"';
680
680
  }
@@ -1503,8 +1503,10 @@ function _generateEDMXJSON2CSN(
1503
1503
 
1504
1504
  let serviceDoc = jsonObj["edmx:Edmx"]["edmx:DataServices"]["Schema"].EntityContainer.Documentation;
1505
1505
  // if documentation exists for service
1506
- if(serviceDoc)
1507
- def += ',\n' + `"doc": "${_parseDocumentationTag(serviceDoc)}"`;
1506
+ if (serviceDoc) {
1507
+ let doc = _parseDocumentationTag(serviceDoc);
1508
+ if (doc) def += ',\n' + `"doc": "${doc}"`;
1509
+ }
1508
1510
  def += "}";
1509
1511
  definitions.push(def);
1510
1512
  }
@@ -786,13 +786,13 @@ function _replaceSpecialCharacters(text) {
786
786
 
787
787
  function _checkAnnotatationTerm(annotation, path, no_of_terms, targetString){
788
788
  if(path){
789
- if(targetString === "@Core.Description"){
789
+ if(targetString === "@Core.Description" && annotation[1]["@Core.Description"]){
790
790
  if(path.doc === undefined)
791
791
  path.doc = _replaceSpecialCharacters(annotation[1]["@Core.Description"]);
792
792
  else
793
793
  path.doc += _replaceSpecialCharacters(annotation[1]["@Core.Description"]);
794
794
  }
795
- else if(targetString === "@Core.LongDescription"){
795
+ else if(targetString === "@Core.LongDescription" && annotation[1]["@Core.LongDescription"]){
796
796
  _generateLongDescription(annotation,path,no_of_terms);
797
797
  }
798
798
  }
@@ -29,7 +29,7 @@ module.exports = class DataTemplate extends TemplateBase {
29
29
 
30
30
  // Also include 'external' entities w/ cds.persistence.skip (similar to 'mocked' option of serve).
31
31
  // Could be too much sometimes, but don't want to bother users w/ a separate option for this.
32
- cds.deploy.include_external_entities_in(csn)
32
+ includeExternalEntities(csn, logger)
33
33
 
34
34
  csn = cds.compile.for.sql(csn, { names:env.sql.names, messages:[] }) // CSN w/ persistence information
35
35
  csn = cds.reflect(csn); // reflected model (adds additional helper functions)
@@ -40,7 +40,17 @@ module.exports = class DataTemplate extends TemplateBase {
40
40
  .filter (e => e.name !== 'DRAFT.DraftAdministrativeData' && !e.name.endsWith('.drafts')) // exclude draft stuff
41
41
  .forEach(e => processEntity(e, dest, this.projectPath, csn, force, logger));
42
42
  }
43
+ }
43
44
 
45
+ function includeExternalEntities(model, logger) {
46
+ for (let each in model.definitions) {
47
+ const def = model.definitions[each]
48
+ if (def['@cds.persistence.skip'] === true) {
49
+ logger.debug ('Including skipped entity '+each)
50
+ delete def['@cds.persistence.skip']
51
+ }
52
+ }
53
+ return model
44
54
  }
45
55
 
46
56
  function processEntity (entity, dest, projectPath, csn, force, logger) {
@@ -13,8 +13,6 @@ const { nullLogger } = require('../../util/logger');
13
13
  module.exports = class HanaTemplate extends TemplateBase {
14
14
  constructor(projectPath, generator) {
15
15
  super(projectPath, generator, __dirname);
16
-
17
- this.env = null;
18
16
  }
19
17
 
20
18
  async checkEnabled() {
@@ -22,11 +20,11 @@ module.exports = class HanaTemplate extends TemplateBase {
22
20
  return true;
23
21
  }
24
22
 
25
- this.env = await this.getEnv(true);
23
+ const env = await this.getEnv();
26
24
 
27
- const hdiConfigPath = path.join(this.projectPath, this.env.folders.db, 'src/.hdiconfig');
25
+ const hdiConfigPath = path.join(this.projectPath, env.folders.db, 'src/.hdiconfig');
28
26
  if (await this.fsUtil.pathExists(hdiConfigPath)) {
29
- const configFilePath = path.join(this.env.folders.db, 'src/.hdiconfig');
27
+ const configFilePath = path.join(env.folders.db, 'src/.hdiconfig');
30
28
  throw new Error(`Database config file ${configFilePath} already exists. Use --force to overwrite.`);
31
29
  }
32
30
 
@@ -34,22 +32,20 @@ module.exports = class HanaTemplate extends TemplateBase {
34
32
  }
35
33
 
36
34
  // read env from project
37
- async getEnv(force) {
35
+ async getEnv() {
38
36
  const cdsEnvVar = process.env.CDS_ENV;
39
37
  process.env.CDS_ENV = 'production'
40
- let env
41
38
  try {
42
- env = await super.getEnv(force);
39
+ return await super.getEnv();
43
40
  } finally {
44
41
  cdsEnvVar ? process.env.CDS_ENV = cdsEnvVar : delete process.env.CDS_ENV
45
42
  }
46
- return env
47
43
  }
48
44
 
49
45
  async run() {
50
- this.env = await this.getEnv(true);
46
+ const env = await this.getEnv();
51
47
 
52
- await this.templateUtil.copyFiles('common', path.join(this.projectPath, this.env.folders.db), {
48
+ await this.templateUtil.copyFiles('common', path.join(this.projectPath, env.folders.db), {
53
49
  projectName: this.projectName
54
50
  }, this.options.force);
55
51
 
@@ -57,13 +53,13 @@ module.exports = class HanaTemplate extends TemplateBase {
57
53
  const projectType = await this.getProjectType();
58
54
  switch (projectType) {
59
55
  case PROJECT_TYPE.java:
60
- await this.templateUtil.copyFiles('java', path.join(this.projectPath, this.env.folders.db), {}, this.options.force);
56
+ await this.templateUtil.copyFiles('java', path.join(this.projectPath, env.folders.db), {}, this.options.force);
61
57
  await this._updatePomXml();
62
- await this._updateCdsrcJson(cdsrcJsonPath, this.env.folders.db);
58
+ await this._updateCdsrcJson(cdsrcJsonPath, env.folders.db, env);
63
59
  break;
64
60
 
65
61
  case PROJECT_TYPE.nodejs:
66
- await this._updatePackageJson(path.join(this.projectPath, 'package.json'), this.env.folders.db);
62
+ await this._updatePackageJson(path.join(this.projectPath, 'package.json'), env.folders.db, env);
67
63
  break;
68
64
 
69
65
  default: break;
@@ -87,7 +83,7 @@ module.exports = class HanaTemplate extends TemplateBase {
87
83
  }
88
84
  }
89
85
 
90
- async _updatePackageJson(packageJsonPath, modelName) { //NOSONAR
86
+ async _updatePackageJson(packageJsonPath, modelName, env) { //NOSONAR
91
87
  modelName = path.basename(modelName);
92
88
 
93
89
  if (!await this.fsUtil.pathExists(packageJsonPath)) {
@@ -109,7 +105,7 @@ module.exports = class HanaTemplate extends TemplateBase {
109
105
  changed = true
110
106
  }
111
107
 
112
- if (!this._isUsingHana(modelName)) {
108
+ if (!this._isUsingHana(modelName, env)) {
113
109
  packageJson.cds = packageJson.cds || {};
114
110
  packageJson.cds.requires = packageJson.cds.requires || {};
115
111
  packageJson.cds.requires[modelName] = packageJson.cds.requires[modelName] || {};
@@ -130,7 +126,7 @@ module.exports = class HanaTemplate extends TemplateBase {
130
126
  }
131
127
  }
132
128
 
133
- async _updateCdsrcJson(cdsrcJsonPath, modelName) {
129
+ async _updateCdsrcJson(cdsrcJsonPath, modelName, env) {
134
130
  modelName = path.basename(modelName);
135
131
 
136
132
  let changed;
@@ -143,7 +139,7 @@ module.exports = class HanaTemplate extends TemplateBase {
143
139
 
144
140
  this.logger.isDebug && this.logger.debug(`_updateCdsrcJson before: ${JSON.stringify(cdsrcJson, null, 2)}`);
145
141
 
146
- if (!this._isUsingHana(modelName)) {
142
+ if (!this._isUsingHana(modelName, env)) {
147
143
  cdsrcJson.requires = cdsrcJson.requires || {};
148
144
  cdsrcJson.requires[modelName] = cdsrcJson.requires[modelName] || {};
149
145
  cdsrcJson.requires[modelName].kind = KIND_SQL;
@@ -161,7 +157,7 @@ module.exports = class HanaTemplate extends TemplateBase {
161
157
  }
162
158
  }
163
159
 
164
- _isUsingHana(db) {
165
- return this.env.get(`requires.${db}.kind`) === KIND_HANA || this.env.get(`requires.${db}.dialect`) === KIND_HANA || this.env.get(`requires.${db}.use`) === KIND_HANA;
160
+ _isUsingHana(db, env) {
161
+ return env.get(`requires.${db}.kind`) === KIND_HANA || env.get(`requires.${db}.dialect`) === KIND_HANA || env.get(`requires.${db}.use`) === KIND_HANA;
166
162
  }
167
163
  }
@@ -22,13 +22,11 @@ module.exports = class ProjectReader {
22
22
  async getEnv(profile = 'production') {
23
23
  const cdsEnvVar = process.env.CDS_ENV
24
24
  process.env.CDS_ENV = profile
25
- let env
26
25
  try {
27
- env = await this.template.getEnv(true);
26
+ return await this.template.getEnv();
28
27
  } finally {
29
28
  cdsEnvVar ? process.env.CDS_ENV = cdsEnvVar : delete process.env.CDS_ENV
30
29
  }
31
- return env
32
30
  }
33
31
 
34
32
  get fsUtil() {
@@ -58,7 +58,7 @@ module.exports = class SamplesTemplate extends TemplateBase {
58
58
  }
59
59
 
60
60
  async _addNodejsSamples() {
61
- const folders = (await this.getEnv(true)).folders;
61
+ const folders = (await this.getEnv()).folders;
62
62
  const dbFolder = path.join(this.projectPath, folders.db);
63
63
  await this.templateUtil.copyFiles('nodejs/db', dbFolder, {}, this.options.force);
64
64
 
@@ -1,11 +1,9 @@
1
1
  const path = require('path');
2
- const cds = require('@sap/cds/lib');
2
+ const Config = require('@sap/cds/lib/env');
3
3
 
4
4
  const TemplateUtil = require('../util/templateUtil');
5
- const commandUtil = require('../util/commandUtil');
6
- const { nullLogger } = require('../util/logger');
7
5
 
8
- const { IS_WIN, PROJECT_TYPE } = require('../constants');
6
+ const { PROJECT_TYPE } = require('../constants');
9
7
 
10
8
 
11
9
  module.exports = class TemplateBase {
@@ -43,49 +41,20 @@ module.exports = class TemplateBase {
43
41
  return true;
44
42
  }
45
43
 
46
- getCdsModulePath() {
47
- return path.join(__dirname, '../../../bin/cds.js');
48
- }
49
-
50
44
  /**
51
45
  * calls cds env and caches result
52
46
  * @param {boolean} force, ignore cached value
53
47
  * @returns {object} the current cds env
54
48
  */
55
- async getEnv(force = false) {
56
- if (!this.env || force) {
57
- let projectPath;
58
- if (await this.fsUtil.pathExists(this.projectPath)) {
59
- projectPath = this.projectPath;
60
- } else {
61
- projectPath = this.cwd;
62
- }
63
-
64
- const logger = (this.logger.isDebug ? this.logger : nullLogger);
65
-
66
- let modPath = this.getCdsModulePath();
67
- if (IS_WIN) {
68
- modPath = `"${modPath}"`;
69
- }
70
-
71
- let envJsonOutput = await commandUtil.spawnCommand('node', [modPath, 'env', 'json'], {
72
- cwd: projectPath,
73
- env: process.env
74
- }, logger, true);
75
-
76
- if (envJsonOutput) {
77
- // cheap check to see if json is valid
78
- if (envJsonOutput.indexOf('":') < 0) {
79
- // eslint-disable-next-line no-control-regex
80
- envJsonOutput = envJsonOutput.replace(/'/g, '"').replace(/\s(\w+):\s/g, ' "$1": ').replace(/\x1b\[\w+m/g, '');
81
- }
82
-
83
- this.env = JSON.parse(envJsonOutput);
84
- // env has additional getters and setters
85
- Object.setPrototypeOf(this.env, cds.env.__proto__);
86
- }
49
+ async getEnv() {
50
+ let projectPath;
51
+ if (await this.fsUtil.pathExists(this.projectPath)) {
52
+ projectPath = this.projectPath;
53
+ } else {
54
+ projectPath = this.cwd;
87
55
  }
88
- return this.env;
56
+
57
+ return Config.for('cds', projectPath);
89
58
  }
90
59
 
91
60
  /**
@@ -148,9 +148,7 @@ class Linter {
148
148
  extensions.join(',')
149
149
  );
150
150
  // Enable colored output
151
- if (process.stdout.isTTY) {
152
- this.eslintCmdOpts = io.mergeWithUserOpts(this.eslintCmdOpts, "color");
153
- }
151
+ this.eslintCmdOpts = io.mergeWithUserOpts(this.eslintCmdOpts, "color");
154
152
  return;
155
153
  }
156
154
 
@@ -205,22 +203,18 @@ class Linter {
205
203
  } else {
206
204
  input = `'${this.eslintCmdFileExpr.join("' '")}'`;
207
205
  }
208
- const eslintCmdSplit = this.eslintCmd.split(" ");
209
- this.eslintCmd = eslintCmdSplit[0];
210
- eslintCmdOpts.unshift(eslintCmdSplit[1]);
211
- eslintCmdOpts.push(input);
212
206
  // Run ESLint with given cmd line options
213
- // - Show 'eslint' instead of 'node ...eslint.js' cmd
214
- // - Remove debug flag for printed cmd
207
+ // - Show 'eslint' instead of actual eslint cmd ('node .../.eslint.js')
208
+ // - Remove debug flag for printed cmd line
215
209
  if (this.eslintCmdOpts.debug) {
216
210
  eslintCmdOpts.splice(eslintCmdOpts.indexOf('--debug'), 1);
217
211
  console.log(
218
- `Linting:\n ${term.info(`eslint ${eslintCmdOpts.slice(1).join(' ')}`)}\n`
212
+ `Linting:\n ${term.info(`eslint ${eslintCmdOpts.concat(input).join(' ')}`)}\n`
219
213
  );
220
214
  eslintCmdOpts.push('--debug');
221
215
  }
222
216
  if (!dryRun) {
223
- return commandUtil.spawnCommand(this.eslintCmd, eslintCmdOpts, {
217
+ return commandUtil.spawnCommand(this.eslintCmd, eslintCmdOpts.concat(input), {
224
218
  cwd: process.cwd(),
225
219
  shell: true,
226
220
  stdio: process.env.NODE_ENV === 'test' ? 'pipe' : 'inherit',
package/lib/lint/io.js CHANGED
@@ -33,14 +33,14 @@ module.exports = {
33
33
  break;
34
34
  case ".eslintrc.json":
35
35
  case ".eslintrc":
36
+ config = JSON.parse(await fsp.readFile(configPath, "utf8"));
37
+ break;
36
38
  case "package.json":
37
- try {
38
- config = JSON.parse(await fsp.readFile(configPath, "utf8"));
39
- if (configFile === "package.json" && "eslintConfig" in config) {
40
- config = config["eslintConfig"];
41
- }
42
- } catch (err) {
43
- // Do nothing
39
+ config = JSON.parse(await fsp.readFile(configPath, "utf8"));
40
+ if ("eslintConfig" in config) {
41
+ config = config["eslintConfig"];
42
+ } else {
43
+ config = {}
44
44
  }
45
45
  break;
46
46
  default:
@@ -138,21 +138,20 @@ module.exports = {
138
138
  break;
139
139
  case ".eslintrc.json":
140
140
  case ".eslintrc":
141
+ await fsUtil.writeFile(configPath, `${JSON.stringify(configContents, null, 2)}`);
142
+ break;
141
143
  case "package.json":
142
- if (configFile === "package.json") {
143
- if (await fsUtil.pathExists(configPath)) {
144
- contents = JSON.parse(await fsp.readFile(configPath, "utf8"));
145
- } else {
146
- contents = {};
147
- }
148
- if (!("eslintConfig" in configContents)) {
149
- contents["eslintConfig"] = configContents;
150
- } else {
151
- contents["eslintConfig"] = [...configContents, ...contents["eslintConfig"]];
152
- }
153
- configContents = contents;
144
+ if (await fsUtil.pathExists(configPath)) {
145
+ contents = JSON.parse(await fsp.readFile(configPath, "utf8"));
146
+ } else {
147
+ contents = {};
154
148
  }
155
- await fsUtil.writeFile(configPath, `${JSON.stringify(configContents, null, 2)}`);
149
+ if (!("eslintConfig" in configContents)) {
150
+ contents["eslintConfig"] = configContents;
151
+ } else {
152
+ contents["eslintConfig"] = [...configContents, ...contents["eslintConfig"]];
153
+ }
154
+ await fsUtil.writeFile(configPath, `${JSON.stringify(contents, null, 2)}`);
156
155
  break;
157
156
  default:
158
157
  break;
@@ -73,7 +73,7 @@ const isWindows = (process.platform === 'win32')
73
73
  const waitTime = parseInt(process.env.CDS_WATCH_KILL_DELAY) || (isWindows ? 500 : 0)
74
74
  function gracefullyKill (proc, fn=()=>{}) {
75
75
  if (proc) {
76
- proc.send({ exit: true })
76
+ proc.send({ exit: true }, () => { /* ignore */ })
77
77
  setTimeout(()=> { proc.kill(); fn()}, waitTime)
78
78
  }
79
79
  else fn()
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "4.6.2",
3
+ "version": "4.6.3",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sap/cds-dk",
9
- "version": "4.6.2",
9
+ "version": "4.6.3",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@sap/cds": "^5.6.2",
@@ -127,13 +127,13 @@
127
127
  }
128
128
  },
129
129
  "node_modules/@babel/helper-compilation-targets": {
130
- "version": "7.16.0",
131
- "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==",
130
+ "version": "7.16.3",
131
+ "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
132
132
  "dev": true,
133
133
  "dependencies": {
134
134
  "@babel/compat-data": "^7.16.0",
135
135
  "@babel/helper-validator-option": "^7.14.5",
136
- "browserslist": "^4.16.6",
136
+ "browserslist": "^4.17.5",
137
137
  "semver": "^6.3.0"
138
138
  },
139
139
  "engines": {
@@ -297,12 +297,12 @@
297
297
  }
298
298
  },
299
299
  "node_modules/@babel/helpers": {
300
- "version": "7.16.0",
301
- "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==",
300
+ "version": "7.16.3",
301
+ "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
302
302
  "dev": true,
303
303
  "dependencies": {
304
304
  "@babel/template": "^7.16.0",
305
- "@babel/traverse": "^7.16.0",
305
+ "@babel/traverse": "^7.16.3",
306
306
  "@babel/types": "^7.16.0"
307
307
  },
308
308
  "engines": {
@@ -379,8 +379,8 @@
379
379
  }
380
380
  },
381
381
  "node_modules/@babel/parser": {
382
- "version": "7.16.2",
383
- "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==",
382
+ "version": "7.16.3",
383
+ "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==",
384
384
  "dev": true,
385
385
  "bin": {
386
386
  "parser": "bin/babel-parser.js"
@@ -563,8 +563,8 @@
563
563
  }
564
564
  },
565
565
  "node_modules/@babel/traverse": {
566
- "version": "7.16.0",
567
- "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==",
566
+ "version": "7.16.3",
567
+ "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
568
568
  "dev": true,
569
569
  "dependencies": {
570
570
  "@babel/code-frame": "^7.16.0",
@@ -572,7 +572,7 @@
572
572
  "@babel/helper-function-name": "^7.16.0",
573
573
  "@babel/helper-hoist-variables": "^7.16.0",
574
574
  "@babel/helper-split-export-declaration": "^7.16.0",
575
- "@babel/parser": "^7.16.0",
575
+ "@babel/parser": "^7.16.3",
576
576
  "@babel/types": "^7.16.0",
577
577
  "debug": "^4.1.0",
578
578
  "globals": "^11.1.0"
@@ -962,8 +962,8 @@
962
962
  }
963
963
  },
964
964
  "node_modules/@sap/cds": {
965
- "version": "5.6.2",
966
- "integrity": "sha512-Y4i0vdyJ5klpksIAN+9gZ3yDHskHbhSWPMAuRA6vMP2zZSniDLyKBOiZsgLT3DpMF8ly186P14iN18ztBMp7+g==",
965
+ "version": "5.6.3",
966
+ "integrity": "sha512-k48JsHQuDoZEFgppBPBPAK7ANKpG3Iuh3j9kPAdOT0Lo8Tl7PL3ovhIZm41MhxWZ1CVcGAZ1JLcbIZi3jWunZA==",
967
967
  "dependencies": {
968
968
  "@sap-cloud-sdk/core": "^1.41",
969
969
  "@sap-cloud-sdk/util": "^1.41",
@@ -1241,19 +1241,19 @@
1241
1241
  }
1242
1242
  },
1243
1243
  "node_modules/@types/jsonwebtoken": {
1244
- "version": "8.5.5",
1245
- "integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==",
1244
+ "version": "8.5.6",
1245
+ "integrity": "sha512-+P3O/xC7nzVizIi5VbF34YtqSonFsdnbXBnWUCYRiKOi1f9gA4sEFvXkrGr/QVV23IbMYvcoerI7nnhDUiWXRQ==",
1246
1246
  "dependencies": {
1247
1247
  "@types/node": "*"
1248
1248
  }
1249
1249
  },
1250
1250
  "node_modules/@types/node": {
1251
- "version": "16.11.6",
1252
- "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w=="
1251
+ "version": "16.11.7",
1252
+ "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw=="
1253
1253
  },
1254
1254
  "node_modules/@types/prettier": {
1255
- "version": "2.4.1",
1256
- "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==",
1255
+ "version": "2.4.2",
1256
+ "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==",
1257
1257
  "dev": true
1258
1258
  },
1259
1259
  "node_modules/@types/stack-utils": {
@@ -1754,12 +1754,12 @@
1754
1754
  "dev": true
1755
1755
  },
1756
1756
  "node_modules/browserslist": {
1757
- "version": "4.17.6",
1758
- "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==",
1757
+ "version": "4.18.1",
1758
+ "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
1759
1759
  "dev": true,
1760
1760
  "dependencies": {
1761
- "caniuse-lite": "^1.0.30001274",
1762
- "electron-to-chromium": "^1.3.886",
1761
+ "caniuse-lite": "^1.0.30001280",
1762
+ "electron-to-chromium": "^1.3.896",
1763
1763
  "escalade": "^3.1.1",
1764
1764
  "node-releases": "^2.0.1",
1765
1765
  "picocolors": "^1.0.0"
@@ -1834,8 +1834,8 @@
1834
1834
  }
1835
1835
  },
1836
1836
  "node_modules/caniuse-lite": {
1837
- "version": "1.0.30001278",
1838
- "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==",
1837
+ "version": "1.0.30001280",
1838
+ "integrity": "sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==",
1839
1839
  "dev": true,
1840
1840
  "funding": {
1841
1841
  "type": "opencollective",
@@ -2371,8 +2371,8 @@
2371
2371
  "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
2372
2372
  },
2373
2373
  "node_modules/electron-to-chromium": {
2374
- "version": "1.3.890",
2375
- "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==",
2374
+ "version": "1.3.899",
2375
+ "integrity": "sha512-w16Dtd2zl7VZ4N4Db+FIa7n36sgPGCKjrKvUUmp5ialsikvcQLjcJR9RWnlYNxIyEHLdHaoIZEqKsPxU9MdyBg==",
2376
2376
  "dev": true
2377
2377
  },
2378
2378
  "node_modules/emittery": {
@@ -2978,8 +2978,8 @@
2978
2978
  }
2979
2979
  },
2980
2980
  "node_modules/flatted": {
2981
- "version": "3.2.2",
2982
- "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA=="
2981
+ "version": "3.2.4",
2982
+ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw=="
2983
2983
  },
2984
2984
  "node_modules/fn.name": {
2985
2985
  "version": "1.1.0",
@@ -4384,8 +4384,8 @@
4384
4384
  }
4385
4385
  },
4386
4386
  "node_modules/jest-validate/node_modules/camelcase": {
4387
- "version": "6.2.0",
4388
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
4387
+ "version": "6.2.1",
4388
+ "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
4389
4389
  "dev": true,
4390
4390
  "engines": {
4391
4391
  "node": ">=10"
@@ -4841,17 +4841,17 @@
4841
4841
  }
4842
4842
  },
4843
4843
  "node_modules/mime-db": {
4844
- "version": "1.50.0",
4845
- "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
4844
+ "version": "1.51.0",
4845
+ "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
4846
4846
  "engines": {
4847
4847
  "node": ">= 0.6"
4848
4848
  }
4849
4849
  },
4850
4850
  "node_modules/mime-types": {
4851
- "version": "2.1.33",
4852
- "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
4851
+ "version": "2.1.34",
4852
+ "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
4853
4853
  "dependencies": {
4854
- "mime-db": "1.50.0"
4854
+ "mime-db": "1.51.0"
4855
4855
  },
4856
4856
  "engines": {
4857
4857
  "node": ">= 0.6"
@@ -6288,8 +6288,8 @@
6288
6288
  }
6289
6289
  },
6290
6290
  "node_modules/table/node_modules/ajv": {
6291
- "version": "8.6.3",
6292
- "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
6291
+ "version": "8.8.0",
6292
+ "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==",
6293
6293
  "dependencies": {
6294
6294
  "fast-deep-equal": "^3.1.1",
6295
6295
  "json-schema-traverse": "^1.0.0",
@@ -7018,13 +7018,13 @@
7018
7018
  }
7019
7019
  },
7020
7020
  "@babel/helper-compilation-targets": {
7021
- "version": "7.16.0",
7022
- "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==",
7021
+ "version": "7.16.3",
7022
+ "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
7023
7023
  "dev": true,
7024
7024
  "requires": {
7025
7025
  "@babel/compat-data": "^7.16.0",
7026
7026
  "@babel/helper-validator-option": "^7.14.5",
7027
- "browserslist": "^4.16.6",
7027
+ "browserslist": "^4.17.5",
7028
7028
  "semver": "^6.3.0"
7029
7029
  },
7030
7030
  "dependencies": {
@@ -7142,12 +7142,12 @@
7142
7142
  "dev": true
7143
7143
  },
7144
7144
  "@babel/helpers": {
7145
- "version": "7.16.0",
7146
- "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==",
7145
+ "version": "7.16.3",
7146
+ "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
7147
7147
  "dev": true,
7148
7148
  "requires": {
7149
7149
  "@babel/template": "^7.16.0",
7150
- "@babel/traverse": "^7.16.0",
7150
+ "@babel/traverse": "^7.16.3",
7151
7151
  "@babel/types": "^7.16.0"
7152
7152
  }
7153
7153
  },
@@ -7205,8 +7205,8 @@
7205
7205
  }
7206
7206
  },
7207
7207
  "@babel/parser": {
7208
- "version": "7.16.2",
7209
- "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==",
7208
+ "version": "7.16.3",
7209
+ "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==",
7210
7210
  "dev": true
7211
7211
  },
7212
7212
  "@babel/plugin-syntax-async-generators": {
@@ -7334,8 +7334,8 @@
7334
7334
  }
7335
7335
  },
7336
7336
  "@babel/traverse": {
7337
- "version": "7.16.0",
7338
- "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==",
7337
+ "version": "7.16.3",
7338
+ "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
7339
7339
  "dev": true,
7340
7340
  "requires": {
7341
7341
  "@babel/code-frame": "^7.16.0",
@@ -7343,7 +7343,7 @@
7343
7343
  "@babel/helper-function-name": "^7.16.0",
7344
7344
  "@babel/helper-hoist-variables": "^7.16.0",
7345
7345
  "@babel/helper-split-export-declaration": "^7.16.0",
7346
- "@babel/parser": "^7.16.0",
7346
+ "@babel/parser": "^7.16.3",
7347
7347
  "@babel/types": "^7.16.0",
7348
7348
  "debug": "^4.1.0",
7349
7349
  "globals": "^11.1.0"
@@ -7660,8 +7660,8 @@
7660
7660
  }
7661
7661
  },
7662
7662
  "@sap/cds": {
7663
- "version": "5.6.2",
7664
- "integrity": "sha512-Y4i0vdyJ5klpksIAN+9gZ3yDHskHbhSWPMAuRA6vMP2zZSniDLyKBOiZsgLT3DpMF8ly186P14iN18ztBMp7+g==",
7663
+ "version": "5.6.3",
7664
+ "integrity": "sha512-k48JsHQuDoZEFgppBPBPAK7ANKpG3Iuh3j9kPAdOT0Lo8Tl7PL3ovhIZm41MhxWZ1CVcGAZ1JLcbIZi3jWunZA==",
7665
7665
  "requires": {
7666
7666
  "@sap-cloud-sdk/core": "^1.41",
7667
7667
  "@sap-cloud-sdk/util": "^1.41",
@@ -7878,19 +7878,19 @@
7878
7878
  }
7879
7879
  },
7880
7880
  "@types/jsonwebtoken": {
7881
- "version": "8.5.5",
7882
- "integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==",
7881
+ "version": "8.5.6",
7882
+ "integrity": "sha512-+P3O/xC7nzVizIi5VbF34YtqSonFsdnbXBnWUCYRiKOi1f9gA4sEFvXkrGr/QVV23IbMYvcoerI7nnhDUiWXRQ==",
7883
7883
  "requires": {
7884
7884
  "@types/node": "*"
7885
7885
  }
7886
7886
  },
7887
7887
  "@types/node": {
7888
- "version": "16.11.6",
7889
- "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w=="
7888
+ "version": "16.11.7",
7889
+ "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw=="
7890
7890
  },
7891
7891
  "@types/prettier": {
7892
- "version": "2.4.1",
7893
- "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==",
7892
+ "version": "2.4.2",
7893
+ "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==",
7894
7894
  "dev": true
7895
7895
  },
7896
7896
  "@types/stack-utils": {
@@ -8283,12 +8283,12 @@
8283
8283
  "dev": true
8284
8284
  },
8285
8285
  "browserslist": {
8286
- "version": "4.17.6",
8287
- "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==",
8286
+ "version": "4.18.1",
8287
+ "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
8288
8288
  "dev": true,
8289
8289
  "requires": {
8290
- "caniuse-lite": "^1.0.30001274",
8291
- "electron-to-chromium": "^1.3.886",
8290
+ "caniuse-lite": "^1.0.30001280",
8291
+ "electron-to-chromium": "^1.3.896",
8292
8292
  "escalade": "^3.1.1",
8293
8293
  "node-releases": "^2.0.1",
8294
8294
  "picocolors": "^1.0.0"
@@ -8338,8 +8338,8 @@
8338
8338
  "dev": true
8339
8339
  },
8340
8340
  "caniuse-lite": {
8341
- "version": "1.0.30001278",
8342
- "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==",
8341
+ "version": "1.0.30001280",
8342
+ "integrity": "sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==",
8343
8343
  "dev": true
8344
8344
  },
8345
8345
  "caseless": {
@@ -8745,8 +8745,8 @@
8745
8745
  "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
8746
8746
  },
8747
8747
  "electron-to-chromium": {
8748
- "version": "1.3.890",
8749
- "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==",
8748
+ "version": "1.3.899",
8749
+ "integrity": "sha512-w16Dtd2zl7VZ4N4Db+FIa7n36sgPGCKjrKvUUmp5ialsikvcQLjcJR9RWnlYNxIyEHLdHaoIZEqKsPxU9MdyBg==",
8750
8750
  "dev": true
8751
8751
  },
8752
8752
  "emittery": {
@@ -9208,8 +9208,8 @@
9208
9208
  }
9209
9209
  },
9210
9210
  "flatted": {
9211
- "version": "3.2.2",
9212
- "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA=="
9211
+ "version": "3.2.4",
9212
+ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw=="
9213
9213
  },
9214
9214
  "fn.name": {
9215
9215
  "version": "1.1.0",
@@ -10221,8 +10221,8 @@
10221
10221
  },
10222
10222
  "dependencies": {
10223
10223
  "camelcase": {
10224
- "version": "6.2.0",
10225
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
10224
+ "version": "6.2.1",
10225
+ "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
10226
10226
  "dev": true
10227
10227
  }
10228
10228
  }
@@ -10579,14 +10579,14 @@
10579
10579
  "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
10580
10580
  },
10581
10581
  "mime-db": {
10582
- "version": "1.50.0",
10583
- "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A=="
10582
+ "version": "1.51.0",
10583
+ "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
10584
10584
  },
10585
10585
  "mime-types": {
10586
- "version": "2.1.33",
10587
- "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
10586
+ "version": "2.1.34",
10587
+ "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
10588
10588
  "requires": {
10589
- "mime-db": "1.50.0"
10589
+ "mime-db": "1.51.0"
10590
10590
  }
10591
10591
  },
10592
10592
  "mimic-fn": {
@@ -11666,8 +11666,8 @@
11666
11666
  },
11667
11667
  "dependencies": {
11668
11668
  "ajv": {
11669
- "version": "8.6.3",
11670
- "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
11669
+ "version": "8.8.0",
11670
+ "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==",
11671
11671
  "requires": {
11672
11672
  "fast-deep-equal": "^3.1.1",
11673
11673
  "json-schema-traverse": "^1.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "4.6.2",
3
+ "version": "4.6.3",
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": [