@sap/cds-dk 7.8.2 → 7.9.1

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.
Files changed (78) hide show
  1. package/bin/add.js +28 -7
  2. package/bin/bind.js +64 -21
  3. package/bin/build.js +35 -3
  4. package/bin/cds.js +31 -13
  5. package/bin/compile/index.js +44 -3
  6. package/bin/completion/completionFs.js +61 -0
  7. package/bin/completion/index.js +212 -0
  8. package/bin/completion/scripts/cds-bash.sh +17 -0
  9. package/bin/completion/scripts/cds-ps.ps1 +18 -0
  10. package/bin/completion/scripts/cds-zsh.sh +12 -0
  11. package/bin/help.js +8 -2
  12. package/bin/init.js +34 -4
  13. package/bin/subscribe.js +5 -1
  14. package/bin/watch.js +4 -2
  15. package/lib/bind/KubernetesApiAccessor.js +3 -2
  16. package/lib/bind/bindingResolver.js +3 -2
  17. package/lib/bind/bindingUtil.js +10 -8
  18. package/lib/bind/cfKeyProvider.js +58 -153
  19. package/lib/bind/index.js +46 -36
  20. package/lib/bind/kubernetesCredentialsProvider.js +6 -5
  21. package/lib/bind/userCdsrcJsonStorageProvider.js +25 -3
  22. package/lib/build/buildTaskEngine.js +1 -1
  23. package/lib/build/provider/hana/index.js +1 -1
  24. package/lib/build/provider/hana/template/undeploy.json +3 -1
  25. package/lib/build/provider/nodejs/index.js +1 -1
  26. package/lib/compile/openapi/index.js +5 -0
  27. package/lib/deploy/to-hana/hana.js +25 -7
  28. package/lib/env/schemas/cds-rc.js +29 -2
  29. package/lib/import/odata/v4parser.js +78 -25
  30. package/lib/init/constants.js +2 -1
  31. package/lib/init/index.js +18 -13
  32. package/lib/init/merge.js +1 -0
  33. package/lib/init/mvn.js +8 -47
  34. package/lib/init/plugin.js +0 -4
  35. package/lib/init/projectReader.js +17 -10
  36. package/lib/init/template/approuter/files/values.yaml.hbs +0 -12
  37. package/lib/init/template/completion/completionSetup.js +184 -0
  38. package/lib/init/template/completion/index.js +22 -0
  39. package/lib/init/template/data/as-csv.js +25 -17
  40. package/lib/init/template/data/as-json.js +115 -30
  41. package/lib/init/template/data/index.js +28 -15
  42. package/lib/init/template/hana/files/undeploy.json +2 -1
  43. package/lib/init/template/helm/files/chart/values.schema.json +1 -1
  44. package/lib/init/template/helm/files/content-deployment/Chart.yaml +0 -2
  45. package/lib/init/template/helm/files/content-deployment/values.schema.json +0 -1
  46. package/lib/init/template/helm/files/service-instance/Chart.yaml +0 -2
  47. package/lib/init/template/helm/files/service-instance/values.schema.json +0 -1
  48. package/lib/init/template/helm/files/web-application/Chart.yaml +0 -2
  49. package/lib/init/template/helm/files/web-application/values.schema.json +0 -1
  50. package/lib/init/template/helm-unified-runtime/files/values.schema.json +1 -1
  51. package/lib/init/template/http/index.js +150 -104
  52. package/lib/init/template/kafka/index.js +6 -0
  53. package/lib/init/template/lint/index.js +12 -13
  54. package/lib/init/template/mta/files/mta.yaml.hbs +1 -1
  55. package/lib/init/template/multitenancy/files/values.yaml.hbs +0 -5
  56. package/lib/init/template/multitenancy/index.js +13 -5
  57. package/lib/init/template/nodejs/files/.vscode/settings.json +11 -0
  58. package/lib/init/template/nodejs/files/eslint.config.js +13 -0
  59. package/lib/init/template/nodejs/files/package.json.hbs +3 -1
  60. package/lib/init/template/sample/index.js +18 -20
  61. package/lib/init/template/tiny-sample/index.js +1 -2
  62. package/lib/init/template/typer/index.js +2 -2
  63. package/lib/lint/Linter.js +133 -55
  64. package/lib/lint/checks.js +5 -6
  65. package/lib/lint/io.js +119 -10
  66. package/lib/mtx/auth_manager.js +5 -5
  67. package/lib/mtx/params.js +4 -2
  68. package/lib/mtx/settings_manager.js +1 -1
  69. package/lib/mtx/tenant_action.js +12 -2
  70. package/lib/mtx/util/logging.js +10 -4
  71. package/lib/util/axios.js +2 -1
  72. package/lib/util/cf.js +32 -37
  73. package/lib/util/git.js +1 -1
  74. package/lib/util/term.js +1 -1
  75. package/{bin → lib/watch}/watched.js +2 -2
  76. package/npm-shrinkwrap.json +34 -34
  77. package/package.json +2 -2
  78. package/lib/init/template/nodejs/files/.eslintrc +0 -26
