snyk 1.1121.0 → 1.1123.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.
@@ -132618,6 +132618,7 @@ exports.isSupportedSize = exports.DECOMPRESSING_IGNORE_DIR = exports.DECOMPRESSI
132618
132618
  const os = __webpack_require__(12087);
132619
132619
  const process_1 = __webpack_require__(61765);
132620
132620
  exports.isWin = process_1.platform === 'win32';
132621
+ // Current implementation supports up to 2GB per file
132621
132622
  exports.MAX_SUPPORTED_FILE_SIZE = 2 * 1024 * 1024 * 1024 - 1;
132622
132623
  exports.HASHING_CONCURRENCY_LEVEL = os.cpus().length;
132623
132624
  exports.DECOMPRESSING_CONCURRENCY_LEVEL = os.cpus().length * 8;
@@ -132742,20 +132743,14 @@ function displayIssues(depGraph, issues, issuesData) {
132742
132743
  const issuesCount = issues.length == 1 ? '1 issue' : `${issues.length} issues`;
132743
132744
  const hasIssues = issues.length > 0;
132744
132745
  if (hasIssues) {
132745
- result.push(chalk.whiteBright('Issues:'));
132746
- for (const { pkgName: name, pkgVersion: version, issueId: vulnId, } of issues) {
132747
- const { title, severity } = issuesData[vulnId];
132748
- const color = common_1.getColorBySeverity(severity);
132749
- const severityAndTitle = color(`\n ✗ [${common_1.capitalize(severity)}] ${title}`);
132750
- const dependencyName = computeDependencyName(name, version);
132751
- const vulnDetailsUrl = `https://security.snyk.io/vuln/${vulnId}`;
132752
- const introducedThrough = common_1.leftPad(`Introduced through: ${dependencyName}`);
132753
- const urlText = common_1.leftPad(`URL: ${vulnDetailsUrl}`);
132754
- result.push(severityAndTitle);
132755
- result.push(introducedThrough);
132756
- result.push(urlText);
132746
+ const vulnerabilityIssues = issues.filter((issue) => issue.type === 'vulnerability');
132747
+ if (vulnerabilityIssues.length > 0) {
132748
+ prepareResults(result, vulnerabilityIssues, issuesData, 'Issues:');
132749
+ }
132750
+ const licenseIssues = issues.filter((issue) => issue.type === 'license');
132751
+ if (licenseIssues.length > 0) {
132752
+ prepareResults(result, licenseIssues, issuesData, 'License issues:');
132757
132753
  }
132758
- result.push('');
132759
132754
  }
132760
132755
  const issuesFound = hasIssues
132761
132756
  ? chalk.redBright(issuesCount)
@@ -132767,6 +132762,22 @@ function displayIssues(depGraph, issues, issuesData) {
132767
132762
  return result;
132768
132763
  }
132769
132764
  exports.displayIssues = displayIssues;
132765
+ function prepareResults(result, issues, issuesData, typeTitle) {
132766
+ result.push(chalk.bold(typeTitle));
132767
+ for (const { pkgName: name, pkgVersion: version, issueId: vulnId, } of issues) {
132768
+ const { title, severity } = issuesData[vulnId];
132769
+ const color = common_1.getColorBySeverity(severity);
132770
+ const severityAndTitle = color.bold(`\n ✗ [${common_1.capitalize(severity)}] ${title}`);
132771
+ const dependencyName = computeDependencyName(name, version);
132772
+ const vulnDetailsUrl = `https://security.snyk.io/vuln/${vulnId}`;
132773
+ const introducedThrough = common_1.leftPad(`Introduced through: ${dependencyName}`, 3);
132774
+ const urlText = common_1.leftPad(`URL: ${vulnDetailsUrl}`, 3);
132775
+ result.push(severityAndTitle);
132776
+ result.push(introducedThrough);
132777
+ result.push(urlText);
132778
+ }
132779
+ result.push('');
132780
+ }
132770
132781
  function displayErrors(errors) {
132771
132782
  const result = [];
132772
132783
  if (errors.length) {
@@ -132813,6 +132824,9 @@ async function display(scanResults, testResults, errors, options) {
132813
132824
  result = result.concat(display_1.displaySignatures(scanResults));
132814
132825
  }
132815
132826
  for (const testResult of testResults) {
132827
+ testResult.issues.forEach((issue) => (issue.type = issue.issueId.startsWith('snyk:lic:unmanaged:')
132828
+ ? 'license'
132829
+ : 'vulnerability'));
132816
132830
  const depGraph = dep_graph_1.createFromJSON(testResult.depGraphData);
132817
132831
  const [dependencies, issues] = display_1.selectDisplayStrategy(options, depGraph, testResult);
132818
132832
  if (testResult.depGraphData.pkgs.length > 1) {
@@ -180909,10 +180923,10 @@ const manifest = __webpack_require__(91314);
180909
180923
  const lockFile = __webpack_require__(95531);
180910
180924
  const poetryDepGraphBuilder = __webpack_require__(42393);
180911
180925
  function buildDepGraph(manifestFileContents, lockFileContents, includeDevDependencies = false) {
180912
- const dependencyNames = manifest.getDependencyNamesFrom(manifestFileContents, includeDevDependencies);
180926
+ const dependencies = manifest.getDependenciesFrom(manifestFileContents, includeDevDependencies);
180913
180927
  const pkgDetails = manifest.pkgInfoFrom(manifestFileContents);
180914
180928
  const pkgSpecs = lockFile.packageSpecsFrom(lockFileContents);
180915
- return poetryDepGraphBuilder.build(pkgDetails, dependencyNames, pkgSpecs);
180929
+ return poetryDepGraphBuilder.build(pkgDetails, dependencies, pkgSpecs);
180916
180930
  }
180917
180931
  exports.buildDepGraph = buildDepGraph;
180918
180932
  //# sourceMappingURL=index.js.map
@@ -180958,7 +180972,7 @@ exports.LockFileNotValid = LockFileNotValid;
180958
180972
  "use strict";
180959
180973
 
180960
180974
  Object.defineProperty(exports, "__esModule", ({ value: true }));
180961
- exports.ManifestFileNotValid = exports.getDependencyNamesFrom = exports.pkgInfoFrom = void 0;
180975
+ exports.ManifestFileNotValid = exports.getDependenciesFrom = exports.pkgInfoFrom = void 0;
180962
180976
  const toml = __webpack_require__(5022);
180963
180977
  function pkgInfoFrom(manifestFileContents) {
180964
180978
  let manifest;
@@ -180974,21 +180988,44 @@ function pkgInfoFrom(manifestFileContents) {
180974
180988
  }
180975
180989
  }
180976
180990
  exports.pkgInfoFrom = pkgInfoFrom;
180977
- function getDependencyNamesFrom(manifestFileContents, includeDevDependencies) {
180991
+ function getDependenciesFrom(manifestFileContents, includeDevDependencies) {
180978
180992
  var _a;
180979
180993
  const manifest = toml.parse(manifestFileContents);
180980
180994
  if (!((_a = manifest.tool) === null || _a === void 0 ? void 0 : _a.poetry)) {
180981
180995
  throw new ManifestFileNotValid();
180982
180996
  }
180983
- const dependencies = dependenciesFrom(manifest);
180984
- const devDependencies = includeDevDependencies
180985
- ? devDependenciesFrom(manifest)
180997
+ const dependencies = dependenciesFrom(manifest).map((dep) => ({
180998
+ name: dep,
180999
+ isDev: false,
181000
+ }));
181001
+ const devDependencies = (includeDevDependencies ? devDependenciesFrom(manifest) : []).map((devDep) => ({
181002
+ name: devDep,
181003
+ isDev: true,
181004
+ }));
181005
+ return [...dependencies, ...devDependencies].filter((pkg) => pkg.name != 'python');
181006
+ }
181007
+ exports.getDependenciesFrom = getDependenciesFrom;
181008
+ const getGroupDevDepNames = (obj) => {
181009
+ const groupDevDepNames = Object.values(obj)
181010
+ .map((group) => group.dependencies)
181011
+ .map((depsObj) => Object.keys(depsObj))
181012
+ .reduce((acc, curr) => [...acc, ...curr], []);
181013
+ return groupDevDepNames;
181014
+ };
181015
+ function getAllDevDependencyNames(manifest) {
181016
+ var _a;
181017
+ // pre-v1.2.0 naming convention
181018
+ const devDepsProperty = Object.keys((_a = manifest.tool.poetry['dev-dependencies']) !== null && _a !== void 0 ? _a : []);
181019
+ // post-v1.2.0 dependency groups
181020
+ // https://python-poetry.org/docs/master/managing-dependencies
181021
+ // we will handle all tool.poetry.group.<group> as dev-deps
181022
+ const groupDevDepsProperty = manifest.tool.poetry.group
181023
+ ? getGroupDevDepNames(manifest.tool.poetry.group)
180986
181024
  : [];
180987
- return [...dependencies, ...devDependencies].filter((pkgName) => pkgName != 'python');
181025
+ return [...devDepsProperty, ...groupDevDepsProperty];
180988
181026
  }
180989
- exports.getDependencyNamesFrom = getDependencyNamesFrom;
180990
181027
  function devDependenciesFrom(manifest) {
180991
- return Object.keys(manifest.tool.poetry['dev-dependencies'] || []);
181028
+ return getAllDevDependencyNames(manifest);
180992
181029
  }
180993
181030
  function dependenciesFrom(manifest) {
180994
181031
  return Object.keys(manifest.tool.poetry.dependencies || []);
@@ -181021,18 +181058,19 @@ const IGNORED_DEPENDENCIES = [
181021
181058
  'pip',
181022
181059
  'wheel',
181023
181060
  ];
181024
- function build(pkgDetails, pkgDependencyNames, pkgSpecs) {
181061
+ function build(pkgDetails, dependencies, pkgSpecs) {
181025
181062
  const builder = new dep_graph_1.DepGraphBuilder({ name: 'poetry' }, pkgDetails);
181026
- addDependenciesToGraph(pkgDependencyNames, pkgSpecs, builder.rootNodeId, builder);
181063
+ addDependenciesToGraph(dependencies, pkgSpecs, builder.rootNodeId, builder);
181027
181064
  return builder.build();
181028
181065
  }
181029
181066
  exports.build = build;
181030
- function addDependenciesToGraph(pkgNames, pkgSpecs, parentNodeId, builder) {
181031
- for (const pkgName of pkgNames) {
181032
- addDependenciesForPkg(pkgName, pkgSpecs, parentNodeId, builder);
181067
+ function addDependenciesToGraph(dependencies, pkgSpecs, parentNodeId, builder) {
181068
+ for (const dep of dependencies) {
181069
+ addDependenciesForPkg(dep, pkgSpecs, parentNodeId, builder);
181033
181070
  }
181034
181071
  }
181035
- function addDependenciesForPkg(pkgName, pkgSpecs, parentNodeId, builder) {
181072
+ function addDependenciesForPkg(dependency, pkgSpecs, parentNodeId, builder) {
181073
+ const pkgName = dependency.name;
181036
181074
  if (IGNORED_DEPENDENCIES.includes(pkgName)) {
181037
181075
  return;
181038
181076
  }
@@ -181045,8 +181083,15 @@ function addDependenciesForPkg(pkgName, pkgSpecs, parentNodeId, builder) {
181045
181083
  return;
181046
181084
  }
181047
181085
  const pkgInfo = { name: pkg.name, version: pkg.version };
181048
- builder.addPkgNode(pkgInfo, pkg.name).connectDep(parentNodeId, pkg.name);
181049
- addDependenciesToGraph(pkg.dependencies, pkgSpecs, pkg.name, builder);
181086
+ builder
181087
+ .addPkgNode(pkgInfo, pkg.name, {
181088
+ labels: { scope: dependency.isDev ? 'dev' : 'prod' },
181089
+ })
181090
+ .connectDep(parentNodeId, pkg.name);
181091
+ addDependenciesToGraph(pkg.dependencies.map((dep) => ({
181092
+ name: dep,
181093
+ isDev: dependency.isDev,
181094
+ })), pkgSpecs, pkg.name, builder);
181050
181095
  }
181051
181096
  function isPkgAlreadyInGraph(pkg, builder) {
181052
181097
  return builder
@@ -181223,6 +181268,18 @@ function createAssets() {
181223
181268
  path.join(__dirname, '../../pysrc/pytoml/core.py'),
181224
181269
  path.join(__dirname, '../../pysrc/pytoml/parser.py'),
181225
181270
  path.join(__dirname, '../../pysrc/pytoml/writer.py'),
181271
+ path.join(__dirname, '../../pysrc/packaging/tags.py'),
181272
+ path.join(__dirname, '../../pysrc/packaging/_typing.py'),
181273
+ path.join(__dirname, '../../pysrc/packaging/version.py'),
181274
+ path.join(__dirname, '../../pysrc/packaging/__init__.py'),
181275
+ path.join(__dirname, '../../pysrc/packaging/utils.py'),
181276
+ path.join(__dirname, '../../pysrc/packaging/requirements.py'),
181277
+ path.join(__dirname, '../../pysrc/packaging/_structures.py'),
181278
+ path.join(__dirname, '../../pysrc/packaging/markers.py'),
181279
+ path.join(__dirname, '../../pysrc/packaging/__about__.py'),
181280
+ path.join(__dirname, '../../pysrc/packaging/_compat.py'),
181281
+ path.join(__dirname, '../../pysrc/packaging/specifiers.py'),
181282
+ path.join(__dirname, '../../pysrc/pyparsing.py'),
181226
181283
  ];
181227
181284
  }
181228
181285
  function writeFile(writeFilePath, contents) {