scanoss 0.4.12-beta → 0.5.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 (94) hide show
  1. package/.idea/workspace.xml +6 -9
  2. package/assets/ReportHTMLTemplate/index.html +178 -7
  3. package/build/main/cli/bin/cli-bin.js +6 -2
  4. package/build/main/cli/commands/fingerprint.d.ts +1 -0
  5. package/build/main/cli/commands/fingerprint.js +54 -0
  6. package/build/main/cli/commands/scan.js +16 -1
  7. package/build/main/index.d.ts +8 -1
  8. package/build/main/index.js +13 -2
  9. package/build/main/sdk/DataLayer/DataLayerTypes.d.ts +22 -0
  10. package/build/main/sdk/DataLayer/DataLayerTypes.js +4 -1
  11. package/build/main/sdk/DataLayer/DataProviders/ComponentDataProvider.js +35 -4
  12. package/build/main/sdk/DataLayer/DataProviders/SummaryDataProvider.js +1 -1
  13. package/build/main/sdk/Decompress/DecompressionManager.d.ts +12 -0
  14. package/build/main/sdk/Decompress/DecompressionManager.js +73 -0
  15. package/build/main/sdk/Decompress/Decompressor/DecompressTgz.d.ts +5 -0
  16. package/build/main/sdk/Decompress/Decompressor/DecompressTgz.js +22 -0
  17. package/build/main/sdk/Decompress/Decompressor/DecompressZips.d.ts +5 -0
  18. package/build/main/sdk/Decompress/Decompressor/DecompressZips.js +24 -0
  19. package/build/main/sdk/Decompress/Decompressor/Decompressor.d.ts +10 -0
  20. package/build/main/sdk/Decompress/Decompressor/Decompressor.js +18 -0
  21. package/build/main/sdk/filters/filtering.js +1 -1
  22. package/build/main/sdk/scanner/Scanner.js +3 -2
  23. package/build/main/sdk/scanner/ScannerTypes.d.ts +10 -0
  24. package/build/main/sdk/scanner/ScannerTypes.js +1 -1
  25. package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +1 -1
  26. package/build/main/sdk/tree/File.js +2 -2
  27. package/build/main/sdk/tree/Filters/DecompressionFilter.d.ts +7 -0
  28. package/build/main/sdk/tree/Filters/DecompressionFilter.js +21 -0
  29. package/build/main/sdk/tree/Filters/DependencyFilter.js +2 -2
  30. package/build/main/sdk/tree/Filters/ScanFilter.js +2 -2
  31. package/build/main/sdk/tree/Folder.d.ts +1 -0
  32. package/build/main/sdk/tree/Folder.js +5 -2
  33. package/build/main/sdk/tree/Node.d.ts +1 -0
  34. package/build/main/sdk/tree/Node.js +4 -1
  35. package/build/main/sdk/tree/Tree.js +2 -1
  36. package/build/main/tsconfig.tsbuildinfo +219 -59
  37. package/build/module/cli/bin/cli-bin.js +6 -2
  38. package/build/module/cli/commands/fingerprint.d.ts +1 -0
  39. package/build/module/cli/commands/fingerprint.js +48 -0
  40. package/build/module/cli/commands/scan.js +16 -1
  41. package/build/module/index.d.ts +8 -1
  42. package/build/module/index.js +13 -2
  43. package/build/module/sdk/DataLayer/DataLayerTypes.d.ts +22 -0
  44. package/build/module/sdk/DataLayer/DataLayerTypes.js +4 -1
  45. package/build/module/sdk/DataLayer/DataProviders/ComponentDataProvider.js +32 -1
  46. package/build/module/sdk/DataLayer/DataProviders/SummaryDataProvider.js +1 -1
  47. package/build/module/sdk/Decompress/DecompressionManager.d.ts +12 -0
  48. package/build/module/sdk/Decompress/DecompressionManager.js +67 -0
  49. package/build/module/sdk/Decompress/Decompressor/DecompressTgz.d.ts +5 -0
  50. package/build/module/sdk/Decompress/Decompressor/DecompressTgz.js +16 -0
  51. package/build/module/sdk/Decompress/Decompressor/DecompressZips.d.ts +5 -0
  52. package/build/module/sdk/Decompress/Decompressor/DecompressZips.js +18 -0
  53. package/build/module/sdk/Decompress/Decompressor/Decompressor.d.ts +10 -0
  54. package/build/module/sdk/Decompress/Decompressor/Decompressor.js +15 -0
  55. package/build/module/sdk/filters/filtering.js +1 -1
  56. package/build/module/sdk/scanner/Scanner.js +3 -2
  57. package/build/module/sdk/scanner/ScannerTypes.d.ts +10 -0
  58. package/build/module/sdk/scanner/ScannerTypes.js +1 -1
  59. package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +1 -1
  60. package/build/module/sdk/tree/File.js +2 -2
  61. package/build/module/sdk/tree/Filters/DecompressionFilter.d.ts +7 -0
  62. package/build/module/sdk/tree/Filters/DecompressionFilter.js +18 -0
  63. package/build/module/sdk/tree/Filters/DependencyFilter.js +2 -2
  64. package/build/module/sdk/tree/Filters/ScanFilter.js +2 -2
  65. package/build/module/sdk/tree/Folder.d.ts +1 -0
  66. package/build/module/sdk/tree/Folder.js +5 -2
  67. package/build/module/sdk/tree/Node.d.ts +1 -0
  68. package/build/module/sdk/tree/Node.js +4 -1
  69. package/build/module/sdk/tree/Tree.js +2 -1
  70. package/build/module/tsconfig.module.tsbuildinfo +219 -59
  71. package/package.json +8 -2
  72. package/src/cli/bin/cli-bin.ts +5 -2
  73. package/src/cli/commands/scan.ts +21 -0
  74. package/src/index.ts +14 -2
  75. package/src/sdk/DataLayer/DataLayerTypes.ts +27 -1
  76. package/src/sdk/DataLayer/DataProviders/ComponentDataProvider.ts +42 -2
  77. package/src/sdk/DataLayer/DataProviders/SummaryDataProvider.ts +0 -1
  78. package/src/sdk/Decompress/DecompressionManager.ts +91 -0
  79. package/src/sdk/Decompress/Decompressor/DecompressTgz.ts +20 -0
  80. package/src/sdk/Decompress/Decompressor/DecompressZips.ts +21 -0
  81. package/src/sdk/Decompress/Decompressor/Decompressor.ts +20 -0
  82. package/src/sdk/filters/filtering.ts +1 -0
  83. package/src/sdk/scanner/Scanner.ts +2 -1
  84. package/src/sdk/scanner/ScannerTypes.ts +10 -0
  85. package/src/sdk/tree/File.ts +1 -1
  86. package/src/sdk/tree/Filters/DecompressionFilter.ts +22 -0
  87. package/src/sdk/tree/Filters/DependencyFilter.ts +1 -1
  88. package/src/sdk/tree/Filters/ScanFilter.ts +1 -1
  89. package/src/sdk/tree/Folder.ts +4 -1
  90. package/src/sdk/tree/Node.ts +4 -0
  91. package/src/sdk/tree/Tree.ts +1 -0
  92. package/yarn.lock +4801 -4732
  93. package/package-lock.json +0 -16423
  94. package/yarn-error.log +0 -5234