@@ -3,9 +3,12 @@
3
3
  function getMessage(errorText, { error, command, help = command && getCommandHelp(command) } = {}) {
4
4
  let message = errorText ? errorText.trim() : '';
5
5
  if (error) {
6
- const includeStack = error.stack && require('../../cds').debug('cli');
7
- message = message.replace(/(?<!\p{P})$/u, ':'); // Append colon if no punctuation at the end
8
- message += includeStack ? '\n' : ' ';
6
+ const debug = require('../../cds').debug('cli');
7
+ const includeStack = debug && error.stack?.includes('\n');
8
+ if (message.length) {
9
+ message = message.replace(/(?<!\p{P})$/u, ':'); // Append colon if no punctuation at the end
10
+ message += includeStack ? '\n' : ' ';
11
+ }
9
12
  const oriMsg = error.response?.data?.message // case: response body == error
10
13
  || error.response?.data?.error?.message // case: response body == { error }
11
14
  || (includeStack ? '' : error.message);
@@ -13,9 +16,12 @@ function getMessage(errorText, { error, command, help = command && getCommandHel
13
16
  if (includeStack) {
14
17
  message += (oriMsg ? '\n' : '') + error.stack;
15
18
  }
19
+ if (debug && error.cause) {
20
+ message += '\nCaused by: ' + getMessage('', { error: error.cause }).replace(/^(?= *at)/gm, ' ');
21
+ }
16
22
  }
17
23
  if (typeof help === 'string') {
18
- message += require('../../../bin/help').formatHelp(help);
24
+ message += '\n' + require('../../../bin/help').formatHelp(help);
19
25
  }
20
26
  return message;
21
27
  }
package/lib/util/axios.js CHANGED
@@ -15,7 +15,8 @@ function pruneErrors() {
15
15
  response => response,
16
16
  axError => {
17
17
  const { inspect } = require('util');
18
- const { url, method } = axError.config ?? {};
18
+ let { url, method } = axError.config ?? {};
19
+ url = url?.replace(/(passcode|refreshToken|clientsecret|key)=[^&]+/g, '$1=...');
19
20
  const { errno, code, response = {}, message: axMessage } = axError;
20
21
  const prefix = (url && method ? `${method.toUpperCase()} ${url}` : 'Request') + ' failed';
21
22
 
package/lib/util/cf.js CHANGED
@@ -28,12 +28,8 @@ const OPERATION_STATE_SUCCEEDED = 'succeeded';
28
28
 
29
29
  const CF_CLIENT_MINIMUM_VERSION = 8;
30
30
 
31
-
32
- class CfUtil {
33
-
34
- _clear() {
35
- this.spaceInfo = null;
36
- }
31
+ module.exports = new class CfUtil {
32
+ spaceInfo;
37
33
 
38
34
  async _sleep(ms) {
39
35
  return new Promise((resolve) => {
@@ -41,7 +37,7 @@ class CfUtil {
41
37
  });
42
38
  }
43
39
 
44
- async _cfRun(...args) {
40
+ async cfRun(...args) {
45
41
  args = args.map(arg => arg.replace(/"/g, '\\"'));
46
42
  const cmdLine = `${CF_COMMAND} "${args.join('" "')}"`;
47
43
  DEBUG && console.time(cmdLine);
@@ -65,12 +61,15 @@ class CfUtil {
65
61
  }
66
62
  }
67
63
 
68
- async _cfRequest(urlPath, queryObj, bodyObj) {
64
+ async cfRequest(urlPath, queryObj, bodyObj) {
69
65
  if (queryObj) {
70
66
  const entries = Object.entries(queryObj);
71
67
  const queryStr = entries.map(([key, value]) => {
68
+ if (Array.isArray(value)) {
69
+ value = value.join(',');
70
+ }
72
71
  // commas cause problems in cf curl when not double encoded
73
- value = value.replace(/,/g, encodeURIComponent(','));
72
+ // value = value.replace(/,/g, encodeURIComponent(','));
74
73
  return `${key}=${encodeURIComponent(value)}`;
75
74
  }).join('&');
76
75
 
@@ -84,7 +83,7 @@ class CfUtil {
84
83
  args.push(JSON.stringify(bodyObj)); // cfRun uses spawn so no special handling for quotes on cli required
85
84
  }
86
85
 
87
- const result = await this._cfRun(...args);
86
+ const result = await this.cfRun(...args);
88
87
  let response = {};
89
88
  if (result.stdout) {
90
89
  response = JSON.parse(result.stdout);
@@ -108,7 +107,7 @@ class CfUtil {
108
107
  throw new Error(errorMsg);
109
108
  }
110
109
 
111
- async getCfTargetFromConfigFile() {
110
+ async _getCfTargetFromConfigFile() {
112
111
  const cfHome = process.env.CF_HOME || process.env.cf_home || path.join(os.homedir(), '.cf');
113
112
  try {
114
113
  const fileContent = await fsp.readFile(path.join(cfHome, 'config.json'));
@@ -125,8 +124,8 @@ class CfUtil {
125
124
  }
126
125
  }
127
126
 
128
- async getCfTargetFromCli() {
129
- const result = await this._cfRun('target');
127
+ async _getCfTargetFromCli() {
128
+ const result = await this.cfRun('target');
130
129
  if (result?.stdout) {
131
130
  return {
132
131
  apiEndpoint: this._extract(result.stdout, /api endpoint\s*:\s*([^\s]+)/i, `CF API endpoint is missing. Use 'cf login' to login.`),
@@ -137,23 +136,23 @@ class CfUtil {
137
136
  }
138
137
  }
139
138
 
140
- async getCfAuthorization() {
139
+ async _getCfAuthorization() {
141
140
  DEBUG?.('getting authorization');
142
141
  try {
143
- return (await this._cfRun('oauth-token')).stdout;
142
+ return (await this.cfRun('oauth-token')).stdout;
144
143
  } catch (err) {
145
144
  throw err.message;
146
145
  }
147
146
  }
148
147
 
149
148
  async getCfTarget() {
150
- await this.checkCliVersion();
151
- await this.getCfAuthorization();
152
- return await this.getCfTargetFromConfigFile() || await this.getCfTargetFromCli();
149
+ await this._checkCliVersion();
150
+ await this._getCfAuthorization();
151
+ return await this._getCfTargetFromConfigFile() || await this._getCfTargetFromCli();
153
152
  }
154
153
 
155
- async checkCliVersion() {
156
- const result = await this._cfRun('-v');
154
+ async _checkCliVersion() {
155
+ const result = await this.cfRun('-v');
157
156
  const version = result?.stdout?.match(/version.*(\d+\.\d+\.\d+)/i)
158
157
  if (parseInt(version?.[1]) < CF_CLIENT_MINIMUM_VERSION) {
159
158
  console.log(warn(`
@@ -170,13 +169,13 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
170
169
  const target = await this.getCfTarget();
171
170
 
172
171
  const { org, space } = target;
173
- const orgs = await this._cfRequest(`/v3/organizations`, { names: org });
172
+ const orgs = await this.cfRequest(`/v3/organizations`, { names: org });
174
173
  if (!orgs?.resources?.length) {
175
174
  throw new Error(`CF org ${bold(org)} not found!`);
176
175
  }
177
176
 
178
177
  const orgGuid = orgs.resources[0].guid;
179
- const spaces = await this._cfRequest(`/v3/spaces`, { names: space, organization_guids: orgGuid });
178
+ const spaces = await this.cfRequest(`/v3/spaces`, { names: space, organization_guids: orgGuid });
180
179
  if (!spaces?.resources?.length) {
181
180
  throw new Error(`CF space ${bold(space)} not found in org ${bold(org)}!`);
182
181
  }
@@ -196,10 +195,10 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
196
195
 
197
196
  async getEnv(app) {
198
197
  const { spaceGuid: space_guids, orgGuid: organization_guids } = await this.getCfSpaceInfo();
199
- const apps = await this._cfRequest('/v3/apps', { space_guids, organization_guids, names: app });
198
+ const apps = await this.cfRequest('/v3/apps', { space_guids, organization_guids, names: app });
200
199
  if (apps.resources.length < 1) throw `Cannot find app with name '${app}'`
201
200
  const guid = apps.resources[0].guid;
202
- return await this._cfRequest('/v3/apps/' + guid + '/env', { space_guids, organization_guids, names: app });
201
+ return await this.cfRequest('/v3/apps/' + guid + '/env', { space_guids, organization_guids, names: app });
203
202
  }
204
203
 
205
204
  async getService(serviceName, showMessage = true) {
@@ -209,7 +208,7 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
209
208
  let counter = POLL_COUNTER;
210
209
  while (counter > 0) {
211
210
  counter--;
212
- const serviceInstances = await this._cfRequest('/v3/service_instances', {
211
+ const serviceInstances = await this.cfRequest('/v3/service_instances', {
213
212
  names: serviceName,
214
213
  space_guids: spaceInfo.spaceGuid,
215
214
  organization_guids: spaceInfo.orgGuid
@@ -253,7 +252,7 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
253
252
 
254
253
  const spaceInfo = await this.getCfSpaceInfo();
255
254
 
256
- const servicePlan = await this._cfRequest(`/v3/service_plans`, {
255
+ const servicePlan = await this.cfRequest(`/v3/service_plans`, {
257
256
  names: planName,
258
257
  space_guids: spaceInfo.spaceGuid,
259
258
  organization_guids: spaceInfo.orgGuid,
@@ -286,7 +285,7 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
286
285
  body.parameters = { ...options };
287
286
  }
288
287
 
289
- const postResult = await this._cfRequest('/v3/service_instances', undefined, body);
288
+ const postResult = await this.cfRequest('/v3/service_instances', undefined, body);
290
289
  if (postResult?.errors) {
291
290
  throw new Error(postResult.errors[0].detail);
292
291
  }
@@ -299,14 +298,13 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
299
298
  throw new Error(`Could not create service ${bold(serviceName)}`);
300
299
  }
301
300
 
302
-
303
- async getServiceKey(serviceInstance, serviceKeyName, showMessage = true) {
301
+ async _getServiceKey(serviceInstance, serviceKeyName, showMessage = true) {
304
302
  showMessage && console.log(`Getting service key ${bold(serviceKeyName)}`);
305
303
 
306
304
  let counter = POLL_COUNTER;
307
305
  while (counter > 0) {
308
306
  counter--;
309
- const bindings = await this._cfRequest(`/v3/service_credential_bindings`, { names: serviceKeyName, service_instance_guids: serviceInstance.guid });
307
+ const bindings = await this.cfRequest(`/v3/service_credential_bindings`, { names: serviceKeyName, service_instance_guids: serviceInstance.guid });
310
308
  if (!bindings?.resources?.length) {
311
309
  return null;
312
310
  }
@@ -319,7 +317,7 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
319
317
  break;
320
318
 
321
319
  case OPERATION_STATE_SUCCEEDED: {
322
- const keyDetails = await this._cfRequest(`/v3/service_credential_bindings/${encodeURIComponent(binding.guid)}/details`);
320
+ const keyDetails = await this.cfRequest(`/v3/service_credential_bindings/${encodeURIComponent(binding.guid)}/details`);
323
321
  return keyDetails.credentials;
324
322
  }
325
323
 
@@ -335,9 +333,8 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
335
333
  throw new Error(`Timeout occurred while getting service key ${bold(serviceKeyName)}`);
336
334
  }
337
335
 
338
-
339
336
  async getOrCreateServiceKey(serviceInstance, serviceKeyName, parameters, { silent = false, create = true } = {}) {
340
- const serviceKey = await this.getServiceKey(serviceInstance, serviceKeyName, false);
337
+ const serviceKey = await this._getServiceKey(serviceInstance, serviceKeyName, false);
341
338
  if (serviceKey || !create) {
342
339
  if (serviceKey && !silent) console.log(`Getting service key ${bold(serviceKeyName)}`);
343
340
  return serviceKey;
@@ -358,12 +355,12 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
358
355
  parameters
359
356
  }
360
357
 
361
- const postResult = await this._cfRequest('/v3/service_credential_bindings', undefined, body);
358
+ const postResult = await this.cfRequest('/v3/service_credential_bindings', undefined, body);
362
359
  if (postResult?.errors) {
363
360
  throw new Error(postResult.errors[0].detail);
364
361
  }
365
362
 
366
- const newServiceKey = await this.getServiceKey(serviceInstance, serviceKeyName, false);
363
+ const newServiceKey = await this._getServiceKey(serviceInstance, serviceKeyName, false);
367
364
  if (newServiceKey) {
368
365
  return newServiceKey;
369
366
  }
@@ -371,5 +368,3 @@ Deployment will stop in the near future for Cloud Foundry client versions < ${CF
371
368
  throw new Error(`Could not create service key ${bold(serviceKeyName)}`);
372
369
  }
373
370
  }
374
-
375
- module.exports = new CfUtil();
package/lib/util/git.js CHANGED
@@ -35,7 +35,7 @@ class GitUtil {
35
35
  }
36
36
  }
37
37
 
38
- console.log(`adding entry '${file}' to ${GIT_IGNORE_FILE}.`);
38
+ console.log(`Adding entry '${file}' to ${GIT_IGNORE_FILE}.`);
39
39
  let gitignore = await this.readFileSafely(gitIgnorePath);
40
40
  gitignore = gitignore + `${os.EOL}# added by cds${os.EOL}${file}${os.EOL}`;
41
41
 
package/lib/util/term.js CHANGED
@@ -26,7 +26,7 @@ module.exports.info = o => as(t.green, o)
26
26
  module.exports.link = o => as(t.link, o)
27
27
  module.exports.bold = o => as(t.bold, o)
28
28
  module.exports.highlight = o => as(t.blue,as(t.bold, o))
29
- module.exports.secondary = o => as(t.grey, o)
29
+ module.exports.dim = o => as(t.grey, o)
30
30
 
31
31
  const format = module.exports.format = (o, severity='Error', asInternalError=false, withStack=false) => {
32
32
  switch (severity) {
@@ -7,8 +7,8 @@
7
7
 
8
8
  // run through cli in order to use its error handling
9
9
  const args = JSON.parse(process.env._args)
10
- const cds = require('../lib/cds'); cds.watched = true
11
- const bootstrap = require('./cds')(...args)
10
+ const cds = require('../cds'); cds.watched = true
11
+ const bootstrap = require('../../bin/cds')(...args)
12
12
 
13
13
  cds.once('listening', ({server}) => {
14
14
  process.send ({ code:'listening', port: server.address().port })
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "7.8.2",
3
+ "version": "7.9.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sap/cds-dk",
9
- "version": "7.8.2",
9
+ "version": "7.9.1",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@sap/cds": "^7",
13
13
  "@sap/cds-foss": "^5.0.0",
14
14
  "@sap/cds-mtxs": "^1.9.0",
15
- "@sap/eslint-plugin-cds": "^2.6.0",
15
+ "@sap/eslint-plugin-cds": "^3.0.1",
16
16
  "@sap/hdi-deploy": "^4.8.0",
17
17
  "axios": "^1",
18
18
  "eslint": "^8",
@@ -32,13 +32,6 @@
32
32
  "sqlite3": "^5.0.4"
33
33
  }
34
34
  },
35
- "node_modules/@aashutoshrathi/word-wrap": {
36
- "version": "1.2.6",
37
- "license": "MIT",
38
- "engines": {
39
- "node": ">=0.10.0"
40
- }
41
- },
42
35
  "node_modules/@cap-js/cds-types": {
43
36
  "version": "0.2.0",
44
37
  "license": "SEE LICENSE IN LICENSE",
@@ -215,7 +208,7 @@
215
208
  }
216
209
  },
217
210
  "node_modules/@sap/cds": {
218
- "version": "7.8.1",
211
+ "version": "7.9.0",
219
212
  "license": "SEE LICENSE IN LICENSE",
220
213
  "dependencies": {
221
214
  "@cap-js/cds-types": "<1",
@@ -232,7 +225,7 @@
232
225
  }
233
226
  },
234
227
  "node_modules/@sap/cds-compiler": {
235
- "version": "4.8.0",
228
+ "version": "4.9.0",
236
229
  "license": "SEE LICENSE IN LICENSE",
237
230
  "dependencies": {
238
231
  "antlr4": "4.9.3"
@@ -268,7 +261,7 @@
268
261
  }
269
262
  },
270
263
  "node_modules/@sap/cds-mtxs": {
271
- "version": "1.17.0",
264
+ "version": "1.18.0",
272
265
  "license": "SEE LICENSE IN LICENSE",
273
266
  "dependencies": {
274
267
  "@sap/hdi-deploy": "^4",
@@ -280,7 +273,7 @@
280
273
  }
281
274
  },
282
275
  "node_modules/@sap/eslint-plugin-cds": {
283
- "version": "2.7.0",
276
+ "version": "3.0.2",
284
277
  "license": "See LICENSE file",
285
278
  "dependencies": {
286
279
  "@sap/cds": ">=5.6.0",
@@ -290,7 +283,7 @@
290
283
  "node": ">=18"
291
284
  },
292
285
  "peerDependencies": {
293
- "eslint": ">=7"
286
+ "eslint": ">=8"
294
287
  }
295
288
  },
296
289
  "node_modules/@sap/hana-client": {
@@ -777,8 +770,8 @@
777
770
  },
778
771
  "node_modules/chownr": {
779
772
  "version": "2.0.0",
780
- "devOptional": true,
781
773
  "license": "ISC",
774
+ "optional": true,
782
775
  "engines": {
783
776
  "node": ">=10"
784
777
  }
@@ -1432,8 +1425,8 @@
1432
1425
  },
1433
1426
  "node_modules/fs-minipass": {
1434
1427
  "version": "2.1.0",
1435
- "devOptional": true,
1436
1428
  "license": "ISC",
1429
+ "optional": true,
1437
1430
  "dependencies": {
1438
1431
  "minipass": "^3.0.0"
1439
1432
  },
@@ -2082,8 +2075,8 @@
2082
2075
  },
2083
2076
  "node_modules/minipass": {
2084
2077
  "version": "3.3.6",
2085
- "devOptional": true,
2086
2078
  "license": "ISC",
2079
+ "optional": true,
2087
2080
  "dependencies": {
2088
2081
  "yallist": "^4.0.0"
2089
2082
  },
@@ -2153,13 +2146,13 @@
2153
2146
  },
2154
2147
  "node_modules/minipass/node_modules/yallist": {
2155
2148
  "version": "4.0.0",
2156
- "devOptional": true,
2157
- "license": "ISC"
2149
+ "license": "ISC",
2150
+ "optional": true
2158
2151
  },
2159
2152
  "node_modules/minizlib": {
2160
2153
  "version": "2.1.2",
2161
- "devOptional": true,
2162
2154
  "license": "MIT",
2155
+ "optional": true,
2163
2156
  "dependencies": {
2164
2157
  "minipass": "^3.0.0",
2165
2158
  "yallist": "^4.0.0"
@@ -2170,13 +2163,13 @@
2170
2163
  },
2171
2164
  "node_modules/minizlib/node_modules/yallist": {
2172
2165
  "version": "4.0.0",
2173
- "devOptional": true,
2174
- "license": "ISC"
2166
+ "license": "ISC",
2167
+ "optional": true
2175
2168
  },
2176
2169
  "node_modules/mkdirp": {
2177
2170
  "version": "1.0.4",
2178
- "devOptional": true,
2179
2171
  "license": "MIT",
2172
+ "optional": true,
2180
2173
  "bin": {
2181
2174
  "mkdirp": "bin/cmd.js"
2182
2175
  },
@@ -2221,7 +2214,7 @@
2221
2214
  "license": "MIT"
2222
2215
  },
2223
2216
  "node_modules/node-abi": {
2224
- "version": "3.57.0",
2217
+ "version": "3.62.0",
2225
2218
  "license": "MIT",
2226
2219
  "optional": true,
2227
2220
  "dependencies": {
@@ -2332,15 +2325,15 @@
2332
2325
  }
2333
2326
  },
2334
2327
  "node_modules/optionator": {
2335
- "version": "0.9.3",
2328
+ "version": "0.9.4",
2336
2329
  "license": "MIT",
2337
2330
  "dependencies": {
2338
- "@aashutoshrathi/word-wrap": "^1.2.3",
2339
2331
  "deep-is": "^0.1.3",
2340
2332
  "fast-levenshtein": "^2.0.6",
2341
2333
  "levn": "^0.4.1",
2342
2334
  "prelude-ls": "^1.2.1",
2343
- "type-check": "^0.4.0"
2335
+ "type-check": "^0.4.0",
2336
+ "word-wrap": "^1.2.5"
2344
2337
  },
2345
2338
  "engines": {
2346
2339
  "node": ">= 0.8.0"
@@ -3038,8 +3031,8 @@
3038
3031
  },
3039
3032
  "node_modules/tar": {
3040
3033
  "version": "6.2.1",
3041
- "devOptional": true,
3042
3034
  "license": "ISC",
3035
+ "optional": true,
3043
3036
  "dependencies": {
3044
3037
  "chownr": "^2.0.0",
3045
3038
  "fs-minipass": "^2.0.0",
@@ -3085,16 +3078,16 @@
3085
3078
  },
3086
3079
  "node_modules/tar/node_modules/minipass": {
3087
3080
  "version": "5.0.0",
3088
- "devOptional": true,
3089
3081
  "license": "ISC",
3082
+ "optional": true,
3090
3083
  "engines": {
3091
3084
  "node": ">=8"
3092
3085
  }
3093
3086
  },
3094
3087
  "node_modules/tar/node_modules/yallist": {
3095
3088
  "version": "4.0.0",
3096
- "devOptional": true,
3097
- "license": "ISC"
3089
+ "license": "ISC",
3090
+ "optional": true
3098
3091
  },
3099
3092
  "node_modules/text-table": {
3100
3093
  "version": "0.2.0",
@@ -3252,6 +3245,13 @@
3252
3245
  "string-width": "^1.0.2 || 2 || 3 || 4"
3253
3246
  }
3254
3247
  },
3248
+ "node_modules/word-wrap": {
3249
+ "version": "1.2.5",
3250
+ "license": "MIT",
3251
+ "engines": {
3252
+ "node": ">=0.10.0"
3253
+ }
3254
+ },
3255
3255
  "node_modules/wordwrap": {
3256
3256
  "version": "1.0.0",
3257
3257
  "license": "MIT"
@@ -3261,7 +3261,7 @@
3261
3261
  "license": "ISC"
3262
3262
  },
3263
3263
  "node_modules/ws": {
3264
- "version": "8.16.0",
3264
+ "version": "8.17.0",
3265
3265
  "license": "MIT",
3266
3266
  "engines": {
3267
3267
  "node": ">=10.0.0"
@@ -3297,7 +3297,7 @@
3297
3297
  }
3298
3298
  },
3299
3299
  "node_modules/yaml": {
3300
- "version": "2.4.1",
3300
+ "version": "2.4.2",
3301
3301
  "license": "ISC",
3302
3302
  "bin": {
3303
3303
  "yaml": "bin.mjs"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "7.8.2",
3
+ "version": "7.9.1",
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": [
@@ -19,7 +19,7 @@
19
19
  "@sap/cds": "^7",
20
20
  "@sap/cds-foss": "^5.0.0",
21
21
  "@sap/cds-mtxs": "^1.9.0",
22
- "@sap/eslint-plugin-cds": "^2.6.0",
22
+ "@sap/eslint-plugin-cds": "^3.0.1",
23
23
  "@sap/hdi-deploy": "^4.8.0",
24
24
  "axios": "^1",
25
25
  "eslint": "^8",
@@ -1,26 +0,0 @@
1
- {
2
- "extends": "eslint:recommended",
3
- "env": {
4
- "es2022": true,
5
- "node": true,
6
- "jest": true,
7
- "mocha": true
8
- },
9
- "globals": {
10
- "SELECT": true,
11
- "INSERT": true,
12
- "UPSERT": true,
13
- "UPDATE": true,
14
- "DELETE": true,
15
- "CREATE": true,
16
- "DROP": true,
17
- "CDL": true,
18
- "CQL": true,
19
- "CXL": true,
20
- "cds": true
21
- },
22
- "rules": {
23
- "no-console": "off",
24
- "require-atomic-updates": "off"
25
- }
26
- }