snyk 1.815.0 → 1.816.0
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/dist/cli/293.index.js
CHANGED
|
@@ -4073,7 +4073,9 @@ exports.getExtraProjectCount = getExtraProjectCount;
|
|
|
4073
4073
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
4074
4074
|
exports.getMultiPluginResult = void 0;
|
|
4075
4075
|
const cloneDeep = __webpack_require__(83465);
|
|
4076
|
-
const
|
|
4076
|
+
const pathLib = __webpack_require__(85622);
|
|
4077
|
+
const sortBy = __webpack_require__(58254);
|
|
4078
|
+
const groupBy = __webpack_require__(20276);
|
|
4077
4079
|
const cliInterface = __webpack_require__(65266);
|
|
4078
4080
|
const chalk_1 = __webpack_require__(32589);
|
|
4079
4081
|
const theme_1 = __webpack_require__(86988);
|
|
@@ -4083,14 +4085,21 @@ const get_single_plugin_result_1 = __webpack_require__(8598);
|
|
|
4083
4085
|
const convert_single_splugin_res_to_multi_custom_1 = __webpack_require__(99695);
|
|
4084
4086
|
const convert_multi_plugin_res_to_multi_custom_1 = __webpack_require__(23110);
|
|
4085
4087
|
const errors_1 = __webpack_require__(55191);
|
|
4088
|
+
const yarn_workspaces_parser_1 = __webpack_require__(27326);
|
|
4086
4089
|
const debug = debugModule('snyk-test');
|
|
4087
4090
|
async function getMultiPluginResult(root, options, targetFiles) {
|
|
4091
|
+
var _a;
|
|
4088
4092
|
const allResults = [];
|
|
4089
4093
|
const failedResults = [];
|
|
4090
|
-
|
|
4094
|
+
// process any yarn workspaces first
|
|
4095
|
+
// the files need to be proceeded together as they provide context to each other
|
|
4096
|
+
const { scannedProjects, unprocessedFiles, } = await processYarnWorkspacesProjects(root, options, targetFiles);
|
|
4097
|
+
allResults.push(...scannedProjects);
|
|
4098
|
+
// process the rest 1 by 1 sent to relevant plugins
|
|
4099
|
+
for (const targetFile of unprocessedFiles) {
|
|
4091
4100
|
const optionsClone = cloneDeep(options);
|
|
4092
|
-
optionsClone.file =
|
|
4093
|
-
optionsClone.packageManager = detect_1.detectPackageManagerFromFile(
|
|
4101
|
+
optionsClone.file = pathLib.relative(root, targetFile);
|
|
4102
|
+
optionsClone.packageManager = detect_1.detectPackageManagerFromFile(pathLib.basename(targetFile));
|
|
4094
4103
|
try {
|
|
4095
4104
|
const inspectRes = await get_single_plugin_result_1.getSinglePluginResult(root, optionsClone, optionsClone.file);
|
|
4096
4105
|
let resultWithScannedProjects;
|
|
@@ -4107,14 +4116,15 @@ async function getMultiPluginResult(root, options, targetFiles) {
|
|
|
4107
4116
|
options.projectNames = resultWithScannedProjects.scannedProjects.map((scannedProject) => { var _a; return (_a = scannedProject === null || scannedProject === void 0 ? void 0 : scannedProject.depTree) === null || _a === void 0 ? void 0 : _a.name; });
|
|
4108
4117
|
allResults.push(...pluginResultWithCustomScannedProjects.scannedProjects);
|
|
4109
4118
|
}
|
|
4110
|
-
catch (
|
|
4119
|
+
catch (error) {
|
|
4120
|
+
const errMessage = (_a = error.message) !== null && _a !== void 0 ? _a : 'Something went wrong getting dependencies';
|
|
4111
4121
|
// TODO: propagate this all the way back and include in --json output
|
|
4112
4122
|
failedResults.push({
|
|
4113
4123
|
targetFile,
|
|
4114
|
-
error
|
|
4115
|
-
errMessage:
|
|
4124
|
+
error,
|
|
4125
|
+
errMessage: errMessage,
|
|
4116
4126
|
});
|
|
4117
|
-
debug(chalk_1.default.bold.red(`\n${theme_1.icon.ISSUE} Failed to get dependencies for ${targetFile}\nERROR: ${
|
|
4127
|
+
debug(chalk_1.default.bold.red(`\n${theme_1.icon.ISSUE} Failed to get dependencies for ${targetFile}\nERROR: ${errMessage}\n`));
|
|
4118
4128
|
}
|
|
4119
4129
|
}
|
|
4120
4130
|
if (!allResults.length) {
|
|
@@ -4129,6 +4139,44 @@ async function getMultiPluginResult(root, options, targetFiles) {
|
|
|
4129
4139
|
};
|
|
4130
4140
|
}
|
|
4131
4141
|
exports.getMultiPluginResult = getMultiPluginResult;
|
|
4142
|
+
async function processYarnWorkspacesProjects(root, options, targetFiles) {
|
|
4143
|
+
try {
|
|
4144
|
+
const { scannedProjects } = await yarn_workspaces_parser_1.processYarnWorkspaces(root, {
|
|
4145
|
+
strictOutOfSync: options.strictOutOfSync,
|
|
4146
|
+
dev: options.dev,
|
|
4147
|
+
}, targetFiles);
|
|
4148
|
+
const unprocessedFiles = filterOutProcessedWorkspaces(scannedProjects, targetFiles);
|
|
4149
|
+
return { scannedProjects, unprocessedFiles };
|
|
4150
|
+
}
|
|
4151
|
+
catch (e) {
|
|
4152
|
+
debug('Error during detecting or processing Yarn Workspaces: ', e);
|
|
4153
|
+
return { scannedProjects: [], unprocessedFiles: targetFiles };
|
|
4154
|
+
}
|
|
4155
|
+
}
|
|
4156
|
+
function filterOutProcessedWorkspaces(scannedProjects, allTargetFiles) {
|
|
4157
|
+
const mapped = allTargetFiles.map((p) => ({ path: p, ...pathLib.parse(p) }));
|
|
4158
|
+
const sorted = sortBy(mapped, 'dir');
|
|
4159
|
+
const targetFilesByDirectory = groupBy(sorted, 'dir');
|
|
4160
|
+
const scanned = scannedProjects.map((p) => p.targetFile);
|
|
4161
|
+
const targetFiles = [];
|
|
4162
|
+
for (const directory of Object.keys(targetFilesByDirectory)) {
|
|
4163
|
+
for (const targetFile of targetFilesByDirectory[directory]) {
|
|
4164
|
+
const { base, path } = targetFile;
|
|
4165
|
+
// any non yarn workspace files should be scanned
|
|
4166
|
+
if (!['package.json', 'yarn.lock'].includes(base)) {
|
|
4167
|
+
targetFiles.push(path);
|
|
4168
|
+
continue;
|
|
4169
|
+
}
|
|
4170
|
+
// check if Node manifest has already been processed a part or a workspace
|
|
4171
|
+
const packageJsonFileName = pathLib.join(directory, 'package.json');
|
|
4172
|
+
const alreadyScanned = scanned.some((f) => packageJsonFileName.endsWith(f));
|
|
4173
|
+
if (!alreadyScanned) {
|
|
4174
|
+
targetFiles.push(path);
|
|
4175
|
+
}
|
|
4176
|
+
}
|
|
4177
|
+
}
|
|
4178
|
+
return targetFiles;
|
|
4179
|
+
}
|
|
4132
4180
|
|
|
4133
4181
|
|
|
4134
4182
|
/***/ }),
|
|
@@ -4400,25 +4448,24 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
4400
4448
|
exports.packageJsonBelongsToWorkspace = exports.getWorkspacesMap = exports.processYarnWorkspaces = void 0;
|
|
4401
4449
|
const baseDebug = __webpack_require__(15158);
|
|
4402
4450
|
const pathUtil = __webpack_require__(85622);
|
|
4403
|
-
// import * as _ from 'lodash';
|
|
4404
4451
|
const sortBy = __webpack_require__(58254);
|
|
4405
4452
|
const groupBy = __webpack_require__(20276);
|
|
4406
4453
|
const micromatch = __webpack_require__(70850);
|
|
4407
4454
|
const debug = baseDebug('snyk-yarn-workspaces');
|
|
4408
4455
|
const lockFileParser = __webpack_require__(423);
|
|
4409
|
-
const errors_1 = __webpack_require__(55191);
|
|
4410
4456
|
const get_file_contents_1 = __webpack_require__(84210);
|
|
4457
|
+
const errors_1 = __webpack_require__(55191);
|
|
4411
4458
|
async function processYarnWorkspaces(root, settings, targetFiles) {
|
|
4412
4459
|
// the order of yarnTargetFiles folders is important
|
|
4413
4460
|
// must have the root level most folders at the top
|
|
4414
4461
|
const mappedAndFiltered = targetFiles
|
|
4415
4462
|
.map((p) => ({ path: p, ...pathUtil.parse(p) }))
|
|
4416
|
-
.filter((res) => ['package.json'].includes(res.base));
|
|
4463
|
+
.filter((res) => ['package.json', 'yarn.lock'].includes(res.base));
|
|
4417
4464
|
const sorted = sortBy(mappedAndFiltered, 'dir');
|
|
4418
4465
|
const grouped = groupBy(sorted, 'dir');
|
|
4419
4466
|
const yarnTargetFiles = grouped;
|
|
4420
4467
|
debug(`Processing potential Yarn workspaces (${targetFiles.length})`);
|
|
4421
|
-
if (Object.keys(yarnTargetFiles).length === 0) {
|
|
4468
|
+
if (settings.yarnWorkspaces && Object.keys(yarnTargetFiles).length === 0) {
|
|
4422
4469
|
throw errors_1.NoSupportedManifestsFoundError([root]);
|
|
4423
4470
|
}
|
|
4424
4471
|
let yarnWorkspacesMap = {};
|
|
@@ -4433,6 +4480,7 @@ async function processYarnWorkspaces(root, settings, targetFiles) {
|
|
|
4433
4480
|
let rootWorkspaceManifestContent = {};
|
|
4434
4481
|
// the folders must be ordered highest first
|
|
4435
4482
|
for (const directory of Object.keys(yarnTargetFiles)) {
|
|
4483
|
+
debug(`Processing ${directory} as a potential Yarn workspace`);
|
|
4436
4484
|
let isYarnWorkspacePackage = false;
|
|
4437
4485
|
let isRootPackageJson = false;
|
|
4438
4486
|
const packageJsonFileName = pathUtil.join(directory, 'package.json');
|
|
@@ -4455,7 +4503,11 @@ async function processYarnWorkspaces(root, settings, targetFiles) {
|
|
|
4455
4503
|
rootWorkspaceManifestContent = JSON.parse(packageJson.content);
|
|
4456
4504
|
}
|
|
4457
4505
|
}
|
|
4458
|
-
if (isYarnWorkspacePackage || isRootPackageJson) {
|
|
4506
|
+
if (!(isYarnWorkspacePackage || isRootPackageJson)) {
|
|
4507
|
+
debug(`${packageJsonFileName} is not part of any detected workspace, skipping`);
|
|
4508
|
+
continue;
|
|
4509
|
+
}
|
|
4510
|
+
try {
|
|
4459
4511
|
const rootDir = isYarnWorkspacePackage
|
|
4460
4512
|
? pathUtil.dirname(yarnWorkspacesFilesMap[packageJsonFileName].root)
|
|
4461
4513
|
: pathUtil.dirname(packageJsonFileName);
|
|
@@ -4482,8 +4534,11 @@ async function processYarnWorkspaces(root, settings, targetFiles) {
|
|
|
4482
4534
|
};
|
|
4483
4535
|
result.scannedProjects.push(project);
|
|
4484
4536
|
}
|
|
4485
|
-
|
|
4486
|
-
|
|
4537
|
+
catch (e) {
|
|
4538
|
+
if (settings.yarnWorkspaces) {
|
|
4539
|
+
throw e;
|
|
4540
|
+
}
|
|
4541
|
+
debug(`Error process workspace: ${packageJsonFileName}. ERROR: ${e}`);
|
|
4487
4542
|
}
|
|
4488
4543
|
}
|
|
4489
4544
|
if (!result.scannedProjects.length) {
|
|
@@ -6566,7 +6621,7 @@ async function assembleLocalPayloads(root, options) {
|
|
|
6566
6621
|
}
|
|
6567
6622
|
debug('getDepsFromPlugin returned failed results, cannot run test/monitor', failedResults);
|
|
6568
6623
|
if (options['fail-fast']) {
|
|
6569
|
-
throw new errors_1.FailedToRunTestError('Your test request could not be completed.
|
|
6624
|
+
throw new errors_1.FailedToRunTestError(errors_1.errorMessageWithRetry('Your test request could not be completed.'));
|
|
6570
6625
|
}
|
|
6571
6626
|
}
|
|
6572
6627
|
analytics.add('pluginName', deps.plugin.name);
|