@@ -7,12 +7,6 @@
7
7
  <list default="true" id="6c78089c-ef2a-4dae-87f6-bd2f320855c8" name="Changes" comment="">
8
8
  <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
9
9
  <change beforePath="$PROJECT_DIR$/src/cli/bin/cli-bin.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/cli/bin/cli-bin.ts" afterDir="false" />
10
- <change beforePath="$PROJECT_DIR$/src/cli/commands/fingerprint.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/cli/commands/wfp.ts" afterDir="false" />
11
- <change beforePath="$PROJECT_DIR$/src/cli/commands/scan.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/cli/commands/scan.ts" afterDir="false" />
12
- <change beforePath="$PROJECT_DIR$/src/sdk/scanner/Scanner.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/sdk/scanner/Scanner.ts" afterDir="false" />
13
- <change beforePath="$PROJECT_DIR$/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.ts" afterDir="false" />
14
- <change beforePath="$PROJECT_DIR$/tests/sdk/Scanner/WfpProvider/WfpSplitter/WfpSplitter.spec.ts" beforeDir="false" afterPath="$PROJECT_DIR$/tests/sdk/Scanner/WfpProvider/WfpSplitter/WfpSplitter.spec.ts" afterDir="false" />
15
- <change beforePath="$PROJECT_DIR$/yarn.lock" beforeDir="false" afterPath="$PROJECT_DIR$/yarn.lock" afterDir="false" />
16
10
  </list>
17
11
  <option name="SHOW_DIALOG" value="false" />
18
12
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -38,7 +32,7 @@
38
32
  &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
39
33
  &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
40
34
  &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
41
- &quot;last_opened_file_path&quot;: &quot;/home/ubuntu/Projects/SCANOSS/scanoss.js/tests/sdk/Scanner/WfpProvider/WfpSplitter/samples&quot;,
35
+ &quot;last_opened_file_path&quot;: &quot;/home/ubuntu/Projects/SCANOSS/test-wfp-scanoss-js&quot;,
42
36
  &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
43
37
  &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
44
38
  &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
@@ -181,7 +175,10 @@
181
175
  <workItem from="1668177544944" duration="2221000" />
182
176
  <workItem from="1668418911444" duration="17020000" />
183
177
  <workItem from="1668502976694" duration="11522000" />
184
- <workItem from="1668583216157" duration="7361000" />
178
+ <workItem from="1668583216157" duration="14668000" />
179
+ <workItem from="1668680809359" duration="1101000" />
180
+ <workItem from="1668684545211" duration="2237000" />
181
+ <workItem from="1668766262950" duration="13257000" />
185
182
  </task>
186
183
  <servers />
187
184
  </component>
@@ -204,7 +201,7 @@
204
201
  <breakpoints>
205
202
  <line-breakpoint enabled="true" type="javascript">
206
203
  <url>file://$PROJECT_DIR$/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.ts</url>
207
- <line>120</line>
204
+ <line>145</line>
208
205
  <option name="timeStamp" value="8" />
209
206
  </line-breakpoint>
210
207
  <line-breakpoint enabled="true" type="javascript">
