@mongodb-js/sbom-tools 0.2.2 → 0.3.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 (35) hide show
  1. package/README.md +223 -0
  2. package/bin/mongodb-sbom-tools.js +2 -1
  3. package/dist/bin.d.ts +1 -1
  4. package/dist/bin.d.ts.map +1 -1
  5. package/dist/bin.js +7 -38
  6. package/dist/bin.js.map +1 -1
  7. package/dist/commands/generate-third-party-notices.d.ts +4 -1
  8. package/dist/commands/generate-third-party-notices.d.ts.map +1 -1
  9. package/dist/commands/generate-third-party-notices.js +53 -73
  10. package/dist/commands/generate-third-party-notices.js.map +1 -1
  11. package/dist/commands/generate-vulnerability-report.d.ts +6 -18
  12. package/dist/commands/generate-vulnerability-report.d.ts.map +1 -1
  13. package/dist/commands/generate-vulnerability-report.js +67 -25
  14. package/dist/commands/generate-vulnerability-report.js.map +1 -1
  15. package/dist/commands/scan-node-js.d.ts +5 -2
  16. package/dist/commands/scan-node-js.d.ts.map +1 -1
  17. package/dist/commands/scan-node-js.js +33 -64
  18. package/dist/commands/scan-node-js.js.map +1 -1
  19. package/dist/production-deps.d.ts +2 -2
  20. package/dist/production-deps.d.ts.map +1 -1
  21. package/dist/production-deps.js +8 -8
  22. package/dist/production-deps.js.map +1 -1
  23. package/dist/snyk-vulnerability.d.ts +69 -0
  24. package/dist/snyk-vulnerability.d.ts.map +1 -0
  25. package/dist/snyk-vulnerability.js +87 -0
  26. package/dist/snyk-vulnerability.js.map +1 -0
  27. package/dist/webpack-dependencies-plugin.d.ts +5 -6
  28. package/dist/webpack-dependencies-plugin.d.ts.map +1 -1
  29. package/dist/webpack-dependencies-plugin.js +21 -16
  30. package/dist/webpack-dependencies-plugin.js.map +1 -1
  31. package/package.json +7 -9
  32. package/dist/commands/severity.d.ts +0 -7
  33. package/dist/commands/severity.d.ts.map +0 -1
  34. package/dist/commands/severity.js +0 -31
  35. package/dist/commands/severity.js.map +0 -1
package/README.md CHANGED
@@ -1,3 +1,226 @@
1
1
  # @mongodb-js/sbom-tools
2
2
 
3
3
  Utilities to generate sbom reports for webpack bundles.
