scanoss 0.7.4 → 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 +22 -20
- 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/Fingerprint.d.ts +2 -2
- package/build/main/sdk/scanner/Fingerprint.js +26 -8
- package/build/main/sdk/scanner/Scanner.js +4 -1
- package/build/main/sdk/scanner/ScannerCfg.d.ts +1 -0
- package/build/main/sdk/scanner/ScannerCfg.js +6 -3
- package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +6 -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 +126 -123
- 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/Fingerprint.d.ts +2 -2
- package/build/module/sdk/scanner/Fingerprint.js +6 -6
- package/build/module/sdk/scanner/Scanner.js +4 -1
- package/build/module/sdk/scanner/ScannerCfg.d.ts +1 -0
- package/build/module/sdk/scanner/ScannerCfg.js +6 -3
- package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +6 -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 +126 -123
- 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/Fingerprint.ts +6 -8
- package/src/sdk/scanner/Scanner.ts +4 -0
- package/src/sdk/scanner/ScannerCfg.ts +8 -2
- package/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts +7 -2
- package/yarn.lock +4977 -4864
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export namespace ScanningService {
|
|
2
|
+
namespace echo {
|
|
3
|
+
export const path: string;
|
|
4
|
+
export const requestStream: boolean;
|
|
5
|
+
export const responseStream: boolean;
|
|
6
|
+
export const requestType: typeof import("../../common/v2/scanoss-common_pb.js").EchoRequest;
|
|
7
|
+
export const responseType: typeof import("../../common/v2/scanoss-common_pb.js").EchoResponse;
|
|
8
|
+
export { serialize_scanoss_api_common_v2_EchoRequest as requestSerialize };
|
|
9
|
+
export { deserialize_scanoss_api_common_v2_EchoRequest as requestDeserialize };
|
|
10
|
+
export { serialize_scanoss_api_common_v2_EchoResponse as responseSerialize };
|
|
11
|
+
export { deserialize_scanoss_api_common_v2_EchoResponse as responseDeserialize };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export var ScanningClient: import("@grpc/grpc-js").ServiceClientConstructor;
|
|
15
|
+
declare function serialize_scanoss_api_common_v2_EchoRequest(arg: any): Buffer;
|
|
16
|
+
declare function deserialize_scanoss_api_common_v2_EchoRequest(buffer_arg: any): import("../../common/v2/scanoss-common_pb.js").EchoRequest;
|
|
17
|
+
declare function serialize_scanoss_api_common_v2_EchoResponse(arg: any): Buffer;
|
|
18
|
+
declare function deserialize_scanoss_api_common_v2_EchoResponse(buffer_arg: any): import("../../common/v2/scanoss-common_pb.js").EchoResponse;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// GENERATED CODE -- DO NOT EDIT!
|
|
2
|
+
// Original file comments:
|
|
3
|
+
//
|
|
4
|
+
// SPDX-License-Identifier: MIT
|
|
5
|
+
//
|
|
6
|
+
// Copyright (c) 2021, SCANOSS
|
|
7
|
+
//
|
|
8
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
// in the Software without restriction, including without limitation the rights
|
|
11
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
// furnished to do so, subject to the following conditions:
|
|
14
|
+
//
|
|
15
|
+
// The above copyright notice and this permission notice shall be included in
|
|
16
|
+
// all copies or substantial portions of the Software.
|
|
17
|
+
//
|
|
18
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
+
// THE SOFTWARE.
|
|
25
|
+
//
|
|
26
|
+
// **
|
|
27
|
+
// Scanning definition details
|
|
28
|
+
// *
|
|
29
|
+
'use strict';
|
|
30
|
+
var grpc = require('@grpc/grpc-js');
|
|
31
|
+
var scanoss_api_common_v2_scanoss$common_pb = require('../../../../scanoss/api/common/v2/scanoss-common_pb.js');
|
|
32
|
+
function serialize_scanoss_api_common_v2_EchoRequest(arg) {
|
|
33
|
+
if (!(arg instanceof scanoss_api_common_v2_scanoss$common_pb.EchoRequest)) {
|
|
34
|
+
throw new Error('Expected argument of type scanoss.api.common.v2.EchoRequest');
|
|
35
|
+
}
|
|
36
|
+
return Buffer.from(arg.serializeBinary());
|
|
37
|
+
}
|
|
38
|
+
function deserialize_scanoss_api_common_v2_EchoRequest(buffer_arg) {
|
|
39
|
+
return scanoss_api_common_v2_scanoss$common_pb.EchoRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
|
40
|
+
}
|
|
41
|
+
function serialize_scanoss_api_common_v2_EchoResponse(arg) {
|
|
42
|
+
if (!(arg instanceof scanoss_api_common_v2_scanoss$common_pb.EchoResponse)) {
|
|
43
|
+
throw new Error('Expected argument of type scanoss.api.common.v2.EchoResponse');
|
|
44
|
+
}
|
|
45
|
+
return Buffer.from(arg.serializeBinary());
|
|
46
|
+
}
|
|
47
|
+
function deserialize_scanoss_api_common_v2_EchoResponse(buffer_arg) {
|
|
48
|
+
return scanoss_api_common_v2_scanoss$common_pb.EchoResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
|
49
|
+
}
|
|
50
|
+
// Expose all of the SCANOSS Scanning RPCs here
|
|
51
|
+
var ScanningService = exports.ScanningService = {
|
|
52
|
+
// Standard echo
|
|
53
|
+
echo: {
|
|
54
|
+
path: '/scanoss.api.scanning.v2.Scanning/Echo',
|
|
55
|
+
requestStream: false,
|
|
56
|
+
responseStream: false,
|
|
57
|
+
requestType: scanoss_api_common_v2_scanoss$common_pb.EchoRequest,
|
|
58
|
+
responseType: scanoss_api_common_v2_scanoss$common_pb.EchoResponse,
|
|
59
|
+
requestSerialize: serialize_scanoss_api_common_v2_EchoRequest,
|
|
60
|
+
requestDeserialize: deserialize_scanoss_api_common_v2_EchoRequest,
|
|
61
|
+
responseSerialize: serialize_scanoss_api_common_v2_EchoResponse,
|
|
62
|
+
responseDeserialize: deserialize_scanoss_api_common_v2_EchoResponse,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
exports.ScanningClient = grpc.makeGenericClientConstructor(ScanningService);
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1zY2FubmluZ19ncnBjX3BiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9ncnBjL3NjYW5vc3MvYXBpL3NjYW5uaW5nL3YyL3NjYW5vc3Mtc2Nhbm5pbmdfZ3JwY19wYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFFakMsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRiwrQkFBK0I7QUFDL0IsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyREFBMkQ7QUFDM0QsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSxzREFBc0Q7QUFDdEQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLHlFQUF5RTtBQUN6RSxnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsS0FBSztBQUNMLDhCQUE4QjtBQUM5QixJQUFJO0FBQ0osWUFBWSxDQUFDO0FBQ2IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3BDLElBQUksdUNBQXVDLEdBQUcsT0FBTyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7QUFFaEgsU0FBUywyQ0FBMkMsQ0FBQyxHQUFHO0lBQ3RELElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSx1Q0FBdUMsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUN6RSxNQUFNLElBQUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7S0FDaEY7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsNkNBQTZDLENBQUMsVUFBVTtJQUMvRCxPQUFPLHVDQUF1QyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzNHLENBQUM7QUFFRCxTQUFTLDRDQUE0QyxDQUFDLEdBQUc7SUFDdkQsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLHVDQUF1QyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztLQUNqRjtJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyw4Q0FBOEMsQ0FBQyxVQUFVO0lBQ2hFLE9BQU8sdUNBQXVDLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUdELCtDQUErQztBQUMvQyxJQUFJLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxHQUFHO0lBQzlDLGdCQUFnQjtJQUNsQixJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUUsd0NBQXdDO1FBQzlDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLFdBQVcsRUFBRSx1Q0FBdUMsQ0FBQyxXQUFXO1FBQ2hFLFlBQVksRUFBRSx1Q0FBdUMsQ0FBQyxZQUFZO1FBQ2xFLGdCQUFnQixFQUFFLDJDQUEyQztRQUM3RCxrQkFBa0IsRUFBRSw2Q0FBNkM7UUFDakUsaUJBQWlCLEVBQUUsNENBQTRDO1FBQy9ELG1CQUFtQixFQUFFLDhDQUE4QztLQUNwRTtDQUNGLENBQUM7QUFFRixPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview
|
|
3
|
+
* @enhanceable
|
|
4
|
+
* @suppress {messageConventions} JS Compiler reports an error if a variable or
|
|
5
|
+
* field starts with 'MSG_' and isn't a translatable message.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
// GENERATED CODE -- DO NOT EDIT!
|
|
9
|
+
var jspb = require('google-protobuf');
|
|
10
|
+
var goog = jspb;
|
|
11
|
+
var global = Function('return this')();
|
|
12
|
+
var scanoss_api_common_v2_scanoss$common_pb = require('../../../../scanoss/api/common/v2/scanoss-common_pb.js');
|
|
13
|
+
goog.object.extend(exports, proto.scanoss.api.scanning.v2);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1zY2FubmluZ19wYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvZ3JwYy9zY2Fub3NzL2FwaS9zY2FubmluZy92Mi9zY2Fub3NzLXNjYW5uaW5nX3BiLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILGlDQUFpQztBQUVqQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDaEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFFdkMsSUFBSSx1Q0FBdUMsR0FBRyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUNoSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FingerprintPackage } from '../WfpProvider/FingerprintPackage';
|
|
2
|
+
import FormData from 'form-data';
|
|
3
|
+
import { SbomMode } from '../ScannerTypes';
|
|
4
|
+
export declare class DispatchableItem {
|
|
5
|
+
private readonly form;
|
|
6
|
+
private errorCounter;
|
|
7
|
+
private fingerprintPackage;
|
|
8
|
+
private engineFlags;
|
|
9
|
+
private sbom;
|
|
10
|
+
private sbomMode;
|
|
11
|
+
constructor();
|
|
12
|
+
getForm(): FormData;
|
|
13
|
+
increaseErrorCounter(): void;
|
|
14
|
+
getErrorCounter(): number;
|
|
15
|
+
setFingerprintPackage(fingerprintPackage: FingerprintPackage): void;
|
|
16
|
+
getFingerprintPackage(): FingerprintPackage;
|
|
17
|
+
setEngineFlags(engineFlags: number): void;
|
|
18
|
+
setSbom(sbom: string, sbomMode: SbomMode): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import FormData from 'form-data';
|
|
2
|
+
export class DispatchableItem {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.errorCounter = 0;
|
|
5
|
+
this.form = new FormData();
|
|
6
|
+
}
|
|
7
|
+
getForm() {
|
|
8
|
+
this.form.append('file', Buffer.from(this.fingerprintPackage.getContent()), 'data.wfp');
|
|
9
|
+
if (this.engineFlags)
|
|
10
|
+
this.form.append('flags', this.engineFlags);
|
|
11
|
+
if (this.sbomMode && this.sbom) {
|
|
12
|
+
this.form.append('assets', this.sbom);
|
|
13
|
+
this.form.append('type', this.sbomMode);
|
|
14
|
+
}
|
|
15
|
+
return this.form;
|
|
16
|
+
}
|
|
17
|
+
increaseErrorCounter() {
|
|
18
|
+
this.errorCounter += 1;
|
|
19
|
+
}
|
|
20
|
+
getErrorCounter() {
|
|
21
|
+
return this.errorCounter;
|
|
22
|
+
}
|
|
23
|
+
setFingerprintPackage(fingerprintPackage) {
|
|
24
|
+
this.fingerprintPackage = fingerprintPackage;
|
|
25
|
+
}
|
|
26
|
+
getFingerprintPackage() {
|
|
27
|
+
return this.fingerprintPackage;
|
|
28
|
+
}
|
|
29
|
+
setEngineFlags(engineFlags) {
|
|
30
|
+
this.engineFlags = engineFlags;
|
|
31
|
+
}
|
|
32
|
+
setSbom(sbom, sbomMode) {
|
|
33
|
+
this.sbom = sbom;
|
|
34
|
+
this.sbomMode = sbomMode;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hhYmxlSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoYWJsZUl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBR2pDLE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0I7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RixJQUFHLElBQUksQ0FBQyxXQUFXO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRSxJQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVNLHFCQUFxQixDQUFDLGtCQUFzQztRQUNqRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDL0MsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYyxDQUFDLFdBQW1CO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCO1FBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FJRiJ9
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
import { ScannerCfg } from "../ScannerCfg";
|
|
3
|
+
import { DispatchableItem } from './DispatchableItem';
|
|
4
|
+
export declare class Dispatcher extends EventEmitter {
|
|
5
|
+
private scannerCfg;
|
|
6
|
+
private pQueue;
|
|
7
|
+
private globalAbortController;
|
|
8
|
+
private queueMaxLimitReached;
|
|
9
|
+
private queueMinLimitReached;
|
|
10
|
+
private recoverableErrors;
|
|
11
|
+
private proxy;
|
|
12
|
+
constructor(scannerCfg?: ScannerCfg);
|
|
13
|
+
init(): void;
|
|
14
|
+
stop(): void;
|
|
15
|
+
dispatchItem(item: DispatchableItem): void;
|
|
16
|
+
handleUnrecoverableError(error: any, disptItem: any): void;
|
|
17
|
+
emitNoDispatchedItem(disptItem: any): void;
|
|
18
|
+
errorHandler(error: any, disptItem: any): void;
|
|
19
|
+
dispatch(item: DispatchableItem): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/* eslint-disable guard-for-in */
|
|
2
|
+
/* eslint-disable no-restricted-syntax */
|
|
3
|
+
import EventEmitter from 'eventemitter3';
|
|
4
|
+
import fetch from 'node-fetch';
|
|
5
|
+
import PQueue from "p-queue";
|
|
6
|
+
import PackageJson from '../../../../package.json';
|
|
7
|
+
import { ScannerEvents } from "../ScannerTypes";
|
|
8
|
+
import { DispatcherResponse } from "./DispatcherResponse";
|
|
9
|
+
import { ScannerCfg } from "../ScannerCfg";
|
|
10
|
+
import { GlobalControllerAborter } from "./GlobalControllerAborter";
|
|
11
|
+
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
12
|
+
import * as syswideCa from "syswide-cas";
|
|
13
|
+
const MAX_CONCURRENT_REQUEST = 30;
|
|
14
|
+
export class Dispatcher extends EventEmitter {
|
|
15
|
+
constructor(scannerCfg = new ScannerCfg()) {
|
|
16
|
+
super();
|
|
17
|
+
this.scannerCfg = scannerCfg;
|
|
18
|
+
if (this.scannerCfg.CONCURRENCY_LIMIT > MAX_CONCURRENT_REQUEST)
|
|
19
|
+
this.scannerCfg.CONCURRENCY_LIMIT = MAX_CONCURRENT_REQUEST;
|
|
20
|
+
this.init();
|
|
21
|
+
}
|
|
22
|
+
init() {
|
|
23
|
+
//Loads proxy from SDK config, if not from env variables, if not leave empty
|
|
24
|
+
this.proxy = null;
|
|
25
|
+
const proxy = this.scannerCfg.PROXY || process.env.https_proxy || process.env.HTTPS_PROXY || process.env.http_proxy || process.env.HTTP_PROXY || '';
|
|
26
|
+
if (proxy)
|
|
27
|
+
this.proxy = new HttpsProxyAgent(proxy);
|
|
28
|
+
//Loads certs stuff from SDK config
|
|
29
|
+
const ca_cert = this.scannerCfg.CA_CERT || process.env.NODE_EXTRA_CA_CERTS;
|
|
30
|
+
if (ca_cert) {
|
|
31
|
+
syswideCa.addCAs(ca_cert);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
if (this.scannerCfg.IGNORE_CERT_ERRORS || proxy)
|
|
35
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
|
36
|
+
}
|
|
37
|
+
this.pQueue = new PQueue({
|
|
38
|
+
concurrency: this.scannerCfg.CONCURRENCY_LIMIT,
|
|
39
|
+
});
|
|
40
|
+
this.pQueue.clear();
|
|
41
|
+
this.pQueue.on('idle', () => {
|
|
42
|
+
this.emit(ScannerEvents.DISPATCHER_FINISHED);
|
|
43
|
+
});
|
|
44
|
+
this.pQueue.on('next', () => {
|
|
45
|
+
if ((this.pQueue.size + this.pQueue.pending) < this.scannerCfg.DISPATCHER_QUEUE_SIZE_MIN_LIMIT && !this.queueMinLimitReached) {
|
|
46
|
+
this.emit(ScannerEvents.DISPATCHER_QUEUE_SIZE_MIN_LIMIT);
|
|
47
|
+
this.queueMinLimitReached = true;
|
|
48
|
+
this.queueMaxLimitReached = false;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
this.queueMaxLimitReached = false;
|
|
52
|
+
this.queueMinLimitReached = true;
|
|
53
|
+
this.globalAbortController = new GlobalControllerAborter();
|
|
54
|
+
this.recoverableErrors = new Set();
|
|
55
|
+
this.recoverableErrors.add('ECONNRESET');
|
|
56
|
+
this.recoverableErrors.add('TIMEOUT');
|
|
57
|
+
}
|
|
58
|
+
stop() {
|
|
59
|
+
this.pQueue.clear();
|
|
60
|
+
this.pQueue.pause();
|
|
61
|
+
this.globalAbortController.abortAll();
|
|
62
|
+
}
|
|
63
|
+
dispatchItem(item) {
|
|
64
|
+
this.pQueue.add(() => this.dispatch(item));
|
|
65
|
+
if (this.pQueue.size + this.pQueue.pending >= this.scannerCfg.DISPATCHER_QUEUE_SIZE_MAX_LIMIT &&
|
|
66
|
+
!this.queueMaxLimitReached) {
|
|
67
|
+
this.emit(ScannerEvents.DISPATCHER_QUEUE_SIZE_MAX_LIMIT);
|
|
68
|
+
this.queueMaxLimitReached = true;
|
|
69
|
+
this.queueMinLimitReached = false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
handleUnrecoverableError(error, disptItem) {
|
|
73
|
+
this.emit('error', error, disptItem);
|
|
74
|
+
}
|
|
75
|
+
emitNoDispatchedItem(disptItem) {
|
|
76
|
+
this.emit(ScannerEvents.DISPATCHER_LOG, `[ SCANNER ]: WFP content sended to many times. Some files won't be scanned`);
|
|
77
|
+
this.emit(ScannerEvents.DISPATCHER_ITEM_NO_DISPATCHED, disptItem);
|
|
78
|
+
}
|
|
79
|
+
errorHandler(error, disptItem) {
|
|
80
|
+
if (!this.globalAbortController.isAborting()) {
|
|
81
|
+
if (error.name === 'AbortError')
|
|
82
|
+
error.name = 'TIMEOUT';
|
|
83
|
+
if (this.recoverableErrors.has(error.code) || this.recoverableErrors.has(error.name)) {
|
|
84
|
+
disptItem.increaseErrorCounter();
|
|
85
|
+
if (disptItem.getErrorCounter() >= this.scannerCfg.MAX_RETRIES_FOR_RECOVERABLES_ERRORS) {
|
|
86
|
+
this.emitNoDispatchedItem(disptItem);
|
|
87
|
+
if (this.scannerCfg.ABORT_ON_MAX_RETRIES)
|
|
88
|
+
this.handleUnrecoverableError(error, disptItem);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.emit(ScannerEvents.DISPATCHER_LOG, `[ SCANNER ]: Recoverable error happened sending WFP content to server. Reason: ${error.code || error.name}`);
|
|
92
|
+
this.dispatchItem(disptItem);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.handleUnrecoverableError(error, disptItem);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async dispatch(item) {
|
|
99
|
+
const timeoutController = this.globalAbortController.getAbortController();
|
|
100
|
+
const timeoutId = setTimeout(() => timeoutController.abort(), this.scannerCfg.TIMEOUT);
|
|
101
|
+
try {
|
|
102
|
+
this.emit(ScannerEvents.DISPATCHER_WFP_SENDED);
|
|
103
|
+
const response = await fetch(this.scannerCfg.API_URL, {
|
|
104
|
+
agent: this.proxy,
|
|
105
|
+
method: 'post',
|
|
106
|
+
body: item.getForm(),
|
|
107
|
+
headers: { 'User-Agent': this.scannerCfg.CLIENT_TIMESTAMP ? this.scannerCfg.CLIENT_TIMESTAMP : `scanoss-js/${PackageJson.version}`,
|
|
108
|
+
'X-Session': this.scannerCfg.API_KEY,
|
|
109
|
+
},
|
|
110
|
+
signal: timeoutController.signal,
|
|
111
|
+
});
|
|
112
|
+
clearTimeout(timeoutId);
|
|
113
|
+
this.globalAbortController.removeAbortController(timeoutController);
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
const msg = await response.text();
|
|
116
|
+
const err = new Error(msg);
|
|
117
|
+
err["code"] = response.status;
|
|
118
|
+
err.name = ScannerEvents.ERROR_SERVER_SIDE;
|
|
119
|
+
throw err;
|
|
120
|
+
}
|
|
121
|
+
const dataAsText = await response.text();
|
|
122
|
+
const dataAsObj = JSON.parse(dataAsText);
|
|
123
|
+
const dispatcherResponse = new DispatcherResponse(dataAsObj, item.getFingerprintPackage().getContent());
|
|
124
|
+
this.emit(ScannerEvents.DISPATCHER_NEW_DATA, dispatcherResponse);
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
clearTimeout(timeoutId);
|
|
129
|
+
this.globalAbortController.removeAbortController(timeoutController);
|
|
130
|
+
this.errorHandler(e, item);
|
|
131
|
+
return Promise.resolve();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLHlDQUF5QztBQUN6QyxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLFdBQVcsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxLQUFLLFNBQVMsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFbEMsTUFBTSxPQUFPLFVBQVcsU0FBUSxZQUFZO0lBZTFDLFlBQVksVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixHQUFHLHNCQUFzQjtZQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJO1FBRUYsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFB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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class DispatcherResponse {
|
|
2
|
+
serverResponse: any;
|
|
3
|
+
wfpContent: string;
|
|
4
|
+
filesScanned: Array<string>;
|
|
5
|
+
constructor(serverResponse: any, wfpContent: any);
|
|
6
|
+
getServerResponse(): any;
|
|
7
|
+
getWfpContent(): string;
|
|
8
|
+
matchRegex(str: any, re?: RegExp): any;
|
|
9
|
+
verifyResponse(): void;
|
|
10
|
+
getFilesScanned(): string[];
|
|
11
|
+
getNumberOfFilesScanned(): number;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class DispatcherResponse {
|
|
2
|
+
constructor(serverResponse, wfpContent) {
|
|
3
|
+
this.serverResponse = serverResponse;
|
|
4
|
+
this.wfpContent = wfpContent;
|
|
5
|
+
this.filesScanned = Object.keys(this.serverResponse);
|
|
6
|
+
// this.verifyResponse();
|
|
7
|
+
}
|
|
8
|
+
getServerResponse() {
|
|
9
|
+
return this.serverResponse;
|
|
10
|
+
}
|
|
11
|
+
getWfpContent() {
|
|
12
|
+
return this.wfpContent;
|
|
13
|
+
}
|
|
14
|
+
matchRegex(str, re = /file=/g) {
|
|
15
|
+
return ((str || '').match(re) || []).length;
|
|
16
|
+
}
|
|
17
|
+
verifyResponse() {
|
|
18
|
+
const wfpNumFiles = this.matchRegex(this.wfpContent, /file=/g);
|
|
19
|
+
const serverResponseNumFiles = Object.keys(this.serverResponse).length;
|
|
20
|
+
if (wfpNumFiles !== serverResponseNumFiles)
|
|
21
|
+
throw new Error(`The numbers of files in the wfp sended does not match with the server response`);
|
|
22
|
+
}
|
|
23
|
+
getFilesScanned() {
|
|
24
|
+
return this.filesScanned;
|
|
25
|
+
}
|
|
26
|
+
getNumberOfFilesScanned() {
|
|
27
|
+
return this.filesScanned.length;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hlclJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9zY2FubmVyL0Rpc3BhdGNoZXIvRGlzcGF0Y2hlclJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsWUFBWSxjQUFjLEVBQUUsVUFBVTtRQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JELHlCQUF5QjtJQUMzQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxRQUFRO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3ZFLElBQUksV0FBVyxLQUFLLHNCQUFzQjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztJQUNoSixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import AbortController from 'abort-controller';
|
|
2
|
+
export declare class GlobalControllerAborter {
|
|
3
|
+
private abortControllerList;
|
|
4
|
+
private abortFlag;
|
|
5
|
+
constructor();
|
|
6
|
+
abortAll(): void;
|
|
7
|
+
isAborting(): Boolean;
|
|
8
|
+
getAbortController(): AbortController;
|
|
9
|
+
removeAbortController(c: any): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import AbortController from 'abort-controller';
|
|
2
|
+
export class GlobalControllerAborter {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.abortControllerList = [];
|
|
5
|
+
this.abortFlag = false;
|
|
6
|
+
}
|
|
7
|
+
abortAll() {
|
|
8
|
+
this.abortFlag = true;
|
|
9
|
+
for (const c of this.abortControllerList)
|
|
10
|
+
c.abort();
|
|
11
|
+
}
|
|
12
|
+
isAborting() {
|
|
13
|
+
return this.abortFlag;
|
|
14
|
+
}
|
|
15
|
+
getAbortController() {
|
|
16
|
+
const c = new AbortController();
|
|
17
|
+
this.abortControllerList.push(c);
|
|
18
|
+
return c;
|
|
19
|
+
}
|
|
20
|
+
removeAbortController(c) {
|
|
21
|
+
const index = this.abortControllerList.findIndex((controller) => controller === c);
|
|
22
|
+
if (index > -1)
|
|
23
|
+
this.abortControllerList.splice(index, 1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2xvYmFsQ29udHJvbGxlckFib3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL3NjYW5uZXIvRGlzcGF0Y2hlci9HbG9iYWxDb250cm9sbGVyQWJvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDO1FBQ0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
import { IWfpProviderInput } from './WfpProvider/WfpProvider';
|
|
3
|
+
export declare class Fingerprint extends EventEmitter {
|
|
4
|
+
private wfpCalculator;
|
|
5
|
+
private fingerprintPath;
|
|
6
|
+
private finishPromise;
|
|
7
|
+
private finishPromiseResolve;
|
|
8
|
+
private finishPromiseReject;
|
|
9
|
+
private reportStatusAfter;
|
|
10
|
+
private queue;
|
|
11
|
+
constructor(reportStatusAfter?: number);
|
|
12
|
+
private configureWfpCalculator;
|
|
13
|
+
start(jobs: Array<IWfpProviderInput>): Promise<void>;
|
|
14
|
+
abort(): void;
|
|
15
|
+
setFingerprintPath(fingerprintsFilePath: string): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import { WfpCalculator } from './WfpProvider/WfpCalculator/WfpCalculator';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { ScannerEvents } from './ScannerTypes';
|
|
7
|
+
import { ScannerCfg } from './ScannerCfg';
|
|
8
|
+
export class Fingerprint extends EventEmitter {
|
|
9
|
+
constructor(reportStatusAfter = 10) {
|
|
10
|
+
super();
|
|
11
|
+
this.reportStatusAfter = reportStatusAfter;
|
|
12
|
+
this.finishPromise = new Promise((resolve, reject) => {
|
|
13
|
+
this.finishPromiseResolve = resolve;
|
|
14
|
+
this.finishPromiseReject = reject;
|
|
15
|
+
});
|
|
16
|
+
this.configureWfpCalculator();
|
|
17
|
+
}
|
|
18
|
+
configureWfpCalculator() {
|
|
19
|
+
// TODO: Maybe the fingerprints shouldn't be truncated. Determine this optimal value.
|
|
20
|
+
const cfg = new ScannerCfg();
|
|
21
|
+
cfg.WFP_FILE_MAX_SIZE = 10 * 1024 * 1024;
|
|
22
|
+
cfg.WINNOWING_REPORT_STATUS_AFTER_X = this.reportStatusAfter;
|
|
23
|
+
this.wfpCalculator = new WfpCalculator(cfg);
|
|
24
|
+
this.wfpCalculator.on(ScannerEvents.WINNOWING_NEW_CONTENT, (fingerprintPackage) => {
|
|
25
|
+
fs.appendFileSync(this.fingerprintPath, fingerprintPackage.getContent());
|
|
26
|
+
});
|
|
27
|
+
this.wfpCalculator.on(ScannerEvents.WINNOWING_STATUS, (filesProcessed) => {
|
|
28
|
+
this.emit(ScannerEvents.WINNOWING_STATUS, filesProcessed);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async start(jobs) {
|
|
32
|
+
//If winnowing.wfp path is not set, set to a tmp folder
|
|
33
|
+
if (!this.fingerprintPath)
|
|
34
|
+
this.fingerprintPath = path.join(os.tmpdir(), "fingerprint-" + new Date().getTime().toString(), 'winnowing.wfp');
|
|
35
|
+
//If folder does not exist, create
|
|
36
|
+
const pathFolder = path.dirname(this.fingerprintPath);
|
|
37
|
+
if (!fs.existsSync(pathFolder))
|
|
38
|
+
fs.mkdirSync(pathFolder, { recursive: true });
|
|
39
|
+
this.queue = jobs;
|
|
40
|
+
for await (const job of this.queue) {
|
|
41
|
+
this.configureWfpCalculator();
|
|
42
|
+
await this.wfpCalculator.start(job);
|
|
43
|
+
}
|
|
44
|
+
this.emit(ScannerEvents.WINNOWING_FINISHED);
|
|
45
|
+
}
|
|
46
|
+
abort() {
|
|
47
|
+
this.wfpCalculator.stop();
|
|
48
|
+
this.wfpCalculator = null;
|
|
49
|
+
}
|
|
50
|
+
setFingerprintPath(fingerprintsFilePath) {
|
|
51
|
+
this.fingerprintPath = fingerprintsFilePath;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmluZ2VycHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL3NjYW5uZXIvRmluZ2VycHJpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFcEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFlBQVk7SUFRM0MsWUFBWSxpQkFBaUIsR0FBRyxFQUFFO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztZQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUlPLHNCQUFzQjtRQUU1QixxRkFBcUY7UUFDckYsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixHQUFHLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRSxJQUFJLENBQUM7UUFDeEMsR0FBRyxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRzVDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGtCQUFzQyxFQUFFLEVBQUU7WUFDcEcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxjQUFzQixFQUFFLEVBQUU7WUFDL0UsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFHTCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUE4QjtRQUMvQyx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxjQUFjLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUU1SSxrQ0FBa0M7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEQsSUFBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU0sa0JBQWtCLENBQUMsb0JBQTRCO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUMsb0JBQW9CLENBQUM7SUFDNUMsQ0FBQztDQUlGIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { WinnowingMode } from "../ScannerTypes";
|
|
3
|
+
export declare class ScannableItem {
|
|
4
|
+
private contentSource;
|
|
5
|
+
private content;
|
|
6
|
+
private winnowingMode;
|
|
7
|
+
private fingerprint;
|
|
8
|
+
private maxSizeWfp;
|
|
9
|
+
constructor(content: Buffer, contentSource: string, winnowingMode: any, maxSizeWfp: number);
|
|
10
|
+
getContent(): Buffer;
|
|
11
|
+
getContentSource(): string;
|
|
12
|
+
getFingerprint(): any;
|
|
13
|
+
getWinnowingMode(): WinnowingMode;
|
|
14
|
+
getMaxSizeWfp(): any;
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class ScannableItem {
|
|
2
|
+
constructor(content, contentSource, winnowingMode, maxSizeWfp) {
|
|
3
|
+
this.contentSource = contentSource;
|
|
4
|
+
this.content = content;
|
|
5
|
+
this.winnowingMode = winnowingMode;
|
|
6
|
+
this.maxSizeWfp = maxSizeWfp;
|
|
7
|
+
}
|
|
8
|
+
getContent() {
|
|
9
|
+
return this.content;
|
|
10
|
+
}
|
|
11
|
+
getContentSource() {
|
|
12
|
+
return this.contentSource;
|
|
13
|
+
}
|
|
14
|
+
getFingerprint() {
|
|
15
|
+
return this.fingerprint;
|
|
16
|
+
}
|
|
17
|
+
getWinnowingMode() {
|
|
18
|
+
return this.winnowingMode;
|
|
19
|
+
}
|
|
20
|
+
getMaxSizeWfp() {
|
|
21
|
+
return this.maxSizeWfp;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nhbm5hYmxlSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9TY2FubmFibGUvU2Nhbm5hYmxlSXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sYUFBYTtJQVd4QixZQUFZLE9BQWUsRUFBRSxhQUFxQixFQUFFLGFBQWtCLEVBQUUsVUFBa0I7UUFDeEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0NBR0YifQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
import { ScannerCfg } from './ScannerCfg';
|
|
3
|
+
import { ScannerInput } from './ScannerTypes';
|
|
4
|
+
export declare class Scanner extends EventEmitter {
|
|
5
|
+
private scannerCfg;
|
|
6
|
+
private workDirectory;
|
|
7
|
+
private resultFilePath;
|
|
8
|
+
private wfpFilePath;
|
|
9
|
+
private scanRoot;
|
|
10
|
+
private scannerId;
|
|
11
|
+
private wfpProvider;
|
|
12
|
+
private dispatcher;
|
|
13
|
+
private finishPromise;
|
|
14
|
+
private scannerInput;
|
|
15
|
+
private scanFinished;
|
|
16
|
+
private processingNewData;
|
|
17
|
+
private processedFiles;
|
|
18
|
+
private running;
|
|
19
|
+
private filesToScan;
|
|
20
|
+
private responseBuffer;
|
|
21
|
+
private filesNotScanned;
|
|
22
|
+
constructor(scannerCfg?: ScannerCfg);
|
|
23
|
+
init(): void;
|
|
24
|
+
private setWinnowerListeners;
|
|
25
|
+
private setDispatcherListeners;
|
|
26
|
+
private appendFilesToNotScanned;
|
|
27
|
+
private insertIntoBuffer;
|
|
28
|
+
private isBufferEmpty;
|
|
29
|
+
private bufferReachedLimit;
|
|
30
|
+
private bufferToFiles;
|
|
31
|
+
setWorkDirectory(workDirectory: string): void;
|
|
32
|
+
getWorkDirectory(): string;
|
|
33
|
+
cleanWorkDirectory(): void;
|
|
34
|
+
private finishJob;
|
|
35
|
+
private finishScan;
|
|
36
|
+
private reportLog;
|
|
37
|
+
private errorHandler;
|
|
38
|
+
private createOutputFiles;
|
|
39
|
+
private appendOutputFiles;
|
|
40
|
+
scan(scannerInput: Array<ScannerInput>): Promise<string>;
|
|
41
|
+
private isValidInput;
|
|
42
|
+
getScannerId(): string;
|
|
43
|
+
private abort;
|
|
44
|
+
stop(): void;
|
|
45
|
+
isRunning(): boolean;
|
|
46
|
+
}
|