@@ -473,6 +473,12 @@
473
473
  type="button" role="tab" aria-controls="nav-dependencies" aria-selected="false">Dependencies</button>
474
474
  <button class="nav-link" id="nav-copyrights-tab" data-bs-toggle="tab" data-bs-target="#nav-copyrights"
475
475
  type="button" role="tab" aria-controls="nav-copyrights" aria-selected="false">Copyrights</button>
476
+ <button class="nav-link" id="nav-cryptography-tab" data-bs-toggle="tab" data-bs-target="#nav-cryptography"
477
+ type="button" role="tab" aria-controls="nav-cryptography" aria-selected="false">Cryptography</button>
478
+ <button class="nav-link" id="nav-quality-tab" data-bs-toggle="tab" data-bs-target="#nav-quality"
479
+ type="button" role="tab" aria-controls="nav-quality" aria-selected="false">Quality</button>
480
+ <button class="nav-link" id="nav-health-tab" data-bs-toggle="tab" data-bs-target="#nav-health"
481
+ type="button" role="tab" aria-controls="nav-health" aria-selected="false">Health</button>
476
482
  <button class="nav-link" id="nav-summary-tab" data-bs-toggle="tab" data-bs-target="#nav-summary" type="button"
477
483
  role="tab" aria-controls="nav-summary" aria-selected="false">Summary</button>
478
484
  </div>
@@ -627,6 +633,90 @@
627
633
  </template>
628
634
  </section>
629
635
 
636
+ <!-- cryptography -->
637
+ <section class="tab-pane fade" id="nav-cryptography" role="tabpanel" aria-labelledby="nav-cryptography-tab"
638
+ tabindex="0">
639
+ <table id="table-cryptography" class="table main-table">
640
+ <thead>
641
+ <tr>
642
+ <th>Component</th>
643
+ <th>Version</th>
644
+ <th>Cryptography</th>
645
+ </tr>
646
+ </thead>
647
+ <tbody>
648
+ </tbody>
649
+ </table>
650
+
651
+ <template id="tpl-cryptography-row">
652
+ <tr>
653
+ <td></td>
654
+ <td></td>
655
+ <td></td>
656
+ </tr>
657
+ </template>
658
+ </section>
659
+
660
+ <!-- quality -->
661
+ <section class="tab-pane fade" id="nav-quality" role="tabpanel" aria-labelledby="nav-quality-tab"
662
+ tabindex="0">
663
+ <table id="table-quality" class="table main-table">
664
+ <thead>
665
+ <tr>
666
+ <th>Component</th>
667
+ <th>Version</th>
668
+ <th>Quality</th>
669
+ </tr>
670
+ </thead>
671
+ <tbody>
672
+ </tbody>
673
+ </table>
674
+
675
+ <template id="tpl-quality-row">
676
+ <tr>
677
+ <td></td>
678
+ <td></td>
679
+ <td></td>
680
+ </tr>
681
+ </template>
682
+ </section>
683
+
684
+ <!-- health -->
685
+ <section class="tab-pane fade" id="nav-health" role="tabpanel" aria-labelledby="nav-health-tab"
686
+ tabindex="0">
687
+ <table id="table-health" class="table main-table">
688
+ <thead>
689
+ <tr>
690
+ <th>Component</th>
691
+ <th>PURL</th>
692
+ <th>Creation Date</th>
693
+ <th>Issues</th>
694
+ <th>Last Push</th>
695
+ <th>Last Update</th>
696
+ <th>Watchers</th>
697
+ <th>Country</th>
698
+ <th>Forks</th>
699
+ </tr>
700
+ </thead>
701
+ <tbody>
702
+ </tbody>
703
+ </table>
704
+
705
+ <template id="tpl-health-row">
706
+ <tr>
707
+ <td></td>
708
+ <td></td>
709
+ <td></td>
710
+ <td></td>
711
+ <td></td>
712
+ <td></td>
713
+ <td></td>
714
+ <td></td>
715
+ <td></td>
716
+ </tr>
717
+ </template>
718
+ </section>
719
+
630
720
  <!-- summary -->
631
721
  <div class="tab-pane fade" id="nav-summary" role="tabpanel" aria-labelledby="nav-summary-tab" tabindex="0">
632
722
  SUMMARY
@@ -694,28 +784,42 @@
694
784
  renderDependenciesTable();
695
785
  renderVulnerabilitiesTable();
696
786
  renderCopyrightTable();
787
+ renderCryptographyTable();
788
+ renderQualityTable();
789
+ renderHealthTable();
697
790
  }
698
791
 
699
792
  init();
700
793
 