4
+
5
+ ## Reporting of 3rd party vulnerabilities and licenses
6
+
7
+ This package exports `WebpackDependenciesPlugin`, a shared webpack plugin that reports bundled dependencies and licenses as a json file for each bundle.
8
+
9
+ And exposes a `mongodb-sbom-tools` binary providing the following commands:
10
+
11
+ - `generate-vulnerability-report`: Generates a report of vulnerabilities from the output of snyk test and a dependencies json file containing all the dependencies.
12
+ - `generate-3rd-party-notices`: Generates a 3rd party notices file based on the licenses information collected by the WebpackDependenciesPlugin. Also validates the licenses.
13
+ - `scan-node-js`: A script to produce a list of vulnerabilities affecting a Node.js version in the same format as snyk test (useful as we are redistributing Node.js with mongosh).
14
+
15
+ ### `WebpackDependenciesPlugin`
16
+
17
+ This plugin taps in the webpack compilation, collects the modules from 3rd party dependencies as they are resolved and writes an output file containing metadata about dependencies and licenses included in the bundle. The plugin ignores dependencies that are removed from the bundle via resolve: `{alias: {<dependency>: false}}`.
18
+
19
+ Setting `includeExternalProductionDependencies` to true the plugin will also include recursively any production and optional dependencies listed in the `package.json`, regardless of their inclusion in the bundle.
20
+
21
+ #### Usage
22
+
23
+ ```js
24
+ // webpack.config.js
25
+
26
+ const webpackDependenciesPlugin = new WebpackDependenciesPlugin({
27
+ outputFilename: 'dependencies.json',
28
+ includePackages: ['electron'],
29
+ includeExternalProductionDependencies: true,
30
+ });
31
+
32
+
33
+ module.exports = { ..., plugins: [buildInfoPlugin] }
34
+ ```
35
+
36
+ **Example Output**
37
+
38
+ ```json
39
+ dependencies.json
40
+
41
+ [{
42
+ "name": "@aws-sdk/client-cognito-identity",
43
+ "version": "3.267.0",
44
+ "name": "@aws-sdk/client-cognito-identity",
45
+ "version": "3.321.1",
46
+ "license": "Apache-2.0",
47
+ "path": ".../node_modules/@aws-sdk/client-cognito-identity",
48
+ "licenseFiles": [
49
+ {
50
+ "filename": "LICENSE",
51
+ "content": "..."
52
+ }
53
+ ]
54
+ }, ...]
55
+ ```
56
+
57
+ ### `generate-vulnerability-report` command
58
+
59
+ Outputs a markdown report of vulnerabilities given one or more `dependencies.json` files and the output of one or more multiple `snyk test`.
60
+
61
+ #### Usage
62
+
63
+ ```
64
+ Usage: bin generate-vulnerability-report [options]
65
+
66
+ Generate vulnerabilities report
67
+
68
+ Options:
69
+ --dependencies <paths> Comma-separated list of dependency files (default: [])
70
+ --snyk-reports <paths> Comma-separated list of snyk
71
+ result files (default: [])
72
+ --fail-on [level] Fail on the specified severity
73
+ level
74
+
75
+ -h, --help display help for command
76
+ ```
77
+
78
+ **Example output:**
79
+
80
+ ```md
81
+ | dep@version | id | score | fixed in | origin | ignored |
82
+ | ------------ | --------------------- | ------------ | -------- | -------------------- | ------- |
83
+ | jquery@2.2.4 | SNYK-JS-JQUERY-567880 | 6.5 (Medium) | 3.5.0 | - |
84
+ | got@10.7.0 | SNYK-JS-GOT-2932019 | 5.4 (Medium) | 11.8.5 | Ignored. Reason: ... |
85
+ ```
86
+
87
+ #### Ignored vulnerabilities
88
+
89
+ The `generate-vulnerability-report` command must run from a directory containing a `.snyk` policy file. The Snyk’s policy rules are applied to determine if a vulnerability must be reported as ignored or not.
90
+
91
+ Ignored vulnerabilities won’t cause the report to fail with an error when `--fail-on` is specified.
92
+
93
+ #### Fail on
94
+
95
+ `--fail-on` configures the command to fail with an error if the report contains a vulnerability that:
96
+
97
+ - Does not have a known severity
98
+ - Has a score greater or equal to the specified severity
99
+ - Is not ignored
100
+ - Has a know remediation path (the “fixed in” column is not empty)
101
+
102
+ ### `generate-3rd-party-notices` command
103
+
104
+ Takes one or more dependencies.json files and generates a markdown report for 3rd party licenses. Validates that licenses are among the list of allowed licenses.
105
+
106
+ When the command encounters a package with a license that is not allowed, the generation breaks. False positives can be ignored by excluding or overriding the license for specific packages or organizations.
107
+
108
+ The following licenses are allowed:
109
+
110
+ - `MIT`
111
+ - `0BSD`
112
+ - `BSD-2-Clause`
113
+ - `BSD-3-Clause`
114
+ - `BSD-4-Clause`
115
+ - `Apache-2.0`
116
+ - `ISC`
117
+ - `CC-BY-4.0`
118
+ - `WTFPL`
119
+ - `OFL-1.1`
120
+ - `Unlicense`
121
+
122
+ The validation can be tweaked with a configuration file (by default `${cwd}/licenses.json`). The configuration allows ignoring certain orgs and packages, and overriding licenses for specific dependencies.
123
+
124
+ Overrides and excluded packages are checked for existence inside the `dependencies.json` in order to avoid forgetting exceptions on removed dependencies.
125
+
126
+ #### Usage
127
+
128
+ ```
129
+ Usage: bin generate-3rd-party-notices [options]
130
+
131
+ Generate third-party notices
132
+
133
+ Options:
134
+ --product <productName> Product name
135
+ --config [config] Path of the configuration file (default:
136
+ "licenses.json")
137
+ --dependencies <paths> Comma-separated list of dependency files
138
+ (default: [])
139
+ -h, --help display help for command
140
+ ```
141
+
142
+ **Example config:**
143
+
144
+ ```json
145
+ {
146
+ // remove orgs and packages from the report
147
+ "ignoredOrgs": ["@mongodb-js", "@leafygreen-ui", "@mongosh"],
148
+ "ignoredPackages": ["package1"],
149
+ // include packages in the report, just skip validation
150
+ "doNotValidatePackages": ["package2"],
151
+ "additionalAllowedLicenses": ["PYTHON-2.0"],
152
+ "licenseOverrides": {
153
+ "@segment/loosely-validate-event@2.0.0": "MIT",
154
+ "component-event@0.1.4": "MIT",
155
+ "delegate-events@1.1.1": "MIT",
156
+ "events-mixin@1.3.0": "MIT",
157
+ "sprintf@0.1.3": "BSD-3-Clause"
158
+ }
159
+ }
160
+ ```
161
+
162
+ **Example output:**
163
+
164
+ ```md
165
+ The following third-party software is used by and included in **Mongodb Compass**.
166
+ This document was automatically generated on Sun May 14 2023.
167
+
168
+ ## List of dependencies
169
+
170
+ | Package | Version | License |
171
+ | --------------------------------------------------------------------------------------------------------- | ------- | ---------- |
172
+ | **[@aws-sdk/client-cognito-identity](#5416a8cf83b6af5965b709a5538b4b4590f0a081e36cbd99a1af945d73034f1a)** | 3.321.1 | Apache-2.0 |
173
+
174
+ ...
175
+
176
+ ## Package details
177
+
178
+ <a id="5416a8cf83b6af5965b709a5538b4b4590f0a081e36cbd99a1af945d73034f1a"></a>
179
+
180
+ ### [@aws-sdk/client-cognito-identity](https://www.npmjs.com/package/@aws-sdk/client-cognito-identity) (version 3.321.1)
181
+
182
+ License tags: Apache-2.0
183
+
184
+ License files:
185
+
186
+ - LICENSE:
187
+
188
+ Apache License
189
+ Version 2.0, January 2004
190
+ http://www.apache.org/licenses/
191
+
192
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
193
+
194
+ ...
195
+ ```
196
+
197
+ ### Scan-node-js command
198
+
199
+ This command scans a Node.js version for known vulnerabilities and produces a report that is conforming to the snyk test output format and can be used with `generate-vulnerability-report`.
200
+
201
+ `scan-node-js` fails with an error if the Node.js version is not officially supported anymore. Otherwise it builds a list of vulnerability scanning the database published by the Node.js `security-wg` https://raw.githubusercontent.com/nodejs/security-wg/main/vuln/core/index.json, and enriching it with cvss from the nvd.nist.gov database.
202
+
203
+ The output reports vulnerabilities as they would have been found in a “fake” `.node.js` npm package, with the recommended `NSWG-COR-*`. That is useful in conjunction with `generate-vulnerability-report` as it allows the use of the same policies for ignoring vulnerabilities and includes Node.js in the report as any other package.
204
+
205
+ #### Usage
206
+
207
+ ```
208
+ Usage: bin scan-node-js [options]
209
+
210
+ Scan node.js version for known vulnerabilities
211
+
212
+ Options:
213
+ --version <version> Path to the node.js security-wg core
214
+ database of vulnerabilities
215
+ -h, --help display help for command
216
+ ```
217
+
218
+ Use in conjunction with generate-vulnerability-report:
219
+
220
+ ```sh
221
+ echo '[{name: ".node.js", version:"'"$NODE_JS_VERSION"'"}]' > node-js-dep.json
222
+ mongodb-sbom-tools scan-node-js --version=$NODE_JS_VERSION > node-js-vuln.json
223
+
224
+ mongodb-sbom-tools generate-vulnerability-report
225
+ --dependencies=node-js-vuln.json --snyk-report=node-js-vuln.json
226
+ ```
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require('../dist/bin.js');
3
+ const { main } = require('../dist/bin.js');
4
+ main(process.argv);
package/dist/bin.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ export declare function main(argv: string[]): void;
2
2
  //# sourceMappingURL=bin.d.ts.map
