@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 +9 -0
- package/bin/watch.js +1 -1
- package/lib/client/activate.js +3 -9
- package/lib/client/auth_manager.js +1 -1
- package/lib/client/extend.js +4 -9
- package/lib/import/v2parser.js +6 -4
- package/lib/import/v4parser.js +2 -2
- package/lib/init/template/data/index.js +11 -1
- package/lib/init/template/hana/index.js +16 -20
- package/lib/init/template/mta/projectReader.js +1 -3
- package/lib/init/template/samples/index.js +1 -1
- package/lib/init/template/templateBase.js +10 -41
- package/lib/lint/Linter.js +5 -11
- package/lib/lint/io.js +19 -20
- package/lib/watch/node-watch.js +1 -1
- package/npm-shrinkwrap.json +78 -78
- package/package.json +1 -1
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:
|
|
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)}.
|
package/lib/client/activate.js
CHANGED
|
@@ -20,11 +20,7 @@ const JOB_STATUS = {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
async function checkFinished(jobId, statusUrl, params, finisher) {
|
|
23
|
-
const
|
|
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
|
|
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
|
}
|
package/lib/client/extend.js
CHANGED
|
@@ -104,15 +104,12 @@ module.exports = class Extend extends BaseCommand {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
static async runExtend(params) {
|
|
107
|
-
const
|
|
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(
|
|
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,
|
|
144
|
+
const customFiles = (await axios.get(customFileUrl, requestOptions)).data;
|
|
150
145
|
await Extend.storeCustomFiles(params.get('projectFolder'), customFiles);
|
|
151
146
|
}
|
|
152
147
|
}
|
package/lib/import/v2parser.js
CHANGED
|
@@ -472,7 +472,7 @@ function _getServiceEntityProperty(
|
|
|
472
472
|
{
|
|
473
473
|
propertyJson = propertyJson + '\n}'
|
|
474
474
|
}
|
|
475
|
-
if(documentation != -1 && documentation
|
|
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
|
-
|
|
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
|
}
|
package/lib/import/v4parser.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
23
|
+
const env = await this.getEnv();
|
|
26
24
|
|
|
27
|
-
const hdiConfigPath = path.join(this.projectPath,
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
46
|
+
const env = await this.getEnv();
|
|
51
47
|
|
|
52
|
-
await this.templateUtil.copyFiles('common', path.join(this.projectPath,
|
|
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,
|
|
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,
|
|
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'),
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
|
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 {
|
|
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(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
56
|
+
|
|
57
|
+
return Config.for('cds', projectPath);
|
|
89
58
|
}
|
|
90
59
|
|
|
91
60
|
/**
|
package/lib/lint/Linter.js
CHANGED
|
@@ -148,9 +148,7 @@ class Linter {
|
|
|
148
148
|
extensions.join(',')
|
|
149
149
|
);
|
|
150
150
|
// Enable colored output
|
|
151
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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 (
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
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;
|
package/lib/watch/node-watch.js
CHANGED
|
@@ -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()
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap/cds-dk",
|
|
3
|
-
"version": "4.6.
|
|
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.
|
|
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.
|
|
131
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
301
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
383
|
-
"integrity": "sha512-
|
|
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.
|
|
567
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
966
|
-
"integrity": "sha512-
|
|
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.
|
|
1245
|
-
"integrity": "sha512
|
|
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.
|
|
1252
|
-
"integrity": "sha512-
|
|
1251
|
+
"version": "16.11.7",
|
|
1252
|
+
"integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw=="
|
|
1253
1253
|
},
|
|
1254
1254
|
"node_modules/@types/prettier": {
|
|
1255
|
-
"version": "2.4.
|
|
1256
|
-
"integrity": "sha512-
|
|
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.
|
|
1758
|
-
"integrity": "sha512-
|
|
1757
|
+
"version": "4.18.1",
|
|
1758
|
+
"integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
|
|
1759
1759
|
"dev": true,
|
|
1760
1760
|
"dependencies": {
|
|
1761
|
-
"caniuse-lite": "^1.0.
|
|
1762
|
-
"electron-to-chromium": "^1.3.
|
|
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.
|
|
1838
|
-
"integrity": "sha512-
|
|
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.
|
|
2375
|
-
"integrity": "sha512-
|
|
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.
|
|
2982
|
-
"integrity": "sha512-
|
|
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.
|
|
4388
|
-
"integrity": "sha512-
|
|
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.
|
|
4845
|
-
"integrity": "sha512-
|
|
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.
|
|
4852
|
-
"integrity": "sha512-
|
|
4851
|
+
"version": "2.1.34",
|
|
4852
|
+
"integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
|
|
4853
4853
|
"dependencies": {
|
|
4854
|
-
"mime-db": "1.
|
|
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.
|
|
6292
|
-
"integrity": "sha512-
|
|
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.
|
|
7022
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
7146
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
7209
|
-
"integrity": "sha512-
|
|
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.
|
|
7338
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
7664
|
-
"integrity": "sha512-
|
|
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.
|
|
7882
|
-
"integrity": "sha512
|
|
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.
|
|
7889
|
-
"integrity": "sha512-
|
|
7888
|
+
"version": "16.11.7",
|
|
7889
|
+
"integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw=="
|
|
7890
7890
|
},
|
|
7891
7891
|
"@types/prettier": {
|
|
7892
|
-
"version": "2.4.
|
|
7893
|
-
"integrity": "sha512-
|
|
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.
|
|
8287
|
-
"integrity": "sha512-
|
|
8286
|
+
"version": "4.18.1",
|
|
8287
|
+
"integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
|
|
8288
8288
|
"dev": true,
|
|
8289
8289
|
"requires": {
|
|
8290
|
-
"caniuse-lite": "^1.0.
|
|
8291
|
-
"electron-to-chromium": "^1.3.
|
|
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.
|
|
8342
|
-
"integrity": "sha512-
|
|
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.
|
|
8749
|
-
"integrity": "sha512-
|
|
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.
|
|
9212
|
-
"integrity": "sha512-
|
|
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.
|
|
10225
|
-
"integrity": "sha512-
|
|
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.
|
|
10583
|
-
"integrity": "sha512-
|
|
10582
|
+
"version": "1.51.0",
|
|
10583
|
+
"integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
|
|
10584
10584
|
},
|
|
10585
10585
|
"mime-types": {
|
|
10586
|
-
"version": "2.1.
|
|
10587
|
-
"integrity": "sha512-
|
|
10586
|
+
"version": "2.1.34",
|
|
10587
|
+
"integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
|
|
10588
10588
|
"requires": {
|
|
10589
|
-
"mime-db": "1.
|
|
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.
|
|
11670
|
-
"integrity": "sha512-
|
|
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",
|