retire 3.2.3 → 4.0.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.
@@ -1,45 +1,73 @@
1
+ "use strict";
1
2
  /*jshint esversion: 6 */
2
-
3
- var retire = require('../retire');
4
- var fs = require('fs');
5
- var uuidv4 = require('uuid').v4;
6
-
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const retire = __importStar(require("../retire"));
28
+ const fs = __importStar(require("fs"));
29
+ const uuid_1 = require("uuid");
7
30
  function configureCycloneDXJSONLogger(logger, writer, config, hash) {
8
- var vulnsFound = false;
9
- var finalResults = { version: retire.version, start: new Date(), data: [], messages: [], errors: [] };
31
+ let vulnsFound = false;
32
+ const finalResults = {
33
+ version: retire.version,
34
+ start: new Date().toISOString(),
35
+ data: [],
36
+ messages: [],
37
+ errors: []
38
+ };
10
39
  logger.info = finalResults.messages.push;
11
- logger.debug = config.verbose ? finalResults.messages.push : function() {};
40
+ logger.debug = config.verbose ? finalResults.messages.push : function () { return; };
12
41
  logger.warn = logger.error = finalResults.errors.push;
13
- logger.logVulnerableDependency = function(finding) {
42
+ logger.logVulnerableDependency = function (finding) {
14
43
  vulnsFound = true;
15
44
  finalResults.data.push(finding);
16
45
  };
17
- logger.logDependency = function(finding) {
46
+ logger.logDependency = function (finding) {
18
47
  if (finding.results.length > 0) {
19
- finalResults.data.push(finding);
48
+ finalResults.data.push(finding);
20
49
  }
21
50
  };
22
-
23
- logger.close = function(callback) {
24
- var write = vulnsFound ? writer.err : writer.out;
25
- finalResults.start = finalResults.start.toISOString();
26
- var seen = {};
27
- var components = finalResults.data.filter(d => d.results).map(r => r.results.map(dep => {
51
+ logger.close = function (callback) {
52
+ const write = vulnsFound ? writer.err : writer.out;
53
+ const seen = new Set();
54
+ const components = finalResults.data.filter(d => d.results).map(r => r.results.map(dep => {
28
55
  dep.version = (dep.version.split(".").length >= 3 ? dep.version : dep.version + ".0").replace(/-/g, ".");
29
- var hashes;
30
- var filepath = r.file || dep.file;
56
+ let hashes;
57
+ const filepath = r.file;
31
58
  if (filepath) {
32
- var file = fs.readFileSync(filepath);
59
+ const file = fs.readFileSync(filepath);
33
60
  hashes = [
34
- { "alg" : "MD5", "content" : hash.md5(file) },
35
- { "alg" : "SHA-1", "content" : hash.sha1(file) },
36
- { "alg" : "SHA-256", "content" : hash.sha256(file) },
37
- { "alg" : "SHA-512", "content" : hash.sha512(file) },
61
+ { "alg": "MD5", "content": hash.md5(file) },
62
+ { "alg": "SHA-1", "content": hash.sha1(file) },
63
+ { "alg": "SHA-256", "content": hash.sha256(file) },
64
+ { "alg": "SHA-512", "content": hash.sha512(file) },
38
65
  ];
39
66
  }
40
- var purl = `pkg:npm/${dep.component}@${dep.version}`;
41
- if (seen[purl]) return undefined;
42
- seen[purl] = true;
67
+ const purl = `pkg:npm/${dep.component}@${dep.version}`;
68
+ if (seen.has(purl))
69
+ return undefined;
70
+ seen.add(purl);
43
71
  return {
44
72
  type: "library",
45
73
  name: dep.component,
@@ -47,26 +75,27 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
47
75
  purl: purl,
48
76
  hashes: hashes
49
77
  };
50
- }).filter(x => x != undefined)).reduce((a,b) => a.concat(b));
78
+ }).filter(x => x != undefined)).reduce((a, b) => a.concat(b));
51
79
  write(JSON.stringify({
52
- bomFormat : "CycloneDX",
53
- specVersion : "1.4",
54
- serialNumber : `urn:uuid:${ uuidv4() }`,
55
- version : 1,
56
- metadata : {
57
- timestamp : finalResults.start,
58
- tools : [
80
+ bomFormat: "CycloneDX",
81
+ specVersion: "1.4",
82
+ serialNumber: `urn:uuid:${(0, uuid_1.v4)()}`,
83
+ version: 1,
84
+ metadata: {
85
+ timestamp: finalResults.start,
86
+ tools: [
59
87
  {
60
- vendor : "RetireJS",
61
- name : "retire.js",
62
- version : retire.version
88
+ vendor: "RetireJS",
89
+ name: "retire.js",
90
+ version: retire.version
63
91
  }
64
92
  ]
65
93
  },
66
- components : components
94
+ components: components
67
95
  }, undefined, 2));
68
- writer.close(callback);
96
+ writer.close(callback);
69
97
  };
70
98
  }
71
-
72
- exports.configure = configureCycloneDXJSONLogger;
99
+ exports.default = {
100
+ configure: configureCycloneDXJSONLogger
101
+ };
@@ -0,0 +1,3 @@
1
+ import { ConfigurableLogger } from "../reporting";
2
+ declare const _default: ConfigurableLogger;
3
+ export default _default;
@@ -1,64 +1,91 @@
1
+ "use strict";
1
2
  /*jshint esversion: 6 */
2
-
3
- var retire = require('../retire');
4
- var fs = require('fs');
5
- var uuidv4 = require('uuid').v4;
6
-
7
-
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const retire = __importStar(require("../retire"));
28
+ const fs = __importStar(require("fs"));
29
+ const uuid_1 = require("uuid");
8
30
  function configureCycloneDXLogger(logger, writer, config, hash) {
9
- var vulnsFound = false;
10
- var finalResults = { version: retire.version, start: new Date(), data: [], messages: [], errors: [] };
31
+ let vulnsFound = false;
32
+ const finalResults = {
33
+ version: retire.version,
34
+ start: new Date(),
35
+ data: [],
36
+ messages: [],
37
+ errors: []
38
+ };
11
39
  logger.info = finalResults.messages.push;
12
- logger.debug = config.verbose ? finalResults.messages.push : function() {};
40
+ logger.debug = config.verbose ? finalResults.messages.push : () => { return; };
13
41
  logger.warn = logger.error = finalResults.errors.push;
14
- logger.logVulnerableDependency = function(finding) {
42
+ logger.logVulnerableDependency = function (finding) {
15
43
  vulnsFound = true;
16
44
  finalResults.data.push(finding);
17
45
  };
18
- logger.logDependency = function(finding) {
46
+ logger.logDependency = function (finding) {
19
47
  if (finding.results.length > 0) {
20
- finalResults.data.push(finding);
48
+ finalResults.data.push(finding);
21
49
  }
22
50
  };
23
-
24
- logger.close = function(callback) {
25
- var write = vulnsFound ? writer.err : writer.out;
26
- var seen = {};
27
- var components = finalResults.data.filter(d => d.results).map(r => r.results.map(dep => {
28
- dep.version = (dep.version.split(".").length >= 3 ? dep.version : dep.version + ".0").replace(/-/g, ".");
29
- var filepath = r.file || dep.file;
30
- if (filepath) {
31
- var filename = filepath.split("/").slice(-1);
32
- var file = fs.readFileSync(filepath);
33
- hashes = `
51
+ logger.close = function (callback) {
52
+ const write = vulnsFound ? writer.err : writer.out;
53
+ const seen = new Set();
54
+ const components = finalResults.data.filter(d => d.results).map(r => r.results.map(dep => {
55
+ dep.version = (dep.version.split(".").length >= 3 ? dep.version : dep.version + ".0").replace(/-/g, ".");
56
+ const filepath = r.file;
57
+ let hashes = "";
58
+ if (filepath) {
59
+ const file = fs.readFileSync(filepath);
60
+ hashes = `
34
61
  <hashes>
35
62
  <hash alg="MD5">${hash.md5(file)}</hash>
36
63
  <hash alg="SHA-1">${hash.sha1(file)}</hash>
37
64
  <hash alg="SHA-256">${hash.sha256(file)}</hash>
38
65
  <hash alg="SHA-512">${hash.sha512(file)}</hash>
39
66
  </hashes>`;
40
- }
41
- var purl = `pkg:npm/${dep.component}@${dep.version}`;
42
- var hashes = "";
43
- if (seen[purl]) return '';
44
- seen[purl] = true;
45
- return `
67
+ }
68
+ const purl = `pkg:npm/${dep.component}@${dep.version}`;
69
+ if (seen.has(purl))
70
+ return '';
71
+ seen.add(purl);
72
+ return `
46
73
  <component type="library">
47
74
  <name>${dep.component}</name>
48
75
  <version>${dep.version}</version>${hashes}
49
76
  <purl>${purl}</purl>
50
77
  <modified>false</modified>
51
78
  </component>`;
52
- }).join("")).join("");
79
+ }).join("")).join("");
53
80
  write(`<?xml version="1.0"?>
54
- <bom xmlns="http://cyclonedx.org/schema/bom/1.4" serialNumber="urn:uuid:${ uuidv4() }" version="1">
81
+ <bom xmlns="http://cyclonedx.org/schema/bom/1.4" serialNumber="urn:uuid:${(0, uuid_1.v4)()}" version="1">
55
82
  <metadata>
56
83
  <timestamp>${finalResults.start.toISOString()}</timestamp>
57
84
  <tools>
58
85
  <tool>
59
86
  <vendor>RetireJS</vendor>
60
87
  <name>retire.js</name>
61
- <version>${ retire.version }</version>
88
+ <version>${retire.version}</version>
62
89
  </tool>
63
90
  </tools>
64
91
  </metadata>
@@ -68,5 +95,6 @@ function configureCycloneDXLogger(logger, writer, config, hash) {
68
95
  writer.close(callback);
69
96
  };
70
97
  }
71
-
72
- exports.configure = configureCycloneDXLogger;
98
+ exports.default = {
99
+ configure: configureCycloneDXLogger
100
+ };
@@ -0,0 +1,3 @@
1
+ import { ConfigurableLogger } from "../reporting";
2
+ declare const _default: ConfigurableLogger;
3
+ export default _default;
@@ -1,34 +1,59 @@
1
+ "use strict";
1
2
  /*jshint esversion: 6 */
2
-
3
- var retire = require('../retire');
4
- var fs = require('fs');
5
-
6
-
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const retire = __importStar(require("../retire"));
28
+ const fs = __importStar(require("fs"));
7
29
  function configureDepCheckLogger(logger, writer, config, hash) {
8
- var vulnsFound = false;
9
- var finalResults = { version: retire.version, start: new Date(), data: [], messages: [], errors: [] };
10
- logger.info = finalResults.messages.push;
11
- logger.debug = config.verbose ? finalResults.messages.push : function() {};
12
- logger.warn = logger.error = finalResults.errors.push;
13
- logger.logVulnerableDependency = function(finding) {
14
- vulnsFound = true;
15
- finalResults.data.push(finding);
16
- };
17
- logger.logDependency = function(finding) {
18
- if (config.verbose && finding.results.length > 0) {
19
- finalResults.data.push(finding);
20
- }
21
- };
22
-
23
- logger.close = function(callback) {
24
- var write = vulnsFound ? writer.err : writer.out;
25
- finalResults.start = finalResults.start.toISOString().replace("Z", "+0000");
26
- write(`<?xml version="1.0"?>
30
+ let vulnsFound = false;
31
+ const finalResults = {
32
+ version: retire.version,
33
+ start: new Date().toISOString().replace("Z", "+0000"),
34
+ data: [],
35
+ messages: [],
36
+ errors: []
37
+ };
38
+ logger.info = finalResults.messages.push;
39
+ logger.debug = config.verbose ? finalResults.messages.push : () => { return; };
40
+ logger.warn = logger.error = finalResults.errors.push;
41
+ logger.logVulnerableDependency = (finding) => {
42
+ vulnsFound = true;
43
+ finalResults.data.push(finding);
44
+ };
45
+ logger.logDependency = (finding) => {
46
+ if (config.verbose && finding.results.length > 0) {
47
+ finalResults.data.push(finding);
48
+ }
49
+ };
50
+ logger.close = (callback) => {
51
+ const write = vulnsFound ? writer.err : writer.out;
52
+ write(`<?xml version="1.0"?>
27
53
  <analysis xmlns="https://jeremylong.github.io/DependencyCheck/dependency-check.2.3.xsd">
28
54
  <scanInfo>
29
55
  <engineVersion>${retire.version}</engineVersion>
30
56
  <dataSource><name>${config.jsRepo || "Retire.js github js repo"}</name><timestamp>${finalResults.start}</timestamp></dataSource>
31
- <dataSource><name>${config.nodeRepo || "Retire.js github node repo"}</name><timestamp>${finalResults.start}</timestamp></dataSource>
32
57
  </scanInfo>
33
58
  <projectInfo>
34
59
  <name>${config.path}</name>
@@ -36,14 +61,16 @@ function configureDepCheckLogger(logger, writer, config, hash) {
36
61
  <credits>retire.js</credits>
37
62
  </projectInfo>
38
63
  <dependencies>`);
39
- write(finalResults.data.filter(d => d.results).map(r => r.results.map((dep, i) => {
40
- var filepath = r.file || dep.file;
41
- var filename = filepath.split("/").slice(-1);
42
- var file = fs.readFileSync(filepath);
43
- var md5 = hash.md5(file);
44
- var sha1 = hash.sha1(file);
45
- var sha256 = hash.sha256(file);
46
- var evidence = `
64
+ write(finalResults.data.filter(d => d.results).map(r => r.results.map((dep, i) => {
65
+ const filepath = r.file;
66
+ if (!filepath)
67
+ return;
68
+ const filename = filepath.split("/").slice(-1);
69
+ const file = fs.readFileSync(filepath);
70
+ const md5 = hash.md5(file);
71
+ const sha1 = hash.sha1(file);
72
+ const sha256 = hash.sha256(file);
73
+ const evidence = `
47
74
  <evidence type="product" confidence="HIGH">
48
75
  <source>file</source>
49
76
  <name>name</name>
@@ -54,22 +81,22 @@ function configureDepCheckLogger(logger, writer, config, hash) {
54
81
  <name>version</name>
55
82
  <value>${dep.version}</value>
56
83
  </evidence>`;
57
- var identifiers = `
84
+ const identifiers = `
58
85
  <package confidence="HIGH">
59
86
  <description>(${dep.component}:${dep.version})</description>
60
87
  <id>${i}</id>
61
88
  </package>`;
62
- var vulns = dep.vulnerabilities && dep.vulnerabilities.length > 0 ? dep.vulnerabilities.map(v => {
63
- var references = v.info.map(i => `
89
+ const vulns = dep.vulnerabilities && dep.vulnerabilities.length > 0 ? dep.vulnerabilities.map(v => {
90
+ const references = v.info.map(i => `
64
91
  <reference>
65
92
  <source>Retire.js</source>
66
93
  <url>${i}</url>
67
94
  <name>${i}</name>
68
95
  </reference>`).join("");
69
- var id = [v.identifiers && v.identifiers.CVE && v.identifiers.CVE[0], v.identifiers && v.identifiers.issue, dep.component + '@' + v.info[0]]
70
- .filter(n => n !== null)[0];
71
- //TODO: Fix CVSS stuff - add to repo? add id to every bug in repo?
72
- return `
96
+ // const id = [v.identifiers && v.identifiers.CVE && v.identifiers.CVE[0], v.identifiers && v.identifiers.issue, dep.component + '@' + v.info[0]]
97
+ // .filter(n => n !== null)[0];
98
+ //TODO: Fix CVSS stuff - add to repo? add id to every bug in repo?
99
+ return `
73
100
  <vulnerability source="retire">
74
101
  <name>${dep.component}:${dep.version}</name>
75
102
  <cvssV2>
@@ -86,11 +113,11 @@ function configureDepCheckLogger(logger, writer, config, hash) {
86
113
  <references>${references}
87
114
  </references>
88
115
  <vulnerableSoftware>
89
- <software>${ v.atOrAbove ? "&gt;= " + v.atOrAbove: "" } &lt; ${v.below}</software>
116
+ <software>${v.atOrAbove ? "&gt;= " + v.atOrAbove : ""} &lt; ${v.below}</software>
90
117
  </vulnerableSoftware>
91
- </vulnerability>`;
92
- }).join('') : "";
93
- return ` <dependency>
118
+ </vulnerability>`;
119
+ }).join('') : "";
120
+ return ` <dependency>
94
121
  <fileName>${filename}</fileName>
95
122
  <filePath>${filepath}</filePath>
96
123
  <md5>${md5}</md5>
@@ -102,12 +129,13 @@ function configureDepCheckLogger(logger, writer, config, hash) {
102
129
  </identifiers>
103
130
  <vulnerabilities>${vulns}
104
131
  </vulnerabilities>
105
- </dependency>`; }).join("\n")).join("\n"));
106
- write(` </dependencies>
132
+ </dependency>`;
133
+ }).join("\n")).join("\n"));
134
+ write(` </dependencies>
107
135
  </analysis>`);
108
- writer.close(callback);
109
- };
136
+ writer.close(callback);
137
+ };
110
138
  }
111
-
112
-
113
- exports.configure = configureDepCheckLogger;
139
+ exports.default = {
140
+ configure: configureDepCheckLogger
141
+ };
@@ -0,0 +1,3 @@
1
+ import { ConfigurableLogger } from "../reporting";
2
+ declare const _default: ConfigurableLogger;
3
+ export default _default;
@@ -1,29 +1,57 @@
1
+ "use strict";
1
2
  /*jshint esversion: 6 */
2
-
3
- var retire = require('../retire');
4
-
5
- function configureJsonLogger(logger, writer, config) {
6
- var scanStart = Date.now();
7
- var vulnsFound = false;
8
- var finalResults = { version: retire.version, start: new Date(), data: [], messages: [], errors: [] };
9
- logger.info = finalResults.messages.push;
10
- logger.debug = config.verbose ? finalResults.messages.push : function() {};
11
- logger.warn = logger.error = (message) => finalResults.errors.push(message);
12
- logger.logVulnerableDependency = function(finding) {
13
- vulnsFound = true;
14
- finalResults.data.push(finding);
15
- };
16
- logger.logDependency = function(finding) {
17
- if (config.verbose && finding.results.length > 0) {
18
- finalResults.data.push(finding);
19
- }
20
- };
21
- logger.close = function(callback) {
22
- finalResults.time = (Date.now() - scanStart)/1000;
23
- var res = (config.outputformat === "jsonsimple") ? finalResults.data : finalResults;
24
- writer.out(JSON.stringify(res));
25
- writer.close(callback);
26
- };
27
- }
28
-
29
- exports.configure = configureJsonLogger;
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const retire = __importStar(require("../retire"));
28
+ exports.default = {
29
+ configure: (logger, writer, config) => {
30
+ const scanStart = Date.now();
31
+ const finalResults = {
32
+ version: retire.version,
33
+ start: new Date(),
34
+ data: [],
35
+ messages: [],
36
+ errors: [],
37
+ time: undefined
38
+ };
39
+ logger.info = finalResults.messages.push;
40
+ logger.debug = config.verbose ? finalResults.messages.push : () => { return; };
41
+ logger.warn = logger.error = (message) => finalResults.errors.push(message);
42
+ logger.logVulnerableDependency = (finding) => {
43
+ finalResults.data.push(finding);
44
+ };
45
+ logger.logDependency = function (finding) {
46
+ if (config.verbose && finding.results.length > 0) {
47
+ finalResults.data.push(finding);
48
+ }
49
+ };
50
+ logger.close = function (callback) {
51
+ finalResults.time = (Date.now() - scanStart) / 1000;
52
+ const res = (config.outputformat === "jsonsimple") ? finalResults.data : finalResults;
53
+ writer.out(JSON.stringify(res));
54
+ writer.close(callback);
55
+ };
56
+ }
57
+ };
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import { Finding } from "./types";
3
+ export type LoggerOptions = {
4
+ outputpath: string;
5
+ verbose: boolean;
6
+ colors: boolean;
7
+ outputformat: string;
8
+ jsRepo: string;
9
+ path: string;
10
+ colorwarn: (s: string) => string;
11
+ };
12
+ export type Hasher = {
13
+ md5: (file: Buffer | string) => string;
14
+ sha1: (file: Buffer | string) => string;
15
+ sha256: (file: Buffer | string) => string;
16
+ sha512: (file: Buffer | string) => string;
17
+ };
18
+ export declare const hash: Hasher;
19
+ export type Writer = {
20
+ out: (...args: Parameters<typeof console["log"]>) => void;
21
+ err: (x: string) => void;
22
+ close: (callback?: () => void) => void;
23
+ };
24
+ export type Logger = {
25
+ info: (x: string) => void;
26
+ debug: (x: string) => void;
27
+ warn: (x: string) => void;
28
+ error: (x: string) => void;
29
+ logDependency: (finding: Finding) => void;
30
+ logVulnerableDependency: (finding: Finding) => void;
31
+ close: (callback?: () => void) => void;
32
+ };
33
+ export interface ConfigurableLogger {
34
+ configure: (logger: Logger, writer: Writer, config: LoggerOptions, hash: Hasher) => void;
35
+ }
36
+ export declare function open(config: LoggerOptions): Logger;