retire 4.2.2 → 4.2.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
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.2.3]
4
+
5
+ ### Bugfix
6
+
7
+ - Generate correct purl for moment.js
8
+
3
9
  ## [4.2.2]
4
10
 
5
11
  ### Bugfix
package/lib/repo.js CHANGED
@@ -125,7 +125,7 @@ function loadFromCache(url, cachedir, options) {
125
125
  function asbowerrepo(jsRepo) {
126
126
  const result = {};
127
127
  Object.keys(jsRepo).map((k) => {
128
- [jsRepo[k].bowername || k].map((b) => {
128
+ (jsRepo[k].bowername || [k]).map((b) => {
129
129
  result[b] = result[b] || { vulnerabilities: [] };
130
130
  result[b].vulnerabilities = result[b].vulnerabilities.concat(jsRepo[k].vulnerabilities);
131
131
  });
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  const retire = __importStar(require("../retire"));
28
28
  const fs = __importStar(require("fs"));
29
29
  const uuid_1 = require("uuid");
30
+ const utils_1 = require("./utils");
30
31
  function configureCycloneDXJSONLogger(logger, writer, config, hash) {
31
32
  let vulnsFound = false;
32
33
  const finalResults = {
@@ -71,7 +72,7 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
71
72
  { alg: 'SHA-512', content: hash.sha512(file) },
72
73
  ];
73
74
  }
74
- const purl = `pkg:npm/${dep.component}@${dep.version}`;
75
+ const purl = (0, utils_1.generatePURL)(dep);
75
76
  if (seen.has(purl))
76
77
  return undefined;
77
78
  seen.add(purl);
@@ -84,7 +85,7 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
84
85
  };
85
86
  })
86
87
  .filter((x) => x != undefined))
87
- .reduce((a, b) => a.concat(b));
88
+ .reduce((a, b) => a.concat(b), []);
88
89
  write(JSON.stringify({
89
90
  bomFormat: 'CycloneDX',
90
91
  specVersion: '1.4',
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  const retire = __importStar(require("../retire"));
28
28
  const fs = __importStar(require("fs"));
29
29
  const uuid_1 = require("uuid");
30
+ const utils_1 = require("./utils");
30
31
  function configureCycloneDXLogger(logger, writer, config, hash) {
31
32
  let vulnsFound = false;
32
33
  const finalResults = {
@@ -72,7 +73,7 @@ function configureCycloneDXLogger(logger, writer, config, hash) {
72
73
  <hash alg="SHA-512">${hash.sha512(file)}</hash>
73
74
  </hashes>`;
74
75
  }
75
- const purl = `pkg:npm/${dep.component}@${dep.version}`;
76
+ const purl = (0, utils_1.generatePURL)(dep);
76
77
  if (seen.has(purl))
77
78
  return '';
78
79
  seen.add(purl);
@@ -0,0 +1,2 @@
1
+ import { Component } from '../types';
2
+ export declare function generatePURL(component: Component): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePURL = void 0;
4
+ function generatePURL(component) {
5
+ const compName = component.npmname || component.component;
6
+ return `pkg:npm/${compName}@${component.version}`;
7
+ }
8
+ exports.generatePURL = generatePURL;
package/lib/retire.js CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  var exports = exports || {};
7
- exports.version = '4.2.2';
7
+ exports.version = '4.2.3';
8
8
 
9
9
  function isDefined(o) {
10
10
  return typeof o !== 'undefined';
@@ -29,7 +29,7 @@ function scan(data, extractor, repo, matcher) {
29
29
  var match = matcher(extractors[i], data);
30
30
  if (match) {
31
31
  match = match.replace(/(\.|-)min$/, '');
32
- detected.push({ version: match, component: component, detection: extractor });
32
+ detected.push({ version: match, component: component, npmname: repo[component].npmname, detection: extractor });
33
33
  }
34
34
  }
35
35
  }
@@ -65,7 +65,7 @@ function scanhash(hash, repo) {
65
65
  var hashes = repo[component].extractors.hashes;
66
66
  if (!isDefined(hashes)) continue;
67
67
  if (hashes.hasOwnProperty(hash)) {
68
- return [{ version: hashes[hash], component: component, detection: 'hash' }];
68
+ return [{ version: hashes[hash], component: component, npmname: repo[component].npmname, detection: 'hash' }];
69
69
  }
70
70
  }
71
71
  return [];
@@ -76,6 +76,7 @@ function check(results, repo) {
76
76
  var result = results[r];
77
77
  if (!isDefined(repo[result.component])) continue;
78
78
  var vulns = repo[result.component].vulnerabilities;
79
+ result.npmname = repo[result.component].npmname;
79
80
  for (var i in vulns) {
80
81
  if (!isDefined(vulns[i].below) || !isAtOrAbove(result.version, vulns[i].below)) {
81
82
  if (isDefined(vulns[i].atOrAbove) && !isAtOrAbove(result.version, vulns[i].atOrAbove)) {
package/lib/types.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" />
2
2
  import { Logger } from './reporting';
3
3
  export type Repository = Record<string, {
4
- bowername?: string;
4
+ bowername?: string[];
5
+ npmname?: string;
5
6
  vulnerabilities: Vulnerability[];
6
7
  extractors: {
7
8
  func?: string[];
@@ -28,6 +29,7 @@ export type Vulnerability = {
28
29
  };
29
30
  export type Component = {
30
31
  component: string;
32
+ npmname?: string;
31
33
  version: string;
32
34
  vulnerabilities?: Vulnerability[];
33
35
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "Erlend Oftedal <erlend@oftedal.no>",
3
3
  "name": "retire",
4
4
  "description": "Retire is a tool for detecting use of vulnerable libraries",
5
- "version": "4.2.2",
5
+ "version": "4.2.3",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",