retire 4.4.2 → 4.4.4
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 +12 -1
- package/lib/cli.js +1 -0
- package/lib/depsdev.js +1 -2
- package/lib/repo.js +4 -5
- package/lib/reporters/json.js +3 -0
- package/lib/reporters/utils.js +1 -2
- package/lib/reporting.d.ts +0 -3
- package/lib/reporting.js +2 -2
- package/lib/resolve.d.ts +0 -1
- package/lib/resolve.js +1 -2
- package/lib/retire.js +6 -6
- package/lib/scanner.js +3 -4
- package/lib/types.d.ts +0 -1
- package/lib/utils.js +4 -5
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.4.4]
|
|
4
|
+
|
|
5
|
+
### Bugfix
|
|
6
|
+
|
|
7
|
+
- CLI argument `--ext` was not working
|
|
8
|
+
|
|
9
|
+
## [4.4.3]
|
|
10
|
+
|
|
11
|
+
### Bugfix
|
|
12
|
+
|
|
13
|
+
- JSON format should not include results without vulnerabilities unless `--verbose` is specified.
|
|
14
|
+
|
|
3
15
|
## [4.4.2]
|
|
4
16
|
|
|
5
17
|
### Fix
|
|
6
18
|
|
|
7
19
|
- Fix matching to include all matches
|
|
8
20
|
|
|
9
|
-
|
|
10
21
|
## [4.4.1]
|
|
11
22
|
|
|
12
23
|
### Chore
|
package/lib/cli.js
CHANGED
package/lib/depsdev.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.checkOSV =
|
|
6
|
+
exports.checkOSV = checkOSV;
|
|
7
7
|
const https_1 = __importDefault(require("https"));
|
|
8
8
|
const retire_1 = require("./retire");
|
|
9
9
|
function loadJson(url, options) {
|
|
@@ -80,4 +80,3 @@ async function checkOSV(packageName, version, options) {
|
|
|
80
80
|
return [];
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
exports.checkOSV = checkOSV;
|
package/lib/repo.js
CHANGED
|
@@ -23,7 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.validateRepository = validateRepository;
|
|
27
|
+
exports.asbowerrepo = asbowerrepo;
|
|
28
|
+
exports.loadrepository = loadrepository;
|
|
29
|
+
exports.loadrepositoryFromFile = loadrepositoryFromFile;
|
|
27
30
|
const fs = __importStar(require("fs"));
|
|
28
31
|
const path = __importStar(require("path"));
|
|
29
32
|
const http = __importStar(require("http"));
|
|
@@ -150,7 +153,6 @@ function validateRepository(repo, replacer) {
|
|
|
150
153
|
.strict());
|
|
151
154
|
return validator.safeParse(repo);
|
|
152
155
|
}
|
|
153
|
-
exports.validateRepository = validateRepository;
|
|
154
156
|
function formatValidationError(error) {
|
|
155
157
|
return JSON.stringify(error.format(), (key, value) => (Array.isArray(value) && value.length === 0 ? undefined : value), 2);
|
|
156
158
|
}
|
|
@@ -254,7 +256,6 @@ function asbowerrepo(jsRepo) {
|
|
|
254
256
|
});
|
|
255
257
|
return result;
|
|
256
258
|
}
|
|
257
|
-
exports.asbowerrepo = asbowerrepo;
|
|
258
259
|
async function loadrepository(repoUrl, options) {
|
|
259
260
|
options = { ...options, process: retire.replaceVersion };
|
|
260
261
|
if (options.nocache) {
|
|
@@ -262,9 +263,7 @@ async function loadrepository(repoUrl, options) {
|
|
|
262
263
|
}
|
|
263
264
|
return await loadFromCache(repoUrl, options.cachedir, options);
|
|
264
265
|
}
|
|
265
|
-
exports.loadrepository = loadrepository;
|
|
266
266
|
async function loadrepositoryFromFile(filepath, options) {
|
|
267
267
|
options = { ...options, process: retire.replaceVersion };
|
|
268
268
|
return await loadJsonFromFile(filepath, options);
|
|
269
269
|
}
|
|
270
|
-
exports.loadrepositoryFromFile = loadrepositoryFromFile;
|
package/lib/reporters/json.js
CHANGED
|
@@ -44,6 +44,9 @@ exports.default = {
|
|
|
44
44
|
};
|
|
45
45
|
logger.warn = logger.error = (message) => finalResults.errors.push(message);
|
|
46
46
|
logger.logVulnerableDependency = (finding) => {
|
|
47
|
+
if (!config.verbose) {
|
|
48
|
+
finding.results = finding.results.filter((r) => retire.isVulnerable([r]));
|
|
49
|
+
}
|
|
47
50
|
finalResults.data.push(finding);
|
|
48
51
|
};
|
|
49
52
|
logger.logDependency = function (finding) {
|
package/lib/reporters/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePURL =
|
|
3
|
+
exports.generatePURL = generatePURL;
|
|
4
4
|
function generatePURL(component) {
|
|
5
5
|
if (component.basePurl) {
|
|
6
6
|
return component.basePurl + '@' + component.version;
|
|
@@ -8,4 +8,3 @@ function generatePURL(component) {
|
|
|
8
8
|
const compName = component.npmname || component.component;
|
|
9
9
|
return `pkg:npm/${compName}@${component.version}`;
|
|
10
10
|
}
|
|
11
|
-
exports.generatePURL = generatePURL;
|
package/lib/reporting.d.ts
CHANGED
package/lib/reporting.js
CHANGED
|
@@ -26,7 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
29
|
+
exports.hash = void 0;
|
|
30
|
+
exports.open = open;
|
|
30
31
|
const fs = __importStar(require("fs"));
|
|
31
32
|
const crypto = __importStar(require("crypto"));
|
|
32
33
|
const console_1 = __importDefault(require("./reporters/console"));
|
|
@@ -127,4 +128,3 @@ function open(config) {
|
|
|
127
128
|
configureFileWriter(config);
|
|
128
129
|
return logger;
|
|
129
130
|
}
|
|
130
|
-
exports.open = open;
|
package/lib/resolve.d.ts
CHANGED
package/lib/resolve.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.scanJsFiles =
|
|
26
|
+
exports.scanJsFiles = scanJsFiles;
|
|
27
27
|
const fs = __importStar(require("fs"));
|
|
28
28
|
const walkdir = __importStar(require("walkdir"));
|
|
29
29
|
function scanJsFiles(path, options) {
|
|
@@ -51,4 +51,3 @@ function scanJsFiles(path, options) {
|
|
|
51
51
|
});
|
|
52
52
|
return finder;
|
|
53
53
|
}
|
|
54
|
-
exports.scanJsFiles = scanJsFiles;
|
package/lib/retire.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
var exports = exports || {};
|
|
7
|
-
exports.version = '4.4.
|
|
7
|
+
exports.version = '4.4.4';
|
|
8
8
|
|
|
9
9
|
function isDefined(o) {
|
|
10
10
|
return typeof o !== 'undefined';
|
|
@@ -26,7 +26,7 @@ function scan(data, extractor, repo, matcher = simpleMatch) {
|
|
|
26
26
|
if (!isDefined(extractors)) continue;
|
|
27
27
|
for (var i in extractors) {
|
|
28
28
|
var matches = matcher(extractors[i], data);
|
|
29
|
-
matches.forEach(match => {
|
|
29
|
+
matches.forEach((match) => {
|
|
30
30
|
match = match.replace(/(\.|-)min$/, '');
|
|
31
31
|
detected.push({
|
|
32
32
|
version: match,
|
|
@@ -42,20 +42,20 @@ function scan(data, extractor, repo, matcher = simpleMatch) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
function simpleMatch(regex, data) {
|
|
45
|
-
var re = new RegExp(regex,
|
|
45
|
+
var re = new RegExp(regex, 'g');
|
|
46
46
|
const result = [];
|
|
47
47
|
let match;
|
|
48
|
-
while (match = re.exec(data)) {
|
|
48
|
+
while ((match = re.exec(data))) {
|
|
49
49
|
result.push(match[1]);
|
|
50
50
|
}
|
|
51
51
|
return result;
|
|
52
52
|
}
|
|
53
53
|
function replacementMatch(regex, data) {
|
|
54
54
|
var ar = /^\/(.*[^\\])\/([^\/]+)\/$/.exec(regex);
|
|
55
|
-
var re = new RegExp(ar[1],
|
|
55
|
+
var re = new RegExp(ar[1], 'g');
|
|
56
56
|
const result = [];
|
|
57
57
|
let match;
|
|
58
|
-
while(match = re.exec(data)) {
|
|
58
|
+
while ((match = re.exec(data))) {
|
|
59
59
|
var ver = null;
|
|
60
60
|
if (match) {
|
|
61
61
|
ver = match[0].replace(new RegExp(ar[1]), ar[2]);
|
package/lib/scanner.js
CHANGED
|
@@ -23,7 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.scanJsFile = scanJsFile;
|
|
27
|
+
exports.scanBowerFile = scanBowerFile;
|
|
28
|
+
exports.on = on;
|
|
27
29
|
const events_1 = require("events");
|
|
28
30
|
const retire = __importStar(require("./retire"));
|
|
29
31
|
const fs = __importStar(require("fs"));
|
|
@@ -132,7 +134,6 @@ function scanJsFile(file, repo, options) {
|
|
|
132
134
|
}
|
|
133
135
|
emitResults({ file: file, results: results }, options);
|
|
134
136
|
}
|
|
135
|
-
exports.scanJsFile = scanJsFile;
|
|
136
137
|
function scanBowerFile(file, repo, options) {
|
|
137
138
|
if (options.ignore && shouldIgnorePath([file], options.ignore)) {
|
|
138
139
|
return;
|
|
@@ -148,8 +149,6 @@ function scanBowerFile(file, repo, options) {
|
|
|
148
149
|
options.log.warn(`Could not parse file: ${file}`);
|
|
149
150
|
}
|
|
150
151
|
}
|
|
151
|
-
exports.scanBowerFile = scanBowerFile;
|
|
152
152
|
function on(event, handler) {
|
|
153
153
|
events.on(event, handler);
|
|
154
154
|
}
|
|
155
|
-
exports.on = on;
|
package/lib/types.d.ts
CHANGED
package/lib/utils.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.info = info;
|
|
4
|
+
exports.warn = warn;
|
|
5
|
+
exports.pick = pick;
|
|
6
|
+
exports.flatten = flatten;
|
|
4
7
|
function info(options) {
|
|
5
8
|
return function (...message) {
|
|
6
9
|
(options.logger || console.log)(message);
|
|
7
10
|
};
|
|
8
11
|
}
|
|
9
|
-
exports.info = info;
|
|
10
12
|
function warn(options) {
|
|
11
13
|
return function (...message) {
|
|
12
14
|
(options.warnlogger || options.logger || console.warn)(message);
|
|
13
15
|
};
|
|
14
16
|
}
|
|
15
|
-
exports.warn = warn;
|
|
16
17
|
function pick(p, keys) {
|
|
17
18
|
const result = {};
|
|
18
19
|
keys.forEach((k) => {
|
|
@@ -22,8 +23,6 @@ function pick(p, keys) {
|
|
|
22
23
|
});
|
|
23
24
|
return result;
|
|
24
25
|
}
|
|
25
|
-
exports.pick = pick;
|
|
26
26
|
function flatten(e) {
|
|
27
27
|
return e.reduce((x, y) => x.concat(y), []);
|
|
28
28
|
}
|
|
29
|
-
exports.flatten = flatten;
|
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.4.
|
|
5
|
+
"version": "4.4.4",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"eslint": "^8.34.0",
|
|
30
30
|
"eslint-config-prettier": "^9.0.0",
|
|
31
31
|
"jsonschema": "^1.4.1",
|
|
32
|
-
"libxmljs": "^1.0.8",
|
|
33
32
|
"mocha": "^10.2.0",
|
|
34
33
|
"prettier": "^3.1.0",
|
|
35
|
-
"typescript": "^5.0.4"
|
|
34
|
+
"typescript": "^5.0.4",
|
|
35
|
+
"xsd-schema-validator": "^0.9.0"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"test": "./test",
|