@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.
Files changed (90) hide show
  1. package/README.md +6 -116
  2. package/dist/class/logger.class.d.ts +27 -0
  3. package/dist/class/logger.class.d.ts.map +1 -0
  4. package/dist/class/logger.class.js +52 -0
  5. package/dist/class/logger.class.js.map +1 -0
  6. package/dist/comparePayloads.d.ts +66 -0
  7. package/dist/comparePayloads.d.ts.map +1 -0
  8. package/dist/comparePayloads.js +147 -0
  9. package/dist/comparePayloads.js.map +1 -0
  10. package/dist/depWalker.d.ts +10 -0
  11. package/dist/depWalker.d.ts.map +1 -0
  12. package/dist/depWalker.js +205 -0
  13. package/dist/depWalker.js.map +1 -0
  14. package/dist/i18n/english.d.ts +9 -0
  15. package/dist/i18n/english.d.ts.map +1 -0
  16. package/dist/i18n/english.js +6 -0
  17. package/dist/i18n/english.js.map +1 -0
  18. package/dist/i18n/french.d.ts +9 -0
  19. package/dist/i18n/french.d.ts.map +1 -0
  20. package/dist/i18n/french.js +6 -0
  21. package/dist/i18n/french.js.map +1 -0
  22. package/dist/index.d.ts +11 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +68 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/npmRegistry.d.ts +9 -0
  27. package/dist/npmRegistry.d.ts.map +1 -0
  28. package/dist/npmRegistry.js +125 -0
  29. package/dist/npmRegistry.js.map +1 -0
  30. package/dist/types.d.ts +216 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +4 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/utils/addMissingVersionFlags.d.ts +3 -0
  35. package/dist/utils/addMissingVersionFlags.d.ts.map +1 -0
  36. package/dist/utils/addMissingVersionFlags.js +21 -0
  37. package/dist/utils/addMissingVersionFlags.js.map +1 -0
  38. package/dist/utils/dirname.d.ts +2 -0
  39. package/dist/utils/dirname.d.ts.map +1 -0
  40. package/dist/utils/dirname.js +8 -0
  41. package/dist/utils/dirname.js.map +1 -0
  42. package/dist/utils/getLinks.d.ts +7 -0
  43. package/dist/utils/getLinks.d.ts.map +1 -0
  44. package/dist/utils/getLinks.js +32 -0
  45. package/dist/utils/getLinks.js.map +1 -0
  46. package/dist/utils/index.d.ts +11 -0
  47. package/dist/utils/index.d.ts.map +1 -0
  48. package/dist/utils/index.js +9 -0
  49. package/dist/utils/index.js.map +1 -0
  50. package/dist/utils/urlToString.d.ts +2 -0
  51. package/dist/utils/urlToString.d.ts.map +1 -0
  52. package/dist/utils/urlToString.js +6 -0
  53. package/dist/utils/urlToString.js.map +1 -0
  54. package/dist/utils/warnings.d.ts +9 -0
  55. package/dist/utils/warnings.d.ts.map +1 -0
  56. package/dist/utils/warnings.js +49 -0
  57. package/dist/utils/warnings.js.map +1 -0
  58. package/package.json +23 -42
  59. package/LICENSE +0 -21
  60. package/i18n/english.js +0 -6
  61. package/i18n/french.js +0 -7
  62. package/index.d.ts +0 -14
  63. package/index.js +0 -74
  64. package/src/class/dependency.class.js +0 -113
  65. package/src/class/logger.class.js +0 -54
  66. package/src/constants.js +0 -13
  67. package/src/depWalker.js +0 -388
  68. package/src/manifest.js +0 -94
  69. package/src/npmRegistry.js +0 -136
  70. package/src/tarball.js +0 -210
  71. package/src/utils/addMissingVersionFlags.js +0 -24
  72. package/src/utils/analyzeDependencies.js +0 -71
  73. package/src/utils/booleanToFlags.js +0 -12
  74. package/src/utils/dirname.js +0 -9
  75. package/src/utils/filterDependencyKind.js +0 -44
  76. package/src/utils/getLinks.js +0 -36
  77. package/src/utils/getPackageName.js +0 -21
  78. package/src/utils/getTarballComposition.js +0 -38
  79. package/src/utils/index.js +0 -18
  80. package/src/utils/isGitDependency.js +0 -11
  81. package/src/utils/isSensitiveFile.js +0 -17
  82. package/src/utils/mergeDependencies.js +0 -30
  83. package/src/utils/parseManifestAuthor.js +0 -45
  84. package/src/utils/semver.js +0 -62
  85. package/src/utils/warnings.js +0 -44
  86. package/types/api.d.ts +0 -15
  87. package/types/logger.d.ts +0 -38
  88. package/types/scanner.d.ts +0 -244
  89. package/types/tarball.d.ts +0 -63
  90. package/types/walker.d.ts +0 -8
package/README.md CHANGED
@@ -1,117 +1,7 @@
1
- <img align="center" alt="# Nodesecure Scanner" src="https://user-images.githubusercontent.com/4438263/226018084-113c49e6-6c69-4baa-8f84-87e6d695be6d.jpg">
1
+ <p align="center"><h1 align="center">
2
+ @nodesecure/scanner
3
+ </h1>
2
4
 
3
- ![version](https://img.shields.io/badge/dynamic/json.svg?style=for-the-badge&url=https://raw.githubusercontent.com/NodeSecure/scanner/master/package.json&query=$.version&label=Version)
4
- [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg?style=for-the-badge)](https://github.com/NodeSecure/scanner/graphs/commit-activity)
5
- [![OpenSSF
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
- [![mit](https://img.shields.io/github/license/NodeSecure/scanner.svg?style=for-the-badge)](https://github.com/NodeSecure/scanner/blob/master/LICENSE)
8
- ![build](https://img.shields.io/github/actions/workflow/status/NodeSecure/scanner/node.js.yml?style=for-the-badge)
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
- [![All Contributors](https://img.shields.io/badge/all_contributors-12-orange.svg?style=flat-square)](#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"}