scanoss 0.12.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/main/cli/bin/cli-bin.js +2 -1
  3. package/build/main/cli/commands/crypto.js +5 -2
  4. package/build/main/sdk/Cryptography/CryptoCfg.d.ts +10 -2
  5. package/build/main/sdk/Cryptography/CryptoCfg.js +11 -4
  6. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -8
  7. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -43
  8. package/build/main/sdk/Cryptography/CryptographyScanner.js +2 -2
  9. package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
  10. package/build/main/sdk/Cryptography/Worker/ThreadPool.js +86 -0
  11. package/build/main/sdk/Cryptography/Worker/Worker.d.ts +16 -0
  12. package/build/main/sdk/Cryptography/Worker/Worker.js +68 -0
  13. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
  14. package/build/main/tsconfig.tsbuildinfo +42 -9
  15. package/build/module/cli/bin/cli-bin.js +2 -1
  16. package/build/module/cli/commands/crypto.js +5 -2
  17. package/build/module/sdk/Cryptography/CryptoCfg.d.ts +10 -2
  18. package/build/module/sdk/Cryptography/CryptoCfg.js +11 -4
  19. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -8
  20. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -40
  21. package/build/module/sdk/Cryptography/CryptographyScanner.js +2 -2
  22. package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
  23. package/build/module/sdk/Cryptography/Worker/ThreadPool.js +83 -0
  24. package/build/module/sdk/Cryptography/Worker/Worker.d.ts +16 -0
  25. package/build/module/sdk/Cryptography/Worker/Worker.js +65 -0
  26. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
  27. package/build/module/tsconfig.module.tsbuildinfo +42 -9
  28. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.13.0](https://github.com/scanoss/scanoss.js/compare/v0.12.2...v0.13.0) (2024-05-13)
6
+
7
+ ### [0.12.2](https://github.com/scanoss/scanoss.js/compare/v0.12.0...v0.12.2) (2024-05-10)
8
+
5
9
  ### [0.12.0](https://github.com/scanoss/scanoss.js/compare/v0.11.5...v0.12.0) (2024-05-06)
6
10
 
7
11
  ### [0.11.5](https://github.com/scanoss/scanoss.js/compare/v0.11.4...v0.11.5) (2024-04-19)
@@ -73,6 +73,7 @@ async function main() {
73
73
  // Options
74
74
  cryptography.addOption(new commander_1.Option("-r, --rules <rules>", "Crypto rules"));
75
75
  cryptography.addOption(new commander_1.Option("-o, --output <filename>", "Output result file name (optional - default stdout)"));
76
+ cryptography.addOption(new commander_1.Option("-T, --threads <threads>", "Number of threads to use while scanning (optional - default 5)"));
76
77
  cryptography.action((source, options) => {
77
78
  crypto_1.cryptoHandler(source, options).catch((e) => {
78
79
  CLIErrorHandler(e);
@@ -94,4 +95,4 @@ catch (e) {
94
95
  console.error(e);
95
96
  process.exit(1);
96
97
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5Q0FBc0Q7QUFFdEQsaURBQThDO0FBQzlDLHlDQUE2QztBQUM3QywyQ0FBK0M7QUFDL0MseUNBQTZDO0FBQzdDLCtDQUFtRDtBQUVuRCxTQUFTLGVBQWUsQ0FBQyxDQUFRO0lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxXQUFXLEVBQUUsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7SUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDLENBQUM7SUFDdEcsSUFBSSxD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
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5Q0FBc0Q7QUFFdEQsaURBQThDO0FBQzlDLHlDQUE2QztBQUM3QywyQ0FBK0M7QUFDL0MseUNBQTZDO0FBQzdDLCtDQUFtRDtBQUVuRCxTQUFTLGVBQWUsQ0FBQyxDQUFRO0lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxXQUFXLEVBQUUsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7SUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDLENBQUM7SUFDdEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsNEJBQTRCLEVBQUUsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO0lBQzVGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLDhCQUE4QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyw0QkFBNEIsRUFBRSwrRUFBK0UsQ0FBQyxDQUFDLENBQUM7SUFDMUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsdUJBQXVCLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx1QkFBdUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMscUJBQXFCLEVBQUUsbVJBQW1SLENBQUMsQ0FBQyxDQUFDO0lBQ3ZVLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLDJCQUEyQixFQUFFLGlGQUFpRixDQUFDLENBQUMsQ0FBQztJQUMzSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx5QkFBeUIsRUFBRSwyREFBMkQsQ0FBQyxDQUFDLENBQUM7SUFDbkgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMseUJBQXlCLEVBQUUsb0VBQW9FLENBQUMsQ0FBQyxDQUFDO0lBQzVILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxvQkFBb0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7SUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsdUJBQXVCLEVBQUUseUVBQXlFLENBQUMsQ0FBQyxDQUFDO0lBQy9ILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLHlCQUF5QixFQUFFLG9FQUFvRSxDQUFDLENBQUMsQ0FBQztJQUM1SCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxpQkFBaUIsRUFBRSx1RUFBdUUsQ0FBQyxDQUFDLENBQUM7SUFDdkgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsMEJBQTBCLEVBQUUsdUNBQXVDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLHNCQUFzQixFQUFFLHNEQUFzRCxDQUFDLENBQUMsQ0FBQztJQUMzRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxxQkFBcUIsRUFBRSx3SkFBd0osQ0FBQyxDQUFDLENBQUM7SUFDNU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsaUJBQWlCLEVBQUUsMEVBQTBFLENBQUMsQ0FBQyxDQUFDO0lBQzFILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7SUFFNUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM5QixrQkFBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUdILE1BQU0sWUFBWSxHQUFHLElBQUksbUJBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxZQUFZLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVuRCxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx5QkFBeUIsRUFBRSxxREFBcUQsQ0FBQyxDQUFDLENBQUM7SUFDckgsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsd0JBQXdCLEVBQUUsNkRBQTZELENBQUMsQ0FBQyxDQUFDO0lBRTVILFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDdEMsZ0JBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFHSCxNQUFNLFdBQVcsR0FBRyxJQUFJLG1CQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUdsRCxXQUFXLENBQUMsV0FBVyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFDcEUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsWUFBWSxFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztJQUNoRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxhQUFhLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztJQUNwSCxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx5QkFBeUIsRUFBRSx5RUFBeUUsQ0FBQyxDQUFDLENBQUM7SUFFeEksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNyQyxnQkFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUdILE1BQU0sWUFBWSxHQUFHLElBQUksbUJBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxZQUFZLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVuRCxVQUFVO0lBQ1YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMxRSxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx5QkFBeUIsRUFBRSxxREFBcUQsQ0FBQyxDQUFDLENBQUM7SUFDckgsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMseUJBQXlCLEVBQUUsZ0VBQWdFLENBQUMsQ0FBQyxDQUFDO0lBRWhJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDdEMsc0JBQWEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDekMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztJQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLGFBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLFdBQVcsQ0FBQyw0R0FBNEcsQ0FBQyxDQUFDO0lBQ2xJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFakMsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUl6QyxDQUFDO0FBRUQsSUFBSTtJQUNGLElBQUksRUFBRSxDQUFDO0NBQ1I7QUFBQyxPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNqQiJ9
@@ -15,7 +15,10 @@ async function cryptoHandler(rootPath, options) {
15
15
  let cryptoRules = null;
16
16
  if (options.rules)
17
17
  cryptoRules = options.rules;
18
- const cryptoScanner = new CryptographyScanner_1.CryptographyScanner(new CryptoCfg_1.CryptoCfg(cryptoRules));
18
+ let threads = null;
19
+ if (options.threads)
20
+ threads = options.threads;
21
+ const cryptoScanner = new CryptographyScanner_1.CryptographyScanner(new CryptoCfg_1.CryptoCfg({ threads, rulesPath: cryptoRules }));
19
22
  let fileList = [];
20
23
  fileList.push(rootPath);
21
24
  if (pathIsFolder) {
@@ -34,4 +37,4 @@ async function cryptoHandler(rootPath, options) {
34
37
  }
35
38
  }
36
39
  exports.cryptoHandler = cryptoHandler;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBcUM7QUFLckMsb0ZBRW9EO0FBQ3BELDhDQUEyQztBQUUzQyxnRUFBNkQ7QUFDN0QsNENBQW9CO0FBRWIsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRzlDLE1BQU0sYUFBYSxHQUFHLElBQUkseUNBQW1CLENBQUMsSUFBSSxxQkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFHMUUsSUFBSSxRQUFRLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLElBQUksWUFBWSxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ25DO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVuRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDbEIsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ25EO1NBQU07UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9DO0FBRUgsQ0FBQztBQS9CRCxzQ0ErQkMifQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBcUM7QUFLckMsb0ZBRW9EO0FBQ3BELDhDQUEyQztBQUUzQyxnRUFBNkQ7QUFDN0QsNENBQW9CO0FBRWIsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUVoRyxJQUFJLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEIsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQixNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDbkQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0M7QUFFSCxDQUFDO0FBaENELHNDQWdDQyJ9
@@ -2,15 +2,23 @@
2
2
  * Represents a configuration for cryptography scanner.
3
3
  */
4
4
  export declare class CryptoCfg {
5
+ private readonly DEFAULT_THREADS;
5
6
  private readonly rulesPath;
7
+ private readonly threads;
6
8
  /**
7
9
  * Creates an instance of CryptoCfg.
8
- * @param rulesPath Optional. Path to the cryptography rules file.
10
+ * @param {Object} cfg - Configuration object.
11
+ * @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
12
+ * @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
9
13
  */
10
- constructor(rulesPath?: string);
14
+ constructor(cfg: {
15
+ threads: number;
16
+ rulesPath: string;
17
+ });
11
18
  /**
12
19
  * Gets the path to the cryptography rules file.
13
20
  * @returns The path to the cryptography rules file.
14
21
  */
15
22
  getRulesPath(): string;
23
+ getNumberOfThreads(): number;
16
24
  }
@@ -6,10 +6,14 @@ exports.CryptoCfg = void 0;
6
6
  class CryptoCfg {
7
7
  /**
8
8
  * Creates an instance of CryptoCfg.
9
- * @param rulesPath Optional. Path to the cryptography rules file.
9
+ * @param {Object} cfg - Configuration object.
10
+ * @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
11
+ * @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
10
12
  */
11
- constructor(rulesPath) {
12
- this.rulesPath = rulesPath;
13
+ constructor(cfg) {
14
+ this.DEFAULT_THREADS = 5;
15
+ this.rulesPath = cfg.rulesPath;
16
+ this.threads = cfg.threads ? Number(cfg.threads) : this.DEFAULT_THREADS;
13
17
  }
14
18
  /**
15
19
  * Gets the path to the cryptography rules file.
@@ -18,6 +22,9 @@ class CryptoCfg {
18
22
  getRulesPath() {
19
23
  return this.rulesPath;
20
24
  }
25
+ getNumberOfThreads() {
26
+ return this.threads;
27
+ }
21
28
  }
22
29
  exports.CryptoCfg = CryptoCfg;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFJcEI7OztPQUdHO0lBQ0YsWUFBWSxTQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUY7OztPQUdHO0lBQ0ssWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUVIO0FBcEJELDhCQW9CQyJ9
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFRcEI7Ozs7O09BS0c7SUFDRixZQUFhLEdBQTJDO1FBWnhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBYWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDMUUsQ0FBQztJQUVGOzs7T0FHRztJQUNLLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FFSDtBQS9CRCw4QkErQkMifQ==
@@ -6,21 +6,16 @@ import { CryptoAlgorithmRules } from '../CryptographyTypes';
6
6
  export declare class LocalCrypto {
7
7
  private cryptoMapper;
8
8
  private cryptoRules;
9
- private readonly MAX_FILE_SIZE;
9
+ private threads;
10
10
  /**
11
11
  * Constructs a new LocalCrypto.
12
12
  * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
13
+ * @param threads Number of threads to be use to scan local cryptography (default = 5).
13
14
  */
14
- constructor(cryptoRules: Array<CryptoAlgorithmRules>);
15
+ constructor(cryptoRules: Array<CryptoAlgorithmRules>, threads: number);
15
16
  /**
16
17
  * Searches for cryptographic algorithms in the content of a files.
17
18
  * @param files The files to search.
18
19
  */
19
20
  search(files: Array<string>): Promise<Array<CryptoItem>>;
20
- /**
21
- * Asynchronously searches for cryptographic algorithms in the content of a file.
22
- * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
23
- * @returns A promise that resolves when the search is complete.
24
- */
25
- private searchCrypto;
26
21
  }
@@ -1,11 +1,8 @@
1
- var __importDefault = (this && this.__importDefault) || function (mod) {
2
- return (mod && mod.__esModule) ? mod : { "default": mod };
3
- };
4
1
  Object.defineProperty(exports, "__esModule", { value: true });
5
2
  exports.LocalCrypto = void 0;
6
3
  const CryptoItem_1 = require("../Scanneable/CryptoItem");
7
4
  const CryptoDef_1 = require("../CryptoDef/CryptoDef");
8
- const fs_1 = __importDefault(require("fs"));
5
+ const ThreadPool_1 = require("../Worker/ThreadPool");
9
6
  /**
10
7
  * Represents a CryptoCalculator used for searching cryptographic algorithms in files.
11
8
  */
@@ -13,11 +10,12 @@ class LocalCrypto {
13
10
  /**
14
11
  * Constructs a new LocalCrypto.
15
12
  * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
13
+ * @param threads Number of threads to be use to scan local cryptography (default = 5).
16
14
  */
17
- constructor(cryptoRules) {
18
- this.MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
15
+ constructor(cryptoRules, threads) {
19
16
  this.cryptoRules = CryptoDef_1.createCryptoKeywordMapper(cryptoRules);
20
17
  this.cryptoMapper = CryptoDef_1.getCryptoMapper(cryptoRules);
18
+ this.threads = threads;
21
19
  }
22
20
  /**
23
21
  * Searches for cryptographic algorithms in the content of a files.
@@ -26,44 +24,13 @@ class LocalCrypto {
26
24
  async search(files) {
27
25
  if (files.length <= 0)
28
26
  return [];
29
- const cryptoItems = files.map((f) => { return new CryptoItem_1.CryptoItem(f); });
30
- for (let c of cryptoItems) {
31
- await this.searchCrypto(c);
32
- }
33
- return cryptoItems;
34
- }
35
- /**
36
- * Asynchronously searches for cryptographic algorithms in the content of a file.
37
- * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
38
- * @returns A promise that resolves when the search is complete.
39
- */
40
- async searchCrypto(cryptoItem) {
41
- const cryptoFound = new Array();
42
- const stats = await fs_1.default.promises.stat(cryptoItem.getPath());
43
- if (stats.size > this.MAX_FILE_SIZE) {
44
- cryptoItem.setAlgorithms([]);
45
- return;
46
- }
47
- let content = await fs_1.default.promises.readFile(cryptoItem.getPath(), 'utf-8');
48
- this.cryptoRules.forEach((value, key) => {
49
- try {
50
- const matches = content.match(value);
51
- if (matches) {
52
- cryptoFound.push(key);
53
- }
54
- }
55
- catch (e) {
56
- console.error(e);
57
- }
58
- });
59
- // Release memory
60
- content = null;
61
- const results = [];
62
- cryptoFound.forEach((cf) => {
63
- results.push(this.cryptoMapper.get(cf));
27
+ const threadPool = new ThreadPool_1.ThreadPool(this.threads, this.cryptoRules, this.cryptoMapper);
28
+ files.forEach((f) => {
29
+ threadPool.enqueueTask(new CryptoItem_1.CryptoItem(f));
64
30
  });
65
- cryptoItem.setAlgorithms(results);
31
+ await threadPool.init();
32
+ return await threadPool.processQueue();
66
33
  }
67
34
  }
68
35
  exports.LocalCrypto = LocalCrypto;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlEQUFzRDtBQUN0RCxzREFFZ0M7QUFDaEMsNENBQW9CO0FBR3BCOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBUXRCOzs7T0FHRztJQUNILFlBQVksV0FBd0M7UUFObkMsa0JBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFPdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxxQ0FBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLDJCQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksdUJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxFLEtBQUksSUFBSSxDQUFDLElBQUksV0FBVyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFzQjtRQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbkMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QixPQUFPO1NBQ1I7UUFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN0QyxJQUFJO2dCQUNGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksT0FBTyxFQUFFO29CQUNYLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3ZCO2FBQ0Y7WUFBQyxPQUFPLENBQUMsRUFBQztnQkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxpQkFBaUI7UUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUM7UUFDM0MsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUVGO0FBaEVELGtDQWdFQyJ9
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlEQUFzRDtBQUN0RCxzREFFZ0M7QUFHaEMscURBQWtEO0FBR2xEOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBUXRCOzs7O09BSUc7SUFDSCxZQUFZLFdBQXdDLEVBQUUsT0FBZTtRQUNuRSxJQUFJLENBQUMsV0FBVyxHQUFHLHFDQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsMkJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksdUJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsT0FBTyxNQUFNLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUFoQ0Qsa0NBZ0NDIn0=
@@ -26,7 +26,7 @@ class CryptographyScanner {
26
26
  */
27
27
  async scan(files) {
28
28
  const cryptographyRules = await this.loadRules(this.cryptoConfig.getRulesPath());
29
- const localCrypto = new LocalCrypto_1.LocalCrypto(cryptographyRules);
29
+ const localCrypto = new LocalCrypto_1.LocalCrypto(cryptographyRules, this.cryptoConfig.getNumberOfThreads());
30
30
  const cryptoItems = await localCrypto.search(files);
31
31
  return cryptoAdapters_1.mapToILocalCryptographyResponse(cryptoItems);
32
32
  }
@@ -54,4 +54,4 @@ class CryptographyScanner {
54
54
  }
55
55
  }
56
56
  exports.CryptographyScanner = CryptographyScanner;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsdUNBQW9DO0FBQ3BDLDhEQUEyRDtBQU0zRCxvRUFFeUM7QUFDekMsZ0RBQXdCO0FBRXhCOztHQUVHO0FBQ0gsTUFBYSxtQkFBbUI7SUFHOUI7OztPQUdHO0lBQ0gsWUFBWSxTQUFvQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLGdEQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFpQjtRQUN2QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsY0FBSSxDQUFDLElBQUksQ0FDckQsU0FBUyxFQUNULGlEQUFpRCxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRjtBQWpERCxrREFpREMifQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsdUNBQW9DO0FBQ3BDLDhEQUEyRDtBQU0zRCxvRUFFeUM7QUFDekMsZ0RBQXdCO0FBRXhCOztHQUVHO0FBQ0gsTUFBYSxtQkFBbUI7SUFHOUI7OztPQUdHO0lBQ0gsWUFBWSxTQUFvQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBb0I7UUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsT0FBTyxnREFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLGNBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUY7QUFqREQsa0RBaURDIn0=
@@ -0,0 +1,21 @@
1
+ import { CryptoAlgorithm } from '../CryptographyTypes';
2
+ import { CryptoItem } from '../Scanneable/CryptoItem';
3
+ export declare class ThreadPool {
4
+ private readonly maxWorkers;
5
+ private readonly workers;
6
+ private readonly jobsQueue;
7
+ private readonly cryptoRules;
8
+ private readonly cryptoMapper;
9
+ private results;
10
+ private activeWorkers;
11
+ private resolve;
12
+ private reject;
13
+ constructor(maxWorkers: number, rules: Map<string, RegExp>, cryptoMapper: Map<string, CryptoAlgorithm>);
14
+ enqueueTask(item: CryptoItem): Promise<unknown>;
15
+ init(): Promise<void>;
16
+ private releaseWorker;
17
+ private next;
18
+ private destroyAllWorkers;
19
+ processQueue(): Promise<Array<CryptoItem>>;
20
+ private processItem;
21
+ }
@@ -0,0 +1,86 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.ThreadPool = void 0;
3
+ const Worker_1 = require("./Worker");
4
+ class ThreadPool {
5
+ constructor(maxWorkers = 3, rules, cryptoMapper) {
6
+ this.workers = [];
7
+ this.results = [];
8
+ this.activeWorkers = 0;
9
+ this.maxWorkers = maxWorkers;
10
+ this.workers = [];
11
+ this.jobsQueue = [];
12
+ this.cryptoRules = rules;
13
+ this.cryptoMapper = cryptoMapper;
14
+ }
15
+ enqueueTask(item) {
16
+ return new Promise((resolve, reject) => {
17
+ const job = { item, resolve, reject };
18
+ this.jobsQueue.push(job);
19
+ });
20
+ }
21
+ async init() {
22
+ for (let i = 0; i < this.maxWorkers; i++) {
23
+ const worker = new Worker_1.Worker();
24
+ worker.on('message', async (item) => {
25
+ this.results.push(item.result);
26
+ this.releaseWorker(item.id);
27
+ await this.next();
28
+ });
29
+ // TODO: See what can be done in case an error on the thread
30
+ worker.on('error', async (error) => {
31
+ console.log(error);
32
+ this.releaseWorker(worker.getId());
33
+ await this.next();
34
+ });
35
+ this.workers.push(worker);
36
+ }
37
+ }
38
+ releaseWorker(id) {
39
+ const wId = this.workers.findIndex(w => w.getId() === id);
40
+ const w = this.workers[wId];
41
+ w.release();
42
+ return w.getId();
43
+ }
44
+ async next() {
45
+ this.activeWorkers -= 1;
46
+ if (this.activeWorkers === 0 && this.jobsQueue.length === 0) {
47
+ await this.destroyAllWorkers();
48
+ this.resolve(this.results);
49
+ }
50
+ else {
51
+ this.processItem();
52
+ }
53
+ }
54
+ async destroyAllWorkers() {
55
+ for (const worker of this.workers) {
56
+ await worker.terminate(); // Terminate each worker
57
+ }
58
+ }
59
+ async processQueue() {
60
+ return new Promise(async (resolve, reject) => {
61
+ this.resolve = resolve;
62
+ this.reject = reject;
63
+ this.processItem();
64
+ });
65
+ }
66
+ processItem() {
67
+ if (this.workers.length > 0 && this.jobsQueue.length > 0) {
68
+ const freeWorkerIndices = this.workers.reduce((indices, worker, index) => {
69
+ if (worker.isFree()) {
70
+ indices.push(index);
71
+ }
72
+ return indices;
73
+ }, []);
74
+ freeWorkerIndices.forEach(workerIndex => {
75
+ if (this.jobsQueue.length <= 0)
76
+ return;
77
+ const { item, reject } = this.jobsQueue.shift();
78
+ const worker = this.workers[workerIndex];
79
+ worker.run({ item, rules: this.cryptoRules, cryptoMapper: this.cryptoMapper });
80
+ this.activeWorkers += 1;
81
+ });
82
+ }
83
+ }
84
+ }
85
+ exports.ThreadPool = ThreadPool;
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L1dvcmtlci9UaHJlYWRQb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEscUNBQW1EO0FBRW5ELE1BQWEsVUFBVTtJQW1CckIsWUFBWSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQXlCLEVBQUUsWUFBMEM7UUFmaEYsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFRckMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBTXhCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBZ0I7UUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssRUFB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
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import { TransferListItem, Worker as W } from 'worker_threads';
3
+ import { CryptoItem } from '../Scanneable/CryptoItem';
4
+ export interface IWorkerResponse {
5
+ result: CryptoItem;
6
+ id: number;
7
+ }
8
+ export declare class Worker extends W {
9
+ private free;
10
+ constructor();
11
+ getId(): number;
12
+ release(): void;
13
+ isFree(): boolean;
14
+ on(event: any, listener: any): this;
15
+ run(value: any, transferList?: ReadonlyArray<TransferListItem>): void;
16
+ }
@@ -0,0 +1,68 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.Worker = void 0;
3
+ const worker_threads_1 = require("worker_threads");
4
+ const stringWorker = `
5
+ const { parentPort } = require('worker_threads');
6
+ const fs = require('fs');
7
+
8
+ parentPort.on('message', async (data) => {
9
+
10
+ const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
11
+
12
+ const { item, rules , cryptoMapper, id } = data;
13
+
14
+ const cryptoFound = new Array();
15
+ const stats = await fs.promises.stat(item.file);
16
+ if (stats.size > MAX_FILE_SIZE) {
17
+ item.algorithms = [];
18
+ parentPort.postMessage({ result: item, id });
19
+ return;
20
+ }
21
+
22
+ let content = fs.readFileSync(item.file, 'utf-8');
23
+ rules.forEach((value, key) => {
24
+ try {
25
+ const matches = content.match(value);
26
+ if (matches) {
27
+ cryptoFound.push(key);
28
+ }
29
+ } catch (e){
30
+ console.error(e);
31
+ }
32
+ });
33
+ const results = [];
34
+ cryptoFound.forEach((cf)=>{
35
+ results.push(cryptoMapper.get(cf));
36
+ });
37
+ item.algorithms = results;
38
+ parentPort.postMessage({ result: item, id });
39
+ });
40
+ `;
41
+ class Worker extends worker_threads_1.Worker {
42
+ constructor() {
43
+ super(stringWorker, { eval: true });
44
+ this.free = true;
45
+ }
46
+ getId() {
47
+ return this.threadId;
48
+ }
49
+ release() {
50
+ this.free = true;
51
+ }
52
+ isFree() {
53
+ return this.free;
54
+ }
55
+ on(event, listener) {
56
+ if (event === 'error') {
57
+ this.free = true;
58
+ }
59
+ // Call super.on with the provided arguments
60
+ return super.on(event, listener);
61
+ }
62
+ run(value, transferList) {
63
+ this.free = false;
64
+ this.postMessage(Object.assign(Object.assign({}, value), { id: this.threadId }));
65
+ }
66
+ }
67
+ exports.Worker = Worker;
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvV29ya2VyL1dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUE4RTtBQUk5RSxNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0NwQixDQUFDO0FBT0YsTUFBYSxNQUFPLFNBQVEsdUJBQUM7SUFLM0I7UUFDRSxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRO1FBQ2hCLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUNELDRDQUE0QztRQUMzQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLENBQUM7SUFDTSxHQUFHLENBQUUsS0FBVSxFQUFFLFlBQThDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLGlDQUFLLEtBQUssS0FBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBRyxDQUFDO0lBQ25ELENBQUM7Q0FFRjtBQW5DRCx3QkFtQ0MifQ==
@@ -6,10 +6,10 @@ exports.mapToILocalCryptographyResponse = void 0;
6
6
  * @returns An ILocalCryptographyResponse object containing mapped cryptographic items.
7
7
  */
8
8
  function mapToILocalCryptographyResponse(ci) {
9
- const fileList = ci.map((c) => ({ file: c.getPath(), algorithms: c.getAlgorithms() }));
9
+ const fileList = ci.map((c) => ({ file: c.file, algorithms: c.algorithms }));
10
10
  return {
11
11
  fileList
12
12
  };
13
13
  }
14
14
  exports.mapToILocalCryptographyResponse = mapToILocalCryptographyResponse;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBOzs7O0dBSUc7QUFDSCxTQUFnQiwrQkFBK0IsQ0FBQyxFQUFxQjtJQUNuRSxNQUFNLFFBQVEsR0FBdUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RyxPQUFPO1FBQ0wsUUFBUTtLQUNULENBQUE7QUFDSCxDQUFDO0FBTEQsMEVBS0MifQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBOzs7O0dBSUc7QUFDSCxTQUFnQiwrQkFBK0IsQ0FBQyxFQUFxQjtJQUNuRSxNQUFNLFFBQVEsR0FBdUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLE9BQU87UUFDTCxRQUFRO0tBQ1QsQ0FBQTtBQUNILENBQUM7QUFMRCwwRUFLQyJ9
@@ -1186,23 +1186,33 @@
1186
1186
  "signature": "42ef1caff70c5da8c9c6ebc82ac2ebdc21bf60274786a6a4707b7d983e47f50c",
1187
1187
  "affectsGlobalScope": false
1188
1188
  },
1189
+ "../../src/sdk/Cryptography/Worker/Worker.ts": {
1190
+ "version": "63d1850409c989b9486228d957316f536f1ff586ab0731eb763ab888148ea822",
1191
+ "signature": "ccb42ecdc7e2a04167368763d46f7eb3c79a44fbeda79498b8b42f0223c72909",
1192
+ "affectsGlobalScope": false
1193
+ },
1194
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": {
1195
+ "version": "e8c8885745c6d05a2ed9c216322bf729908e3e60a8a1e47a08140557c9fb15ca",
1196
+ "signature": "37421d8f7f9700f710ad8a654635bdc1a42d46e8cf101604eedc49a23e6f877c",
1197
+ "affectsGlobalScope": false
1198
+ },
1189
1199
  "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": {
1190
- "version": "cae73a110cfc88f323420359fd201321416e2a161da7dee8a44c7991456b18fc",
1191
- "signature": "d2613a844321f7df744aefdf3defdf4d1c9705ff987c7b7639bd6d3c2a5ea6f1",
1200
+ "version": "7eff76625475ea0d15e0026797b4ba166acc54a6e8373e4993c32b85b12ac7da",
1201
+ "signature": "a26649da45a1cb7044e9ff16c813111ca599f24fde0b7a275ad4cafa200556fe",
1192
1202
  "affectsGlobalScope": false
1193
1203
  },
1194
1204
  "../../src/sdk/Cryptography/CryptoCfg.ts": {
1195
- "version": "cde8ab1bc0cbad549e3488209bba6151e1e11130df8244d2c1bf35564e6020ae",
1196
- "signature": "a230323c3aafd7a51a3733970951b1112863fcf2c7df0facea9a16fb2ddbe0bc",
1205
+ "version": "9d7472e2a06ed91f0d97cdb0be0aab4e805fe7b89d1b99024e0dc7bea2bd9975",
1206
+ "signature": "556b688ca25d64662be634b41ba6613f442f17b9e34608105f0d6c01c5e821b3",
1197
1207
  "affectsGlobalScope": false
1198
1208
  },
1199
1209
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": {
1200
- "version": "49a17f0d412d5bdd4274d19b085f0ccac77e161d1bbf0faafc82152d7487d01d",
1210
+ "version": "ca0db37074d84c4c8d2a3ef96d5d3811ad92e4def2a03349ee05e08000d7fbbe",
1201
1211
  "signature": "07fb866e2304237f9fde84da70e3443430d2a377c0b463ec475ac50ab69ce8e3",
1202
1212
  "affectsGlobalScope": false
1203
1213
  },
1204
1214
  "../../src/sdk/Cryptography/CryptographyScanner.ts": {
1205
- "version": "8ca3b8bca5a4c29a5e855ba13fe5d2764ec116b49b2eb5a12e291b60305a7aff",
1215
+ "version": "6468e7d976bd50b3388685836539234a8fad3b9feae5c36c72f88dc7312c4f98",
1206
1216
  "signature": "8c3e8e247c583b1144e13ee4ffe30b01377687eb25d88af8828d69e96f17ddd4",
1207
1217
  "affectsGlobalScope": false
1208
1218
  },
@@ -1362,12 +1372,12 @@
1362
1372
  "affectsGlobalScope": false
1363
1373
  },
1364
1374
  "../../src/cli/commands/crypto.ts": {
1365
- "version": "a4b982e1d7d51fc42c1edcb79c19b3deb56043152d86708dde2200bc091e1d39",
1375
+ "version": "406a726fb9349e5bc24ac82927f6cbc01b7029fae72362a47f4ac71d34ec4193",
1366
1376
  "signature": "7facac4a5ac19854614a21eacbcb2f83eaadab500bd6f73aa80c7f8100cce221",
1367
1377
  "affectsGlobalScope": false
1368
1378
  },
1369
1379
  "../../src/cli/bin/cli-bin.ts": {
1370
- "version": "97a46e7ab889cdf6d8c511f28e6dcf95ca4282c997b8622a2037668e7272e256",
1380
+ "version": "8556937d76e99dfb660e52ff7f714829ebe1cb548ded334a65d7d36c770d9bb3",
1371
1381
  "signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
1372
1382
  "affectsGlobalScope": false
1373
1383
  },
@@ -2656,7 +2666,8 @@
2656
2666
  "../../node_modules/@types/node/util.d.ts",
2657
2667
  "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
2658
2668
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
2659
- "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2669
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
2670
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts"
2660
2671
  ],
2661
2672
  "../../src/sdk/Cryptography/CryptographyScanner.ts": [
2662
2673
  "../../node_modules/@types/node/fs.d.ts",
@@ -2675,6 +2686,18 @@
2675
2686
  "../../node_modules/@types/node/util.d.ts",
2676
2687
  "../../src/sdk/Cryptography/CryptographyTypes.ts"
2677
2688
  ],
2689
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
2690
+ "../../node_modules/@types/node/util.d.ts",
2691
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2692
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
2693
+ "../../src/sdk/Cryptography/Worker/Worker.ts"
2694
+ ],
2695
+ "../../src/sdk/Cryptography/Worker/Worker.ts": [
2696
+ "../../node_modules/@types/node/url.d.ts",
2697
+ "../../node_modules/@types/node/util.d.ts",
2698
+ "../../node_modules/@types/node/worker_threads.d.ts",
2699
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2700
+ ],
2678
2701
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
2679
2702
  "../../node_modules/@types/node/util.d.ts",
2680
2703
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
@@ -4242,6 +4265,14 @@
4242
4265
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
4243
4266
  "../../src/sdk/Cryptography/CryptographyTypes.ts"
4244
4267
  ],
4268
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
4269
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4270
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4271
+ ],
4272
+ "../../src/sdk/Cryptography/Worker/Worker.ts": [
4273
+ "../../node_modules/@types/node/worker_threads.d.ts",
4274
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4275
+ ],
4245
4276
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
4246
4277
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
4247
4278
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
@@ -4670,6 +4701,8 @@
4670
4701
  "../../src/sdk/Cryptography/CryptographyScanner.ts",
4671
4702
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
4672
4703
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
4704
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts",
4705
+ "../../src/sdk/Cryptography/Worker/Worker.ts",
4673
4706
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
4674
4707
  "../../src/sdk/Decompress/DecompressionManager.ts",
4675
4708
  "../../src/sdk/Decompress/Decompressor/DecompressTgz.ts",
@@ -72,6 +72,7 @@ async function main() {
72
72
  // Options
73
73
  cryptography.addOption(new Option("-r, --rules <rules>", "Crypto rules"));
74
74
  cryptography.addOption(new Option("-o, --output <filename>", "Output result file name (optional - default stdout)"));
75
+ cryptography.addOption(new Option("-T, --threads <threads>", "Number of threads to use while scanning (optional - default 5)"));
75
76
  cryptography.action((source, options) => {
76
77
  cryptoHandler(source, options).catch((e) => {
77
78
  CLIErrorHandler(e);
@@ -93,4 +94,4 @@ catch (e) {
93
94
  console.error(e);
94
95
  process.exit(1);
95
96
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELFNBQVMsZUFBZSxDQUFDLENBQVE7SUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELEtBQUssVUFBVSxJQUFJO0lBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM1RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDhCQUE4QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLCtFQUErRSxDQUFDLENBQUMsQ0FBQztJQUMxSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLG1SQUFtUixDQUFDLENBQUMsQ0FBQztJQUN2VSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFLGlGQUFpRixDQUFDLENBQUMsQ0FBQztJQUMzSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQztJ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
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELFNBQVMsZUFBZSxDQUFDLENBQVE7SUFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELEtBQUssVUFBVSxJQUFJO0lBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM1RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDhCQUE4QixFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDRCQUE0QixFQUFFLCtFQUErRSxDQUFDLENBQUMsQ0FBQztJQUMxSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLG1SQUFtUixDQUFDLENBQUMsQ0FBQztJQUN2VSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFLGlGQUFpRixDQUFDLENBQUMsQ0FBQztJQUMzSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQztJ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
@@ -10,7 +10,10 @@ export async function cryptoHandler(rootPath, options) {
10
10
  let cryptoRules = null;
11
11
  if (options.rules)
12
12
  cryptoRules = options.rules;
13
- const cryptoScanner = new CryptographyScanner(new CryptoCfg(cryptoRules));
13
+ let threads = null;
14
+ if (options.threads)
15
+ threads = options.threads;
16
+ const cryptoScanner = new CryptographyScanner(new CryptoCfg({ threads, rulesPath: cryptoRules }));
14
17
  let fileList = [];
15
18
  fileList.push(rootPath);
16
19
  if (pathIsFolder) {
@@ -28,4 +31,4 @@ export async function cryptoHandler(rootPath, options) {
28
31
  console.log(JSON.stringify(results, null, 2));
29
32
  }
30
33
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUtyQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sNENBQTRDLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFcEIsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFZO0lBQ2hFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFFLGtDQUFrQztJQUMzRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLDBDQUEwQztJQUNoRyxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRzlDLE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUcxRSxJQUFJLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEIsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDbkQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0M7QUFFSCxDQUFDIn0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUtyQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sNENBQTRDLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFcEIsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFZO0lBQ2hFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFFLGtDQUFrQztJQUMzRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLDBDQUEwQztJQUNoRyxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhHLElBQUksUUFBUSxHQUFrQixFQUFFLENBQUM7SUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QixJQUFJLFlBQVksRUFBRTtRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNuQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQTtJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2pCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNuRDtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUVILENBQUMifQ==
@@ -2,15 +2,23 @@
2
2
  * Represents a configuration for cryptography scanner.
3
3
  */
4
4
  export declare class CryptoCfg {
5
+ private readonly DEFAULT_THREADS;
5
6
  private readonly rulesPath;
7
+ private readonly threads;
6
8
  /**
7
9
  * Creates an instance of CryptoCfg.
8
- * @param rulesPath Optional. Path to the cryptography rules file.
10
+ * @param {Object} cfg - Configuration object.
11
+ * @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
12
+ * @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
9
13
  */
10
- constructor(rulesPath?: string);
14
+ constructor(cfg: {
15
+ threads: number;
16
+ rulesPath: string;
17
+ });
11
18
  /**
12
19
  * Gets the path to the cryptography rules file.
13
20
  * @returns The path to the cryptography rules file.
14
21
  */
15
22
  getRulesPath(): string;
23
+ getNumberOfThreads(): number;
16
24
  }
@@ -4,10 +4,14 @@
4
4
  export class CryptoCfg {
5
5
  /**
6
6
  * Creates an instance of CryptoCfg.
7
- * @param rulesPath Optional. Path to the cryptography rules file.
7
+ * @param {Object} cfg - Configuration object.
8
+ * @param {number} [cfg.threads=5] - The number of threads to use. Defaults to 5 if not provided.
9
+ * @param {string} [cfg.rulesPath] - Optional. Path to the cryptography rules file.
8
10
  */
9
- constructor(rulesPath) {
10
- this.rulesPath = rulesPath;
11
+ constructor(cfg) {
12
+ this.DEFAULT_THREADS = 5;
13
+ this.rulesPath = cfg.rulesPath;
14
+ this.threads = cfg.threads ? Number(cfg.threads) : this.DEFAULT_THREADS;
11
15
  }
12
16
  /**
13
17
  * Gets the path to the cryptography rules file.
@@ -16,5 +20,8 @@ export class CryptoCfg {
16
20
  getRulesPath() {
17
21
  return this.rulesPath;
18
22
  }
23
+ getNumberOfThreads() {
24
+ return this.threads;
25
+ }
19
26
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFJcEI7OztPQUdHO0lBQ0YsWUFBWSxTQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUY7OztPQUdHO0lBQ0ssWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUVIIn0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFRcEI7Ozs7O09BS0c7SUFDRixZQUFhLEdBQTJDO1FBWnhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBYWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDMUUsQ0FBQztJQUVGOzs7T0FHRztJQUNLLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FFSCJ9
@@ -6,21 +6,16 @@ import { CryptoAlgorithmRules } from '../CryptographyTypes';
6
6
  export declare class LocalCrypto {
7
7
  private cryptoMapper;
8
8
  private cryptoRules;
9
- private readonly MAX_FILE_SIZE;
9
+ private threads;
10
10
  /**
11
11
  * Constructs a new LocalCrypto.
12
12
  * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
13
+ * @param threads Number of threads to be use to scan local cryptography (default = 5).
13
14
  */
14
- constructor(cryptoRules: Array<CryptoAlgorithmRules>);
15
+ constructor(cryptoRules: Array<CryptoAlgorithmRules>, threads: number);
15
16
  /**
16
17
  * Searches for cryptographic algorithms in the content of a files.
17
18
  * @param files The files to search.
18
19
  */
19
20
  search(files: Array<string>): Promise<Array<CryptoItem>>;
20
- /**
21
- * Asynchronously searches for cryptographic algorithms in the content of a file.
22
- * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
23
- * @returns A promise that resolves when the search is complete.
24
- */
25
- private searchCrypto;
26
21
  }
@@ -1,6 +1,6 @@
1
1
  import { CryptoItem } from '../Scanneable/CryptoItem';
2
2
  import { createCryptoKeywordMapper, getCryptoMapper, } from '../CryptoDef/CryptoDef';
3
- import fs from 'fs';
3
+ import { ThreadPool } from '../Worker/ThreadPool';
4
4
  /**
5
5
  * Represents a CryptoCalculator used for searching cryptographic algorithms in files.
6
6
  */
@@ -8,11 +8,12 @@ export class LocalCrypto {
8
8
  /**
9
9
  * Constructs a new LocalCrypto.
10
10
  * @param cryptoRules An array of CryptoAlgorithmRules used to create the search rules.
11
+ * @param threads Number of threads to be use to scan local cryptography (default = 5).
11
12
  */
12
- constructor(cryptoRules) {
13
- this.MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
13
+ constructor(cryptoRules, threads) {
14
14
  this.cryptoRules = createCryptoKeywordMapper(cryptoRules);
15
15
  this.cryptoMapper = getCryptoMapper(cryptoRules);
16
+ this.threads = threads;
16
17
  }
17
18
  /**
18
19
  * Searches for cryptographic algorithms in the content of a files.
@@ -21,43 +22,12 @@ export class LocalCrypto {
21
22
  async search(files) {
22
23
  if (files.length <= 0)
23
24
  return [];
24
- const cryptoItems = files.map((f) => { return new CryptoItem(f); });
25
- for (let c of cryptoItems) {
26
- await this.searchCrypto(c);
27
- }
28
- return cryptoItems;
29
- }
30
- /**
31
- * Asynchronously searches for cryptographic algorithms in the content of a file.
32
- * @param cryptoItem The CryptoItem to search for cryptographic algorithms.
33
- * @returns A promise that resolves when the search is complete.
34
- */
35
- async searchCrypto(cryptoItem) {
36
- const cryptoFound = new Array();
37
- const stats = await fs.promises.stat(cryptoItem.getPath());
38
- if (stats.size > this.MAX_FILE_SIZE) {
39
- cryptoItem.setAlgorithms([]);
40
- return;
41
- }
42
- let content = await fs.promises.readFile(cryptoItem.getPath(), 'utf-8');
43
- this.cryptoRules.forEach((value, key) => {
44
- try {
45
- const matches = content.match(value);
46
- if (matches) {
47
- cryptoFound.push(key);
48
- }
49
- }
50
- catch (e) {
51
- console.error(e);
52
- }
53
- });
54
- // Release memory
55
- content = null;
56
- const results = [];
57
- cryptoFound.forEach((cf) => {
58
- results.push(this.cryptoMapper.get(cf));
25
+ const threadPool = new ThreadPool(this.threads, this.cryptoRules, this.cryptoMapper);
26
+ files.forEach((f) => {
27
+ threadPool.enqueueTask(new CryptoItem(f));
59
28
  });
60
- cryptoItem.setAlgorithms(results);
29
+ await threadPool.init();
30
+ return await threadPool.processQueue();
61
31
  }
62
32
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHlCQUF5QixFQUFFLGVBQWUsR0FDM0MsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHcEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0Qjs7O09BR0c7SUFDSCxZQUFZLFdBQXdDO1FBTm5DLGtCQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBT3RELElBQUksQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEUsS0FBSSxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3RDLElBQUk7Z0JBQ0YsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDdkI7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFDO2dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILGlCQUFpQjtRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUMzQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUU7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBRUYifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxDcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9DcnlwdG9Qcm92aWRlci9Mb2NhbENyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHlCQUF5QixFQUFFLGVBQWUsR0FDM0MsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0Qjs7OztPQUlHO0lBQ0gsWUFBWSxXQUF3QyxFQUFFLE9BQWU7UUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIn0=
@@ -21,7 +21,7 @@ export class CryptographyScanner {
21
21
  */
22
22
  async scan(files) {
23
23
  const cryptographyRules = await this.loadRules(this.cryptoConfig.getRulesPath());
24
- const localCrypto = new LocalCrypto(cryptographyRules);
24
+ const localCrypto = new LocalCrypto(cryptographyRules, this.cryptoConfig.getNumberOfThreads());
25
25
  const cryptoItems = await localCrypto.search(files);
26
26
  return mapToILocalCryptographyResponse(cryptoItems);
27
27
  }
@@ -48,4 +48,4 @@ export class CryptographyScanner {
48
48
  return JSON.parse(rules);
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTTNELE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCOzs7T0FHRztJQUNILFlBQVksU0FBb0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFpQjtRQUN2QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLElBQUksQ0FDckQsU0FBUyxFQUNULGlEQUFpRCxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRiJ9
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTTNELE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCOzs7T0FHRztJQUNILFlBQVksU0FBb0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQW9CO1FBQ3BDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsT0FBTywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBaUI7UUFDdkMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxJQUFJLENBQ3JELFNBQVMsRUFDVCxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUYifQ==
@@ -0,0 +1,21 @@
1
+ import { CryptoAlgorithm } from '../CryptographyTypes';
2
+ import { CryptoItem } from '../Scanneable/CryptoItem';
3
+ export declare class ThreadPool {
4
+ private readonly maxWorkers;
5
+ private readonly workers;
6
+ private readonly jobsQueue;
7
+ private readonly cryptoRules;
8
+ private readonly cryptoMapper;
9
+ private results;
10
+ private activeWorkers;
11
+ private resolve;
12
+ private reject;
13
+ constructor(maxWorkers: number, rules: Map<string, RegExp>, cryptoMapper: Map<string, CryptoAlgorithm>);
14
+ enqueueTask(item: CryptoItem): Promise<unknown>;
15
+ init(): Promise<void>;
16
+ private releaseWorker;
17
+ private next;
18
+ private destroyAllWorkers;
19
+ processQueue(): Promise<Array<CryptoItem>>;
20
+ private processItem;
21
+ }
@@ -0,0 +1,83 @@
1
+ import { Worker } from './Worker';
2
+ export class ThreadPool {
3
+ constructor(maxWorkers = 3, rules, cryptoMapper) {
4
+ this.workers = [];
5
+ this.results = [];
6
+ this.activeWorkers = 0;
7
+ this.maxWorkers = maxWorkers;
8
+ this.workers = [];
9
+ this.jobsQueue = [];
10
+ this.cryptoRules = rules;
11
+ this.cryptoMapper = cryptoMapper;
12
+ }
13
+ enqueueTask(item) {
14
+ return new Promise((resolve, reject) => {
15
+ const job = { item, resolve, reject };
16
+ this.jobsQueue.push(job);
17
+ });
18
+ }
19
+ async init() {
20
+ for (let i = 0; i < this.maxWorkers; i++) {
21
+ const worker = new Worker();
22
+ worker.on('message', async (item) => {
23
+ this.results.push(item.result);
24
+ this.releaseWorker(item.id);
25
+ await this.next();
26
+ });
27
+ // TODO: See what can be done in case an error on the thread
28
+ worker.on('error', async (error) => {
29
+ console.log(error);
30
+ this.releaseWorker(worker.getId());
31
+ await this.next();
32
+ });
33
+ this.workers.push(worker);
34
+ }
35
+ }
36
+ releaseWorker(id) {
37
+ const wId = this.workers.findIndex(w => w.getId() === id);
38
+ const w = this.workers[wId];
39
+ w.release();
40
+ return w.getId();
41
+ }
42
+ async next() {
43
+ this.activeWorkers -= 1;
44
+ if (this.activeWorkers === 0 && this.jobsQueue.length === 0) {
45
+ await this.destroyAllWorkers();
46
+ this.resolve(this.results);
47
+ }
48
+ else {
49
+ this.processItem();
50
+ }
51
+ }
52
+ async destroyAllWorkers() {
53
+ for (const worker of this.workers) {
54
+ await worker.terminate(); // Terminate each worker
55
+ }
56
+ }
57
+ async processQueue() {
58
+ return new Promise(async (resolve, reject) => {
59
+ this.resolve = resolve;
60
+ this.reject = reject;
61
+ this.processItem();
62
+ });
63
+ }
64
+ processItem() {
65
+ if (this.workers.length > 0 && this.jobsQueue.length > 0) {
66
+ const freeWorkerIndices = this.workers.reduce((indices, worker, index) => {
67
+ if (worker.isFree()) {
68
+ indices.push(index);
69
+ }
70
+ return indices;
71
+ }, []);
72
+ freeWorkerIndices.forEach(workerIndex => {
73
+ if (this.jobsQueue.length <= 0)
74
+ return;
75
+ const { item, reject } = this.jobsQueue.shift();
76
+ const worker = this.workers[workerIndex];
77
+ worker.run({ item, rules: this.cryptoRules, cryptoMapper: this.cryptoMapper });
78
+ this.activeWorkers += 1;
79
+ });
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L1dvcmtlci9UaHJlYWRQb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5ELE1BQU0sT0FBTyxVQUFVO0lBbUJyQixZQUFZLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBeUIsRUFBRSxZQUEwQztRQWZoRixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQVFyQyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFNeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFnQjtRQUMxQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxD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
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import { TransferListItem, Worker as W } from 'worker_threads';
3
+ import { CryptoItem } from '../Scanneable/CryptoItem';
4
+ export interface IWorkerResponse {
5
+ result: CryptoItem;
6
+ id: number;
7
+ }
8
+ export declare class Worker extends W {
9
+ private free;
10
+ constructor();
11
+ getId(): number;
12
+ release(): void;
13
+ isFree(): boolean;
14
+ on(event: any, listener: any): this;
15
+ run(value: any, transferList?: ReadonlyArray<TransferListItem>): void;
16
+ }
@@ -0,0 +1,65 @@
1
+ import { Worker as W } from 'worker_threads';
2
+ const stringWorker = `
3
+ const { parentPort } = require('worker_threads');
4
+ const fs = require('fs');
5
+
6
+ parentPort.on('message', async (data) => {
7
+
8
+ const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
9
+
10
+ const { item, rules , cryptoMapper, id } = data;
11
+
12
+ const cryptoFound = new Array();
13
+ const stats = await fs.promises.stat(item.file);
14
+ if (stats.size > MAX_FILE_SIZE) {
15
+ item.algorithms = [];
16
+ parentPort.postMessage({ result: item, id });
17
+ return;
18
+ }
19
+
20
+ let content = fs.readFileSync(item.file, 'utf-8');
21
+ rules.forEach((value, key) => {
22
+ try {
23
+ const matches = content.match(value);
24
+ if (matches) {
25
+ cryptoFound.push(key);
26
+ }
27
+ } catch (e){
28
+ console.error(e);
29
+ }
30
+ });
31
+ const results = [];
32
+ cryptoFound.forEach((cf)=>{
33
+ results.push(cryptoMapper.get(cf));
34
+ });
35
+ item.algorithms = results;
36
+ parentPort.postMessage({ result: item, id });
37
+ });
38
+ `;
39
+ export class Worker extends W {
40
+ constructor() {
41
+ super(stringWorker, { eval: true });
42
+ this.free = true;
43
+ }
44
+ getId() {
45
+ return this.threadId;
46
+ }
47
+ release() {
48
+ this.free = true;
49
+ }
50
+ isFree() {
51
+ return this.free;
52
+ }
53
+ on(event, listener) {
54
+ if (event === 'error') {
55
+ this.free = true;
56
+ }
57
+ // Call super.on with the provided arguments
58
+ return super.on(event, listener);
59
+ }
60
+ run(value, transferList) {
61
+ this.free = false;
62
+ this.postMessage({ ...value, id: this.threadId });
63
+ }
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvV29ya2VyL1dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLE1BQU0sSUFBSSxDQUFDLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUM7QUFJOUUsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9DcEIsQ0FBQztBQU9GLE1BQU0sT0FBTyxNQUFPLFNBQVEsQ0FBQztJQUszQjtRQUNFLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sS0FBSztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVE7UUFDaEIsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO1FBQ0QsNENBQTRDO1FBQzNDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEMsQ0FBQztJQUNNLEdBQUcsQ0FBRSxLQUFVLEVBQUUsWUFBOEM7UUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBRUYifQ==
@@ -4,9 +4,9 @@
4
4
  * @returns An ILocalCryptographyResponse object containing mapped cryptographic items.
5
5
  */
6
6
  export function mapToILocalCryptographyResponse(ci) {
7
- const fileList = ci.map((c) => ({ file: c.getPath(), algorithms: c.getAlgorithms() }));
7
+ const fileList = ci.map((c) => ({ file: c.file, algorithms: c.algorithms }));
8
8
  return {
9
9
  fileList
10
10
  };
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLEVBQXFCO0lBQ25FLE1BQU0sUUFBUSxHQUF1QixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVHLE9BQU87UUFDTCxRQUFRO0tBQ1QsQ0FBQTtBQUNILENBQUMifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvQWRhcHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS91dGlscy9hZGFwdGVycy9jcnlwdG9BZGFwdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLEVBQXFCO0lBQ25FLE1BQU0sUUFBUSxHQUF1QixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEcsT0FBTztRQUNMLFFBQVE7S0FDVCxDQUFBO0FBQ0gsQ0FBQyJ9
@@ -1186,23 +1186,33 @@
1186
1186
  "signature": "42ef1caff70c5da8c9c6ebc82ac2ebdc21bf60274786a6a4707b7d983e47f50c",
1187
1187
  "affectsGlobalScope": false
1188
1188
  },
1189
+ "../../src/sdk/Cryptography/Worker/Worker.ts": {
1190
+ "version": "63d1850409c989b9486228d957316f536f1ff586ab0731eb763ab888148ea822",
1191
+ "signature": "ccb42ecdc7e2a04167368763d46f7eb3c79a44fbeda79498b8b42f0223c72909",
1192
+ "affectsGlobalScope": false
1193
+ },
1194
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": {
1195
+ "version": "e8c8885745c6d05a2ed9c216322bf729908e3e60a8a1e47a08140557c9fb15ca",
1196
+ "signature": "37421d8f7f9700f710ad8a654635bdc1a42d46e8cf101604eedc49a23e6f877c",
1197
+ "affectsGlobalScope": false
1198
+ },
1189
1199
  "../../src/sdk/Cryptography/CryptoProvider/LocalCrypto.ts": {
1190
- "version": "cae73a110cfc88f323420359fd201321416e2a161da7dee8a44c7991456b18fc",
1191
- "signature": "d2613a844321f7df744aefdf3defdf4d1c9705ff987c7b7639bd6d3c2a5ea6f1",
1200
+ "version": "7eff76625475ea0d15e0026797b4ba166acc54a6e8373e4993c32b85b12ac7da",
1201
+ "signature": "a26649da45a1cb7044e9ff16c813111ca599f24fde0b7a275ad4cafa200556fe",
1192
1202
  "affectsGlobalScope": false
1193
1203
  },
1194
1204
  "../../src/sdk/Cryptography/CryptoCfg.ts": {
1195
- "version": "cde8ab1bc0cbad549e3488209bba6151e1e11130df8244d2c1bf35564e6020ae",
1196
- "signature": "a230323c3aafd7a51a3733970951b1112863fcf2c7df0facea9a16fb2ddbe0bc",
1205
+ "version": "9d7472e2a06ed91f0d97cdb0be0aab4e805fe7b89d1b99024e0dc7bea2bd9975",
1206
+ "signature": "556b688ca25d64662be634b41ba6613f442f17b9e34608105f0d6c01c5e821b3",
1197
1207
  "affectsGlobalScope": false
1198
1208
  },
1199
1209
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": {
1200
- "version": "49a17f0d412d5bdd4274d19b085f0ccac77e161d1bbf0faafc82152d7487d01d",
1210
+ "version": "ca0db37074d84c4c8d2a3ef96d5d3811ad92e4def2a03349ee05e08000d7fbbe",
1201
1211
  "signature": "07fb866e2304237f9fde84da70e3443430d2a377c0b463ec475ac50ab69ce8e3",
1202
1212
  "affectsGlobalScope": false
1203
1213
  },
1204
1214
  "../../src/sdk/Cryptography/CryptographyScanner.ts": {
1205
- "version": "8ca3b8bca5a4c29a5e855ba13fe5d2764ec116b49b2eb5a12e291b60305a7aff",
1215
+ "version": "6468e7d976bd50b3388685836539234a8fad3b9feae5c36c72f88dc7312c4f98",
1206
1216
  "signature": "8c3e8e247c583b1144e13ee4ffe30b01377687eb25d88af8828d69e96f17ddd4",
1207
1217
  "affectsGlobalScope": false
1208
1218
  },
@@ -1362,12 +1372,12 @@
1362
1372
  "affectsGlobalScope": false
1363
1373
  },
1364
1374
  "../../src/cli/commands/crypto.ts": {
1365
- "version": "a4b982e1d7d51fc42c1edcb79c19b3deb56043152d86708dde2200bc091e1d39",
1375
+ "version": "406a726fb9349e5bc24ac82927f6cbc01b7029fae72362a47f4ac71d34ec4193",
1366
1376
  "signature": "7facac4a5ac19854614a21eacbcb2f83eaadab500bd6f73aa80c7f8100cce221",
1367
1377
  "affectsGlobalScope": false
1368
1378
  },
1369
1379
  "../../src/cli/bin/cli-bin.ts": {
1370
- "version": "97a46e7ab889cdf6d8c511f28e6dcf95ca4282c997b8622a2037668e7272e256",
1380
+ "version": "8556937d76e99dfb660e52ff7f714829ebe1cb548ded334a65d7d36c770d9bb3",
1371
1381
  "signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
1372
1382
  "affectsGlobalScope": false
1373
1383
  },
@@ -2656,7 +2666,8 @@
2656
2666
  "../../node_modules/@types/node/util.d.ts",
2657
2667
  "../../src/sdk/Cryptography/CryptoDef/CryptoDef.ts",
2658
2668
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
2659
- "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2669
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
2670
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts"
2660
2671
  ],
2661
2672
  "../../src/sdk/Cryptography/CryptographyScanner.ts": [
2662
2673
  "../../node_modules/@types/node/fs.d.ts",
@@ -2675,6 +2686,18 @@
2675
2686
  "../../node_modules/@types/node/util.d.ts",
2676
2687
  "../../src/sdk/Cryptography/CryptographyTypes.ts"
2677
2688
  ],
2689
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
2690
+ "../../node_modules/@types/node/util.d.ts",
2691
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
2692
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
2693
+ "../../src/sdk/Cryptography/Worker/Worker.ts"
2694
+ ],
2695
+ "../../src/sdk/Cryptography/Worker/Worker.ts": [
2696
+ "../../node_modules/@types/node/url.d.ts",
2697
+ "../../node_modules/@types/node/util.d.ts",
2698
+ "../../node_modules/@types/node/worker_threads.d.ts",
2699
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
2700
+ ],
2678
2701
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
2679
2702
  "../../node_modules/@types/node/util.d.ts",
2680
2703
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
@@ -4242,6 +4265,14 @@
4242
4265
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts": [
4243
4266
  "../../src/sdk/Cryptography/CryptographyTypes.ts"
4244
4267
  ],
4268
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts": [
4269
+ "../../src/sdk/Cryptography/CryptographyTypes.ts",
4270
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4271
+ ],
4272
+ "../../src/sdk/Cryptography/Worker/Worker.ts": [
4273
+ "../../node_modules/@types/node/worker_threads.d.ts",
4274
+ "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
4275
+ ],
4245
4276
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts": [
4246
4277
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
4247
4278
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts"
@@ -4670,6 +4701,8 @@
4670
4701
  "../../src/sdk/Cryptography/CryptographyScanner.ts",
4671
4702
  "../../src/sdk/Cryptography/CryptographyTypes.ts",
4672
4703
  "../../src/sdk/Cryptography/Scanneable/CryptoItem.ts",
4704
+ "../../src/sdk/Cryptography/Worker/ThreadPool.ts",
4705
+ "../../src/sdk/Cryptography/Worker/Worker.ts",
4673
4706
  "../../src/sdk/Cryptography/utils/adapters/cryptoAdapters.ts",
4674
4707
  "../../src/sdk/Decompress/DecompressionManager.ts",
4675
4708
  "../../src/sdk/Decompress/Decompressor/DecompressTgz.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scanoss",
3
- "version": "0.12.2",
3
+ "version": "0.13.0",
4
4
  "description": "The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",