@nodesecure/scanner 5.2.1 → 6.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.
- package/README.md +6 -116
- package/dist/class/logger.class.d.ts +27 -0
- package/dist/class/logger.class.d.ts.map +1 -0
- package/dist/class/logger.class.js +52 -0
- package/dist/class/logger.class.js.map +1 -0
- package/dist/comparePayloads.d.ts +66 -0
- package/dist/comparePayloads.d.ts.map +1 -0
- package/dist/comparePayloads.js +147 -0
- package/dist/comparePayloads.js.map +1 -0
- package/dist/depWalker.d.ts +10 -0
- package/dist/depWalker.d.ts.map +1 -0
- package/dist/depWalker.js +205 -0
- package/dist/depWalker.js.map +1 -0
- package/dist/i18n/english.d.ts +9 -0
- package/dist/i18n/english.d.ts.map +1 -0
- package/dist/i18n/english.js +6 -0
- package/dist/i18n/english.js.map +1 -0
- package/dist/i18n/french.d.ts +9 -0
- package/dist/i18n/french.d.ts.map +1 -0
- package/dist/i18n/french.js +6 -0
- package/dist/i18n/french.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/npmRegistry.d.ts +9 -0
- package/dist/npmRegistry.d.ts.map +1 -0
- package/dist/npmRegistry.js +125 -0
- package/dist/npmRegistry.js.map +1 -0
- package/dist/types.d.ts +216 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/addMissingVersionFlags.d.ts +3 -0
- package/dist/utils/addMissingVersionFlags.d.ts.map +1 -0
- package/dist/utils/addMissingVersionFlags.js +21 -0
- package/dist/utils/addMissingVersionFlags.js.map +1 -0
- package/dist/utils/dirname.d.ts +2 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +8 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/getLinks.d.ts +7 -0
- package/dist/utils/getLinks.d.ts.map +1 -0
- package/dist/utils/getLinks.js +32 -0
- package/dist/utils/getLinks.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/urlToString.d.ts +2 -0
- package/dist/utils/urlToString.d.ts.map +1 -0
- package/dist/utils/urlToString.js +6 -0
- package/dist/utils/urlToString.js.map +1 -0
- package/dist/utils/warnings.d.ts +9 -0
- package/dist/utils/warnings.d.ts.map +1 -0
- package/dist/utils/warnings.js +49 -0
- package/dist/utils/warnings.js.map +1 -0
- package/package.json +23 -42
- package/LICENSE +0 -21
- package/i18n/english.js +0 -6
- package/i18n/french.js +0 -7
- package/index.d.ts +0 -14
- package/index.js +0 -74
- package/src/class/dependency.class.js +0 -113
- package/src/class/logger.class.js +0 -54
- package/src/constants.js +0 -13
- package/src/depWalker.js +0 -388
- package/src/manifest.js +0 -94
- package/src/npmRegistry.js +0 -136
- package/src/tarball.js +0 -210
- package/src/utils/addMissingVersionFlags.js +0 -24
- package/src/utils/analyzeDependencies.js +0 -71
- package/src/utils/booleanToFlags.js +0 -12
- package/src/utils/dirname.js +0 -9
- package/src/utils/filterDependencyKind.js +0 -44
- package/src/utils/getLinks.js +0 -36
- package/src/utils/getPackageName.js +0 -21
- package/src/utils/getTarballComposition.js +0 -38
- package/src/utils/index.js +0 -18
- package/src/utils/isGitDependency.js +0 -11
- package/src/utils/isSensitiveFile.js +0 -17
- package/src/utils/mergeDependencies.js +0 -30
- package/src/utils/parseManifestAuthor.js +0 -45
- package/src/utils/semver.js +0 -62
- package/src/utils/warnings.js +0 -44
- package/types/api.d.ts +0 -15
- package/types/logger.d.ts +0 -38
- package/types/scanner.d.ts +0 -244
- package/types/tarball.d.ts +0 -63
- package/types/walker.d.ts +0 -8
package/README.md
CHANGED
|
@@ -1,117 +1,7 @@
|
|
|
1
|
-
<
|
|
1
|
+
<p align="center"><h1 align="center">
|
|
2
|
+
@nodesecure/scanner
|
|
3
|
+
</h1>
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Scorecard](https://api.securityscorecards.dev/projects/github.com/NodeSecure/scanner/badge?style=for-the-badge)](https://api.securityscorecards.dev/projects/github.com/NodeSecure/scanner)
|
|
7
|
-
[](https://github.com/NodeSecure/scanner/blob/master/LICENSE)
|
|
8
|
-

|
|
9
|
-
|
|
10
|
-
⚡️ Run a static analysis of your module's dependencies.
|
|
11
|
-
|
|
12
|
-
## Requirements
|
|
13
|
-
|
|
14
|
-
- [Node.js](https://nodejs.org/en/) version 18 or higher
|
|
15
|
-
|
|
16
|
-
## Getting Started
|
|
17
|
-
|
|
18
|
-
This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
$ npm i @nodesecure/scanner
|
|
22
|
-
# or
|
|
23
|
-
$ yarn add @nodesecure/scanner
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Usage example
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
import * as scanner from "@nodesecure/scanner";
|
|
30
|
-
import fs from "fs/promises";
|
|
31
|
-
|
|
32
|
-
// CONSTANTS
|
|
33
|
-
const kPackagesToAnalyze = ["mocha", "cacache", "is-wsl"];
|
|
34
|
-
|
|
35
|
-
const payloads = await Promise.all(
|
|
36
|
-
kPackagesToAnalyze.map((name) => scanner.from(name))
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
const promises = [];
|
|
40
|
-
for (let i = 0; i < kPackagesToAnalyze.length; i++) {
|
|
41
|
-
const data = JSON.stringify(payloads[i], null, 2);
|
|
42
|
-
|
|
43
|
-
promises.push(fs.writeFile(`${kPackagesToAnalyze[i]}.json`, data));
|
|
44
|
-
}
|
|
45
|
-
await Promise.allSettled(promises);
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## API
|
|
49
|
-
|
|
50
|
-
See `types/api.d.ts` for a complete TypeScript definition.
|
|
51
|
-
|
|
52
|
-
```ts
|
|
53
|
-
function cwd(
|
|
54
|
-
location: string,
|
|
55
|
-
options?: Scanner.Options
|
|
56
|
-
): Promise<Scanner.Payload>;
|
|
57
|
-
function from(
|
|
58
|
-
packageName: string,
|
|
59
|
-
options?: Omit<Scanner.Options, "includeDevDeps">
|
|
60
|
-
): Promise<Scanner.Payload>;
|
|
61
|
-
function verify(packageName?: string | null): Promise<Scanner.VerifyPayload>;
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
`Options` is described with the following TypeScript interface:
|
|
65
|
-
|
|
66
|
-
```ts
|
|
67
|
-
interface Options {
|
|
68
|
-
readonly maxDepth?: number;
|
|
69
|
-
readonly registry?: string | URL;
|
|
70
|
-
readonly usePackageLock?: boolean;
|
|
71
|
-
readonly includeDevDeps?: boolean;
|
|
72
|
-
readonly vulnerabilityStrategy: Strategy.Kind;
|
|
73
|
-
readonly forceRootAnalysis?: boolean;
|
|
74
|
-
readonly fullLockMode?: boolean;
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Contributors ✨
|
|
79
|
-
|
|
80
|
-
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
81
|
-
[](#contributors-)
|
|
82
|
-
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
83
|
-
|
|
84
|
-
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
85
|
-
|
|
86
|
-
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
87
|
-
<!-- prettier-ignore-start -->
|
|
88
|
-
<!-- markdownlint-disable -->
|
|
89
|
-
<table>
|
|
90
|
-
<tbody>
|
|
91
|
-
<tr>
|
|
92
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/thomas-gentilhomme/"><img src="https://avatars.githubusercontent.com/u/4438263?v=4?s=100" width="100px;" alt="Gentilhomme"/><br /><sub><b>Gentilhomme</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=fraxken" title="Code">💻</a> <a href="https://github.com/NodeSecure/scanner/commits?author=fraxken" title="Documentation">📖</a> <a href="https://github.com/NodeSecure/scanner/pulls?q=is%3Apr+reviewed-by%3Afraxken" title="Reviewed Pull Requests">👀</a> <a href="#security-fraxken" title="Security">🛡️</a> <a href="https://github.com/NodeSecure/scanner/issues?q=author%3Afraxken" title="Bug reports">🐛</a></td>
|
|
93
|
-
<td align="center" valign="top" width="14.28%"><a href="http://tonygo.dev"><img src="https://avatars.githubusercontent.com/u/22824417?v=4?s=100" width="100px;" alt="Tony Gorez"/><br /><sub><b>Tony Gorez</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=tony-go" title="Code">💻</a> <a href="https://github.com/NodeSecure/scanner/commits?author=tony-go" title="Documentation">📖</a> <a href="https://github.com/NodeSecure/scanner/pulls?q=is%3Apr+reviewed-by%3Atony-go" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/NodeSecure/scanner/issues?q=author%3Atony-go" title="Bug reports">🐛</a></td>
|
|
94
|
-
<td align="center" valign="top" width="14.28%"><a href="https://mickaelcroquet.fr"><img src="https://avatars.githubusercontent.com/u/23740372?v=4?s=100" width="100px;" alt="Haze"/><br /><sub><b>Haze</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=CroquetMickael" title="Code">💻</a></td>
|
|
95
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mbalabash"><img src="https://avatars.githubusercontent.com/u/16868922?v=4?s=100" width="100px;" alt="Maksim Balabash"/><br /><sub><b>Maksim Balabash</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=mbalabash" title="Code">💻</a></td>
|
|
96
|
-
<td align="center" valign="top" width="14.28%"><a href="https://dev.to/antoinecoulon"><img src="https://avatars.githubusercontent.com/u/43391199?v=4?s=100" width="100px;" alt="Antoine Coulon"/><br /><sub><b>Antoine Coulon</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=antoine-coulon" title="Code">💻</a> <a href="#security-antoine-coulon" title="Security">🛡️</a></td>
|
|
97
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/nicolas-hallaert/"><img src="https://avatars.githubusercontent.com/u/39910164?v=4?s=100" width="100px;" alt="Nicolas Hallaert"/><br /><sub><b>Nicolas Hallaert</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=Rossb0b" title="Code">💻</a></td>
|
|
98
|
-
<td align="center" valign="top" width="14.28%"><a href="http://sofiand.github.io/portfolio-client/"><img src="https://avatars.githubusercontent.com/u/39944043?v=4?s=100" width="100px;" alt="Yefis"/><br /><sub><b>Yefis</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=SofianD" title="Code">💻</a></td>
|
|
99
|
-
</tr>
|
|
100
|
-
<tr>
|
|
101
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/franck-hallaert/"><img src="https://avatars.githubusercontent.com/u/110826655?v=4?s=100" width="100px;" alt="Franck Hallaert"/><br /><sub><b>Franck Hallaert</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=Aekk0" title="Code">💻</a></td>
|
|
102
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/ange-tekeu-a155811b4/"><img src="https://avatars.githubusercontent.com/u/35274201?v=4?s=100" width="100px;" alt="Ange TEKEU"/><br /><sub><b>Ange TEKEU</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=tekeuange23" title="Code">💻</a></td>
|
|
103
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kawacrepe"><img src="https://avatars.githubusercontent.com/u/40260517?v=4?s=100" width="100px;" alt="Vincent Dhennin"/><br /><sub><b>Vincent Dhennin</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=Kawacrepe" title="Code">💻</a></td>
|
|
104
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fabnguess"><img src="https://avatars.githubusercontent.com/u/72697416?v=4?s=100" width="100px;" alt="Kouadio Fabrice Nguessan"/><br /><sub><b>Kouadio Fabrice Nguessan</b></sub></a><br /><a href="#maintenance-fabnguess" title="Maintenance">🚧</a></td>
|
|
105
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/PierreDemailly"><img src="https://avatars.githubusercontent.com/u/39910767?v=4?s=100" width="100px;" alt="PierreDemailly"/><br /><sub><b>PierreDemailly</b></sub></a><br /><a href="https://github.com/NodeSecure/scanner/commits?author=PierreDemailly" title="Code">💻</a> <a href="https://github.com/NodeSecure/scanner/pulls?q=is%3Apr+reviewed-by%3APierreDemailly" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/NodeSecure/scanner/issues?q=author%3APierreDemailly" title="Bug reports">🐛</a> <a href="https://github.com/NodeSecure/scanner/commits?author=PierreDemailly" title="Tests">⚠️</a></td>
|
|
106
|
-
</tr>
|
|
107
|
-
</tbody>
|
|
108
|
-
</table>
|
|
109
|
-
|
|
110
|
-
<!-- markdownlint-restore -->
|
|
111
|
-
<!-- prettier-ignore-end -->
|
|
112
|
-
|
|
113
|
-
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
114
|
-
|
|
115
|
-
## License
|
|
116
|
-
|
|
117
|
-
MIT
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="../../README.md">The documentation of this project is in the root README</a>
|
|
7
|
+
</p>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
export declare const ScannerLoggerEvents: {
|
|
3
|
+
readonly done: "depWalkerFinished";
|
|
4
|
+
readonly analysis: {
|
|
5
|
+
readonly tree: "walkTree";
|
|
6
|
+
readonly tarball: "tarball";
|
|
7
|
+
readonly registry: "registry";
|
|
8
|
+
};
|
|
9
|
+
readonly manifest: {
|
|
10
|
+
readonly read: "readManifest";
|
|
11
|
+
readonly fetch: "fetchManifest";
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export interface LoggerEventData {
|
|
15
|
+
/** UNIX Timestamp */
|
|
16
|
+
startedAt: number;
|
|
17
|
+
/** Count of triggered event */
|
|
18
|
+
count: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class Logger extends EventEmitter {
|
|
21
|
+
events: Map<string, LoggerEventData>;
|
|
22
|
+
start(eventName: string): this;
|
|
23
|
+
tick(eventName: string): this;
|
|
24
|
+
count(eventName: string): number;
|
|
25
|
+
end(eventName: string): this;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=logger.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.class.d.ts","sourceRoot":"","sources":["../../src/class/logger.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAWtB,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,MAAO,SAAQ,YAAY;IAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAa;IAExD,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAc9B,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAW7B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIhC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAa7B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Import Node.js Dependencies
|
|
2
|
+
import { EventEmitter } from "node:events";
|
|
3
|
+
import { performance } from "node:perf_hooks";
|
|
4
|
+
export const ScannerLoggerEvents = {
|
|
5
|
+
done: "depWalkerFinished",
|
|
6
|
+
analysis: {
|
|
7
|
+
tree: "walkTree",
|
|
8
|
+
tarball: "tarball",
|
|
9
|
+
registry: "registry"
|
|
10
|
+
},
|
|
11
|
+
manifest: {
|
|
12
|
+
read: "readManifest",
|
|
13
|
+
fetch: "fetchManifest"
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export class Logger extends EventEmitter {
|
|
17
|
+
events = new Map();
|
|
18
|
+
start(eventName) {
|
|
19
|
+
if (this.events.has(eventName)) {
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
this.events.set(eventName, {
|
|
23
|
+
startedAt: performance.now(),
|
|
24
|
+
count: 0
|
|
25
|
+
});
|
|
26
|
+
this.emit("start", eventName);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
tick(eventName) {
|
|
30
|
+
if (!this.events.has(eventName)) {
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
this.events.get(eventName).count++;
|
|
34
|
+
this.emit("tick", eventName);
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
count(eventName) {
|
|
38
|
+
return this.events.get(eventName)?.count ?? 0;
|
|
39
|
+
}
|
|
40
|
+
end(eventName) {
|
|
41
|
+
if (!this.events.has(eventName)) {
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
const data = this.events.get(eventName);
|
|
45
|
+
this.emit("end", eventName, {
|
|
46
|
+
...data,
|
|
47
|
+
executionTime: performance.now() - data.startedAt
|
|
48
|
+
});
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=logger.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.class.js","sourceRoot":"","sources":["../../src/class/logger.class.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;KACrB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,eAAe;KACvB;CACO,CAAC;AASX,MAAM,OAAO,MAAO,SAAQ,YAAY;IAC/B,MAAM,GAAiC,IAAI,GAAG,EAAE,CAAC;IAExD,KAAK,CAAC,SAAiB;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;YACzB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;YAC5B,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;YAC1B,GAAG,IAAI;YACP,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;SAClD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as JSXRay from "@nodesecure/js-x-ray";
|
|
2
|
+
import * as Vuln from "@nodesecure/vuln";
|
|
3
|
+
import type { Payload, Dependency, DependencyVersion, Publisher, Maintainer, Repository, DependencyLinks } from "./types.js";
|
|
4
|
+
export interface PayloadComparison {
|
|
5
|
+
title: string;
|
|
6
|
+
warnings: ArrayDiff<string>;
|
|
7
|
+
scannerVersion: ValueComparison<string>;
|
|
8
|
+
vulnerabilityStrategy: ValueComparison<string>;
|
|
9
|
+
dependencies: DependenciesComparison;
|
|
10
|
+
}
|
|
11
|
+
export interface DependenciesComparison {
|
|
12
|
+
compared: Map<string, DependencyComparison>;
|
|
13
|
+
added: Map<string, Dependency>;
|
|
14
|
+
removed: Map<string, Dependency>;
|
|
15
|
+
}
|
|
16
|
+
export interface DependencyComparison {
|
|
17
|
+
publishers: ArrayDiff<Publisher>;
|
|
18
|
+
maintainers: ArrayDiff<Maintainer>;
|
|
19
|
+
versions: VersionsComparisonResult;
|
|
20
|
+
vulnerabilities: ArrayDiff<Vuln.Strategy.StandardVulnerability>;
|
|
21
|
+
}
|
|
22
|
+
export interface VersionsComparisonResult {
|
|
23
|
+
compared: Map<string, DependencyVersionComparison>;
|
|
24
|
+
added: Map<string, DependencyVersion>;
|
|
25
|
+
removed: Map<string, DependencyVersion>;
|
|
26
|
+
}
|
|
27
|
+
export interface DependencyVersionComparison {
|
|
28
|
+
id: ValueComparison<number>;
|
|
29
|
+
size: ValueComparison<number>;
|
|
30
|
+
usedBy: DictionaryComparison<string>;
|
|
31
|
+
isDevDependency: ValueComparison<boolean>;
|
|
32
|
+
existOnRemoteRegistry: ValueComparison<boolean>;
|
|
33
|
+
description: ValueComparison<string>;
|
|
34
|
+
author: ValueComparison<Maintainer>;
|
|
35
|
+
engines: DictionaryComparison<string>;
|
|
36
|
+
repository: ValueComparison<Repository>;
|
|
37
|
+
scripts: DictionaryComparison<string>;
|
|
38
|
+
warnings: ArrayDiff<JSXRay.Warning>;
|
|
39
|
+
composition: CompositionComparison;
|
|
40
|
+
uniqueLicenseIds: ArrayDiff<string>;
|
|
41
|
+
flags: ArrayDiff<string>;
|
|
42
|
+
links: ValueComparison<DependencyLinks>;
|
|
43
|
+
}
|
|
44
|
+
export interface DictionaryComparison<T> {
|
|
45
|
+
compared: Map<string, ValueComparison<T>>;
|
|
46
|
+
added: Map<string, T>;
|
|
47
|
+
removed: Map<string, T>;
|
|
48
|
+
}
|
|
49
|
+
export interface CompositionComparison {
|
|
50
|
+
minified: ArrayDiff<string>;
|
|
51
|
+
required_thirdparty: ArrayDiff<string>;
|
|
52
|
+
required_nodejs: ArrayDiff<string>;
|
|
53
|
+
unused: ArrayDiff<string>;
|
|
54
|
+
missing: ArrayDiff<string>;
|
|
55
|
+
}
|
|
56
|
+
export type ValueComparison<T> = {
|
|
57
|
+
prev: T;
|
|
58
|
+
now: T;
|
|
59
|
+
} | undefined;
|
|
60
|
+
export interface ArrayDiff<T> {
|
|
61
|
+
added: T[];
|
|
62
|
+
removed: T[];
|
|
63
|
+
}
|
|
64
|
+
export declare function comparePayloads(payload: Payload, comparedPayload: Payload): PayloadComparison;
|
|
65
|
+
export declare function arrayOfObjectsDiffByKey<T extends Record<string, any>>(key: string, original?: T[], toCompare?: T[]): ArrayDiff<T>;
|
|
66
|
+
//# sourceMappingURL=comparePayloads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparePayloads.d.ts","sourceRoot":"","sources":["../src/comparePayloads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Import Third-party Dependencies
|
|
2
|
+
import * as JSXRay from "@nodesecure/js-x-ray";
|
|
3
|
+
import * as Vuln from "@nodesecure/vuln";
|
|
4
|
+
export function comparePayloads(payload, comparedPayload) {
|
|
5
|
+
if (payload.id === comparedPayload.id) {
|
|
6
|
+
throw new Error(`You try to compare two payloads with the same id '${payload.id}'`);
|
|
7
|
+
}
|
|
8
|
+
if (payload.rootDependencyName !== comparedPayload.rootDependencyName) {
|
|
9
|
+
throw new Error(`You can't compare different package payloads '${payload.rootDependencyName}' and '${comparedPayload.rootDependencyName}'`);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
title: `'${payload.rootDependencyName}' -> '${comparedPayload.rootDependencyName}'`,
|
|
13
|
+
warnings: arrayDiff(payload.warnings, comparedPayload.warnings),
|
|
14
|
+
scannerVersion: compareValues(payload.scannerVersion, comparedPayload.scannerVersion),
|
|
15
|
+
vulnerabilityStrategy: compareValues(payload.vulnerabilityStrategy, comparedPayload.vulnerabilityStrategy),
|
|
16
|
+
dependencies: compareDependencies(payload.dependencies, comparedPayload.dependencies)
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function compareDependencies(original, toCompare) {
|
|
20
|
+
const { comparable, ...dependencies } = dictionariesDiff(original, toCompare);
|
|
21
|
+
const comparedDependencies = new Map();
|
|
22
|
+
for (const [name, [dep, comparedDep]] of comparable) {
|
|
23
|
+
const diff = {
|
|
24
|
+
publishers: arrayOfObjectsDiffByKey("name", dep.metadata.publishers, comparedDep.metadata.publishers),
|
|
25
|
+
maintainers: arrayOfObjectsDiffByKey("name", dep.metadata.maintainers, comparedDep.metadata.maintainers),
|
|
26
|
+
versions: compareVersions(dep.versions, comparedDep.versions),
|
|
27
|
+
vulnerabilities: arrayOfObjectsDiffByKey("id", dep.vulnerabilities, comparedDep.vulnerabilities)
|
|
28
|
+
};
|
|
29
|
+
comparedDependencies.set(name, diff);
|
|
30
|
+
}
|
|
31
|
+
return { compared: comparedDependencies, ...dependencies };
|
|
32
|
+
}
|
|
33
|
+
function compareVersions(original, toCompare) {
|
|
34
|
+
const { comparable, ...versions } = dictionariesDiff(original, toCompare);
|
|
35
|
+
const comparedVersions = new Map();
|
|
36
|
+
for (const [name, [version, comparedVersion]] of comparable) {
|
|
37
|
+
const diff = {
|
|
38
|
+
id: compareValues(version.id, comparedVersion.id),
|
|
39
|
+
size: compareValues(version.size, comparedVersion.size),
|
|
40
|
+
usedBy: compareDictionnaries(version.usedBy, comparedVersion.usedBy),
|
|
41
|
+
isDevDependency: compareValues(version.isDevDependency, comparedVersion.isDevDependency),
|
|
42
|
+
existOnRemoteRegistry: compareValues(version.existOnRemoteRegistry, comparedVersion.existOnRemoteRegistry),
|
|
43
|
+
description: compareValues(version.description, comparedVersion.description),
|
|
44
|
+
author: compareObjects("name", version.author, comparedVersion.author),
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
engines: compareDictionnaries(version.engines, comparedVersion.engines),
|
|
47
|
+
repository: compareObjects("type", version.repository, comparedVersion.repository)
|
|
48
|
+
?? compareObjects("url", version.repository, comparedVersion.repository),
|
|
49
|
+
scripts: compareDictionnaries(version.scripts, comparedVersion.scripts),
|
|
50
|
+
warnings: arrayDiff(version.warnings, comparedVersion.warnings),
|
|
51
|
+
composition: compareComposition(version.composition, comparedVersion.composition),
|
|
52
|
+
uniqueLicenseIds: arrayDiff(version.uniqueLicenseIds, comparedVersion.uniqueLicenseIds),
|
|
53
|
+
flags: arrayDiff(version.flags, comparedVersion.flags),
|
|
54
|
+
links: compareValues(version.links, comparedVersion.links)
|
|
55
|
+
};
|
|
56
|
+
comparedVersions.set(name, diff);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
compared: comparedVersions,
|
|
60
|
+
...versions
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function compareComposition(original, toCompare) {
|
|
64
|
+
return {
|
|
65
|
+
minified: arrayDiff(original.minified, toCompare.minified),
|
|
66
|
+
required_thirdparty: arrayDiff(original.required_thirdparty, toCompare.required_thirdparty),
|
|
67
|
+
required_nodejs: arrayDiff(original.required_nodejs, toCompare.required_nodejs),
|
|
68
|
+
unused: arrayDiff(original.unused, toCompare.unused),
|
|
69
|
+
missing: arrayDiff(original.missing, toCompare.missing)
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function compareDictionnaries(original, toCompare) {
|
|
73
|
+
const { comparable, ...diff } = dictionariesDiff(original, toCompare);
|
|
74
|
+
const compared = new Map();
|
|
75
|
+
for (const [name, [entity, comparedEntity]] of comparable) {
|
|
76
|
+
compared.set(name, compareValues(entity, comparedEntity));
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
compared,
|
|
80
|
+
...diff
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function compareObjects(key, original = Object.create(null), toCompare = Object.create(null)) {
|
|
84
|
+
if (original[key] === toCompare[key]) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
prev: original,
|
|
89
|
+
now: toCompare
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function compareValues(original, toCompare) {
|
|
93
|
+
if (typeof original === "object") {
|
|
94
|
+
if (JSON.stringify(original) === JSON.stringify(toCompare)) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (original === toCompare) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
prev: original,
|
|
103
|
+
now: toCompare
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function dictionariesDiff(original = {}, toCompare = {}) {
|
|
107
|
+
const added = new Map();
|
|
108
|
+
const removed = new Map();
|
|
109
|
+
const comparable = new Map();
|
|
110
|
+
Object.keys(original).forEach((key) => {
|
|
111
|
+
if (key in toCompare) {
|
|
112
|
+
comparable.set(key, [original[key], toCompare[key]]);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
removed.set(key, original[key]);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
Object.keys(toCompare).forEach((key) => {
|
|
119
|
+
if (!(key in original)) {
|
|
120
|
+
added.set(key, toCompare[key]);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return { added, removed, comparable };
|
|
124
|
+
}
|
|
125
|
+
function arrayDiff(original = [], toCompare = []) {
|
|
126
|
+
const added = toCompare.filter((v, i) => {
|
|
127
|
+
if (typeof v !== "object") {
|
|
128
|
+
return v !== original[i];
|
|
129
|
+
}
|
|
130
|
+
return JSON.stringify(v) !== JSON.stringify(original[i]);
|
|
131
|
+
});
|
|
132
|
+
const removed = original.filter((v, i) => {
|
|
133
|
+
if (typeof v !== "object") {
|
|
134
|
+
return v !== toCompare[i];
|
|
135
|
+
}
|
|
136
|
+
return JSON.stringify(v) !== JSON.stringify(toCompare[i]);
|
|
137
|
+
});
|
|
138
|
+
return { added, removed };
|
|
139
|
+
}
|
|
140
|
+
export function arrayOfObjectsDiffByKey(key, original = [], toCompare = []) {
|
|
141
|
+
const toCompareMap = new Map(toCompare.map((item) => [item[key], item]));
|
|
142
|
+
const originalMap = new Map(original.map((item) => [item[key], item]));
|
|
143
|
+
const added = toCompare.filter((item) => !originalMap.has(item[key]));
|
|
144
|
+
const removed = original.filter((item) => !toCompareMap.has(item[key]));
|
|
145
|
+
return { added, removed };
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=comparePayloads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparePayloads.js","sourceRoot":"","sources":["../src/comparePayloads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ManifestVersion, PackageJSON } from "@nodesecure/npm-types";
|
|
2
|
+
import { Logger } from "./class/logger.class.js";
|
|
3
|
+
import type { Options, Payload } from "./types.js";
|
|
4
|
+
type WalkerOptions = Omit<Options, "registry"> & {
|
|
5
|
+
registry: string;
|
|
6
|
+
location?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function depWalker(manifest: PackageJSON | ManifestVersion, options: WalkerOptions, logger?: Logger): Promise<Payload>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=depWalker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depWalker.d.ts","sourceRoot":"","sources":["../src/depWalker.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAO1E,OAAO,EAAE,MAAM,EAAuB,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAGV,OAAO,EACP,OAAO,EACR,MAAM,YAAY,CAAC;AA4CpB,KAAK,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAA;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,WAAW,GAAG,eAAe,EACvC,OAAO,EAAE,aAAa,EACtB,MAAM,SAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CAwLlB"}
|