701
- function setupNavigation() {
794
+ function setupNavigation(componentList) {
702
795
  const showTab = (id) => document.querySelector('.nav-link#' + id).classList.add('visible');
703
796
 
704
- const existCopyright = (componentList) => {
797
+ const existVersionKey = (key, componentList) => {
705
798
  for (const component of componentList) {
706
799
  for (const version of component.versions) {
707
- if (version?.copyrights) return true;
800
+ if (version && version[key]) return true;
708
801
  }
709
802
  }
710
803
  return false;
711
804
  };
712
805
 
713
806
 
807
+ const existComponentKey = (key, componentList) => {
808
+ for (const component of componentList) {
809
+ if (component[key]) return true;
810
+ }
811
+ return false;
812
+ };
813
+
814
+
714
815
  if (data.licenses) showTab('nav-licenses-tab');
715
816
  if (data.component) showTab('nav-components-tab');
716
817
  if (data.dependencies) showTab('nav-dependencies-tab');
717
818
  if (data.vulnerabilities) showTab('nav-vulnerabilities-tab');
718
- if (existCopyright(data.component)) showTab('nav-copyrights-tab');
819
+ if (existVersionKey('copyrights', data.component)) showTab('nav-copyrights-tab');
820
+ if (existVersionKey('cryptography', data.component)) showTab('nav-cryptography-tab');
821
+ if (existVersionKey('quality', data.component)) showTab('nav-quality-tab');
822
+ if (existComponentKey('health', data.component)) showTab('nav-health-tab');
719
823
  }
720
824
 
721
825
  function renderHeader() {
@@ -734,15 +838,15 @@
734
838
  s.innerHTML += `
735
839
  <div class="info big">
736
840
  <div class="value primary">${data.summary.totalFiles}</div>
737
- <div class="label">Scanned Files</div>
841
+ <div class="label">Files Scanned</div>
738
842
  </div>
739
843
  <div class="info big">
740
844
  <div class="value">${data.summary.matchedFiles}</div>
741
- <div class="label">Matched Files</div>
845
+ <div class="label">Matched</div>
742
846
  </div>
743
847
  <div class="info big">
744
848
  <div class="value">${data.summary.noMatchFiles}</div>
745
- <div class="label">No-Match Files</div>
849
+ <div class="label">No Matches</div>
746
850
  </div>
747
851
  `;
748
852
  }
@@ -1000,6 +1104,73 @@
1000
1104
  }
1001
1105
  }
1002
1106
  }
1107
+
1108
+ function renderCryptographyTable() {
1109
+ const template = document.querySelector("#tpl-cryptography-row");
1110
+ const table = document.querySelector("#table-cryptography tbody");
1111
+
1112
+ const { component: componentData } = data;
1113
+
1114
+ if (!componentData) return false;
1115
+
1116
+ for (const compData of componentData) {
1117
+ for (const version of compData.versions) {
1118
+ if (!version.cryptography) continue
1119
+ const clon = template.content.cloneNode(true);
1120
+ clon.querySelector('td:nth-child(1)').innerHTML = compData.name;
1121
+ clon.querySelector('td:nth-child(2)').innerHTML = version.version;
1122
+ clon.querySelector('td:nth-child(3)').innerHTML = version.cryptography.map(e => `${e.algorithm} (${e.strength})`).join('');
1123
+
1124
+ table.appendChild(clon);
1125
+ }
1126
+ }
1127
+ }
1128
+
1129
+ function renderQualityTable() {
1130
+ const template = document.querySelector("#tpl-quality-row");
1131
+ const table = document.querySelector("#table-quality tbody");
1132
+
1133
+ const { component: componentData } = data;
1134
+
1135
+ if (!componentData) return false;
1136
+
1137
+ for (const compData of componentData) {
1138
+ for (const version of compData.versions) {
1139
+ if (!version.quality) continue
1140
+ const clon = template.content.cloneNode(true);
1141
+ clon.querySelector('td:nth-child(1)').innerHTML = compData.name;
1142
+ clon.querySelector('td:nth-child(2)').innerHTML = version.version;
1143
+ clon.querySelector('td:nth-child(3)').innerHTML = version.quality.scoreAvg + "/5";
1144
+
1145
+ table.appendChild(clon);
1146
+ }
1147
+ }
1148
+ }
1149
+
1150
+ function renderHealthTable() {
1151
+ const template = document.querySelector("#tpl-health-row");
1152
+ const table = document.querySelector("#table-health tbody");
1153
+
1154
+ const { component: componentData } = data;
1155
+
1156
+ if (!componentData) return false;
1157
+
1158
+ for (const compData of componentData) {
1159
+ if (!compData.health) continue
1160
+ const clon = template.content.cloneNode(true);
1161
+ clon.querySelector('td:nth-child(1)').innerHTML = compData.name;
1162
+ clon.querySelector('td:nth-child(2)').innerHTML = compData.key;
1163
+ clon.querySelector('td:nth-child(3)').innerHTML = compData.health.creation_date || '-';
1164
+ clon.querySelector('td:nth-child(4)').innerHTML = compData.health.issues || '-';
1165
+ clon.querySelector('td:nth-child(5)').innerHTML = compData.health.last_push || '-';
1166
+ clon.querySelector('td:nth-child(6)').innerHTML = compData.health.last_update || '-';
1167
+ clon.querySelector('td:nth-child(7)').innerHTML = compData.health.watchers || '-';
1168
+ clon.querySelector('td:nth-child(8)').innerHTML = compData.health.country || '-';
1169
+ clon.querySelector('td:nth-child(9)').innerHTML = compData.health.forks || '-';
1170
+
1171
+ table.appendChild(clon);
1172
+ }
1173
+ }
1003
1174
  });
1004
1175
  </script>
1005
1176
 
@@ -11,13 +11,17 @@ function CLIErrorHandler(e) {
11
11
  }
