scanoss 0.13.0 → 0.13.2

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 (35) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/assets/ReportHTMLTemplate/index.html +82 -37
  3. package/build/main/cli/commands/crypto.js +5 -2
  4. package/build/main/cli/commands/scan.js +3 -1
  5. package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +13 -0
  6. package/build/main/sdk/Report/DataLayer/DataProviderManager.js +2 -1
  7. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +14 -0
  8. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +54 -0
  9. package/build/main/sdk/tree/File.d.ts +1 -1
  10. package/build/main/sdk/tree/File.js +3 -2
  11. package/build/main/sdk/tree/Filters/BinaryFilter.d.ts +5 -0
  12. package/build/main/sdk/tree/Filters/BinaryFilter.js +10 -0
  13. package/build/main/sdk/tree/Filters/FilterAND.d.ts +7 -0
  14. package/build/main/sdk/tree/Filters/FilterAND.js +20 -0
  15. package/build/main/sdk/tree/Node.d.ts +2 -0
  16. package/build/main/sdk/tree/Node.js +5 -1
  17. package/build/main/sdk/tree/Tree.js +6 -3
  18. package/build/main/tsconfig.tsbuildinfo +71 -11
  19. package/build/module/cli/commands/crypto.js +5 -2
  20. package/build/module/cli/commands/scan.js +3 -1
  21. package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +13 -0
  22. package/build/module/sdk/Report/DataLayer/DataProviderManager.js +2 -1
  23. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +14 -0
  24. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +51 -0
  25. package/build/module/sdk/tree/File.d.ts +1 -1
  26. package/build/module/sdk/tree/File.js +3 -2
  27. package/build/module/sdk/tree/Filters/BinaryFilter.d.ts +5 -0
  28. package/build/module/sdk/tree/Filters/BinaryFilter.js +7 -0
  29. package/build/module/sdk/tree/Filters/FilterAND.d.ts +7 -0
  30. package/build/module/sdk/tree/Filters/FilterAND.js +17 -0
  31. package/build/module/sdk/tree/Node.d.ts +2 -0
  32. package/build/module/sdk/tree/Node.js +5 -1
  33. package/build/module/sdk/tree/Tree.js +6 -3
  34. package/build/module/tsconfig.module.tsbuildinfo +71 -11
  35. 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.2](https://github.com/scanoss/scanoss.js/compare/v0.13.0...v0.13.1) (2024-05-20)
6
+
7
+ ### [0.13.1](https://github.com/scanoss/scanoss.js/compare/v0.13.0...v0.13.1) (2024-05-15)
8
+
5
9
  ### [0.13.0](https://github.com/scanoss/scanoss.js/compare/v0.12.2...v0.13.0) (2024-05-13)
6
10
 
7
11
  ### [0.12.2](https://github.com/scanoss/scanoss.js/compare/v0.12.0...v0.12.2) (2024-05-10)
@@ -658,29 +658,61 @@
658
658
  </template>
659
659
  </section>
660
660
 
661
- <!-- cryptography -->
662
- <section aria-labelledby="nav-cryptography-tab" class="tab-pane fade" id="nav-cryptography" role="tabpanel"
663
- tabindex="0">
664
- <table class="table main-table" id="table-cryptography">
665
- <thead>
666
- <tr>
667
- <th>Component</th>
668
- <th>Version</th>
669
- <th>Cryptography</th>
670
- </tr>
671
- </thead>
672
- <tbody>
673
- </tbody>
674
- </table>
675
-
676
- <template id="tpl-cryptography-row">
677
- <tr>
678
- <td></td>
679
- <td></td>
680
- <td></td>
681
- </tr>
682
- </template>
683
- </section>
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
- renderCryptographyTable();
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 (existVersionKey('cryptography', data.component)) showTab('nav-cryptography-tab');
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 renderCryptographyTable() {
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 { component: componentData } = data;
1175
+ const { cryptography } = data;
1143
1176
 
1144
- if (!componentData) return false;
1177
+ if (!cryptography && !cryptography.components) return false;
1145
1178
 
1146
- for (const compData of componentData) {
1147
- for (const version of compData.versions) {
1148
- if (!version.cryptography) continue
1149
- const clon = template.content.cloneNode(true);
1150
- clon.querySelector('td:nth-child(1)').innerHTML = compData.name;
1151
- clon.querySelector('td:nth-child(2)').innerHTML = version.version;
1152
- clon.querySelector('td:nth-child(3)').innerHTML = version.cryptography.map(e => `${e.algorithm} (${e.strength})`).join('');
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
- table.appendChild(clon);
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
 
@@ -8,6 +8,9 @@ const CryptographyScanner_1 = require("../../sdk/Cryptography/CryptographyScanne
8
8
  const Tree_1 = require("../../sdk/tree/Tree");
9
9
  const CryptoCfg_1 = require("../../sdk/Cryptography/CryptoCfg");
10
10
  const fs_1 = __importDefault(require("fs"));
11
+ const BinaryFilter_1 = require("../../sdk/tree/Filters/BinaryFilter");
12
+ const ScanFilter_1 = require("../../sdk/tree/Filters/ScanFilter");
13
+ const FilterAND_1 = require("../../sdk/tree/Filters/FilterAND");
11
14
  async function cryptoHandler(rootPath, options) {
12
15
  rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
13
16
  rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
@@ -24,7 +27,7 @@ async function cryptoHandler(rootPath, options) {
24
27
  if (pathIsFolder) {
25
28
  const tree = new Tree_1.Tree(rootPath);
26
29
  tree.build();
27
- fileList = tree.getFileList(null);
30
+ fileList = tree.getFileList(new FilterAND_1.FilterAND([new BinaryFilter_1.BinaryFilter(), new ScanFilter_1.ScanFilter('')]));
28
31
  }
29
32
  console.log("Searching for local cryptography...");
30
33
  const results = await cryptoScanner.scan(fileList);
@@ -37,4 +40,4 @@ async function cryptoHandler(rootPath, options) {
37
40
  }
38
41
  }
39
42
  exports.cryptoHandler = cryptoHandler;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBcUM7QUFLckMsb0ZBRW9EO0FBQ3BELDhDQUEyQztBQUUzQyxnRUFBNkQ7QUFDN0QsNENBQW9CO0FBRWIsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFDaEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBRyxPQUFPLENBQUMsS0FBSztRQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUVoRyxJQUFJLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEIsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQixNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDbkQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0M7QUFFSCxDQUFDO0FBaENELHNDQWdDQyJ9
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBcUM7QUFLckMsb0ZBRW9EO0FBQ3BELDhDQUEyQztBQUUzQyxnRUFBNkQ7QUFDN0QsNENBQW9CO0FBQ3BCLHNFQUFtRTtBQUNuRSxrRUFBK0Q7QUFDL0QsZ0VBQTZEO0FBR3RELEtBQUssVUFBVSxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFZO0lBQ2hFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFFLGtDQUFrQztJQUMzRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLDBDQUEwQztJQUNoRyxNQUFNLFlBQVksR0FBRyxNQUFNLGtCQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFOUMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLElBQUcsT0FBTyxDQUFDLEtBQUs7UUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUU5QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBRyxPQUFPLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBRTlDLE1BQU0sYUFBYSxHQUFHLElBQUkseUNBQW1CLENBQUMsSUFBSSxxQkFBUyxDQUFDLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFFaEcsSUFBSSxRQUFRLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhCLElBQUksWUFBWSxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUkscUJBQVMsQ0FBQyxDQUFDLElBQUksMkJBQVksRUFBRSxFQUFFLElBQUksdUJBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0RjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQTtJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2pCLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNuRDtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUVILENBQUM7QUFoQ0Qsc0NBZ0NDIn0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFvQjtBQUVwQix1REFBb0Q7QUFDcEQsaUVBTXdDO0FBQ3hDLDZEQUEwRDtBQUMxRCw4Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLHVDQUE2RDtBQUU3RCxzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFLGtFQUErRDtBQUMvRCw4RUFBMkU7QUFDM0Usb0RBQWlEO0FBQ2pELHdGQUFxRjtBQUNyRiwwR0FBdUc7QUFDdkcsNEdBQXlHO0FBQ3pHLHNHQUFtRztBQUNuRyxzR0FBbUc7QUFDbkcsb0ZBQWlGO0FBQ2pGLG9GQUFpRjtBQUNqRixnREFBd0I7QUFDeEIsMEhBQXVIO0FBRWhILEtBQUssVUFBVSxXQUFXLENBQy9CLFFBQWdCLEVBQ2hCLE9BQVk7SUFFWixRQUFRLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsQyxNQUFNLFlBQVksR0FBRyxNQUFNLGtCQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsTUFBTSxXQUFXLEdBQUcsZ0NBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFckQsK0NBQStDO0lBQy9DLElBQUksZUFBZSxHQUFrQixFQUFFLENBQUM7SUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLDJDQUFvQixFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLENBQUMsT0FBTztRQUFFLG9CQUFvQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3BFLElBQUksT0FBTyxDQUFDLEtBQUs7UUFBRSxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM5RCxJQUFJLE9BQU8sQ0FBQyxHQUFHO1FBQUUsb0JBQW9CLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7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
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFvQjtBQUVwQix1REFBb0Q7QUFDcEQsaUVBTXdDO0FBQ3hDLDZEQUEwRDtBQUMxRCw4Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLHVDQUE2RDtBQUU3RCxzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFLGtFQUErRDtBQUMvRCw4RUFBMkU7QUFDM0Usb0RBQWlEO0FBQ2pELHdGQUFxRjtBQUNyRiwwR0FBdUc7QUFDdkcsNEdBQXlHO0FBQ3pHLHNHQUFtRztBQUNuRyxzR0FBbUc7QUFDbkcsb0ZBQWlGO0FBQ2pGLG9GQUFpRjtBQUNqRixnREFBd0I7QUFDeEIsMEhBQXVIO0FBQ3ZILGdIQUUyRTtBQUVwRSxLQUFLLFVBQVUsV0FBVyxDQUMvQixRQUFnQixFQUNoQixPQUFZO0lBRVosUUFBUSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxrQkFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sV0FBVyxHQUFHLGdDQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXJELCtDQUErQztJQUMvQyxJQUFJLGVBQWUsR0FBa0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSwyQ0FBb0IsRUFBRSxDQUFDO0lBQ3hELElBQUksT0FBTyxDQUFDLE9BQU87UUFBRSxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwRSxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQUUsb0JBQW9CLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDOUQsSUFBSSxPQUFPLENBQUMsR0FBRztRQUFFLG9CQUFvQixDQUFDLEdBQUcsR0FBRyxPQUFPLENB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
@@ -1,3 +1,5 @@
1
+ import { CryptoAlgorithm } from '../../Cryptography/CryptographyTypes';
2
+ import { CryptoItem } from '../../Cryptography/Scanneable/CryptoItem';
1
3
  /************* Component interface definition *************/
2
4
  export interface ComponentDataLayer {
3
5
  key: string;
@@ -101,6 +103,16 @@ export interface SummaryDataLayer {
101
103
  noMatchFiles: number;
102
104
  totalFiles: number;
103
105
  }
106
+ export interface ComponentCryptography {
107
+ purl: string;
108
+ version: string;
109
+ algorithms: Array<CryptoAlgorithm>;
110
+ }
111
+ /*********************** Files ****************************/
112
+ export interface CryptographyDataLayer {
113
+ files: Array<CryptoItem>;
114
+ components: Array<ComponentCryptography>;
115
+ }
104
116
  export interface IDataLayers {
105
117
  licenses: LicenseDataLayer[];
106
118
  licensesObligations: LicenseObligation[];
@@ -108,6 +120,7 @@ export interface IDataLayers {
108
120
  dependencies: DependencyDataLayer[];
109
121
  vulnerabilities: VulnerabilityDataLayer[];
110
122
  summary: SummaryDataLayer;
123
+ cryptography: CryptographyDataLayer;
111
124
  }
112
125
  export interface DataProvider {
113
126
  getData(): Promise<IDataLayers>;
@@ -15,6 +15,7 @@ class DataProviderManager {
15
15
  summary: null,
16
16
  licenses: null,
17
17
  licensesObligations: null,
18
+ cryptography: null,
18
19
  };
19
20
  for (const layer of this.dataLayersProviders)
20
21
  Object.assign(dataLayer, await layer.getData());
@@ -22,4 +23,4 @@ class DataProviderManager {
22
23
  }
23
24
  }
24
25
  exports.DataProviderManager = DataProviderManager;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsTUFBYSxtQkFBbUI7SUFHOUI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxlQUFlLENBQUMsQ0FBZTtRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixJQUFJLFNBQVMsR0FBZ0I7WUFDM0IsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBekJELGtEQXlCQyJ9
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsTUFBYSxtQkFBbUI7SUFHOUI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxlQUFlLENBQUMsQ0FBZTtRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixJQUFJLFNBQVMsR0FBZ0I7WUFDM0IsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBMUJELGtEQTBCQyJ9
@@ -0,0 +1,14 @@
1
+ import { DataProvider, IDataLayers } from '../DataLayerTypes';
2
+ import { ScannerResults } from '../../../scanner/ScannerTypes';
3
+ import { ICryptoItem } from '../../../Cryptography/CryptographyTypes';
4
+ export declare class CryptographyDataProvider implements DataProvider {
5
+ private files;
6
+ private scanRawResults;
7
+ private componentList;
8
+ constructor(files: Array<ICryptoItem>, scanRawResults: ScannerResults);
9
+ getData(): Promise<IDataLayers>;
10
+ private getCrypto;
11
+ private normalizeAlgorithms;
12
+ private removeRepeatedAlgorithms;
13
+ getLayerName(): string;
14
+ }
@@ -0,0 +1,54 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.CryptographyDataProvider = void 0;
3
+ class CryptographyDataProvider {
4
+ constructor(files, scanRawResults) {
5
+ this.files = files;
6
+ this.scanRawResults = scanRawResults;
7
+ }
8
+ async getData() {
9
+ if (!this.files && !this.scanRawResults)
10
+ return { cryptography: null };
11
+ this.componentList = Object.values(this.scanRawResults).flat();
12
+ this.componentList = this.componentList.filter((component) => component.id !== 'none');
13
+ const componentCryptography = this.getCrypto(this.componentList);
14
+ return {
15
+ cryptography: {
16
+ files: this.files,
17
+ components: componentCryptography,
18
+ }
19
+ };
20
+ }
21
+ getCrypto(scanComponents) {
22
+ const componentCrypto = [];
23
+ scanComponents.forEach((c) => {
24
+ if (c.cryptography.length > 0) {
25
+ const crypto = {
26
+ purl: c.purl,
27
+ version: c.version,
28
+ algorithms: c.cryptography
29
+ };
30
+ componentCrypto.push(crypto);
31
+ }
32
+ });
33
+ return this.normalizeAlgorithms(componentCrypto);
34
+ }
35
+ normalizeAlgorithms(crypto) {
36
+ crypto.forEach((c) => {
37
+ c.algorithms = this.removeRepeatedAlgorithms(c.algorithms);
38
+ });
39
+ return crypto;
40
+ }
41
+ removeRepeatedAlgorithms(algorithms) {
42
+ const algorithmsMapper = new Map();
43
+ algorithms.forEach((a) => {
44
+ const algorithmToLowerCase = a.algorithm.toLowerCase();
45
+ algorithmsMapper.set(algorithmToLowerCase, Object.assign(Object.assign({}, a), { algorithm: algorithmToLowerCase }));
46
+ });
47
+ return Array.from(algorithmsMapper.values());
48
+ }
49
+ getLayerName() {
50
+ return '';
51
+ }
52
+ }
53
+ exports.CryptographyDataProvider = CryptographyDataProvider;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5RGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9SZXBvcnQvRGF0YUxheWVyL0RhdGFQcm92aWRlcnMvQ3J5cHRvZ3JhcGh5RGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsTUFBYSx3QkFBd0I7SUFJbkMsWUFBWSxLQUF5QixFQUFJLGNBQThCO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTztRQUVYLElBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFvQixFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUVsRixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FDdkMsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEUsT0FBb0I7WUFDakIsWUFBWSxFQUFDO2dCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsVUFBVSxFQUFFLHFCQUFxQjthQUNsQztTQUNILENBQUE7SUFDRixDQUFDO0lBRU8sU0FBUyxDQUFDLGNBQXVDO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMzQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDeEIsSUFBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQzNCLE1BQU0sTUFBTSxHQUFHO29CQUNiLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtvQkFDWixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87b0JBQ2xCLFVBQVUsRUFBRSxDQUFDLENBQUMsWUFBWTtpQkFDM0IsQ0FBQTtnQkFDRCxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBb0M7UUFDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1lBQ2xCLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sTUFBTSxDQUFDO0lBRWhCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxVQUFrQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFtRCxDQUFDO1FBQ3BGLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixrQ0FBTSxDQUFDLEtBQUUsU0FBUyxFQUFFLG9CQUFvQixJQUFFLENBQUE7UUFDckYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBL0RELDREQStEQyJ9
@@ -1,7 +1,7 @@
1
1
  import Node from './Node';
2
2
  import { Filter } from './Filters/Filter';
3
3
  export default class File extends Node {
4
- constructor(name: string, path: string);
4
+ constructor(name: string, path: string, isBinaryFile: boolean);
5
5
  getNode(path: string): Node;
6
6
  getFiles(f?: Filter): Array<string>;
7
7
  }
@@ -5,9 +5,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  const Node_1 = require("./Node");
6
6
  const Node_2 = __importDefault(require("./Node"));
7
7
  class File extends Node_2.default {
8
- constructor(name, path) {
8
+ constructor(name, path, isBinaryFile) {
9
9
  super(name, path);
10
10
  this.type = Node_1.NodeType.FILE;
11
+ this.isBinaryFile = isBinaryFile;
11
12
  }
12
13
  getNode(path) {
13
14
  if (path === this.getPath())
@@ -21,4 +22,4 @@ class File extends Node_2.default {
21
22
  }
22
23
  }
23
24
  exports.default = File;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9GaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpQ0FBa0M7QUFDbEMsa0RBQTBCO0FBSTFCLE1BQXFCLElBQUssU0FBUSxjQUFJO0lBQ3BDLFlBQVksSUFBWSxFQUFFLElBQVk7UUFDcEMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLGVBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRLENBQUMsQ0FBVTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FFRjtBQWhCRCx1QkFnQkMifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9GaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpQ0FBa0M7QUFDbEMsa0RBQTBCO0FBSTFCLE1BQXFCLElBQUssU0FBUSxjQUFJO0lBQ3BDLFlBQVksSUFBWSxFQUFFLElBQVksRUFBRSxZQUFxQjtRQUMzRCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBUSxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVk7UUFDekIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFFBQVEsQ0FBQyxDQUFVO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUVGO0FBakJELHVCQWlCQyJ9
@@ -0,0 +1,5 @@
1
+ import Node from '../Node';
2
+ import { Filter } from './Filter';
3
+ export declare class BinaryFilter extends Filter {
4
+ evaluate(node: Node): boolean;
5
+ }
@@ -0,0 +1,10 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.BinaryFilter = void 0;
3
+ const Filter_1 = require("./Filter");
4
+ class BinaryFilter extends Filter_1.Filter {
5
+ evaluate(node) {
6
+ return !node.isBinary();
7
+ }
8
+ }
9
+ exports.BinaryFilter = BinaryFilter;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5RmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay90cmVlL0ZpbHRlcnMvQmluYXJ5RmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscUNBQWtDO0FBRWxDLE1BQWEsWUFBYSxTQUFRLGVBQU07SUFDN0IsUUFBUSxDQUFDLElBQVU7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBRUo7QUFMRCxvQ0FLQyJ9
@@ -0,0 +1,7 @@
1
+ import Node from "../Node";
2
+ import { Filter } from "./Filter";
3
+ export declare class FilterAND extends Filter {
4
+ private filters;
5
+ constructor(filters: Array<Filter>);
6
+ evaluate(node: Node): boolean;
7
+ }
@@ -0,0 +1,20 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.FilterAND = void 0;
3
+ const Filter_1 = require("./Filter");
4
+ class FilterAND extends Filter_1.Filter {
5
+ constructor(filters) {
6
+ super();
7
+ this.filters = filters;
8
+ }
9
+ evaluate(node) {
10
+ let valid = false;
11
+ for (let i = 0; i < this.filters.length; i++) {
12
+ valid = this.filters[i].evaluate(node);
13
+ if (!valid)
14
+ return false;
15
+ }
16
+ return valid;
17
+ }
18
+ }
19
+ exports.FilterAND = FilterAND;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsdGVyQU5ELmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay90cmVlL0ZpbHRlcnMvRmlsdGVyQU5ELnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscUNBQWtDO0FBRWxDLE1BQWEsU0FBVSxTQUFRLGVBQU07SUFJakMsWUFBWSxPQUFzQjtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUksT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBVTtRQUN2QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFHLENBQUMsS0FBSztnQkFBRSxPQUFPLEtBQUssQ0FBQztTQUMxQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FFSjtBQWxCRCw4QkFrQkMifQ==
@@ -4,12 +4,14 @@ export default abstract class Node {
4
4
  protected path: string;
5
5
  protected label: string;
6
6
  protected action: string;
7
+ protected isBinaryFile: boolean;
7
8
  constructor(path: string, label: string);
8
9
  abstract getNode(path: string): Node;
9
10
  abstract getFiles(f?: Filter): Array<string>;
10
11
  getName(): string;
11
12
  getPath(): string;
12
13
  getType(): NodeType;
14
+ isBinary(): boolean;
13
15
  }
14
16
  export declare enum NodeType {
15
17
  FOLDER = "FOLDER",
@@ -4,6 +4,7 @@ class Node {
4
4
  constructor(path, label) {
5
5
  this.path = path;
6
6
  this.label = label;
7
+ this.isBinaryFile = false;
7
8
  }
8
9
  getName() {
9
10
  return this.label;
@@ -14,6 +15,9 @@ class Node {
14
15
  getType() {
15
16
  return this.type;
16
17
  }
18
+ isBinary() {
19
+ return this.isBinaryFile;
20
+ }
17
21
  }
18
22
  exports.default = Node;
19
23
  var NodeType;
@@ -22,4 +26,4 @@ var NodeType;
22
26
  NodeType["FILE"] = "FILE";
23
27
  })(NodeType = exports.NodeType || (exports.NodeType = {}));
24
28
  ;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsTUFBOEIsSUFBSTtJQVNoQyxZQUFZLElBQVksRUFBRSxLQUFhO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFNTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FFRjtBQTlCRCx1QkE4QkM7QUFFRCxJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsNkJBQWlCLENBQUE7SUFDakIseUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQUduQjtBQUFBLENBQUMifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsTUFBOEIsSUFBSTtJQVdoQyxZQUFZLElBQVksRUFBRSxLQUFhO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFNTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FFRjtBQXJDRCx1QkFxQ0M7QUFFRCxJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsNkJBQWlCLENBQUE7SUFDakIseUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQUduQjtBQUFBLENBQUMifQ==
@@ -8,6 +8,7 @@ const path_1 = __importDefault(require("path"));
8
8
  const Node_1 = require("./Node");
9
9
  const File_1 = __importDefault(require("./File"));
10
10
  const Folder_1 = __importDefault(require("./Folder"));
11
+ const isbinaryfile_1 = require("isbinaryfile");
11
12
  class Tree {
12
13
  constructor(path) {
13
14
  const pathParts = path.split(path_1.default.sep);
@@ -33,8 +34,10 @@ class Tree {
33
34
  const subTree = this.buildRec(`${path}/${dirEntry.name}`, f);
34
35
  root.addChild(subTree);
35
36
  }
36
- else
37
- root.addChild(new File_1.default(fullPath, dirEntry.name));
37
+ else {
38
+ const file = new File_1.default(fullPath, dirEntry.name, isbinaryfile_1.isBinaryFileSync(fullPath));
39
+ root.addChild(file);
40
+ }
38
41
  }
39
42
  return root;
40
43
  }
@@ -67,4 +70,4 @@ class Tree {
67
70
  }
68
71
  }
69
72
  exports.Tree = Tree;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9UcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUEyQjtBQUczQixpQ0FBa0M7QUFFbEMsa0RBQTBCO0FBQzFCLHNEQUE4QjtBQUk5QixNQUFhLElBQUk7SUFTZixZQUFZLElBQVk7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDekMsTUFBTSxVQUFVLEdBQUcsWUFBRTthQUNsQixXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsc0NBQXNDO2FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDNUIsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXJELEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxHQUFXLElBQUksZ0JBQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4Qjs7Z0JBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGNBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw4RUFBOEU7SUFDdEUsaUJBQWlCLENBQUMsQ0FBTSxFQUFFLENBQU07UUFDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBUztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFXLENBQUM7SUFDckQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFTO1FBQzNCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxlQUFRLENBQUMsSUFBSSxFQUFFO1lBQy9CLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzRDtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsa0NBQU8sSUFBSSxLQUFFLFFBQVEsSUFBRyxDQUFDO0lBQy9FLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxDQUFVO1FBQzNCLE9BQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBdEVELG9CQXNFQyJ9
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9UcmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUEyQjtBQUczQixpQ0FBa0M7QUFFbEMsa0RBQTBCO0FBQzFCLHNEQUE4QjtBQUc5QiwrQ0FBZ0Q7QUFFaEQsTUFBYSxJQUFJO0lBU2YsWUFBWSxJQUFZO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZ0JBQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQUU7YUFDbEIsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHNDQUFzQzthQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2FBQzVCLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVyRCxLQUFLLE1BQU0sUUFB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