package/dist/bin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"AAKA,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAKzC"}
package/dist/bin.js CHANGED
@@ -1,46 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.main = void 0;
3
4
  const commander_1 = require("commander");
4
5
  const generate_third_party_notices_1 = require("./commands/generate-third-party-notices");
5
6
  const generate_vulnerability_report_1 = require("./commands/generate-vulnerability-report");
6
7
  const scan_node_js_1 = require("./commands/scan-node-js");
7
- function commaSeparatedList(value) {
8
- return value.split(',');
8
+ function main(argv) {
9
+ commander_1.program.addCommand(generate_vulnerability_report_1.command);
10
+ commander_1.program.addCommand(generate_third_party_notices_1.command);
11
+ commander_1.program.addCommand(scan_node_js_1.command);
12
+ commander_1.program.parse(argv);
9
13
  }
10
- commander_1.program
11
- .command('generate-vulnerability-report')
12
- .description('Generate vulnerabilities report')
13
- .option('--dependencies <paths>', 'Comma-separated list of dependency files', commaSeparatedList, [])
14
- .option('--snyk-reports <paths>', 'Comma-separated list of snyk result files', commaSeparatedList, [])
15
- .option('--fail-on [level]', 'Fail on the specified severity level')
16
- .action(async (options) => {
17
- await (0, generate_vulnerability_report_1.generateVulnerabilityReport)({
18
- dependencyFiles: options.dependencies,
19
- snykReports: options.snykReports,
20
- failOn: options.failOn,
21
- });
22
- });
23
- commander_1.program
24
- .command('generate-3rd-party-notices')
25
- .description('Generate third-party notices')
26
- .option('--product <productName>', 'Product name')
27
- .option('--config [config]', 'Path of the configuration file', 'licenses.json')
28
- .option('--dependencies <paths>', 'Comma-separated list of dependency files', commaSeparatedList, [])
29
- .action(async (options) => {
30
- await (0, generate_third_party_notices_1.generate3rdPartyNotices)({
31
- productName: options.product,
32
- dependencyFiles: options.dependencies,
33
- configPath: options.config,
34
- });
35
- });
36
- commander_1.program
37
- .command('scan-node-js')
38
- .description('Scan node.js version for known vulnerabilities')
39
- .option('--version <version>', 'Path to the node.js security-wg core database of vulnerabilities')
40
- .action(async (options) => {
41
- await (0, scan_node_js_1.scanNodeJs)({
42
- version: options.version,
43
- });
44
- });
45
- commander_1.program.parse(process.argv);
14
+ exports.main = main;
46
15
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,0FAAkF;AAClF,4FAAuF;AACvF,0DAAqD;AAErD,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,mBAAO;KACJ,OAAO,CAAC,+BAA+B,CAAC;KACxC,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CACL,wBAAwB,EACxB,0CAA0C,EAC1C,kBAAkB,EAClB,EAAE,CACH;KACA,MAAM,CACL,wBAAwB,EACxB,2CAA2C,EAC3C,kBAAkB,EAClB,EAAE,CACH;KACA,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,2DAA2B,EAAC;QAChC,eAAe,EAAE,OAAO,CAAC,YAAY;QACrC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,mBAAO;KACJ,OAAO,CAAC,4BAA4B,CAAC;KACrC,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,yBAAyB,EAAE,cAAc,CAAC;KACjD,MAAM,CACL,mBAAmB,EACnB,gCAAgC,EAChC,eAAe,CAChB;KACA,MAAM,CACL,wBAAwB,EACxB,0CAA0C,EAC1C,kBAAkB,EAClB,EAAE,CACH;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,sDAAuB,EAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,eAAe,EAAE,OAAO,CAAC,YAAY;QACrC,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,mBAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CACL,qBAAqB,EACrB,kEAAkE,CACnE;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,yBAAU,EAAC;QACf,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,mBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,0FAA6F;AAC7F,4FAAkG;AAClG,0DAAgE;AAEhE,SAAgB,IAAI,CAAC,IAAc;IACjC,mBAAO,CAAC,UAAU,CAAC,uCAA2B,CAAC,CAAC;IAChD,mBAAO,CAAC,UAAU,CAAC,sCAAuB,CAAC,CAAC;IAC5C,mBAAO,CAAC,UAAU,CAAC,sBAAU,CAAC,CAAC;IAC/B,mBAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AALD,oBAKC"}
@@ -1,8 +1,11 @@
1
1
  import type { Package } from '../get-package-info';
2
+ import { Command } from 'commander';
2
3
  export declare function printLicenseInformation(productName: string, packages: Package[]): string;
3
- export declare function generate3rdPartyNotices({ productName, dependencyFiles, configPath, }: {
4
+ export declare function generate3rdPartyNotices({ productName, dependencyFiles, configPath, printResult, }: {
4
5
  productName: string;
5
6
  dependencyFiles: string[];
6
7
  configPath?: string;
8
+ printResult?: (result: string) => void;
7
9
  }): Promise<void>;
10
+ export declare const command: Command;
8
11
  //# sourceMappingURL=generate-third-party-notices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-third-party-notices.d.ts","sourceRoot":"","sources":["../../src/commands/generate-third-party-notices.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA6LnD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAuDR;AAyCD,wBAAsB,uBAAuB,CAAC,EAC5C,WAAW,EACX,eAAe,EACf,UAAU,GACX,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhB"}
1
+ {"version":3,"file":"generate-third-party-notices.d.ts","sourceRoot":"","sources":["../../src/commands/generate-third-party-notices.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoHpC,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAuDR;AAmDD,wBAAsB,uBAAuB,CAAC,EAC5C,WAAW,EACX,eAAe,EACf,UAAU,EACV,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,GAAG,OAAO,CAAC,IAAI,CAAC,CAShB;AAMD,eAAO,MAAM,OAAO,SAoBhB,CAAC"}
@@ -3,13 +3,12 @@ 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.generate3rdPartyNotices = exports.printLicenseInformation = void 0;
6
+ exports.command = exports.generate3rdPartyNotices = exports.printLicenseInformation = void 0;
7
7
  const crypto_1 = __importDefault(require("crypto"));
8
8
  const spdx_satisfies_1 = __importDefault(require("spdx-satisfies"));
9
- const find_up_1 = __importDefault(require("find-up"));
10
9
  const fs_1 = require("fs");
11
10
  const load_dependency_files_1 = require("../load-dependency-files");
12
- const cross_spawn_1 = __importDefault(require("cross-spawn"));
11
+ const commander_1 = require("commander");
13
12
  const ALLOWED_LICENSES = [
14
13
  'MIT',
15
14
  '0BSD',
@@ -23,38 +22,18 @@ const ALLOWED_LICENSES = [
23
22
  'OFL-1.1',
24
23
  'Unlicense',
25
24
  ];
26
- function checkOverrides(packagesToCheck, packageLockJson) {
27
- const allDepsInLock = new Set();
28
- const traverseDependencies = (dependencies) => {
29
- for (const packageName in dependencies) {
30
- const packageInfo = dependencies[packageName];
31
- allDepsInLock.add(`${packageName}@${packageInfo.version}`);
32
- if (packageInfo.dependencies) {
33
- traverseDependencies(packageInfo.dependencies);
34
- }
35
- }
36
- };
37
- traverseDependencies(packageLockJson.dependencies);
25
+ function checkOverrides(packagesToCheck, dependencies) {
26
+ const depsSet = new Set(dependencies.map(({ name, version }) => `${name}@${version}`));
38
27
  for (const packageName of packagesToCheck) {
39
- if (!allDepsInLock.has(packageName)) {
40
- throw new Error(`The package "${packageName}" is not installed, please remove it from the configured ignoredPackages or licenseOverrides.`);
28
+ if (!depsSet.has(packageName)) {
29
+ throw new Error(`The package "${packageName}" is not appearing in the dependencies, please remove it from the configured ignoredPackages or licenseOverrides.`);
41
30
  }
42
31
  }
43
32
  }
44
- async function readPackageLock() {
45
- const packageLockJsonPath = await (0, find_up_1.default)('package-lock.json');
46
- if (packageLockJsonPath) {
47
- const packageLock = JSON.parse(await fs_1.promises.readFile(packageLockJsonPath, 'utf-8'));
48
- if (packageLock.lockfileVersion !== 2) {
49
- throw new Error('Invalid package-lock.json version: !== 2');
50
- }
51
- return { path: packageLockJsonPath, content: packageLock };
52
- }
53
- }
54
33
  function id(pkg) {
55
34
  return crypto_1.default
56
35
  .createHash('sha256')
57
- .update(`${pkg.name}@${pkg.version}`)
36
+ .update(packageNameAndVersion(pkg))
58
37
  .digest('hex');
59
38
  }
60
39
  function normalizeLicenseProperty(license) {
@@ -85,8 +64,8 @@ function licenseSpdx(pkg) {
85
64
  function indent(input, depth) {
86
65
  return input.replace(/^/gm, ' '.repeat(depth));
87
66
  }
88
- function validatePackage(pkg) {
89
- return ALLOWED_LICENSES.some((allowedLicense) => {
67
+ function validatePackage(pkg, config) {
68
+ return [...ALLOWED_LICENSES, ...config.additionalAllowedLicenses].some((allowedLicense) => {
90
69
  const spdx = licenseSpdx(pkg);
91
70
  try {
92
71
  return (0, spdx_satisfies_1.default)(allowedLicense, spdx);
@@ -96,41 +75,20 @@ function validatePackage(pkg) {
96
75
  }
97
76
  });
98
77
  }
99
- function getMonorepoPackages(packageLock) {
100
- var _a, _b;
101
- if (!((_b = (_a = packageLock === null || packageLock === void 0 ? void 0 : packageLock.packages) === null || _a === void 0 ? void 0 : _a[''].workspaces) === null || _b === void 0 ? void 0 : _b.length)) {
102
- return [];
103
- }
104
- const output = cross_spawn_1.default.sync('npm', ['query', '.workspace'], {
105
- encoding: 'utf-8',
106
- });
107
- if (output.error) {
108
- console.error('Error executing command:', output.error);
109
- process.exit(1);
110
- }
111
- const packages = JSON.parse(output.stdout);
112
- return packages.map((pkg) => `${pkg.name}@${pkg.version}`);
113
- }
114
78
  async function readConfig(configPath) {
115
79
  var _a, _b, _c, _d, _e;
116
- const packageLock = await readPackageLock();
117
- const monorepoPackages = getMonorepoPackages(packageLock === null || packageLock === void 0 ? void 0 : packageLock.content);
118
80
  const originalConfig = JSON.parse(await fs_1.promises.readFile(configPath, 'utf-8'));
119
- if (packageLock === null || packageLock === void 0 ? void 0 : packageLock.content) {
120
- checkOverrides([
121
- ...((_a = originalConfig.ignoredPackages) !== null && _a !== void 0 ? _a : []),
122
- ...Object.keys((_b = originalConfig.licenseOverrides) !== null && _b !== void 0 ? _b : {}),
123
- ], packageLock.content);
124
- }
125
81
  return Promise.resolve({
126
- ignoredOrgs: [...((_c = originalConfig.ignoredOrgs) !== null && _c !== void 0 ? _c : [])],
127
- ignoredPackages: [
128
- ...((_d = originalConfig.ignoredPackages) !== null && _d !== void 0 ? _d : []),
129
- ...(monorepoPackages !== null && monorepoPackages !== void 0 ? monorepoPackages : []),
82
+ ignoredOrgs: [...((_a = originalConfig.ignoredOrgs) !== null && _a !== void 0 ? _a : [])],
83
+ ignoredPackages: [...((_b = originalConfig.ignoredPackages) !== null && _b !== void 0 ? _b : [])],
84
+ licenseOverrides: { ...((_c = originalConfig.licenseOverrides) !== null && _c !== void 0 ? _c : {}) },
85
+ doNotValidatePackages: [...((_d = originalConfig.doNotValidatePackages) !== null && _d !== void 0 ? _d : [])],
86
+ additionalAllowedLicenses: [
87
+ ...((_e = originalConfig.additionalAllowedLicenses) !== null && _e !== void 0 ? _e : []),
130
88
  ],
131
- licenseOverrides: { ...((_e = originalConfig.licenseOverrides) !== null && _e !== void 0 ? _e : {}) },
132
89
  });
133
90
  }
91
+ const packageNameAndVersion = (pkg) => `${pkg.name}@${pkg.version}`;
134
92
  function printLicenseInformation(productName, packages) {
135
93
  var _a, _b;
136
94
  let output = `\
@@ -182,34 +140,56 @@ ${packages
182
140
  return output;
183
141
  }
184
142
  exports.printLicenseInformation = printLicenseInformation;
185
- function validatePackages(packages) {
186
- const invalidPackages = packages.filter((pkg) => !validatePackage(pkg));
143
+ function validatePackages(packages, config) {
144
+ const invalidPackages = packages
145
+ .filter((pkg) => !config.doNotValidatePackages.includes(packageNameAndVersion(pkg)))
146
+ .filter((pkg) => !validatePackage(pkg, config));
187
147
  if (invalidPackages.length) {
188
- console.error(`Generation failed, found ${invalidPackages.length} invalid packages:`);
189
- for (const pkg of invalidPackages) {
190
- console.error(`${pkg.name}@${pkg.version}:`, licenseSpdx(pkg));
191
- }
192
- process.exit(1);
148
+ throw new Error([
149
+ `Generation failed, found ${invalidPackages.length} invalid packages:`,
150
+ ...invalidPackages.map((pkg) => `- ${pkg.name}@${pkg.version}: ${licenseSpdx(pkg)}`),
151
+ ].join('\n'));
193
152
  }
194
153
  }
195
- async function loadPackages(dependencyFiles, config) {
196
- return (await (0, load_dependency_files_1.loadDependencyFiles)(dependencyFiles))
154
+ function applyConfig(dependencies, config) {
155
+ checkOverrides([
156
+ ...config.ignoredPackages,
157
+ ...config.doNotValidatePackages,
158
+ ...Object.keys(config.licenseOverrides),
159
+ ], dependencies);
160
+ return dependencies
197
161
  .filter((pkg) => !(config.ignoredOrgs || []).some((org) => pkg.name.startsWith(org + '/')))
198
- .filter((pkg) => !(config.ignoredPackages || []).includes(`${pkg.name}@${pkg.version}`))
162
+ .filter((pkg) => !(config.ignoredPackages || []).includes(packageNameAndVersion(pkg)))
199
163
  .map((pkg) => {
200
164
  var _a;
201
165
  return ({
202
166
  ...pkg,
203
- license: (_a = (config.licenseOverrides || {})[`${pkg.name}@${pkg.version}`]) !== null && _a !== void 0 ? _a : pkg.license,
167
+ license: (_a = (config.licenseOverrides || {})[packageNameAndVersion(pkg)]) !== null && _a !== void 0 ? _a : pkg.license,
204
168
  });
205
169
  });
206
170
  }
207
- async function generate3rdPartyNotices({ productName, dependencyFiles, configPath, }) {
171
+ async function generate3rdPartyNotices({ productName, dependencyFiles, configPath, printResult, }) {
208
172
  const config = await readConfig(configPath !== null && configPath !== void 0 ? configPath : 'licenses.json');
209
- const packages = await loadPackages(dependencyFiles, config);
210
- validatePackages(packages);
173
+ const allPackages = await (0, load_dependency_files_1.loadDependencyFiles)(dependencyFiles);
174
+ const packages = applyConfig(allPackages, config);
175
+ validatePackages(packages, config);
211
176
  const markdown = printLicenseInformation(productName, packages);
212
- console.info(markdown);
177
+ (printResult !== null && printResult !== void 0 ? printResult : console.info)(markdown);
213
178
  }
214
179
  exports.generate3rdPartyNotices = generate3rdPartyNotices;
180
+ function commaSeparatedList(value) {
181
+ return value.split(',');
182
+ }
183
+ exports.command = new commander_1.Command('generate-3rd-party-notices')
184
+ .description('Generate third-party notices')
185
+ .option('--product <productName>', 'Product name')
186
+ .option('--config [config]', 'Path of the configuration file', 'licenses.json')
187
+ .option('--dependencies <paths>', 'Comma-separated list of dependency files', commaSeparatedList, [])
188
+ .action(async (options) => {
189
+ await generate3rdPartyNotices({
190
+ productName: options.product,
191
+ dependencyFiles: options.dependencies,
192
+ configPath: options.config,
193
+ });
194
+ });
215
195
  //# sourceMappingURL=generate-third-party-notices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-third-party-notices.js","sourceRoot":"","sources":["../../src/commands/generate-third-party-notices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-third-party-notices.js","sourceRoot":"","sources":["../../src/commands/generate-third-party-notices.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,12 @@
1
- import type { KnownSeverity } from './severity';
1
+ import type { KnownSeverity, SnykTestProjectResult } from '../snyk-vulnerability';
2
+ import { Command } from 'commander';
2
3
  export declare function loadReports(files: string[]): Promise<SnykTestProjectResult[]>;
3
- declare type SnykTestProjectResult = {
4
- vulnerabilities: SnykVulnerability[];
5
- };
6
- declare type SnykVulnerability = {
7
- moduleName: string;
8
- from: string[];
9
- name: string;
10
- version: string;
11
- cvssScore: number;
12
- severity: KnownSeverity;
13
- id: string;
14
- url: string;
15
- title: string;
16
- fixedIn: string[];
17
- };
18
4
  export declare function generateVulnerabilityReport(options: {
19
5
  dependencyFiles: string[];
20
6
  snykReports: string[];
21
- failOn: KnownSeverity;
7
+ snykPolicyPath?: string;
8
+ failOn?: KnownSeverity;
9
+ printResult?: (result: string) => void;
22
10
  }): Promise<void>;
23
- export {};
11
+ export declare const command: Command;
24
12
  //# sourceMappingURL=generate-vulnerability-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-vulnerability-report.d.ts","sourceRoot":"","sources":["../../src/commands/generate-vulnerability-report.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAUlC;AAED,aAAK,qBAAqB,GAAG;IAC3B,eAAe,EAAE,iBAAiB,EAAE,CAAC;CACtC,CAAC;AAEF,aAAK,iBAAiB,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAoHF,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB"}
1
+ {"version":3,"file":"generate-vulnerability-report.d.ts","sourceRoot":"","sources":["../../src/commands/generate-vulnerability-report.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAUlC;AAiJD,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB;AAMD,eAAO,MAAM,OAAO,SAyBhB,CAAC"}