scanoss 0.12.2 → 0.13.1
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/CHANGELOG.md +6 -0
- package/assets/ReportHTMLTemplate/index.html +82 -37
- package/build/main/cli/bin/cli-bin.js +2 -1
- package/build/main/cli/commands/crypto.js +5 -2
- package/build/main/cli/commands/scan.js +3 -1
- package/build/main/sdk/Cryptography/CryptoCfg.d.ts +10 -2
- package/build/main/sdk/Cryptography/CryptoCfg.js +11 -4
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -8
- package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -43
- package/build/main/sdk/Cryptography/CryptographyScanner.js +2 -2
- package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
- package/build/main/sdk/Cryptography/Worker/ThreadPool.js +86 -0
- package/build/main/sdk/Cryptography/Worker/Worker.d.ts +16 -0
- package/build/main/sdk/Cryptography/Worker/Worker.js +68 -0
- package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
- package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +13 -0
- package/build/main/sdk/Report/DataLayer/DataProviderManager.js +2 -1
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +14 -0
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +54 -0
- package/build/main/tsconfig.tsbuildinfo +72 -14
- package/build/module/cli/bin/cli-bin.js +2 -1
- package/build/module/cli/commands/crypto.js +5 -2
- package/build/module/cli/commands/scan.js +3 -1
- package/build/module/sdk/Cryptography/CryptoCfg.d.ts +10 -2
- package/build/module/sdk/Cryptography/CryptoCfg.js +11 -4
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +3 -8
- package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +10 -40
- package/build/module/sdk/Cryptography/CryptographyScanner.js +2 -2
- package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +21 -0
- package/build/module/sdk/Cryptography/Worker/ThreadPool.js +83 -0
- package/build/module/sdk/Cryptography/Worker/Worker.d.ts +16 -0
- package/build/module/sdk/Cryptography/Worker/Worker.js +65 -0
- package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +2 -2
- package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +13 -0
- package/build/module/sdk/Report/DataLayer/DataProviderManager.js +2 -1
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +14 -0
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +51 -0
- package/build/module/tsconfig.module.tsbuildinfo +72 -14
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
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.1](https://github.com/scanoss/scanoss.js/compare/v0.13.0...v0.13.1) (2024-05-15)
|
|
6
|
+
|
|
7
|
+
### [0.13.0](https://github.com/scanoss/scanoss.js/compare/v0.12.2...v0.13.0) (2024-05-13)
|
|
8
|
+
|
|
9
|
+
### [0.12.2](https://github.com/scanoss/scanoss.js/compare/v0.12.0...v0.12.2) (2024-05-10)
|
|
10
|
+
|
|
5
11
|
### [0.12.0](https://github.com/scanoss/scanoss.js/compare/v0.11.5...v0.12.0) (2024-05-06)
|
|
6
12
|
|
|
7
13
|
### [0.11.5](https://github.com/scanoss/scanoss.js/compare/v0.11.4...v0.11.5) (2024-04-19)
|
|
@@ -658,29 +658,61 @@
|
|
|
658
658
|
</template>
|
|
659
659
|
</section>
|
|
660
660
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
661
|
+
<!-- cryptography -->
|
|
662
|
+
<section aria-labelledby="nav-cryptography-tab" class="tab-pane fade" id="nav-cryptography" role="tabpanel"
|
|
663
|
+
tabindex="0">
|
|
664
|
+
<nav>
|
|
665
|
+
<div class="nav nav-tabs" id="nav-tab-crypto" role="tablist">
|
|
666
|
+
<button aria-controls="pane-local-cryptography" class="nav-link visible active" aria-selected="false" data-bs-target="#pane-local-cryptography"
|
|
667
|
+
data-bs-toggle="tab" id="crypto-file-tab" role="tab" type="button">Files</button>
|
|
668
|
+
<button aria-controls="pane-component-cryptography" class="nav-link visible" aria-selected="true" data-bs-target="#pane-component-cryptography"
|
|
669
|
+
data-bs-toggle="tab" id="crypto-component-tab" role="tab" type="button">Components</button>
|
|
670
|
+
</div>
|
|
671
|
+
</nav>
|
|
672
|
+
|
|
673
|
+
<div class="tab-content" id="myTabContent">
|
|
674
|
+
<div class="tab-pane" id="pane-component-cryptography" aria-labelledby="crypto-component-tab" role="tabpanel" tabindex="0">
|
|
675
|
+
<table class="table main-table" id="table-cryptography" >
|
|
676
|
+
<thead>
|
|
677
|
+
<tr>
|
|
678
|
+
<th>Component</th>
|
|
679
|
+
<th>Version</th>
|
|
680
|
+
<th>Cryptography</th>
|
|
681
|
+
</tr>
|
|
682
|
+
</thead>
|
|
683
|
+
<tbody>
|
|
684
|
+
</tbody>
|
|
685
|
+
</table>
|
|
686
|
+
|
|
687
|
+
<template id="tpl-cryptography-row">
|
|
688
|
+
<tr>
|
|
689
|
+
<td></td>
|
|
690
|
+
<td></td>
|
|
691
|
+
<td></td>
|
|
692
|
+
</tr>
|
|
693
|
+
</template>
|
|
694
|
+
</div>
|
|
695
|
+
<div class="tab-pane active" id="pane-local-cryptography" role="tabpanel" aria-labelledby="crypto-file-tab" tabindex="0">
|
|
696
|
+
<table class="table main-table" id="table-local-cryptography">
|
|
697
|
+
<thead>
|
|
698
|
+
<tr>
|
|
699
|
+
<th>File</th>
|
|
700
|
+
<th>Cryptography</th>
|
|
701
|
+
</tr>
|
|
702
|
+
</thead>
|
|
703
|
+
<tbody>
|
|
704
|
+
</tbody>
|
|
705
|
+
</table>
|
|
706
|
+
|
|
707
|
+
<template id="tpl-local-cryptography-row">
|
|
708
|
+
<tr>
|
|
709
|
+
<td></td>
|
|
710
|
+
<td></td>
|
|
711
|
+
</tr>
|
|
712
|
+
</template>
|
|
713
|
+
</div>
|
|
714
|
+
</div>
|
|
715
|
+
</section>
|
|
684
716
|
|
|
685
717
|
<!-- quality -->
|
|
686
718
|
<section aria-labelledby="nav-quality-tab" class="tab-pane fade" id="nav-quality" role="tabpanel"
|
|
@@ -809,7 +841,8 @@
|
|
|
809
841
|
renderDependenciesTable();
|
|
810
842
|
renderVulnerabilitiesTable();
|
|
811
843
|
renderCopyrightTable();
|
|
812
|
-
|
|
844
|
+
renderComponentCryptographyTable();
|
|
845
|
+
renderLocalCryptographyTable();
|
|
813
846
|
renderQualityTable();
|
|
814
847
|
renderHealthTable();
|
|
815
848
|
}
|
|
@@ -842,7 +875,7 @@
|
|
|
842
875
|
if (data.dependencies) showTab('nav-dependencies-tab');
|
|
843
876
|
if (data.vulnerabilities) showTab('nav-vulnerabilities-tab');
|
|
844
877
|
if (existVersionKey('copyrights', data.component)) showTab('nav-copyrights-tab');
|
|
845
|
-
if (
|
|
878
|
+
if (data.cryptography) showTab('nav-cryptography-tab');
|
|
846
879
|
if (existVersionKey('quality', data.component)) showTab('nav-quality-tab');
|
|
847
880
|
if (existComponentKey('health', data.component)) showTab('nav-health-tab');
|
|
848
881
|
}
|
|
@@ -1135,24 +1168,36 @@
|
|
|
1135
1168
|
}
|
|
1136
1169
|
}
|
|
1137
1170
|
|
|
1138
|
-
function
|
|
1171
|
+
function renderComponentCryptographyTable() {
|
|
1139
1172
|
const template = document.querySelector("#tpl-cryptography-row");
|
|
1140
1173
|
const table = document.querySelector("#table-cryptography tbody");
|
|
1141
1174
|
|
|
1142
|
-
const {
|
|
1175
|
+
const { cryptography } = data;
|
|
1143
1176
|
|
|
1144
|
-
if (!
|
|
1177
|
+
if (!cryptography && !cryptography.components) return false;
|
|
1145
1178
|
|
|
1146
|
-
for (const
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1179
|
+
for (const crypto of cryptography.components) {
|
|
1180
|
+
const clon = template.content.cloneNode(true);
|
|
1181
|
+
clon.querySelector('td:nth-child(1)').innerHTML = crypto.purl;
|
|
1182
|
+
clon.querySelector('td:nth-child(2)').innerHTML = crypto.version;
|
|
1183
|
+
clon.querySelector('td:nth-child(3)').innerHTML = crypto.algorithms.map(e => `${e.algorithm} (${e.strength})`).join(' - ');
|
|
1184
|
+
table.appendChild(clon);
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1153
1187
|
|
|
1154
|
-
|
|
1155
|
-
|
|
1188
|
+
function renderLocalCryptographyTable(){
|
|
1189
|
+
const template = document.querySelector("#tpl-local-cryptography-row");
|
|
1190
|
+
const table = document.querySelector("#table-local-cryptography tbody");
|
|
1191
|
+
|
|
1192
|
+
const { cryptography } = data;
|
|
1193
|
+
|
|
1194
|
+
if (!cryptography && !cryptography.files) return false;
|
|
1195
|
+
|
|
1196
|
+
for (const crypto of cryptography.files) {
|
|
1197
|
+
const clon = template.content.cloneNode(true);
|
|
1198
|
+
clon.querySelector('td:nth-child(1)').innerHTML = crypto.file;
|
|
1199
|
+
clon.querySelector('td:nth-child(2)').innerHTML = crypto.algorithms.map(e => `${e.algorithm} (${e.strength})`).join(' - ');
|
|
1200
|
+
table.appendChild(clon);
|
|
1156
1201
|
}
|
|
1157
1202
|
}
|
|
1158
1203
|
|
|
@@ -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,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5Q0FBc0Q7QUFFdEQsaURBQThDO0FBQzlDLHlDQUE2QztBQUM3QywyQ0FBK0M7QUFDL0MseUNBQTZDO0FBQzdDLCtDQUFtRDtBQUVuRCxTQUFTLGVBQWUsQ0FBQyxDQUFRO0lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLENBQUMsQ0FBQztJQUU3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxXQUFXLEVBQUUsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7SUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsZUFBZSxFQUFFLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztJQUMzSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDLENBQUM7SUFDdEcsSUFBSSxD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
|
|
@@ -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
|
-
|
|
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,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBcUM7QUFLckMsb0ZBRW9EO0FBQ3BELDhDQUEyQztBQUUzQyxnRUFBNkQ7QUFDN0QsNENBQW9CO0FBRWIsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUVoRyxJQUFJLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEIsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQixNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDbkQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0M7QUFFSCxDQUFDO0FBaENELHNDQWdDQyJ9
|
|
@@ -24,6 +24,7 @@ const DecompressionFilter_1 = require("../../sdk/tree/Filters/DecompressionFilte
|
|
|
24
24
|
const DecompressionManager_1 = require("../../sdk/Decompress/DecompressionManager");
|
|
25
25
|
const path_1 = __importDefault(require("path"));
|
|
26
26
|
const LicenseObligationDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider");
|
|
27
|
+
const CryptographyDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/CryptographyDataProvider");
|
|
27
28
|
async function scanHandler(rootPath, options) {
|
|
28
29
|
rootPath = path_1.default.resolve(rootPath);
|
|
29
30
|
const pathIsFolder = await helpers_1.isFolder(rootPath);
|
|
@@ -147,6 +148,7 @@ async function scanHandler(rootPath, options) {
|
|
|
147
148
|
dataProviderManager.addDataProvider(new LicenseDataProvider_1.LicenseDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
148
149
|
dataProviderManager.addDataProvider(new SummaryDataProvider_1.SummaryDataProvider(projectName, new Date(), scannersResults.scanner));
|
|
149
150
|
dataProviderManager.addDataProvider(new LicenseObligationDataProvider_1.LicenseObligationDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
151
|
+
dataProviderManager.addDataProvider(new CryptographyDataProvider_1.CryptographyDataProvider(null, scannersResults.scanner));
|
|
150
152
|
const report = new Report_1.Report(dataProviderManager);
|
|
151
153
|
scannerResultsString = await report.getHTML();
|
|
152
154
|
}
|
|
@@ -156,4 +158,4 @@ async function scanHandler(rootPath, options) {
|
|
|
156
158
|
console.log(scannerResultsString);
|
|
157
159
|
}
|
|
158
160
|
exports.scanHandler = scanHandler;
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFvQjtBQUVwQix1REFBb0Q7QUFDcEQsaUVBTXdDO0FBQ3hDLDZEQUEwRDtBQUMxRCw4Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLHVDQUE2RDtBQUU3RCxzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFLGtFQUErRDtBQUMvRCw4RUFBMkU7QUFDM0Usb0RBQWlEO0FBQ2pELHdGQUFxRjtBQUNyRiwwR0FBdUc7QUFDdkcsNEdBQXlHO0FBQ3pHLHNHQUFtRztBQUNuRyxzR0FBbUc7QUFDbkcsb0ZBQWlGO0FBQ2pGLG9GQUFpRjtBQUNqRixnREFBd0I7QUFDeEIsMEhBQXVIO0FBQ3ZILGdIQUUyRTtBQUVwRSxLQUFLLFVBQVUsV0FBVyxDQUMvQixRQUFnQixFQUNoQixPQUFZO0lBRVosUUFBUSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxrQkFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sV0FBVyxHQUFHLGdDQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXJELCtDQUErQztJQUMvQyxJQUFJLGVBQWUsR0FBa0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSwyQ0FBb0IsRUFBRSxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLE9BQU87UUFBRSxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwRSxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQUUsb0JBQW9CLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDOUQsSUFBSSxPQUFPLENBQUMsR0FBRztRQUFFLG9CQUFvQixDQUFDLEdBQUcsR0FBRyxPQUFPLENB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
|
|
@@ -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
|
|
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(
|
|
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
|
|
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(
|
|
12
|
-
this.
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
31
|
+
await threadPool.init();
|
|
32
|
+
return await threadPool.processQueue();
|
|
66
33
|
}
|
|
67
34
|
}
|
|
68
35
|
exports.LocalCrypto = LocalCrypto;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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,
|
|
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
|
+
}
|