12
12
  async function main() {
13
13
  commander_1.program
14
- .version("0.4.12-beta")
14
+ .version("0.5.0")
15
15
  .description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
16
16
  commander_1.program
17
17
  .command('scan <source>')
18
18
  .description('Scan a folder/file')
19
19
  .option('-w, --wfp', 'Scan a .wfp file instead of a folder')
20
20
  .option('-H, --hpsm', 'Scan using winnowing high precision matching')
21
+ .option('-x, --extract', 'Extract compressed files before launch scan in folder <<zip_name>>-unzipped')
22
+ .option(' --extract-overwrite', 'Overwrite folder when decompressing if exists')
23
+ .option(' --extract-deep <number>', 'Sets uncompress recursion level')
24
+ .option(' --extract-suffix <suffix>', 'Sets suffix for the folder name')
21
25
  .option('-c, --concurrency <number>', 'Number of concurrent connections to use while scanning (optional -default 10)')
22
26
  .option('-n, --ignore <ignore>', 'Ignore components specified in the SBOM file')
23
27
  .option('-o, --output <filename>', 'Output result file name (optional - default stdout)')
@@ -58,4 +62,4 @@ catch (e) {
58
62
  console.error(e);
59
63
  process.exit(1);
60
64
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSx5Q0FBb0M7QUFDcEMseUNBQTZDO0FBQzdDLHlDQUE2QztBQUM3QywyQ0FBK0M7QUFHL0MsU0FBUyxlQUFlLENBQUMsQ0FBUTtJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBS0QsS0FBSyxVQUFVLElBQUk7SUFDakIsbUJBQU87U0FDSixPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLFdBQVcsQ0FBQyw0R0FBNEcsQ0FBQyxDQUFBO0lBRTVILG1CQUFPO1NBQ0osT0FBTyxDQUFDLGVBQWUsQ0FBQztTQUN4QixXQUFXLENBQUMsb0JBQW9CLENBQUM7U0FDakMsTUFBTSxDQUFDLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQztTQUMzRCxNQUFNLENBQUMsWUFBWSxFQUFFLDhDQUE4QyxDQUFDO1NBQ3BFLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSwrRUFBK0UsQ0FBQztTQUNySCxNQUFNLENBQUMsdUJBQXVCLEVBQUcsOENBQThDLENBQUM7U0FDaEYsTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDO1NBQ3hGLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxrREFBa0QsQ0FBQztTQUNuRixNQUFNLENBQUMscUJBQXFCLEVBQUUsbVJBQW1SLENBQUM7U0FDbFQsTUFBTSxDQUFDLDRCQUE0QixFQUFFLGlGQUFpRixDQUFDO1NBQ3ZILE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSwyREFBMkQsQ0FBQztTQUM5RixNQUFNLENBQUMseUJBQXlCLEVBQUUsb0VBQW9FLENBQUM7U0FDdkcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO1NBQ3ZELE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSx5RUFBeUUsQ0FBQztTQUMxRyxNQUFNLENBQUMseUJBQXlCLEVBQUUsNERBQTRELENBQUM7U0FDL0YsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHVFQUF1RSxDQUFDO1NBQ2xHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsOEJBQThCLENBQUM7U0FDdkQsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUUsa0JBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQztTQUM5RixXQUFXLENBQUMsT0FBTyxFQUFFOzswREFFZ0MsQ0FDckQsQ0FBQztJQUVGLG1CQUFPO1NBQ04sT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUN2QixXQUFXLENBQUMsdUJBQXVCLENBQUM7U0FDcEMsTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFEQUFxRCxDQUFDO1NBQ3hGLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxxREFBcUQsQ0FBQztTQUN2RixNQUFNLENBQUMsd0JBQXdCLEVBQUUsOENBQThDLENBQUM7U0FDaEYsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUUsZ0JBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBO0lBRTlGLG1CQUFPO1NBQ04sT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUN2QixXQUFXLENBQUMsMENBQTBDLENBQUM7U0FDdkQsTUFBTSxDQUFDLFlBQVksRUFBRSw4Q0FBOEMsQ0FBQztTQUNwRSxNQUFNLENBQUMseUJBQXlCLEVBQUUscURBQXFELENBQUM7U0FDeEYsTUFBTSxDQUFDLHlCQUF5QixFQUFFLHlFQUF5RSxDQUFDO1NBQzVHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFFLGdCQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQTtJQUU5RixNQUFNLG1CQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBR0QsSUFBSTtJQUNGLElBQUksRUFBRSxDQUFDO0NBQ1I7QUFBQyxPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNqQiJ9
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWJpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvYmluL2NsaS1iaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSx5Q0FBb0M7QUFDcEMseUNBQTZDO0FBQzdDLHlDQUE2QztBQUM3QywyQ0FBK0M7QUFFL0MsU0FBUyxlQUFlLENBQUMsQ0FBUTtJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBS0QsS0FBSyxVQUFVLElBQUk7SUFDakIsbUJBQU87U0FDSixPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2hCLFdBQVcsQ0FBQyw0R0FBNEcsQ0FBQyxDQUFBO0lBRTVILG1CQUFPO1NBQ0osT0FBTyxDQUFDLGVBQWUsQ0FBQztTQUN4QixXQUFXLENBQUMsb0JBQW9CLENBQUM7U0FDakMsTUFBTSxDQUFDLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQztTQUMzRCxNQUFNLENBQUMsWUFBWSxFQUFFLDhDQUE4QyxDQUFDO1NBQ3BFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsNkVBQTZFLENBQUM7U0FDdEcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLCtDQUErQyxDQUFDO1NBQ2pGLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxpQ0FBaUMsQ0FBQztTQUN2RSxNQUFNLENBQUMsOEJBQThCLEVBQUUsaUNBQWlDLENBQUM7U0FDekUsTUFBTSxDQUFDLDRCQUE0QixFQUFFLCtFQUErRSxDQUFDO1NBQ3JILE1BQU0sQ0FBQyx1QkFBdUIsRUFBRyw4Q0FBOEMsQ0FBQztTQUNoRixNQUFNLENBQUMseUJBQXlCLEVBQUUscURBQXFELENBQUM7U0FDeEYsTUFBTSxDQUFDLHVCQUF1QixFQUFFLGtEQUFrRCxDQUFDO1NBQ25GLE1BQU0sQ0FBQyxx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
@@ -0,0 +1 @@
1
+ export declare function fingerprintHandler(rootPath: string, options: any): Promise<void>;
@@ -0,0 +1,54 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.fingerprintHandler = void 0;
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const cli_progress_1 = __importDefault(require("cli-progress"));
8
+ const helpers_1 = require("./helpers");
9
+ const ScannerTypes_1 = require("../../sdk/scanner/ScannerTypes");
10
+ const WfpCalculator_1 = require("../../sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator");
11
+ const Tree_1 = require("../../sdk/tree/Tree");
12
+ const DependencyFilter_1 = require("../../sdk/tree/Filters/DependencyFilter");
13
+ async function fingerprintHandler(rootPath, options) {
14
+ rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
15
+ rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
16
+ const pathIsFolder = await helpers_1.isFolder(rootPath);
17
+ const wfpCalculator = new WfpCalculator_1.WfpCalculator();
18
+ let filesToFingerprint = [];
19
+ if (pathIsFolder) {
20
+ const tree = new Tree_1.Tree(rootPath);
21
+ tree.build();
22
+ filesToFingerprint = tree.getFileList(new DependencyFilter_1.DependencyFilter(""));
23
+ }
24
+ else {
25
+ filesToFingerprint.push(rootPath);
26
+ }
27
+ const optBar1 = { format: 'Fingerprinting Progress: [{bar}] {percentage}% | Fingerprinted {value} files of {total}' };
28
+ const bar1 = new cli_progress_1.default.SingleBar(optBar1, cli_progress_1.default.Presets.shades_classic);
29
+ bar1.start(filesToFingerprint.length, 0);
30
+ let fingerprints = '';
31
+ wfpCalculator.on(ScannerTypes_1.ScannerEvents.WINNOWING_NEW_CONTENT, (fingerprintPackage) => {
32
+ bar1.increment(fingerprintPackage.getNumberFilesFingerprinted());
33
+ fingerprints = fingerprints.concat(fingerprintPackage.getContent());
34
+ });
35
+ if (options.verbose)
36
+ wfpCalculator.on(ScannerTypes_1.ScannerEvents.WINNOWER_LOG, (log) => {
37
+ console.error(log);
38
+ });
39
+ wfpCalculator.on(ScannerTypes_1.ScannerEvents.WINNOWING_FINISHED, () => {
40
+ bar1.stop();
41
+ if (options.output) {
42
+ fs_1.default.writeFileSync(options.output, fingerprints);
43
+ }
44
+ else {
45
+ console.log(fingerprints);
46
+ }
47
+ });
48
+ const wfpInput = { fileList: filesToFingerprint, folderRoot: rootPath };
49
+ if (options.hpsm)
50
+ wfpInput.winnowingMode = ScannerTypes_1.WinnowingMode.FULL_WINNOWING_HPSM;
51
+ wfpCalculator.start(wfpInput);
52
+ }
53
+ exports.fingerprintHandler = fingerprintHandler;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2ZpbmdlcnByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQW9CO0FBRXBCLGdFQUF1QztBQUV2Qyx1Q0FBcUM7QUFDckMsaUVBQThFO0FBRTlFLDZGQUEwRjtBQUUxRiw4Q0FBMkM7QUFDM0MsOEVBQTJFO0FBR3BFLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFFckUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLDZCQUFhLEVBQUUsQ0FBQztJQUUxQyxJQUFJLGtCQUFrQixHQUFhLEVBQUUsQ0FBQztJQUN0QyxJQUFJLFlBQVksRUFBRTtRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksbUNBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNqRTtTQUFNO1FBQ0wsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0tBQ2xDO0lBR0QsTUFBTSxPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUseUZBQXlGLEVBQUUsQ0FBQztJQUN0SCxNQUFNLElBQUksR0FBRyxJQUFJLHNCQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxzQkFBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV6QyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDdEIsYUFBYSxDQUFDLEVBQUUsQ0FBQyw0QkFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsa0JBQXNDLEVBQUUsRUFBRTtRQUMvRixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztRQUNqRSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBRSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBRSxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxPQUFPLENBQUMsT0FBTztRQUNqQixhQUFhLENBQUMsRUFBRSxDQUFDLDRCQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUVMLGFBQWEsQ0FBQyxFQUFFLENBQUMsNEJBQWEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7UUFDdEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2pCLFlBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNoRDthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQXNCLEVBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsQ0FBQTtJQUN4RixJQUFHLE9BQU8sQ0FBQyxJQUFJO1FBQUUsUUFBUSxDQUFDLGFBQWEsR0FBRyw0QkFBYSxDQUFDLG1CQUFtQixDQUFDO0lBQzVFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFHaEMsQ0FBQztBQTlDRCxnREE4Q0MifQ==
@@ -20,6 +20,8 @@ const ComponentDataProvider_1 = require("../../sdk/DataLayer/DataProviders/Compo
20
20
  const DependencyDataProvider_1 = require("../../sdk/DataLayer/DataProviders/DependencyDataProvider");
21
21
  const LicenseDataProvider_1 = require("../../sdk/DataLayer/DataProviders/LicenseDataProvider");
22
22
  const SummaryDataProvider_1 = require("../../sdk/DataLayer/DataProviders/SummaryDataProvider");
23
+ const DecompressionFilter_1 = require("../../sdk/tree/Filters/DecompressionFilter");
24
+ const DecompressionManager_1 = require("../../sdk/Decompress/DecompressionManager");
23
25
  async function scanHandler(rootPath, options) {
24
26
  rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
25
27
  rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
@@ -55,6 +57,19 @@ async function scanHandler(rootPath, options) {
55
57
  console.error('Reading directory... ');
56
58
  const tree = new Tree_1.Tree(rootPath);
57
59
  tree.build();
60
+ if (options.extract) {
61
+ const archives = tree.getFileList(new DecompressionFilter_1.DecompressionFilter(""));
62
+ console.error("Searching archives files...");
63
+ if (archives.length) {
64
+ console.error("Extracting archives...");
65
+ const decompressionManager = new DecompressionManager_1.DecompressionManager(options.extractDeep, options.extractSuffix, options.extractOverwrite);
66
+ await decompressionManager.decompress(archives);
67
+ console.error("Reindexing files...");
68
+ tree.build();
69
+ }
70
+ else
71
+ console.error("No archives found.");
72
+ }
58
73
  scannerInput.fileList = tree.getFileList(new ScanFilter_1.ScanFilter(""));
59
74
  dependencyInput = tree.getFileList(new DependencyFilter_1.DependencyFilter(""));
60
75
  }
@@ -114,4 +129,4 @@ async function scanHandler(rootPath, options) {
114
129
  console.log(scannerResultsString);
115
130
  }
116
131
  exports.scanHandler = scanHandler;
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDRDQUFvQjtBQUVwQix1REFBb0Q7QUFDcEQsaUVBS3dDO0FBQ3hDLDZEQUEwRDtBQUMxRCw4Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLHVDQUE2RDtBQUc3RCxzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFLGtFQUErRDtBQUMvRCw4RUFBMkU7QUFDM0Usb0RBQWlEO0FBQ2pELGlGQUE4RTtBQUM5RSxtR0FFaUU7QUFDakUscUdBRWtFO0FBQ2xFLCtGQUUrRDtBQUMvRCwrRkFFK0Q7QUFHeEQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFFOUQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUc5QyxNQUFNLFdBQVcsR0FBRyxnQ0FBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVwRCwrQ0FBK0M7SUFDL0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLDJDQUFvQixFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLENBQUMsT0FBTztRQUFFLG9CQUFvQixDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHFDQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdEUsSUFBSSxlQUFlLEdBQWtCLEVBQUUsQ0FBQztJQUd4QyxnREFBZ0Q7SUFDaEQsTUFBTSxV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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDRDQUFvQjtBQUVwQix1REFBb0Q7QUFDcEQsaUVBS3dDO0FBQ3hDLDZEQUEwRDtBQUMxRCw4Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLHVDQUE2RDtBQUc3RCxzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFLGtFQUErRDtBQUMvRCw4RUFBMkU7QUFDM0Usb0RBQWlEO0FBQ2pELGlGQUE4RTtBQUM5RSxtR0FFaUU7QUFDakUscUdBRWtFO0FBQ2xFLCtGQUUrRDtBQUMvRCwrRkFFK0Q7QUFDL0Qsb0ZBRW9EO0FBQ3BELG9GQUVtRDtBQUc1QyxLQUFLLFVBQVUsV0FBVyxDQUFDLFFBQWdCLEVBQUUsT0FBWTtJQUU5RCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBRSxrQ0FBa0M7SUFDM0UsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSwwQ0FBMEM7SUFDaEcsTUFBTSxZQUFZLEdBQUcsTUFBTSxrQkFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRzlDLE1BQU0sV0FBVyxHQUFHLGdDQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXBELCtDQUErQztJQUMvQyxNQUFNLG9CQUFvQixHQUFHLElBQUksMkNBQW9CLEVBQUUsQ0FBQztJQUN4RCxJQUFJLE9BQU8sQ0FBQyxPQUFPO1FBQUUsb0JBQW9CLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5RSxNQUFNLGlCQUFpQixHQUFHLElBQUkscUNBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN0RSxJQUFJLGVBQWUsR0FBa0IsRUFBRSxDQUFD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
@@ -1,7 +1,14 @@
1
+ export * from './sdk/scanner/Scanner';
1
2
  export * from './sdk/scanner/ScannerTypes';
2
3
  export * from './sdk/scanner/ScannerCfg';
3
- export * from './sdk/scanner/Scanner';
4
4
  export * from './sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator';
5
5
  export * from './sdk/Dependencies/DependencyTypes';
6
6
  export * from './sdk/Dependencies/DependencyScannerCfg';
7
7
  export * from './sdk/Dependencies/DependencyScanner';
8
+ export * from './sdk/DataLayer/DataLayerTypes';
9
+ export * from './sdk/DataLayer/DataProviderManager';
10
+ export * from './sdk/DataLayer/DataProviders/LicenseDataProvider';
11
+ export * from './sdk/DataLayer/DataProviders/SummaryDataProvider';
12
+ export * from './sdk/DataLayer/DataProviders/DependencyDataProvider';
13
+ export * from './sdk/DataLayer/DataProviders/ComponentDataProvider';
14
+ export * from './sdk/Decompress/DecompressionManager';
@@ -9,11 +9,22 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
9
9
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ // *** Code scanner exports *** //
13
+ __exportStar(require("./sdk/scanner/Scanner"), exports);
12
14
  __exportStar(require("./sdk/scanner/ScannerTypes"), exports);
13
15
  __exportStar(require("./sdk/scanner/ScannerCfg"), exports);
14
- __exportStar(require("./sdk/scanner/Scanner"), exports);
15
16
  __exportStar(require("./sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator"), exports);
17
+ // *** Dependency scanner exports *** //
16
18
  __exportStar(require("./sdk/Dependencies/DependencyTypes"), exports);
17
19
  __exportStar(require("./sdk/Dependencies/DependencyScannerCfg"), exports);
18
20
  __exportStar(require("./sdk/Dependencies/DependencyScanner"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSw2REFBMkM7QUFDM0MsMkRBQXdDO0FBQ3hDLHdEQUFxQztBQUNyQyx3RkFBc0U7QUFDdEUscUVBQW1EO0FBQ25ELDBFQUF3RDtBQUN4RCx1RUFBcUQifQ==
21
+ // *** Data layers export *** //
22
+ __exportStar(require("./sdk/DataLayer/DataLayerTypes"), exports);
23
+ __exportStar(require("./sdk/DataLayer/DataProviderManager"), exports);
24
+ __exportStar(require("./sdk/DataLayer/DataProviders/LicenseDataProvider"), exports);
25
+ __exportStar(require("./sdk/DataLayer/DataProviders/SummaryDataProvider"), exports);
26
+ __exportStar(require("./sdk/DataLayer/DataProviders/DependencyDataProvider"), exports);
27
+ __exportStar(require("./sdk/DataLayer/DataProviders/ComponentDataProvider"), exports);
28
+ // *** Unzip *** //
29
+ __exportStar(require("./sdk/Decompress/DecompressionManager"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxrQ0FBa0M7QUFDbEMsd0RBQXNDO0FBQ3RDLDZEQUEyQztBQUMzQywyREFBeUM7QUFDekMsd0ZBQXNFO0FBRXRFLHdDQUF3QztBQUN4QyxxRUFBbUQ7QUFDbkQsMEVBQXdEO0FBQ3hELHVFQUFxRDtBQUdyRCxnQ0FBZ0M7QUFDaEMsaUVBQStDO0FBQy9DLHNFQUFvRDtBQUNwRCxvRkFBa0U7QUFDbEUsb0ZBQWtFO0FBQ2xFLHVGQUFxRTtBQUNyRSxzRkFBb0U7QUFFcEUsbUJBQW1CO0FBQ25CLHdFQUFzRCJ9
@@ -5,17 +5,39 @@ export interface ComponentDataLayer {
5
5
  name: string;
6
6
  vendor: string;
7
7
  url: string;
8
+ health: Health;
8
9
  versions: Version[];
9
10
  }
10
11
  export interface Version {
11
12
  version: string;
12
13
  licenses: string[];
13
14
  copyrights: Copyright[];
15
+ cryptography: Cryptography[];
16
+ quality: Quality;
14
17
  }
15
18
  export interface Copyright {
16
19
  name: string;
17
20
  source: string;
18
21
  }
22
+ export interface Cryptography {
23
+ algorithm: string;
24
+ strength: string;
25
+ }
26
+ export interface Quality {
27
+ scoreAvg: number;
28
+ count: number;
29
+ sum: number;
30
+ }
31
+ export interface Health {
32
+ creation_date: string;
33
+ issues: number;
34
+ last_push: string;
35
+ last_update: string;
36
+ watchers: number;
37
+ country: string;
38
+ stars: number;
39
+ forks: number;
40
+ }
19
41
  /************* Component interface definition *************/
20
42
  /************* Dependency interface definition *************/
21
43
  export interface DependencyDataLayer {
@@ -1,2 +1,5 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxheWVyVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RhdGFMYXllci9EYXRhTGF5ZXJUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
2
+ ;
3
+ ;
4
+ ;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxheWVyVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RhdGFMYXllci9EYXRhTGF5ZXJUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBc0JDLENBQUM7QUFLRCxDQUFDO0FBTUQsQ0FBQyJ9