scanoss 0.2.26 → 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.
- package/.github/workflows/reuse.yml +15 -0
- package/.github/workflows/scanoss.yml +24 -0
- package/.gitignore +0 -1
- package/.idea/.gitignore +5 -0
- package/.idea/codeStyles/Project.xml +61 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/scanoss.js.iml +12 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +366 -0
- package/.nyc_output/a25d3ac4-ee71-4c5e-926e-3a17714555cd.json +1 -0
- package/.nyc_output/processinfo/a25d3ac4-ee71-4c5e-926e-3a17714555cd.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -0
- package/.reuse/dep5 +16 -0
- package/LICENSES/CC0-1.0.txt +121 -0
- package/LICENSES/MIT.txt +9 -0
- package/README.md +9 -0
- package/build/main/bin/cli-bin.js +5 -3
- package/build/main/commands/dep.js +1 -2
- package/build/main/commands/fingerprint.js +20 -12
- package/build/main/commands/helpers.js +1 -2
- package/build/main/commands/scan.js +7 -2
- package/build/main/index.js +1 -2
- package/build/main/lib/dependencies/DependencyScanner.d.ts +1 -1
- package/build/main/lib/dependencies/DependencyScanner.js +23 -12
- package/build/main/lib/dependencies/DependencyScannerCfg.js +1 -2
- package/build/main/lib/dependencies/DependencyTypes.js +0 -1
- package/build/main/lib/dependencies/LocalDependency/DependencyTypes.js +0 -1
- package/build/main/lib/dependencies/LocalDependency/LocalDependency.js +3 -2
- package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +1 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.js +50 -16
- package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.js +130 -15
- package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.d.ts +10 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.js +146 -10
- package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.js +1 -2
- package/build/main/lib/dependencies/LocalDependency/parsers/rubyParser.js +1 -2
- package/build/main/lib/dependencies/LocalDependency/parsers/utils.js +1 -2
- package/build/main/lib/filters/defaultFilter.js +1 -2
- package/build/main/lib/filters/filtering.js +1 -2
- package/build/main/lib/grpc/GrpcDependencyService.js +1 -2
- package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +62 -0
- package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +128 -0
- package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
- package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.js +1403 -0
- package/build/main/lib/scanner/Dispatcher/DispatchableItem.d.ts +14 -5
- package/build/main/lib/scanner/Dispatcher/DispatchableItem.js +30 -10
- package/build/main/lib/scanner/Dispatcher/Dispatcher.d.ts +2 -2
- package/build/main/lib/scanner/Dispatcher/Dispatcher.js +10 -15
- package/build/main/lib/scanner/Dispatcher/DispatcherResponse.js +1 -2
- package/build/main/lib/scanner/Dispatcher/GlobalControllerAborter.js +1 -2
- package/build/main/lib/scanner/Scannable/ScannableItem.js +1 -2
- package/build/main/lib/scanner/Scanner.js +13 -9
- package/build/main/lib/scanner/ScannerCfg.js +2 -3
- package/build/main/lib/scanner/ScannerQueue.d.ts +3 -0
- package/build/main/lib/scanner/ScannerQueue.js +8 -0
- package/build/main/lib/scanner/ScannerTypes.d.ts +9 -2
- package/build/main/lib/scanner/ScannerTypes.js +8 -3
- package/build/main/lib/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
- package/build/main/lib/scanner/WfpProvider/FingerprintPackage.js +31 -0
- package/build/main/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +178 -21
- package/build/main/lib/scanner/WfpProvider/WfpCalculator/Winnower.d.ts +3 -0
- package/build/main/lib/scanner/WfpProvider/WfpCalculator/Winnower.js +211 -0
- package/build/main/lib/scanner/WfpProvider/WfpProvider.d.ts +2 -2
- package/build/main/lib/scanner/WfpProvider/WfpProvider.js +6 -7
- package/build/main/lib/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +1 -2
- package/build/main/lib/tree/File.js +1 -2
- package/build/main/lib/tree/Folder.js +1 -2
- package/build/main/lib/tree/Node.js +1 -2
- package/build/main/lib/tree/Tree.js +1 -2
- package/build/module/bin/cli-bin.js +5 -2
- package/build/module/commands/fingerprint.js +25 -16
- package/build/module/commands/scan.js +8 -2
- package/build/module/lib/dependencies/DependencyScanner.d.ts +1 -1
- package/build/module/lib/dependencies/DependencyScanner.js +23 -11
- package/build/module/lib/dependencies/LocalDependency/LocalDependency.js +5 -3
- package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +1 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.js +47 -14
- package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.js +130 -14
- package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.d.ts +10 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.js +140 -8
- package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +62 -0
- package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +128 -0
- package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
- package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.js +1403 -0
- package/build/module/lib/scanner/Dispatcher/DispatchableItem.d.ts +14 -5
- package/build/module/lib/scanner/Dispatcher/DispatchableItem.js +32 -10
- package/build/module/lib/scanner/Dispatcher/Dispatcher.d.ts +2 -2
- package/build/module/lib/scanner/Dispatcher/Dispatcher.js +10 -14
- package/build/module/lib/scanner/Scanner.js +12 -8
- package/build/module/lib/scanner/ScannerCfg.js +2 -2
- package/build/module/lib/scanner/ScannerQueue.d.ts +3 -0
- package/build/module/lib/scanner/ScannerQueue.js +4 -0
- package/build/module/lib/scanner/ScannerTypes.d.ts +9 -2
- package/build/module/lib/scanner/ScannerTypes.js +7 -1
- package/build/module/lib/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
- package/build/module/lib/scanner/WfpProvider/FingerprintPackage.js +30 -0
- package/build/module/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +178 -20
- package/build/module/lib/scanner/WfpProvider/WfpCalculator/Winnower.d.ts +3 -0
- package/build/module/lib/scanner/WfpProvider/WfpCalculator/Winnower.js +211 -0
- package/build/module/lib/scanner/WfpProvider/WfpProvider.d.ts +2 -2
- package/build/module/lib/scanner/WfpProvider/WfpProvider.js +6 -6
- package/build/tsconfig.module.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -17
- package/src/bin/cli-bin.ts +4 -1
- package/src/commands/fingerprint.ts +26 -17
- package/src/commands/scan.ts +16 -3
- package/src/lib/dependencies/DependencyScanner.ts +20 -13
- package/src/lib/dependencies/LocalDependency/LocalDependency.ts +8 -2
- package/src/lib/dependencies/LocalDependency/parsers/golangParser.ts +67 -15
- package/src/lib/dependencies/LocalDependency/parsers/mavenParser.ts +143 -16
- package/src/lib/dependencies/LocalDependency/parsers/npmParser.ts +182 -7
- package/src/lib/scanner/Dispatcher/DispatchableItem.ts +45 -11
- package/src/lib/scanner/Dispatcher/Dispatcher.ts +11 -14
- package/src/lib/scanner/Scanner.ts +17 -13
- package/src/lib/scanner/ScannerCfg.ts +2 -1
- package/src/lib/scanner/ScannerTypes.ts +10 -2
- package/src/lib/scanner/WfpProvider/{FingerprintPacket.ts → FingerprintPackage.ts} +4 -14
- package/src/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts +177 -20
- package/src/lib/scanner/WfpProvider/WfpProvider.ts +5 -5
- package/tests/WfpCalculator.spec.ts +103 -0
- package/tests/data/dependencies/Gemfile/1/Gemfile +6 -0
- package/tests/data/dependencies/Gemfile/1/Gemfile~ +0 -0
- package/tests/data/dependencies/Gemfile/2/Gemfile +3 -0
- package/tests/data/dependencies/Gemfile/2/Gemfile~ +6 -0
- package/tests/data/dependencies/Gemfile/3/Gemfile +7 -0
- package/tests/data/dependencies/Gemfile/3/Gemfile~ +6 -0
- package/tests/data/dependencies/Gemfile/4/Gemfile +31 -0
- package/tests/data/dependencies/Gemfile/4/Gemfile~ +7 -0
- package/tests/data/dependencies/Gemfile.lock/1/Gemfile.lock +180 -0
- package/tests/data/dependencies/Gemfile.lock/2/Gemfile.lock +60 -0
- package/tests/data/dependencies/Gemfile.lock/2/Gemfile.lock~ +0 -0
- package/tests/data/dependencies/go.sum/1/go.sum +119 -0
- package/tests/data/dependencies/go.sum/depJSON.sh +23 -0
- package/tests/data/dependencies/package-lock/1/package-lock.json +715 -0
- package/tests/data/dependencies/package-lock/2/package-lock.json +32069 -0
- package/tests/data/dependencies/package-lock/3/package-lock.json +9013 -0
- package/tests/data/dependencies/pom.xml/1/pom.xml +162 -0
- package/tests/data/dependencies/yarn-lock/generate_expected_output.sh +4 -0
- package/tests/data/dependencies/yarn-lock/v1/yarn.lock +50 -0
- package/tests/data/dependencies/yarn-lock/v1/yarn.lock-expected +13 -0
- package/tests/data/dependencies/yarn-lock/v1-complex/yarn.lock +27 -0
- package/tests/data/dependencies/yarn-lock/v1-complex/yarn.lock-expected +8 -0
- package/tests/data/dependencies/yarn-lock/v1-complex2/yarn.lock +220 -0
- package/tests/data/dependencies/yarn-lock/v2/yarn.lock +31 -0
- package/tests/data/dependencies/yarn-lock/v2/yarn.lock-expected +57 -0
- package/tests/data/dependencies/yarn-lock/v2-local/yarn.lock +11 -0
- package/tests/data/dependencies/yarn-lock/v2-local/yarn.lock-expected +27204 -0
- package/tests/data/scanner/file1.c +41 -0
- package/tests/data/scanner/file2.go +87 -0
- package/tests/dependencies/golangParser.goModParser.specs.ts +146 -0
- package/tests/dependencies/npmParser.spec.ts +133 -0
- package/tsconfig.json +4 -3
- package/yarn.lock +4596 -5321
- package/examples/defaultFilter.json +0 -203
- package/package-lock.json +0 -18588
- package/src/lib/scanner/Winnower/WinnowerExtractor.ts +0 -37
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
2
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
3
|
};
|
|
@@ -73,4 +72,4 @@ class Tree {
|
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
exports.Tree = Tree;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJlZS9UcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNENBQW9CO0FBQ3BCLGdEQUEyQjtBQUczQixpQ0FBa0M7QUFFbEMsa0RBQTBCO0FBQzFCLHNEQUE4QjtBQUk5QixNQUFhLElBQUk7SUFTZixZQUFZLElBQVk7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVSxDQUFDLENBQWE7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUM3QyxNQUFNLFVBQVUsR0FBRyxZQUFFO2FBQ2xCLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7YUFDakYsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUM1QixNQUFNLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFckQs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
|
|
@@ -10,13 +10,15 @@ function CLIErrorHandler(e) {
|
|
|
10
10
|
}
|
|
11
11
|
async function main() {
|
|
12
12
|
program
|
|
13
|
-
.version("0.
|
|
13
|
+
.version("0.3.0")
|
|
14
14
|
.description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
|
|
15
15
|
program
|
|
16
16
|
.command('scan <source>')
|
|
17
17
|
.description('Scan a folder/file')
|
|
18
18
|
.option('-w, --wfp', 'Scan a .wfp file instead of a folder')
|
|
19
|
+
.option('-H, --hpsm', 'Scan using winnowing high precision matching')
|
|
19
20
|
.option('-c, --concurrency <number>', 'Number of concurrent connections to use while scanning (optional -default 10)')
|
|
21
|
+
.option('-n, --ignore <ignore>', 'Ignore components specified in the SBOM file')
|
|
20
22
|
.option('-f, --filter <path>', 'Loads an user defined filter (optional)')
|
|
21
23
|
.option('-o, --output <filename>', 'Output result file name (optional - default stdout)')
|
|
22
24
|
.option('-F, --flags <flags>', 'Scanning engine flags (1: disable snippet matching, 2 enable snippet ids, 4: disable dependencies, 8: disable licenses, 16: disable copyrights,32: disable vulnerabilities, 64: disable quality, 128: disable cryptography,256: disable best match, 512: Report identified files)')
|
|
@@ -40,6 +42,7 @@ async function main() {
|
|
|
40
42
|
program
|
|
41
43
|
.command('fingerprint <source>')
|
|
42
44
|
.description('Generates fingerprints for a folder/file')
|
|
45
|
+
.option('-H, --hpsm', 'Scan using winnowing high precision matching')
|
|
43
46
|
.option('-o, --output <filename>', 'Output result file name (optional - default stdout)')
|
|
44
47
|
.option('-p, --block-size <size>', 'Maximum size in Kb for each fingerprint block (optional - default 64Kb)')
|
|
45
48
|
.action((source, options) => { fingerprintHandler(source, options).catch((e) => { CLIErrorHandler(e); }); });
|
|
@@ -52,4 +55,4 @@ catch (e) {
|
|
|
52
55
|
console.error(e);
|
|
53
56
|
process.exit(1);
|
|
54
57
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vY2xpLWJpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLFNBQVMsZUFBZSxDQUFDLENBQVE7SUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUtELEtBQUssVUFBVSxJQUFJO0lBQ2pCLE9BQU87U0FDSixPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2hCLFdBQVcsQ0FBQyw0R0FBNEcsQ0FBQyxDQUFBO0lBRTVILE9BQU87U0FDSixPQUFPLENBQUMsZUFBZSxDQUFDO1NBQ3hCLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztTQUNqQyxNQUFNLENBQUMsV0FBVyxFQUFFLHNDQUFzQyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUM7U0FDcEUsTUFBTSxDQUFDLDRCQUE0QixFQUFFLCtFQUErRSxDQUFDO1NBQ3JILE1BQU0sQ0FBQyx1QkFBdUIsRUFBRyw4Q0FBOEMsQ0FBQztTQUNoRixNQUFNLENBQUMscUJBQXFCLEVBQUUseUNBQXlDLENBQUM7U0FDeEUsTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDO1NBQ3hGLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxtUkFBbVIsQ0FBQztTQUNsVCxNQUFNLENBQUMsNEJBQTRCLEVBQUUsaUZBQWlGLENBQUM7U0FDdkgsTUFBTSxDQUFDLHlCQUF5QixFQUFFLDJEQUEyRCxDQUFDO1NBQzlGLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxvRUFBb0UsQ0FBQztTQUN2RyxNQUFNLENBQUMsdUJBQXVCLEVBQUUseUVBQXlFLENBQUM7U0FDMUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHVFQUF1RSxDQUFDO1NBQ2xHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsOEJBQThCLENBQUM7U0FDdkQsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQyxDQUFDO1NBQzlGLFdBQVcsQ0FBQyxPQUFPLEVBQUU7OzBEQUVnQyxDQUNyRCxDQUFDO0lBRUYsT0FBTztTQUNOLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDdkIsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1NBQ3BDLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxxREFBcUQsQ0FBQztTQUN4RixNQUFNLENBQUMsd0JBQXdCLEVBQUUscURBQXFELENBQUM7U0FDdkYsTUFBTSxDQUFDLHdCQUF3QixFQUFFLDhDQUE4QyxDQUFDO1NBQ2hGLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBO0lBRTlGLE9BQU87U0FDTixPQUFPLENBQUMsc0JBQXNCLENBQUM7U0FDL0IsV0FBVyxDQUFDLDBDQUEwQyxDQUFDO1NBQ3ZELE1BQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUM7U0FDcEUsTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDO1NBQ3hGLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSx5RUFBeUUsQ0FBQztTQUM1RyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBO0lBRXRHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUdELElBQUk7SUFDRixJQUFJLEVBQUUsQ0FBQztDQUNSO0FBQUMsT0FBTyxDQUFDLEVBQUU7SUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDakIifQ==
|
|
@@ -1,28 +1,34 @@
|
|
|
1
|
-
import { isFolder } from
|
|
2
|
-
import { ScannerEvents, WfpCalculator } from
|
|
3
|
-
import { Tree } from
|
|
4
|
-
import { FilterList } from
|
|
1
|
+
import { isFolder } from './helpers';
|
|
2
|
+
import { ScannerEvents, WfpCalculator, WinnowingMode } from '..';
|
|
3
|
+
import { Tree } from '../lib/tree/Tree';
|
|
4
|
+
import { FilterList } from '../lib/filters/filtering';
|
|
5
5
|
import fs from 'fs';
|
|
6
|
-
import { defaultFilter } from
|
|
6
|
+
import { defaultFilter } from '../lib/filters/defaultFilter';
|
|
7
7
|
import cliProgress from 'cli-progress';
|
|
8
8
|
export async function fingerprintHandler(rootPath, options) {
|
|
9
9
|
rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
|
|
10
10
|
rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
|
|
11
11
|
const pathIsFolder = await isFolder(rootPath);
|
|
12
12
|
const wfpCalculator = new WfpCalculator();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
let filesToFingerprint = [];
|
|
14
|
+
if (pathIsFolder) {
|
|
15
|
+
const tree = new Tree(rootPath);
|
|
16
|
+
const filter = new FilterList('');
|
|
17
|
+
filter.load(defaultFilter);
|
|
18
|
+
tree.loadFilter(filter);
|
|
19
|
+
tree.buildTree();
|
|
20
|
+
filesToFingerprint = tree.getFileList();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
filesToFingerprint.push(rootPath);
|
|
24
|
+
}
|
|
19
25
|
const optBar1 = { format: 'Fingerprinting Progress: [{bar}] {percentage}% | Fingerprinted {value} files of {total}' };
|
|
20
26
|
const bar1 = new cliProgress.SingleBar(optBar1, cliProgress.Presets.shades_classic);
|
|
21
27
|
bar1.start(filesToFingerprint.length, 0);
|
|
22
28
|
let fingerprints = '';
|
|
23
|
-
wfpCalculator.on(ScannerEvents.WINNOWING_NEW_CONTENT, (
|
|
24
|
-
bar1.increment(
|
|
25
|
-
fingerprints = fingerprints.concat(
|
|
29
|
+
wfpCalculator.on(ScannerEvents.WINNOWING_NEW_CONTENT, (fingerprintPackage) => {
|
|
30
|
+
bar1.increment(fingerprintPackage.getNumberFilesFingerprinted());
|
|
31
|
+
fingerprints = fingerprints.concat(fingerprintPackage.getContent());
|
|
26
32
|
});
|
|
27
33
|
if (options.verbose)
|
|
28
34
|
wfpCalculator.on(ScannerEvents.WINNOWER_LOG, (log) => {
|
|
@@ -37,6 +43,9 @@ export async function fingerprintHandler(rootPath, options) {
|
|
|
37
43
|
console.log(fingerprints);
|
|
38
44
|
}
|
|
39
45
|
});
|
|
40
|
-
|
|
46
|
+
const wfpInput = { fileList: filesToFingerprint, folderRoot: rootPath };
|
|
47
|
+
if (options.hpsm)
|
|
48
|
+
wfpInput.winnowingMode = WinnowingMode.FULL_WINNOWING_HPSM;
|
|
49
|
+
wfpCalculator.start(wfpInput);
|
|
41
50
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZmluZ2VycHJpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDakUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl0RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUl2QyxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsT0FBWTtJQUVyRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBRSxrQ0FBa0M7SUFDM0UsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSwwQ0FBMEM7SUFDaEcsTUFBTSxZQUFZLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUUxQyxJQUFJLGtCQUFrQixHQUFhLEVBQUUsQ0FBQztJQUN0QyxJQUFJLFlBQVksRUFBRTtRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQTJCLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDekM7U0FBTTtRQUNMLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUNsQztJQUdELE1BQU0sT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLHlGQUF5RixFQUFFLENBQUM7SUFDdEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpDLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN0QixhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGtCQUFzQyxFQUFFLEVBQUU7UUFDL0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUM7UUFDakUsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUUsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUUsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxDQUFDLE9BQU87UUFDakIsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUVMLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUN0RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDakIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBc0IsRUFBQyxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFBO0lBQ3hGLElBQUcsT0FBTyxDQUFDLElBQUk7UUFBRSxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztJQUM1RSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBR2hDLENBQUMifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Scanner } from '../lib/scanner/Scanner';
|
|
2
|
-
import { ScannerEvents } from '../lib/scanner/ScannerTypes';
|
|
2
|
+
import { SbomMode, ScannerEvents, WinnowingMode } from '../lib/scanner/ScannerTypes';
|
|
3
3
|
import { ScannerCfg } from '../lib/scanner/ScannerCfg';
|
|
4
4
|
import { Tree } from '../lib/tree/Tree';
|
|
5
5
|
import cliProgress from 'cli-progress';
|
|
@@ -75,6 +75,12 @@ export async function scanHandler(rootPath, options) {
|
|
|
75
75
|
});
|
|
76
76
|
if (options.wfp)
|
|
77
77
|
scannerInput.wfpPath = rootPath;
|
|
78
|
+
if (options.hpsm)
|
|
79
|
+
scannerInput.winnowingMode = WinnowingMode.FULL_WINNOWING_HPSM;
|
|
80
|
+
if (options.ignore) {
|
|
81
|
+
scannerInput.sbom = fs.readFileSync(options.ignore, 'utf-8');
|
|
82
|
+
scannerInput.sbomMode = SbomMode.SBOM_IGNORE;
|
|
83
|
+
}
|
|
78
84
|
await scanner.scan([scannerInput]);
|
|
79
85
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zY2FuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsUUFBUSxFQUNSLGFBQWEsRUFFYixhQUFhLEVBQ2QsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUl2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBR3BCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLFFBQWdCLEVBQUUsT0FBWTtJQUU5RCxJQUFJLFlBQVksR0FBaUIsRUFBQyxRQUFRLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFFaEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLGdEQUFnRDtJQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLElBQUcsT0FBTyxDQUFDLFdBQVc7UUFBRSxV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
|
|
@@ -19,7 +19,9 @@ export class DependencyScanner {
|
|
|
19
19
|
const grpcResponse = await this.grpcDependencyService.get(request);
|
|
20
20
|
const response = grpcResponse.toObject();
|
|
21
21
|
// Extract scope from localDependencies and add it to response
|
|
22
|
-
|
|
22
|
+
// Also adds the requirements field from localDependency to the response if the server didn't
|
|
23
|
+
// replay back a version
|
|
24
|
+
this.repairOutput(localDependencies, response);
|
|
23
25
|
return response;
|
|
24
26
|
}
|
|
25
27
|
purlAdapter(localDependencies) {
|
|
@@ -57,24 +59,34 @@ export class DependencyScanner {
|
|
|
57
59
|
return null;
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
repairOutput(localdependency, serverResponse) {
|
|
63
|
+
// Create a map with key = [filename + purl] and the value is an object containing:
|
|
64
|
+
// * The scope of the local dependency
|
|
65
|
+
// * The requirement of the local dependency
|
|
66
|
+
// Later this map is used to add information in the server response
|
|
67
|
+
const localDependencyInfo = {};
|
|
62
68
|
for (const file of localdependency.files) {
|
|
63
69
|
const filename = file.file;
|
|
64
|
-
for (const
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
for (const localDependency of file.purls) {
|
|
71
|
+
const localInfo = {};
|
|
72
|
+
if (localDependency?.scope)
|
|
73
|
+
localInfo['scope'] = localDependency.scope;
|
|
74
|
+
if (localDependency?.requirement)
|
|
75
|
+
localInfo['requirement'] = localDependency.requirement;
|
|
76
|
+
localDependencyInfo[filename + localDependency.purl] = localInfo;
|
|
67
77
|
}
|
|
68
78
|
}
|
|
69
79
|
for (const file of serverResponse.filesList) {
|
|
70
80
|
const filename = file.file;
|
|
71
81
|
for (const dependency of file.dependenciesList) {
|
|
72
|
-
const
|
|
73
|
-
if (scope)
|
|
74
|
-
dependency['scope'] = scope;
|
|
82
|
+
const localDependencyData = localDependencyInfo[filename + dependency.purl];
|
|
83
|
+
if (localDependencyData?.scope)
|
|
84
|
+
dependency['scope'] = localDependencyData.scope;
|
|
85
|
+
if (localDependencyData?.requirement && dependency.version == "") {
|
|
86
|
+
dependency.version = localDependencyData.requirement;
|
|
87
|
+
}
|
|
75
88
|
}
|
|
76
89
|
}
|
|
77
|
-
return serverResponse;
|
|
78
90
|
}
|
|
79
91
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNkRBQTZELENBQUM7QUFDcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQU8saUJBQWlCO0lBRXBCLGVBQWUsQ0FBb0I7SUFFbkMscUJBQXFCLENBQXdCO0lBRXJELFlBQVksR0FBRyxHQUFHLElBQUksb0JBQW9CLEVBQUU7UUFDMUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFHTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDakUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZ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
|
|
@@ -2,9 +2,9 @@ import path from 'path';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { requirementsParser } from "./parsers/pyParser";
|
|
4
4
|
import { pomParser } from "./parsers/mavenParser";
|
|
5
|
-
import { packagelockParser, packageParser } from
|
|
5
|
+
import { packagelockParser, packageParser, yarnLockParser } from './parsers/npmParser';
|
|
6
6
|
import { gemfilelockParser, gemfileParser } from "./parsers/rubyParser";
|
|
7
|
-
import { goModParser } from './parsers/golangParser';
|
|
7
|
+
import { goModParser, goSumParser } from './parsers/golangParser';
|
|
8
8
|
export class LocalDependencies {
|
|
9
9
|
parserMap;
|
|
10
10
|
constructor() {
|
|
@@ -20,6 +20,8 @@ export class LocalDependencies {
|
|
|
20
20
|
'Gemfile': gemfileParser,
|
|
21
21
|
'Gemfile.lock': gemfilelockParser,
|
|
22
22
|
'go.mod': goModParser,
|
|
23
|
+
'go.sum': goSumParser,
|
|
24
|
+
'yarn.lock': yarnLockParser
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
async search(files) {
|
|
@@ -42,4 +44,4 @@ export class LocalDependencies {
|
|
|
42
44
|
return results;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxEZXBlbmRlbmN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvTG9jYWxEZXBlbmRlbmN5L0xvY2FsRGVwZW5kZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixjQUFjLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRSxNQUFNLE9BQU8saUJBQWlCO0lBRXBCLFNBQVMsQ0FBaUM7SUFFbEQ7UUFDSTs7O1VBR0U7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2Ysa0JBQWtCLEVBQUUsa0JBQWtCO1lBQ3RDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLGNBQWMsRUFBRSxhQUFhO1lBQzdCLG1CQUFtQixFQUFFLGlCQUFpQjtZQUN0QyxTQUFTLEVBQUUsYUFBYTtZQUN4QixjQUFjLEVBQUUsaUJBQWlCO1lBQ2pDLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLE9BQU8sR0FBdUIsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDOUMsS0FBSyxNQUFNLFFBQVEsSUFBSSxLQUFLLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNuQyxJQUFHO29CQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUNqRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDbkUsSUFBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO3dCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDcEM7Z0JBQUMsT0FBTSxDQUFDLEVBQUU7b0JBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakIsU0FBUztpQkFDVjthQUNGO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { PackageURL } from "packageurl-js";
|
|
2
2
|
import path from "path";
|
|
3
|
-
function parseModule(str) {
|
|
4
|
-
const res = /(?<type>[^\s]+)(?:\s)+(?<ns_name>[^\s]+)\s?(?<version>(.*))/.exec(str);
|
|
5
|
-
return {
|
|
6
|
-
type: res.groups.type,
|
|
7
|
-
ns_name: res.groups.ns_name,
|
|
8
|
-
version: res.groups.version
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
3
|
function parseDepLink(str) {
|
|
12
4
|
const res = /.*?(?<ns_name>[^\s]+)\s+(?<version>(.*))/.exec(str);
|
|
13
5
|
return {
|
|
@@ -15,6 +7,13 @@ function parseDepLink(str) {
|
|
|
15
7
|
version: res?.groups?.version
|
|
16
8
|
};
|
|
17
9
|
}
|
|
10
|
+
function getDepDataGoModFromLine(line) {
|
|
11
|
+
const { ns_name, version } = parseDepLink(line);
|
|
12
|
+
const index = ns_name.lastIndexOf('/');
|
|
13
|
+
const namespace = ns_name.substring(0, index);
|
|
14
|
+
const name = ns_name.substring(index + 1);
|
|
15
|
+
return { namespace, name, version };
|
|
16
|
+
}
|
|
18
17
|
// Removes comments and spaces
|
|
19
18
|
function preprocessLine(line) {
|
|
20
19
|
if (line.includes("//"))
|
|
@@ -31,17 +30,13 @@ export function goModParser(fileContent, filePath) {
|
|
|
31
30
|
return results;
|
|
32
31
|
const lines = fileContent.split('\n');
|
|
33
32
|
const require = [];
|
|
34
|
-
const exclude = [];
|
|
35
33
|
for (let num = 0; num < lines.length; num += 1) {
|
|
36
34
|
let line = preprocessLine(lines[num]);
|
|
37
35
|
if (line.includes('require') && line.includes('(')) {
|
|
38
36
|
num += 1;
|
|
39
37
|
line = preprocessLine(lines[num]);
|
|
40
38
|
while (num < lines.length && line !== ')') {
|
|
41
|
-
const {
|
|
42
|
-
const index = ns_name.lastIndexOf('/');
|
|
43
|
-
const namespace = ns_name.substring(0, index);
|
|
44
|
-
const name = ns_name.substring(index + 1);
|
|
39
|
+
const { namespace, name, version } = getDepDataGoModFromLine(line);
|
|
45
40
|
const purlString = new PackageURL(PURL_TYPE, namespace, name, version, undefined, undefined).toString();
|
|
46
41
|
results.purls.push({ purl: purlString });
|
|
47
42
|
require.push(line);
|
|
@@ -52,4 +47,42 @@ export function goModParser(fileContent, filePath) {
|
|
|
52
47
|
}
|
|
53
48
|
return results;
|
|
54
49
|
}
|
|
55
|
-
|
|
50
|
+
function parseGoSumDepLink(str) {
|
|
51
|
+
const res = /.*?(?<ns_name>[^\s]+)\s+(?<version>(.*))\s+h1:(?<checksum>(.*))/.exec(str);
|
|
52
|
+
return {
|
|
53
|
+
ns_name: res?.groups?.ns_name,
|
|
54
|
+
version: res?.groups?.version,
|
|
55
|
+
checksum: res?.groups?.checksum
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function getDepDataGoSumFromLine(line) {
|
|
59
|
+
const { ns_name, version } = parseGoSumDepLink(line);
|
|
60
|
+
if (!ns_name)
|
|
61
|
+
return {};
|
|
62
|
+
const index = ns_name.lastIndexOf('/');
|
|
63
|
+
const namespace = ns_name.substring(0, index);
|
|
64
|
+
const name = ns_name.substring(index + 1);
|
|
65
|
+
return { namespace, name, version };
|
|
66
|
+
}
|
|
67
|
+
// See reference on: https://go.dev/ref/mod#go-mod-file
|
|
68
|
+
export function goSumParser(fileContent, filePath) {
|
|
69
|
+
// If the file is not a go.mod manifest file, return an empty results
|
|
70
|
+
const results = { file: filePath, purls: [] };
|
|
71
|
+
if (path.basename(filePath) != 'go.sum')
|
|
72
|
+
return results;
|
|
73
|
+
const lines = fileContent.split('\n');
|
|
74
|
+
for (let num = 0; num < lines.length; num += 1) {
|
|
75
|
+
let line = preprocessLine(lines[num]); //Deletes coments
|
|
76
|
+
if (!line)
|
|
77
|
+
continue;
|
|
78
|
+
line = line.replace('/go.mod', '');
|
|
79
|
+
const { namespace, name, version } = getDepDataGoSumFromLine(line);
|
|
80
|
+
if (!name)
|
|
81
|
+
continue;
|
|
82
|
+
//const purlString = new PackageURL(PURL_TYPE, namespace, name, undefined, undefined, undefined).toString();
|
|
83
|
+
const purlString = `pkg:${PURL_TYPE}/${namespace}/${name}`;
|
|
84
|
+
results.purls.push({ purl: purlString, requirement: version });
|
|
85
|
+
}
|
|
86
|
+
return results;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29sYW5nUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvTG9jYWxEZXBlbmRlbmN5L3BhcnNlcnMvZ29sYW5nUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRXhCLFNBQVMsWUFBWSxDQUFFLEdBQVc7SUFDaEMsTUFBTSxHQUFHLEdBQUcsMENBQTBDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPO1FBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU87S0FDOUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQVk7SUFDM0MsTUFBTSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFOUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUUxQyxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsOEJBQThCO0FBQzlCLFNBQVMsY0FBYyxDQUFDLElBQVk7SUFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNyQixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFD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
|
|
@@ -21,17 +21,9 @@ export function pomParser(fileContent, filePath) {
|
|
|
21
21
|
const artifactId = dependency.match(/<artifactId>([^<]*)<\/artifactId>/);
|
|
22
22
|
const name = artifactId ? artifactId[1] : '';
|
|
23
23
|
const versionReg = dependency.match(/<version>([^<]*)<\/version>/);
|
|
24
|
-
let version =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (ver[1] === 'project.version') { // TODO: Add support for project.version
|
|
28
|
-
version = undefined;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
const res = fileContent.match(new RegExp(`<${ver[1]}>([^<]*)<\/${ver[1]}>`));
|
|
32
|
-
version = res.length >= 1 ? res[1] : '';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
24
|
+
let version = null;
|
|
25
|
+
if (versionReg && versionReg.length > 0)
|
|
26
|
+
version = resolve_version(versionReg[1], fileContent);
|
|
35
27
|
let purlQualifiers;
|
|
36
28
|
const type = dependency.match(/<type>([^<]*)<\/type>/);
|
|
37
29
|
if (type) {
|
|
@@ -40,11 +32,135 @@ export function pomParser(fileContent, filePath) {
|
|
|
40
32
|
}
|
|
41
33
|
// Extract scope.
|
|
42
34
|
const scopeRes = dependency.match(/<scope>([^<]*)<\/scope>/);
|
|
43
|
-
const scope = scopeRes ? scopeRes[1] :
|
|
35
|
+
const scope = scopeRes ? scopeRes[1] : null;
|
|
44
36
|
const purlString = new PackageURL(PURL_TYPE, namespace, name, version, purlQualifiers, undefined).toString();
|
|
45
|
-
results.purls.push({ purl: purlString, scope
|
|
37
|
+
results.purls.push({ purl: purlString, scope });
|
|
46
38
|
});
|
|
47
39
|
}
|
|
48
40
|
return results;
|
|
49
41
|
}
|
|
50
|
-
|
|
42
|
+
function resolve_version(dependency_version, file_content) {
|
|
43
|
+
// See properties: https://maven.apache.org/pom.html#properties
|
|
44
|
+
let version = '';
|
|
45
|
+
if (dependency_version) {
|
|
46
|
+
if (/\${project.version}/.test(dependency_version)) {
|
|
47
|
+
version = extract_content_from_tag(file_content, ['project', 'version']);
|
|
48
|
+
}
|
|
49
|
+
else if (/\${.*?}/.test(dependency_version)) {
|
|
50
|
+
const property = dependency_version.match(/\${(.*?)}/)[1];
|
|
51
|
+
const result = file_content.match(new RegExp(`<${property}>([^<]*)<\/${property}>`));
|
|
52
|
+
if (result && result.length > 0)
|
|
53
|
+
version = result[1];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
version = dependency_version.toString();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return version;
|
|
60
|
+
}
|
|
61
|
+
function get_start_tag_name(line) {
|
|
62
|
+
const result = line.match(/\<([\w\-\.]+).*?>/);
|
|
63
|
+
if (result)
|
|
64
|
+
return result[1].trim();
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
function get_end_tag_name(line) {
|
|
68
|
+
const result = line.match(/\<\/([\w\-\.]+) ?>/);
|
|
69
|
+
if (result)
|
|
70
|
+
return result[1].trim();
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
function get_end_tag(line) {
|
|
74
|
+
const result = get_end_tag_name(line);
|
|
75
|
+
if (result !== '')
|
|
76
|
+
return `</${result}>`;
|
|
77
|
+
return '';
|
|
78
|
+
}
|
|
79
|
+
function get_start_tag(line) {
|
|
80
|
+
const result = get_start_tag_name(line);
|
|
81
|
+
if (result !== '')
|
|
82
|
+
return `<${result}>`;
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
function element_match(openTag, closeTag) {
|
|
86
|
+
return get_start_tag_name(openTag) === get_end_tag_name(closeTag);
|
|
87
|
+
}
|
|
88
|
+
function is_element_complete(line) {
|
|
89
|
+
return get_start_tag_name(line) === get_end_tag_name(line);
|
|
90
|
+
}
|
|
91
|
+
function get_offset_until_end_of_tag(lines, end_tag_name) {
|
|
92
|
+
let i = 0;
|
|
93
|
+
for (const line of lines) {
|
|
94
|
+
if (get_end_tag_name(line) === end_tag_name)
|
|
95
|
+
break;
|
|
96
|
+
i += 1;
|
|
97
|
+
}
|
|
98
|
+
return i;
|
|
99
|
+
}
|
|
100
|
+
function remove_comments(lines) {
|
|
101
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
102
|
+
let openCommentFlag = /<!--/.test(lines[i]);
|
|
103
|
+
let endCommentFlag = /-->/.test(lines[i]);
|
|
104
|
+
if (openCommentFlag && endCommentFlag)
|
|
105
|
+
lines[i] = lines[i].replace(/<!--.*-->/, '');
|
|
106
|
+
else if (openCommentFlag) {
|
|
107
|
+
while (!/-->/.test(lines[i]) && i < lines.length) {
|
|
108
|
+
lines[i] = '';
|
|
109
|
+
i += 1;
|
|
110
|
+
}
|
|
111
|
+
lines[i] = lines[i].replace(/.*-->/, '');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return lines;
|
|
115
|
+
}
|
|
116
|
+
function extract_content_from_tag(file_content, selector) {
|
|
117
|
+
let lines = file_content.split('\n');
|
|
118
|
+
const stack = [];
|
|
119
|
+
let selectorIndex = 0;
|
|
120
|
+
let startTagName = '';
|
|
121
|
+
let endTagName = '';
|
|
122
|
+
let content = '';
|
|
123
|
+
// Sanitize xml: Removes comments
|
|
124
|
+
lines = remove_comments(lines);
|
|
125
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
126
|
+
let line = lines[i].trim();
|
|
127
|
+
if (line === '')
|
|
128
|
+
continue;
|
|
129
|
+
startTagName = get_start_tag_name(line);
|
|
130
|
+
endTagName = get_end_tag_name(line);
|
|
131
|
+
// Element complete in the same line and different than my selector
|
|
132
|
+
if (selector[selectorIndex] !== startTagName && is_element_complete(line))
|
|
133
|
+
continue;
|
|
134
|
+
// Element spans multiline and is different than my selector
|
|
135
|
+
// Loop until find corresponding end tag
|
|
136
|
+
if (selector[selectorIndex] !== startTagName) {
|
|
137
|
+
i += 1;
|
|
138
|
+
while (i < lines.length && !element_match(line, lines[i]))
|
|
139
|
+
i += 1;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// lines[i] points to the opening tag of the current selector[selectorIndex]
|
|
143
|
+
selectorIndex += 1;
|
|
144
|
+
stack.push(startTagName);
|
|
145
|
+
// Target reached
|
|
146
|
+
if (selector.length === stack.length) {
|
|
147
|
+
// Target has only one line
|
|
148
|
+
if (is_element_complete(line)) {
|
|
149
|
+
line = line.replace(get_end_tag(line), '');
|
|
150
|
+
line = line.replace(get_start_tag(line), '');
|
|
151
|
+
return line;
|
|
152
|
+
}
|
|
153
|
+
// Extracts everything beetwen opening and closing tag and return.
|
|
154
|
+
i += 1;
|
|
155
|
+
while (i < lines.length && !element_match(line, lines[i])) {
|
|
156
|
+
content += lines[i].trim();
|
|
157
|
+
i += 1;
|
|
158
|
+
}
|
|
159
|
+
return content;
|
|
160
|
+
}
|
|
161
|
+
startTagName = '';
|
|
162
|
+
endTagName = '';
|
|
163
|
+
}
|
|
164
|
+
return '';
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW5QYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9tYXZlblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFFMUIsZ0RBQWdEO0FBQ2hELDhGQUE4RjtBQUM5Riw2RkFBNkY7QUFDN0YsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sVUFBVSxTQUFTLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUUzRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQXFCLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDOUQsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ25GLElBQUcsWUFBWSxFQUFFO1FBRWYseUNBQXlDO1FBQ3pDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDaEMsMkNBQTJDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTVDLDBDQUEwQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7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
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import { ILocalDependency } from "../DependencyTypes";
|
|
2
2
|
export declare function packageParser(fileContent: string, filePath: string): ILocalDependency;
|
|
3
3
|
export declare function packagelockParser(fileContent: string, filePath: string): ILocalDependency;
|
|
4
|
+
export declare function yarnLockParser(fileContent: string, filePath: string): ILocalDependency;
|
|
5
|
+
declare enum YarnLockVersionEnum {
|
|
6
|
+
"V1" = 0,
|
|
7
|
+
"V2" = 1,
|
|
8
|
+
UnknownYarnLockFormat = 2
|
|
9
|
+
}
|
|
10
|
+
export declare function yarnLockRecognizeVersion(fileContent: string): YarnLockVersionEnum;
|
|
11
|
+
export declare function yarnLockV1Parser(fileContent: string, filePath: string): ILocalDependency;
|
|
12
|
+
export declare function yarnLockV2Parser(fileContent: string, filePath: string): ILocalDependency;
|
|
13
|
+
export {};
|