scanoss 0.7.5 → 0.7.8
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/.idea/workspace.xml +20 -19
- package/build/main/cli/bin/cli-bin.d.ts +2 -1
- package/build/main/cli/bin/cli-bin.js +10 -2
- package/build/main/package.json +120 -0
- package/build/main/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +1 -1
- package/build/main/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +4 -4
- package/build/main/sdk/scanner/Dispatcher/Dispatcher.js +5 -2
- package/build/main/sdk/scanner/ScannerCfg.js +3 -3
- package/build/main/src/cli/bin/cli-bin.d.ts +2 -0
- package/build/main/src/cli/bin/cli-bin.js +68 -0
- package/build/main/src/cli/commands/dep.d.ts +1 -0
- package/build/main/src/cli/commands/dep.js +38 -0
- package/build/main/src/cli/commands/helpers.d.ts +2 -0
- package/build/main/src/cli/commands/helpers.js +25 -0
- package/build/main/src/cli/commands/scan.d.ts +1 -0
- package/build/main/src/cli/commands/scan.js +138 -0
- package/build/main/src/cli/commands/wfp.d.ts +1 -0
- package/build/main/src/cli/commands/wfp.js +54 -0
- package/build/main/src/index.d.ts +14 -0
- package/build/main/src/index.js +30 -0
- package/build/main/src/sdk/DataLayer/DataLayerTypes.d.ts +108 -0
- package/build/main/src/sdk/DataLayer/DataLayerTypes.js +5 -0
- package/build/main/src/sdk/DataLayer/DataProviderManager.d.ts +7 -0
- package/build/main/src/sdk/DataLayer/DataProviderManager.js +24 -0
- package/build/main/src/sdk/DataLayer/DataProviders/ComponentDataProvider.d.ts +13 -0
- package/build/main/src/sdk/DataLayer/DataProviders/ComponentDataProvider.js +164 -0
- package/build/main/src/sdk/DataLayer/DataProviders/DependencyDataProvider.d.ts +9 -0
- package/build/main/src/sdk/DataLayer/DataProviders/DependencyDataProvider.js +37 -0
- package/build/main/src/sdk/DataLayer/DataProviders/LicenseDataProvider.d.ts +18 -0
- package/build/main/src/sdk/DataLayer/DataProviders/LicenseDataProvider.js +148 -0
- package/build/main/src/sdk/DataLayer/DataProviders/SummaryDataProvider.d.ts +11 -0
- package/build/main/src/sdk/DataLayer/DataProviders/SummaryDataProvider.js +33 -0
- package/build/main/src/sdk/Decompress/DecompressionManager.d.ts +12 -0
- package/build/main/src/sdk/Decompress/DecompressionManager.js +73 -0
- package/build/main/src/sdk/Decompress/Decompressor/DecompressTgz.d.ts +5 -0
- package/build/main/src/sdk/Decompress/Decompressor/DecompressTgz.js +22 -0
- package/build/main/src/sdk/Decompress/Decompressor/DecompressZips.d.ts +5 -0
- package/build/main/src/sdk/Decompress/Decompressor/DecompressZips.js +24 -0
- package/build/main/src/sdk/Decompress/Decompressor/Decompressor.d.ts +10 -0
- package/build/main/src/sdk/Decompress/Decompressor/Decompressor.js +18 -0
- package/build/main/src/sdk/Dependencies/DependencyScanner.d.ts +11 -0
- package/build/main/src/sdk/Dependencies/DependencyScanner.js +96 -0
- package/build/main/src/sdk/Dependencies/DependencyScannerCfg.d.ts +4 -0
- package/build/main/src/sdk/Dependencies/DependencyScannerCfg.js +10 -0
- package/build/main/src/sdk/Dependencies/DependencyTypes.d.ts +21 -0
- package/build/main/src/sdk/Dependencies/DependencyTypes.js +2 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/DependencyTypes.js +2 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +8 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/LocalDependency.js +102 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +2 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +95 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +3 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/golangParser.js +97 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +183 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +13 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/npmParser.js +187 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +3 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +58 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/pyParser.js +64 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +3 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +132 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/utils.d.ts +2 -0
- package/build/main/src/sdk/Dependencies/LocalDependency/parsers/utils.js +19 -0
- package/build/main/src/sdk/Report/Report.d.ts +8 -0
- package/build/main/src/sdk/Report/Report.js +26 -0
- package/build/main/src/sdk/filters/DefaultFilterForDependencies.d.ts +16 -0
- package/build/main/src/sdk/filters/DefaultFilterForDependencies.js +145 -0
- package/build/main/src/sdk/filters/DefaultFilterForScanning.d.ts +16 -0
- package/build/main/src/sdk/filters/DefaultFilterForScanning.js +194 -0
- package/build/main/src/sdk/filters/filtering.d.ts +32 -0
- package/build/main/src/sdk/filters/filtering.js +228 -0
- package/build/main/src/sdk/grpc/GrpcDependencyService.d.ts +11 -0
- package/build/main/src/sdk/grpc/GrpcDependencyService.js +86 -0
- package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
- package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
- package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
- package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
- package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +39 -0
- package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
- package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
- package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
- package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +19 -0
- package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
- package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
- package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
- package/build/main/src/sdk/scanner/Dispatcher/DispatchableItem.d.ts +19 -0
- package/build/main/src/sdk/scanner/Dispatcher/DispatchableItem.js +43 -0
- package/build/main/src/sdk/scanner/Dispatcher/Dispatcher.d.ts +20 -0
- package/build/main/src/sdk/scanner/Dispatcher/Dispatcher.js +160 -0
- package/build/main/src/sdk/scanner/Dispatcher/DispatcherResponse.d.ts +12 -0
- package/build/main/src/sdk/scanner/Dispatcher/DispatcherResponse.js +33 -0
- package/build/main/src/sdk/scanner/Dispatcher/GlobalControllerAborter.d.ts +10 -0
- package/build/main/src/sdk/scanner/Dispatcher/GlobalControllerAborter.js +32 -0
- package/build/main/src/sdk/scanner/Fingerprint.d.ts +16 -0
- package/build/main/src/sdk/scanner/Fingerprint.js +78 -0
- package/build/main/src/sdk/scanner/Scannable/ScannableItem.d.ts +15 -0
- package/build/main/src/sdk/scanner/Scannable/ScannableItem.js +27 -0
- package/build/main/src/sdk/scanner/Scanner.d.ts +46 -0
- package/build/main/src/sdk/scanner/Scanner.js +283 -0
- package/build/main/src/sdk/scanner/ScannerCfg.d.ts +16 -0
- package/build/main/src/sdk/scanner/ScannerCfg.js +30 -0
- package/build/main/src/sdk/scanner/ScannerTypes.d.ts +121 -0
- package/build/main/src/sdk/scanner/ScannerTypes.js +48 -0
- package/build/main/src/sdk/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
- package/build/main/src/sdk/scanner/WfpProvider/FingerprintPackage.js +31 -0
- package/build/main/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +20 -0
- package/build/main/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +492 -0
- package/build/main/src/sdk/scanner/WfpProvider/WfpProvider.d.ts +35 -0
- package/build/main/src/sdk/scanner/WfpProvider/WfpProvider.js +68 -0
- package/build/main/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +21 -0
- package/build/main/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +139 -0
- package/build/main/src/sdk/tree/File.d.ts +7 -0
- package/build/main/src/sdk/tree/File.js +24 -0
- package/build/main/src/sdk/tree/Filters/DecompressionFilter.d.ts +7 -0
- package/build/main/src/sdk/tree/Filters/DecompressionFilter.js +21 -0
- package/build/main/src/sdk/tree/Filters/DependencyFilter.d.ts +7 -0
- package/build/main/src/sdk/tree/Filters/DependencyFilter.js +17 -0
- package/build/main/src/sdk/tree/Filters/Filter.d.ts +4 -0
- package/build/main/src/sdk/tree/Filters/Filter.js +6 -0
- package/build/main/src/sdk/tree/Filters/ScanFilter.d.ts +7 -0
- package/build/main/src/sdk/tree/Filters/ScanFilter.js +17 -0
- package/build/main/src/sdk/tree/Folder.d.ts +12 -0
- package/build/main/src/sdk/tree/Folder.js +58 -0
- package/build/main/src/sdk/tree/Node.d.ts +17 -0
- package/build/main/src/sdk/tree/Node.js +25 -0
- package/build/main/src/sdk/tree/Tree.d.ts +18 -0
- package/build/main/src/sdk/tree/Tree.js +70 -0
- package/build/main/tsconfig.tsbuildinfo +125 -122
- package/build/module/cli/bin/cli-bin.d.ts +2 -1
- package/build/module/cli/bin/cli-bin.js +6 -2
- package/build/module/package.json +120 -0
- package/build/module/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +1 -1
- package/build/module/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +4 -4
- package/build/module/sdk/scanner/Dispatcher/Dispatcher.js +5 -2
- package/build/module/sdk/scanner/ScannerCfg.js +3 -3
- package/build/module/src/cli/bin/cli-bin.d.ts +2 -0
- package/build/module/src/cli/bin/cli-bin.js +67 -0
- package/build/module/src/cli/commands/dep.d.ts +1 -0
- package/build/module/src/cli/commands/dep.js +32 -0
- package/build/module/src/cli/commands/helpers.d.ts +2 -0
- package/build/module/src/cli/commands/helpers.js +19 -0
- package/build/module/src/cli/commands/scan.d.ts +1 -0
- package/build/module/src/cli/commands/scan.js +135 -0
- package/build/module/src/cli/commands/wfp.d.ts +1 -0
- package/build/module/src/cli/commands/wfp.js +48 -0
- package/build/module/src/index.d.ts +14 -0
- package/build/module/src/index.js +19 -0
- package/build/module/src/sdk/DataLayer/DataLayerTypes.d.ts +108 -0
- package/build/module/src/sdk/DataLayer/DataLayerTypes.js +5 -0
- package/build/module/src/sdk/DataLayer/DataProviderManager.d.ts +7 -0
- package/build/module/src/sdk/DataLayer/DataProviderManager.js +21 -0
- package/build/module/src/sdk/DataLayer/DataProviders/ComponentDataProvider.d.ts +13 -0
- package/build/module/src/sdk/DataLayer/DataProviders/ComponentDataProvider.js +159 -0
- package/build/module/src/sdk/DataLayer/DataProviders/DependencyDataProvider.d.ts +9 -0
- package/build/module/src/sdk/DataLayer/DataProviders/DependencyDataProvider.js +34 -0
- package/build/module/src/sdk/DataLayer/DataProviders/LicenseDataProvider.d.ts +18 -0
- package/build/module/src/sdk/DataLayer/DataProviders/LicenseDataProvider.js +145 -0
- package/build/module/src/sdk/DataLayer/DataProviders/SummaryDataProvider.d.ts +11 -0
- package/build/module/src/sdk/DataLayer/DataProviders/SummaryDataProvider.js +30 -0
- package/build/module/src/sdk/Decompress/DecompressionManager.d.ts +12 -0
- package/build/module/src/sdk/Decompress/DecompressionManager.js +67 -0
- package/build/module/src/sdk/Decompress/Decompressor/DecompressTgz.d.ts +5 -0
- package/build/module/src/sdk/Decompress/Decompressor/DecompressTgz.js +16 -0
- package/build/module/src/sdk/Decompress/Decompressor/DecompressZips.d.ts +5 -0
- package/build/module/src/sdk/Decompress/Decompressor/DecompressZips.js +18 -0
- package/build/module/src/sdk/Decompress/Decompressor/Decompressor.d.ts +10 -0
- package/build/module/src/sdk/Decompress/Decompressor/Decompressor.js +15 -0
- package/build/module/src/sdk/Dependencies/DependencyScanner.d.ts +11 -0
- package/build/module/src/sdk/Dependencies/DependencyScanner.js +93 -0
- package/build/module/src/sdk/Dependencies/DependencyScannerCfg.d.ts +4 -0
- package/build/module/src/sdk/Dependencies/DependencyScannerCfg.js +7 -0
- package/build/module/src/sdk/Dependencies/DependencyTypes.d.ts +21 -0
- package/build/module/src/sdk/Dependencies/DependencyTypes.js +2 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/DependencyTypes.js +2 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +8 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/LocalDependency.js +96 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +2 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +87 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +3 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/golangParser.js +88 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +180 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +13 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/npmParser.js +175 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +3 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +49 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/pyParser.js +57 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +3 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +125 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/utils.d.ts +2 -0
- package/build/module/src/sdk/Dependencies/LocalDependency/parsers/utils.js +15 -0
- package/build/module/src/sdk/Report/Report.d.ts +8 -0
- package/build/module/src/sdk/Report/Report.js +20 -0
- package/build/module/src/sdk/filters/DefaultFilterForDependencies.d.ts +16 -0
- package/build/module/src/sdk/filters/DefaultFilterForDependencies.js +143 -0
- package/build/module/src/sdk/filters/DefaultFilterForScanning.d.ts +16 -0
- package/build/module/src/sdk/filters/DefaultFilterForScanning.js +192 -0
- package/build/module/src/sdk/filters/filtering.d.ts +32 -0
- package/build/module/src/sdk/filters/filtering.js +203 -0
- package/build/module/src/sdk/grpc/GrpcDependencyService.d.ts +11 -0
- package/build/module/src/sdk/grpc/GrpcDependencyService.js +64 -0
- package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
- package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
- package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
- package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
- package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +39 -0
- package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
- package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
- package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
- package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +19 -0
- package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
- package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
- package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
- package/build/module/src/sdk/scanner/Dispatcher/DispatchableItem.d.ts +19 -0
- package/build/module/src/sdk/scanner/Dispatcher/DispatchableItem.js +37 -0
- package/build/module/src/sdk/scanner/Dispatcher/Dispatcher.d.ts +20 -0
- package/build/module/src/sdk/scanner/Dispatcher/Dispatcher.js +135 -0
- package/build/module/src/sdk/scanner/Dispatcher/DispatcherResponse.d.ts +12 -0
- package/build/module/src/sdk/scanner/Dispatcher/DispatcherResponse.js +30 -0
- package/build/module/src/sdk/scanner/Dispatcher/GlobalControllerAborter.d.ts +10 -0
- package/build/module/src/sdk/scanner/Dispatcher/GlobalControllerAborter.js +26 -0
- package/build/module/src/sdk/scanner/Fingerprint.d.ts +16 -0
- package/build/module/src/sdk/scanner/Fingerprint.js +54 -0
- package/build/module/src/sdk/scanner/Scannable/ScannableItem.d.ts +15 -0
- package/build/module/src/sdk/scanner/Scannable/ScannableItem.js +24 -0
- package/build/module/src/sdk/scanner/Scanner.d.ts +46 -0
- package/build/module/src/sdk/scanner/Scanner.js +275 -0
- package/build/module/src/sdk/scanner/ScannerCfg.d.ts +16 -0
- package/build/module/src/sdk/scanner/ScannerCfg.js +27 -0
- package/build/module/src/sdk/scanner/ScannerTypes.d.ts +121 -0
- package/build/module/src/sdk/scanner/ScannerTypes.js +46 -0
- package/build/module/src/sdk/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
- package/build/module/src/sdk/scanner/WfpProvider/FingerprintPackage.js +28 -0
- package/build/module/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +20 -0
- package/build/module/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +486 -0
- package/build/module/src/sdk/scanner/WfpProvider/WfpProvider.d.ts +35 -0
- package/build/module/src/sdk/scanner/WfpProvider/WfpProvider.js +65 -0
- package/build/module/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +21 -0
- package/build/module/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +132 -0
- package/build/module/src/sdk/tree/File.d.ts +7 -0
- package/build/module/src/sdk/tree/File.js +19 -0
- package/build/module/src/sdk/tree/Filters/DecompressionFilter.d.ts +7 -0
- package/build/module/src/sdk/tree/Filters/DecompressionFilter.js +18 -0
- package/build/module/src/sdk/tree/Filters/DependencyFilter.d.ts +7 -0
- package/build/module/src/sdk/tree/Filters/DependencyFilter.js +14 -0
- package/build/module/src/sdk/tree/Filters/Filter.d.ts +4 -0
- package/build/module/src/sdk/tree/Filters/Filter.js +3 -0
- package/build/module/src/sdk/tree/Filters/ScanFilter.d.ts +7 -0
- package/build/module/src/sdk/tree/Filters/ScanFilter.js +14 -0
- package/build/module/src/sdk/tree/Folder.d.ts +12 -0
- package/build/module/src/sdk/tree/Folder.js +53 -0
- package/build/module/src/sdk/tree/Node.d.ts +17 -0
- package/build/module/src/sdk/tree/Node.js +22 -0
- package/build/module/src/sdk/tree/Tree.d.ts +18 -0
- package/build/module/src/sdk/tree/Tree.js +64 -0
- package/build/module/tsconfig.module.tsbuildinfo +125 -122
- package/package-lock.json +17117 -0
- package/package.json +1 -1
- package/src/cli/bin/cli-bin.ts +7 -4
- package/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.ts +10 -9
- package/src/sdk/scanner/Dispatcher/Dispatcher.ts +5 -2
- package/src/sdk/scanner/ScannerCfg.ts +2 -2
- package/yarn.lock +4977 -4864
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from 'commander';
|
|
3
|
+
import { depHandler } from '../commands/dep';
|
|
4
|
+
import { wfpHandler } from '../commands/wfp';
|
|
5
|
+
import { scanHandler } from '../commands/scan';
|
|
6
|
+
function CLIErrorHandler(e) {
|
|
7
|
+
console.error(' ');
|
|
8
|
+
console.error(e);
|
|
9
|
+
process.exit(1);
|
|
10
|
+
}
|
|
11
|
+
async function main() {
|
|
12
|
+
program
|
|
13
|
+
.version("0.6.2")
|
|
14
|
+
.description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
|
|
15
|
+
program
|
|
16
|
+
.command('scan <source>')
|
|
17
|
+
.description('Scan a folder/file')
|
|
18
|
+
.option('-w, --wfp', 'Scan a .wfp file instead of a folder')
|
|
19
|
+
.option('-H, --hpsm', 'Scan using winnowing high precision matching')
|
|
20
|
+
.option('-x, --extract', 'Extract compressed files before launch scan in folder <<zip_name>>-unzipped')
|
|
21
|
+
.option(' --extract-overwrite', 'Overwrite folder when decompressing if exists')
|
|
22
|
+
.option(' --extract-deep <number>', 'Sets uncompress recursion level')
|
|
23
|
+
.option(' --extract-suffix <suffix>', 'Sets suffix for the folder name')
|
|
24
|
+
.option('-c, --concurrency <number>', 'Number of concurrent connections to use while scanning (optional -default 10)')
|
|
25
|
+
.option('-n, --ignore <ignore>', 'Ignore components specified in the SBOM file')
|
|
26
|
+
.option('-o, --output <filename>', 'Output result file name (optional - default stdout)')
|
|
27
|
+
.option('-f, --format <format>', 'Result output format. {JSON, HTML} Default: JSON')
|
|
28
|
+
.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)')
|
|
29
|
+
.option('-P, --post-size <postsize>', 'Number of kilobytes to limit the post to while scanning (optional - default 64)')
|
|
30
|
+
.option('-R, --max-retry <retry>', 'Max number of retries for each POST (optional -default 5)')
|
|
31
|
+
.option('-M, --timeout <timeout>', 'Timeout (in seconds) for API communication (optional -default 120)')
|
|
32
|
+
.option('-D, --dependencies', 'Add dependency scanning')
|
|
33
|
+
.option('-a, --apiurl <apiurl>', 'SCANOSS API URL (optional - default: https://osskb.org/api/scan/direct)')
|
|
34
|
+
.option('-a, --api2url <api2url>', 'SCANOSS gRPC API 2.0 URL (optional - default: scanoss.com)')
|
|
35
|
+
.option('-k, --key <key>', 'SCANOSS API Key token (optional - not required for default OSSKB URL)')
|
|
36
|
+
.option('--ignore-cert-errors', 'Ignore self signed certificate errors')
|
|
37
|
+
.option('--ca-cert <cert>', 'Specify a path for a cert used in SSL/TLS connection')
|
|
38
|
+
.option('--proxy <proxy>', 'Use proxy')
|
|
39
|
+
.option('-v, --verbose', 'Makes scan operation verbose')
|
|
40
|
+
.action((source, options) => { scanHandler(source, options).catch((e) => { CLIErrorHandler(e); }); })
|
|
41
|
+
.addHelpText('after', `
|
|
42
|
+
Examples:
|
|
43
|
+
$ scanoss-js scan -o scan-output.json <source-folder>`);
|
|
44
|
+
program
|
|
45
|
+
.command('dep <source>')
|
|
46
|
+
.description('Scan for dependencies')
|
|
47
|
+
.option('-o, --output <filename>', 'Output result file name (optional - default stdout)')
|
|
48
|
+
.option('-a, --grpc-host <host>', 'SCANOSS GRPC HOST (optional - default: scanoss.com)')
|
|
49
|
+
.option('-p, --grpc-port <port>', 'SCANOSS GRPC PORT (optional - default: 443)')
|
|
50
|
+
.action((source, options) => { depHandler(source, options).catch((e) => { CLIErrorHandler(e); }); });
|
|
51
|
+
program
|
|
52
|
+
.command('wfp <source>')
|
|
53
|
+
.description('Generates fingerprints for a folder/file')
|
|
54
|
+
.option('-H, --hpsm', 'Scan using winnowing high precision matching')
|
|
55
|
+
.option('-o, --output <filename>', 'Output result file name (optional - default stdout)')
|
|
56
|
+
.option('-p, --block-size <size>', 'Maximum size in Kb for each fingerprint block (optional - default 64Kb)')
|
|
57
|
+
.action((source, options) => { wfpHandler(source, options).catch((e) => { CLIErrorHandler(e); }); });
|
|
58
|
+
await program.parseAsync(process.argv);
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
main();
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
console.error(e);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsU0FBUyxlQUFlLENBQUMsQ0FBUTtJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBS0QsS0FBSyxVQUFVLElBQUk7SUFDakIsT0FBTztTQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsV0FBVyxDQUFDLDRHQUE0RyxDQUFDLENBQUE7SUFFNUgsT0FBTztTQUNKLE9BQU8sQ0FBQyxlQUFlLENBQUM7U0FDeEIsV0FBVyxDQUFDLG9CQUFvQixDQUFDO1NBQ2pDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsc0NBQXNDLENBQUM7U0FDM0QsTUFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQztTQUNwRSxNQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDO1NBQ3RHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQ0FBK0MsQ0FBQztTQUNqRixNQUFNLENBQUMsNEJBQTRCLEVBQUUsaUNBQWlDLENBQUM7U0FDdkUsTUFBTSxDQUFDLDhCQUE4QixFQUFFLGlDQUFpQyxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSwrRUFBK0UsQ0FBQztTQUNySCxNQUFNLENBQUMsdUJB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function depHandler(rootPath: string, options: any): Promise<void>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import { DependencyScanner } from "../../sdk/Dependencies/DependencyScanner";
|
|
3
|
+
import { DependencyScannerCfg } from "../../sdk/Dependencies/DependencyScannerCfg";
|
|
4
|
+
import { Tree } from "../../sdk/tree/Tree";
|
|
5
|
+
import { DependencyFilter } from '../../sdk/tree/Filters/DependencyFilter';
|
|
6
|
+
import { isFolder } from "./helpers";
|
|
7
|
+
export async function depHandler(rootPath, options) {
|
|
8
|
+
rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
|
|
9
|
+
rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
|
|
10
|
+
const pathIsFolder = await isFolder(rootPath);
|
|
11
|
+
const dependencyScannerCfg = new DependencyScannerCfg();
|
|
12
|
+
if (options.grpcHost)
|
|
13
|
+
dependencyScannerCfg.DEFAULT_GRPC_HOST = options.grpcHost;
|
|
14
|
+
if (options.grpcPort)
|
|
15
|
+
dependencyScannerCfg.DEFAULT_GRPC_PORT = options.grpcPort;
|
|
16
|
+
const dependencyScanner = new DependencyScanner(dependencyScannerCfg);
|
|
17
|
+
let fileList = [];
|
|
18
|
+
fileList.push(rootPath);
|
|
19
|
+
if (pathIsFolder) {
|
|
20
|
+
const tree = new Tree(rootPath);
|
|
21
|
+
tree.build();
|
|
22
|
+
fileList = tree.getFileList(new DependencyFilter(""));
|
|
23
|
+
}
|
|
24
|
+
const results = await dependencyScanner.scan(fileList);
|
|
25
|
+
if (options.output) {
|
|
26
|
+
fs.promises.writeFile(options.output, JSON.stringify(results, null, 2));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.log(JSON.stringify(results, null, 2));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9kZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3JDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUFDLFFBQWdCLEVBQUUsT0FBWTtJQUU3RCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBRSxrQ0FBa0M7SUFDM0UsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSwwQ0FBMEM7SUFDaEcsTUFBTSxZQUFZLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFDeEQsSUFBRyxPQUFPLENBQUMsUUFBUTtRQUFFLG9CQUFvQixDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDL0UsSUFBRyxPQUFPLENBQUMsUUFBUTtRQUFFLG9CQUFvQixDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFFL0UsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFdEUsSUFBSSxRQUFRLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLElBQUksWUFBWSxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN2RDtJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pFO1NBQU07UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9DO0FBRUgsQ0FBQyJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import pathLib from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
// Async function that verify if a path is a folder. If the path is not valid the promise will be rejected
|
|
4
|
+
export const isFolder = (path) => {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
fs.stat(path, (err, stats) => {
|
|
7
|
+
if (err) {
|
|
8
|
+
reject(err);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
resolve(stats.isDirectory());
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
export function getProjectNameFromPath(path) {
|
|
17
|
+
return pathLib.basename(path, pathLib.extname(path));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLDBHQUEwRztBQUMxRyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQW9CLEVBQUU7SUFDekQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzQixJQUFJLEdBQUcsRUFBRTtnQkFDUCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7YUFDOUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQVk7SUFDakQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function scanHandler(rootPath: string, options: any): Promise<void>;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { Scanner } from '../../sdk/scanner/Scanner';
|
|
3
|
+
import { SbomMode, ScannerEvents, WinnowingMode } from '../../sdk/scanner/ScannerTypes';
|
|
4
|
+
import { ScannerCfg } from '../../sdk/scanner/ScannerCfg';
|
|
5
|
+
import { Tree } from '../../sdk/tree/Tree';
|
|
6
|
+
import cliProgress from 'cli-progress';
|
|
7
|
+
import { getProjectNameFromPath, isFolder } from './helpers';
|
|
8
|
+
import { DependencyScannerCfg } from '../../sdk/Dependencies/DependencyScannerCfg';
|
|
9
|
+
import { DependencyScanner } from '../../sdk/Dependencies/DependencyScanner';
|
|
10
|
+
import { ScanFilter } from '../../sdk/tree/Filters/ScanFilter';
|
|
11
|
+
import { DependencyFilter } from '../../sdk/tree/Filters/DependencyFilter';
|
|
12
|
+
import { Report } from '../../sdk/Report/Report';
|
|
13
|
+
import { DataProviderManager } from '../../sdk/DataLayer/DataProviderManager';
|
|
14
|
+
import { ComponentDataProvider } from '../../sdk/DataLayer/DataProviders/ComponentDataProvider';
|
|
15
|
+
import { DependencyDataProvider } from '../../sdk/DataLayer/DataProviders/DependencyDataProvider';
|
|
16
|
+
import { LicenseDataProvider } from '../../sdk/DataLayer/DataProviders/LicenseDataProvider';
|
|
17
|
+
import { SummaryDataProvider } from '../../sdk/DataLayer/DataProviders/SummaryDataProvider';
|
|
18
|
+
import { DecompressionFilter } from '../../sdk/tree/Filters/DecompressionFilter';
|
|
19
|
+
import { DecompressionManager } from '../../sdk/Decompress/DecompressionManager';
|
|
20
|
+
export async function scanHandler(rootPath, options) {
|
|
21
|
+
rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
|
|
22
|
+
rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
|
|
23
|
+
const pathIsFolder = await isFolder(rootPath);
|
|
24
|
+
const projectName = getProjectNameFromPath(rootPath);
|
|
25
|
+
// Create dependency scanner and set parameters
|
|
26
|
+
const dependencyScannerCfg = new DependencyScannerCfg();
|
|
27
|
+
if (options.api2url)
|
|
28
|
+
dependencyScannerCfg.DEFAULT_GRPC_HOST = options.api2url;
|
|
29
|
+
const dependencyScanner = new DependencyScanner(dependencyScannerCfg);
|
|
30
|
+
let dependencyInput = [];
|
|
31
|
+
// Create scanner and set connections parameters
|
|
32
|
+
const scannerCfg = new ScannerCfg();
|
|
33
|
+
if (options.concurrency)
|
|
34
|
+
scannerCfg.CONCURRENCY_LIMIT = parseInt(options.concurrency);
|
|
35
|
+
if (options.postSize)
|
|
36
|
+
scannerCfg.WFP_FILE_MAX_SIZE = parseInt(options.postSize) * 1024;
|
|
37
|
+
if (options.apiurl)
|
|
38
|
+
scannerCfg.API_URL = options.apiurl;
|
|
39
|
+
if (options.key)
|
|
40
|
+
scannerCfg.API_KEY = options.key;
|
|
41
|
+
if (options.timeout)
|
|
42
|
+
scannerCfg.TIMEOUT = options.timeout * 1000;
|
|
43
|
+
if (options.maxRetry)
|
|
44
|
+
scannerCfg.MAX_RETRIES_FOR_RECOVERABLES_ERRORS = options.maxRetry;
|
|
45
|
+
if (options.proxy)
|
|
46
|
+
scannerCfg.PROXY = options.proxy;
|
|
47
|
+
if (options.caCert)
|
|
48
|
+
scannerCfg.CA_CERT = options.caCert;
|
|
49
|
+
if (options.ignoreCertErrors)
|
|
50
|
+
scannerCfg.IGNORE_CERT_ERRORS = true;
|
|
51
|
+
const scanner = new Scanner(scannerCfg);
|
|
52
|
+
let scannerInput = { fileList: [] };
|
|
53
|
+
scannerInput.folderRoot = rootPath + '/'; // This will remove the project root path from the results.
|
|
54
|
+
if (options.flags)
|
|
55
|
+
scannerInput.engineFlags = options.flags;
|
|
56
|
+
if (!options.wfp) {
|
|
57
|
+
if (pathIsFolder) {
|
|
58
|
+
console.error('Reading directory... ');
|
|
59
|
+
const tree = new Tree(rootPath);
|
|
60
|
+
tree.build();
|
|
61
|
+
if (options.extract) {
|
|
62
|
+
const archives = tree.getFileList(new DecompressionFilter(""));
|
|
63
|
+
console.error("Searching archives files...");
|
|
64
|
+
if (archives.length) {
|
|
65
|
+
console.error("Extracting archives...");
|
|
66
|
+
const decompressionManager = new DecompressionManager(options.extractDeep, options.extractSuffix, options.extractOverwrite);
|
|
67
|
+
await decompressionManager.decompress(archives);
|
|
68
|
+
console.error("Reindexing files...");
|
|
69
|
+
tree.build();
|
|
70
|
+
}
|
|
71
|
+
else
|
|
72
|
+
console.error("No archives found.");
|
|
73
|
+
}
|
|
74
|
+
scannerInput.fileList = tree.getFileList(new ScanFilter(""));
|
|
75
|
+
dependencyInput = tree.getFileList(new DependencyFilter(""));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
scannerInput.fileList = [rootPath];
|
|
79
|
+
dependencyInput = [rootPath];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const winnowing = fs.readFileSync(rootPath, { encoding: 'utf-8' });
|
|
84
|
+
scannerInput.fileList.length = [...winnowing.matchAll(/file=/g)].length;
|
|
85
|
+
}
|
|
86
|
+
if (!options.verbose) {
|
|
87
|
+
const optBar1 = { format: 'Scan Progress: [{bar}] {percentage}% | Scanned {value} files of {total}' };
|
|
88
|
+
const bar1 = new cliProgress.SingleBar(optBar1, cliProgress.Presets.shades_classic);
|
|
89
|
+
bar1.start(scannerInput.fileList.length, 0);
|
|
90
|
+
scanner.on(ScannerEvents.DISPATCHER_NEW_DATA, (dispResp) => {
|
|
91
|
+
bar1.increment(dispResp.getFilesScanned().length);
|
|
92
|
+
});
|
|
93
|
+
scanner.on(ScannerEvents.SCAN_DONE, async (resultPath) => { bar1.stop(); });
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
scanner.on(ScannerEvents.SCANNER_LOG, (logText) => console.error(logText));
|
|
97
|
+
}
|
|
98
|
+
if (options.wfp)
|
|
99
|
+
scannerInput.wfpPath = rootPath;
|
|
100
|
+
if (options.hpsm)
|
|
101
|
+
scannerInput.winnowingMode = WinnowingMode.FULL_WINNOWING_HPSM;
|
|
102
|
+
if (options.ignore) {
|
|
103
|
+
scannerInput.sbom = fs.readFileSync(options.ignore, 'utf-8');
|
|
104
|
+
scannerInput.sbomMode = SbomMode.SBOM_IGNORE;
|
|
105
|
+
}
|
|
106
|
+
// Dependency scanner
|
|
107
|
+
let pDependencyScanner = Promise.resolve({});
|
|
108
|
+
if (options.dependencies) {
|
|
109
|
+
pDependencyScanner = dependencyScanner.scan(dependencyInput);
|
|
110
|
+
}
|
|
111
|
+
//Launch parallel scanners
|
|
112
|
+
const pScanner = scanner.scan([scannerInput]);
|
|
113
|
+
const [scannerResultPath, depResults] = await Promise.all([pScanner, pDependencyScanner]);
|
|
114
|
+
const scannerResults = JSON.parse(await fs.promises.readFile(scannerResultPath, 'utf-8'));
|
|
115
|
+
//TODO Unify results.json and dependency.json. What happens with result.json that includes dependencies?
|
|
116
|
+
const scannersResults = {
|
|
117
|
+
scanner: scannerResults,
|
|
118
|
+
...(options.dependencies && { dependencies: depResults })
|
|
119
|
+
};
|
|
120
|
+
let scannerResultsString = JSON.stringify(scannersResults, null, 2);
|
|
121
|
+
if (options.format && options.format.toLowerCase() === "html") {
|
|
122
|
+
const dataProviderManager = new DataProviderManager();
|
|
123
|
+
dataProviderManager.addDataProvider(new ComponentDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
124
|
+
dataProviderManager.addDataProvider(new DependencyDataProvider(scannersResults.dependencies));
|
|
125
|
+
dataProviderManager.addDataProvider(new LicenseDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
126
|
+
dataProviderManager.addDataProvider(new SummaryDataProvider(projectName, new Date(), scannersResults.scanner));
|
|
127
|
+
const report = new Report(dataProviderManager);
|
|
128
|
+
scannerResultsString = await report.getHTML();
|
|
129
|
+
}
|
|
130
|
+
if (options.output)
|
|
131
|
+
await fs.promises.writeFile(options.output, scannerResultsString);
|
|
132
|
+
else
|
|
133
|
+
console.log(scannerResultsString);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFcEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxRQUFRLEVBQ1IsYUFBYSxFQUViLGFBQWEsRUFDZCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3RCLE1BQU0seURBQXlELENBQUM7QUFDakUsT0FBTyxFQUNMLHNCQUFzQixFQUN2QixNQUFNLDBEQUEwRCxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxtQkFBbUIsRUFDcEIsTUFBTSx1REFBdUQsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sdURBQXVELENBQUM7QUFDL0QsT0FBTyxFQUNMLG1CQUFt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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function wfpHandler(rootPath: string, options: any): Promise<void>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import cliProgress from 'cli-progress';
|
|
3
|
+
import { isFolder } from './helpers';
|
|
4
|
+
import { ScannerEvents, WinnowingMode } from '../../sdk/scanner/ScannerTypes';
|
|
5
|
+
import { WfpCalculator } from '../../sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator';
|
|
6
|
+
import { Tree } from '../../sdk/tree/Tree';
|
|
7
|
+
import { DependencyFilter } from '../../sdk/tree/Filters/DependencyFilter';
|
|
8
|
+
export async function wfpHandler(rootPath, options) {
|
|
9
|
+
rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
|
|
10
|
+
rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
|
|
11
|
+
const pathIsFolder = await isFolder(rootPath);
|
|
12
|
+
const wfpCalculator = new WfpCalculator();
|
|
13
|
+
let filesToFingerprint = [];
|
|
14
|
+
if (pathIsFolder) {
|
|
15
|
+
const tree = new Tree(rootPath);
|
|
16
|
+
tree.build();
|
|
17
|
+
filesToFingerprint = tree.getFileList(new DependencyFilter(""));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
filesToFingerprint.push(rootPath);
|
|
21
|
+
}
|
|
22
|
+
const optBar1 = { format: 'Fingerprinting Progress: [{bar}] {percentage}% | Fingerprinted {value} files of {total}' };
|
|
23
|
+
const bar1 = new cliProgress.SingleBar(optBar1, cliProgress.Presets.shades_classic);
|
|
24
|
+
bar1.start(filesToFingerprint.length, 0);
|
|
25
|
+
let fingerprints = '';
|
|
26
|
+
wfpCalculator.on(ScannerEvents.WINNOWING_NEW_CONTENT, (fingerprintPackage) => {
|
|
27
|
+
bar1.increment(fingerprintPackage.getNumberFilesFingerprinted());
|
|
28
|
+
fingerprints = fingerprints.concat(fingerprintPackage.getContent());
|
|
29
|
+
});
|
|
30
|
+
if (options.verbose)
|
|
31
|
+
wfpCalculator.on(ScannerEvents.WINNOWER_LOG, (log) => {
|
|
32
|
+
console.error(log);
|
|
33
|
+
});
|
|
34
|
+
wfpCalculator.on(ScannerEvents.WINNOWING_FINISHED, () => {
|
|
35
|
+
bar1.stop();
|
|
36
|
+
if (options.output) {
|
|
37
|
+
fs.writeFileSync(options.output, fingerprints);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log(fingerprints);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const wfpInput = { fileList: filesToFingerprint, folderRoot: rootPath };
|
|
44
|
+
if (options.hpsm)
|
|
45
|
+
wfpInput.winnowingMode = WinnowingMode.FULL_WINNOWING_HPSM;
|
|
46
|
+
wfpCalculator.start(wfpInput);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy93ZnAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUV2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUczRSxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFFN0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFFMUMsSUFBSSxrQkFBa0IsR0FBYSxFQUFFLENBQUM7SUFDdEMsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2Isa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDakU7U0FBTTtRQUNMLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUNsQztJQUdELE1BQU0sT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLHlGQUF5RixFQUFFLENBQUM7SUFDdEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpDLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN0QixhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGtCQUFzQyxFQUFFLEVBQUU7UUFDL0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUM7UUFDakUsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUUsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUUsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxDQUFDLE9BQU87UUFDakIsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUVMLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUN0RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDakIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBc0IsRUFBQyxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFBO0lBQ3hGLElBQUcsT0FBTyxDQUFDLElBQUk7UUFBRSxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztJQUM1RSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBR2hDLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './sdk/scanner/Scanner';
|
|
2
|
+
export * from './sdk/scanner/ScannerTypes';
|
|
3
|
+
export * from './sdk/scanner/ScannerCfg';
|
|
4
|
+
export * from './sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator';
|
|
5
|
+
export * from './sdk/Dependencies/DependencyTypes';
|
|
6
|
+
export * from './sdk/Dependencies/DependencyScannerCfg';
|
|
7
|
+
export * from './sdk/Dependencies/DependencyScanner';
|
|
8
|
+
export * from './sdk/DataLayer/DataLayerTypes';
|
|
9
|
+
export * from './sdk/DataLayer/DataProviderManager';
|
|
10
|
+
export * from './sdk/DataLayer/DataProviders/LicenseDataProvider';
|
|
11
|
+
export * from './sdk/DataLayer/DataProviders/SummaryDataProvider';
|
|
12
|
+
export * from './sdk/DataLayer/DataProviders/DependencyDataProvider';
|
|
13
|
+
export * from './sdk/DataLayer/DataProviders/ComponentDataProvider';
|
|
14
|
+
export * from './sdk/Decompress/DecompressionManager';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// *** Code scanner exports *** //
|
|
2
|
+
export * from './sdk/scanner/Scanner';
|
|
3
|
+
export * from './sdk/scanner/ScannerTypes';
|
|
4
|
+
export * from './sdk/scanner/ScannerCfg';
|
|
5
|
+
export * from './sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator';
|
|
6
|
+
// *** Dependency scanner exports *** //
|
|
7
|
+
export * from './sdk/Dependencies/DependencyTypes';
|
|
8
|
+
export * from './sdk/Dependencies/DependencyScannerCfg';
|
|
9
|
+
export * from './sdk/Dependencies/DependencyScanner';
|
|
10
|
+
// *** Data layers export *** //
|
|
11
|
+
export * from './sdk/DataLayer/DataLayerTypes';
|
|
12
|
+
export * from './sdk/DataLayer/DataProviderManager';
|
|
13
|
+
export * from './sdk/DataLayer/DataProviders/LicenseDataProvider';
|
|
14
|
+
export * from './sdk/DataLayer/DataProviders/SummaryDataProvider';
|
|
15
|
+
export * from './sdk/DataLayer/DataProviders/DependencyDataProvider';
|
|
16
|
+
export * from './sdk/DataLayer/DataProviders/ComponentDataProvider';
|
|
17
|
+
// *** Unzip *** //
|
|
18
|
+
export * from './sdk/Decompress/DecompressionManager';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdURBQXVELENBQUM7QUFFdEUsd0NBQXdDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBR3JELGdDQUFnQztBQUNoQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxxREFBcUQsQ0FBQztBQUVwRSxtQkFBbUI7QUFDbkIsY0FBYyx1Q0FBdUMsQ0FBQyJ9
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/************* Component interface definition *************/
|
|
2
|
+
export interface ComponentDataLayer {
|
|
3
|
+
key: string;
|
|
4
|
+
purls: string[];
|
|
5
|
+
name: string;
|
|
6
|
+
vendor: string;
|
|
7
|
+
url: string;
|
|
8
|
+
health: Health;
|
|
9
|
+
versions: Version[];
|
|
10
|
+
}
|
|
11
|
+
export interface Version {
|
|
12
|
+
version: string;
|
|
13
|
+
licenses: string[];
|
|
14
|
+
copyrights: Copyright[];
|
|
15
|
+
cryptography: Cryptography[];
|
|
16
|
+
quality: Quality;
|
|
17
|
+
}
|
|
18
|
+
export interface Copyright {
|
|
19
|
+
name: string;
|
|
20
|
+
source: string;
|
|
21
|
+
}
|
|
22
|
+
export interface Cryptography {
|
|
23
|
+
algorithm: string;
|
|
24
|
+
strength: string;
|
|
25
|
+
}
|
|
26
|
+
export interface Quality {
|
|
27
|
+
scoreAvg: number;
|
|
28
|
+
count: number;
|
|
29
|
+
sum: number;
|
|
30
|
+
}
|
|
31
|
+
export interface Health {
|
|
32
|
+
creation_date: string;
|
|
33
|
+
issues: number;
|
|
34
|
+
last_push: string;
|
|
35
|
+
last_update: string;
|
|
36
|
+
watchers: number;
|
|
37
|
+
country: string;
|
|
38
|
+
stars: number;
|
|
39
|
+
forks: number;
|
|
40
|
+
}
|
|
41
|
+
/************* Component interface definition *************/
|
|
42
|
+
/************* Dependency interface definition *************/
|
|
43
|
+
export interface DependencyDataLayer {
|
|
44
|
+
file: string;
|
|
45
|
+
dependencies: Dependency[];
|
|
46
|
+
}
|
|
47
|
+
export interface License {
|
|
48
|
+
name: string;
|
|
49
|
+
spdxid: string;
|
|
50
|
+
}
|
|
51
|
+
export interface Dependency {
|
|
52
|
+
purl: string;
|
|
53
|
+
component: string;
|
|
54
|
+
version: string;
|
|
55
|
+
licenses: License[];
|
|
56
|
+
}
|
|
57
|
+
/************* Dependency interface definition *************/
|
|
58
|
+
/************* Vulnerability interface definition *************/
|
|
59
|
+
export interface Vulnerability {
|
|
60
|
+
id: string;
|
|
61
|
+
cve: string;
|
|
62
|
+
url: string;
|
|
63
|
+
summary: string;
|
|
64
|
+
severity: string;
|
|
65
|
+
published: string;
|
|
66
|
+
modified: string;
|
|
67
|
+
source: string;
|
|
68
|
+
}
|
|
69
|
+
export interface VulnerabilityDataLayer {
|
|
70
|
+
purl: string;
|
|
71
|
+
vulnerability: Vulnerability[];
|
|
72
|
+
}
|
|
73
|
+
/************* Vulnerability interface definition *************/
|
|
74
|
+
/************* License interface definition *************/
|
|
75
|
+
export interface LicenseDataLayer {
|
|
76
|
+
label: string;
|
|
77
|
+
value: number;
|
|
78
|
+
components: Array<LicenseComponent>;
|
|
79
|
+
incompatibleWith: Array<string>;
|
|
80
|
+
hasIncompatibles: Array<string>;
|
|
81
|
+
copyleft: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface LicenseComponent {
|
|
84
|
+
purl: string;
|
|
85
|
+
name: string;
|
|
86
|
+
versions: Array<string>;
|
|
87
|
+
url: string;
|
|
88
|
+
vendor: string;
|
|
89
|
+
}
|
|
90
|
+
/************* License interface definition *************/
|
|
91
|
+
export interface SummaryDataLayer {
|
|
92
|
+
projectName: string;
|
|
93
|
+
timestamp: Date;
|
|
94
|
+
matchedFiles: number;
|
|
95
|
+
noMatchFiles: number;
|
|
96
|
+
totalFiles: number;
|
|
97
|
+
}
|
|
98
|
+
export interface IDataLayers {
|
|
99
|
+
licenses: LicenseDataLayer[];
|
|
100
|
+
component: ComponentDataLayer[];
|
|
101
|
+
dependencies: DependencyDataLayer[];
|
|
102
|
+
vulnerabilities: VulnerabilityDataLayer[];
|
|
103
|
+
summary: SummaryDataLayer;
|
|
104
|
+
}
|
|
105
|
+
export interface DataProvider {
|
|
106
|
+
getData(): IDataLayers;
|
|
107
|
+
getLayerName(): string;
|
|
108
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
;
|
|
2
|
+
;
|
|
3
|
+
;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxheWVyVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0RhdGFMYXllci9EYXRhTGF5ZXJUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQkMsQ0FBQztBQUtELENBQUM7QUFNRCxDQUFDIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class DataProviderManager {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.dataLayersProviders = [];
|
|
4
|
+
}
|
|
5
|
+
addDataProvider(l) {
|
|
6
|
+
this.dataLayersProviders.push(l);
|
|
7
|
+
}
|
|
8
|
+
generateData() {
|
|
9
|
+
let dataLayer = {
|
|
10
|
+
component: null,
|
|
11
|
+
dependencies: null,
|
|
12
|
+
vulnerabilities: null,
|
|
13
|
+
summary: null,
|
|
14
|
+
licenses: null
|
|
15
|
+
};
|
|
16
|
+
for (const layer of this.dataLayersProviders)
|
|
17
|
+
Object.assign(dataLayer, layer.getData());
|
|
18
|
+
return dataLayer;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvRGF0YUxheWVyL0RhdGFQcm92aWRlck1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxDQUFlO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVNLFlBQVk7UUFFakIsSUFBSSxTQUFTLEdBQWdCO1lBQzNCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsZUFBZSxFQUFFLElBQUk7WUFDckIsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxtQkFBbUI7WUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4RixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataProvider, IDataLayers } from '../DataLayerTypes';
|
|
2
|
+
import { ScannerResults } from '../../scanner/ScannerTypes';
|
|
3
|
+
import { IDependencyResponse } from '../../Dependencies/DependencyTypes';
|
|
4
|
+
export declare class ComponentDataProvider implements DataProvider {
|
|
5
|
+
private scanRawResults;
|
|
6
|
+
private componentList;
|
|
7
|
+
private dependencies;
|
|
8
|
+
constructor(scanRawResults: ScannerResults, dependencies?: IDependencyResponse);
|
|
9
|
+
getLayerName(): string;
|
|
10
|
+
getData(): IDataLayers;
|
|
11
|
+
private parseComponentsFromDependencies;
|
|
12
|
+
private parseComponentsFromScanner;
|
|
13
|
+
}
|