scanoss 0.7.4 → 0.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/.idea/workspace.xml +22 -20
  2. package/build/main/cli/bin/cli-bin.d.ts +2 -1
  3. package/build/main/cli/bin/cli-bin.js +10 -2
  4. package/build/main/package.json +120 -0
  5. package/build/main/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +1 -1
  6. package/build/main/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +4 -4
  7. package/build/main/sdk/scanner/Dispatcher/Dispatcher.js +5 -2
  8. package/build/main/sdk/scanner/Fingerprint.d.ts +2 -2
  9. package/build/main/sdk/scanner/Fingerprint.js +26 -8
  10. package/build/main/sdk/scanner/Scanner.js +4 -1
  11. package/build/main/sdk/scanner/ScannerCfg.d.ts +1 -0
  12. package/build/main/sdk/scanner/ScannerCfg.js +6 -3
  13. package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +6 -3
  14. package/build/main/src/cli/bin/cli-bin.d.ts +2 -0
  15. package/build/main/src/cli/bin/cli-bin.js +68 -0
  16. package/build/main/src/cli/commands/dep.d.ts +1 -0
  17. package/build/main/src/cli/commands/dep.js +38 -0
  18. package/build/main/src/cli/commands/helpers.d.ts +2 -0
  19. package/build/main/src/cli/commands/helpers.js +25 -0
  20. package/build/main/src/cli/commands/scan.d.ts +1 -0
  21. package/build/main/src/cli/commands/scan.js +138 -0
  22. package/build/main/src/cli/commands/wfp.d.ts +1 -0
  23. package/build/main/src/cli/commands/wfp.js +54 -0
  24. package/build/main/src/index.d.ts +14 -0
  25. package/build/main/src/index.js +30 -0
  26. package/build/main/src/sdk/DataLayer/DataLayerTypes.d.ts +108 -0
  27. package/build/main/src/sdk/DataLayer/DataLayerTypes.js +5 -0
  28. package/build/main/src/sdk/DataLayer/DataProviderManager.d.ts +7 -0
  29. package/build/main/src/sdk/DataLayer/DataProviderManager.js +24 -0
  30. package/build/main/src/sdk/DataLayer/DataProviders/ComponentDataProvider.d.ts +13 -0
  31. package/build/main/src/sdk/DataLayer/DataProviders/ComponentDataProvider.js +164 -0
  32. package/build/main/src/sdk/DataLayer/DataProviders/DependencyDataProvider.d.ts +9 -0
  33. package/build/main/src/sdk/DataLayer/DataProviders/DependencyDataProvider.js +37 -0
  34. package/build/main/src/sdk/DataLayer/DataProviders/LicenseDataProvider.d.ts +18 -0
  35. package/build/main/src/sdk/DataLayer/DataProviders/LicenseDataProvider.js +148 -0
  36. package/build/main/src/sdk/DataLayer/DataProviders/SummaryDataProvider.d.ts +11 -0
  37. package/build/main/src/sdk/DataLayer/DataProviders/SummaryDataProvider.js +33 -0
  38. package/build/main/src/sdk/Decompress/DecompressionManager.d.ts +12 -0
  39. package/build/main/src/sdk/Decompress/DecompressionManager.js +73 -0
  40. package/build/main/src/sdk/Decompress/Decompressor/DecompressTgz.d.ts +5 -0
  41. package/build/main/src/sdk/Decompress/Decompressor/DecompressTgz.js +22 -0
  42. package/build/main/src/sdk/Decompress/Decompressor/DecompressZips.d.ts +5 -0
  43. package/build/main/src/sdk/Decompress/Decompressor/DecompressZips.js +24 -0
  44. package/build/main/src/sdk/Decompress/Decompressor/Decompressor.d.ts +10 -0
  45. package/build/main/src/sdk/Decompress/Decompressor/Decompressor.js +18 -0
  46. package/build/main/src/sdk/Dependencies/DependencyScanner.d.ts +11 -0
  47. package/build/main/src/sdk/Dependencies/DependencyScanner.js +96 -0
  48. package/build/main/src/sdk/Dependencies/DependencyScannerCfg.d.ts +4 -0
  49. package/build/main/src/sdk/Dependencies/DependencyScannerCfg.js +10 -0
  50. package/build/main/src/sdk/Dependencies/DependencyTypes.d.ts +21 -0
  51. package/build/main/src/sdk/Dependencies/DependencyTypes.js +2 -0
  52. package/build/main/src/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
  53. package/build/main/src/sdk/Dependencies/LocalDependency/DependencyTypes.js +2 -0
  54. package/build/main/src/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +8 -0
  55. package/build/main/src/sdk/Dependencies/LocalDependency/LocalDependency.js +102 -0
  56. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +2 -0
  57. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +95 -0
  58. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +3 -0
  59. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/golangParser.js +97 -0
  60. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
  61. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +183 -0
  62. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +13 -0
  63. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/npmParser.js +187 -0
  64. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +3 -0
  65. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +58 -0
  66. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
  67. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/pyParser.js +64 -0
  68. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +3 -0
  69. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +132 -0
  70. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/utils.d.ts +2 -0
  71. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/utils.js +19 -0
  72. package/build/main/src/sdk/Report/Report.d.ts +8 -0
  73. package/build/main/src/sdk/Report/Report.js +26 -0
  74. package/build/main/src/sdk/filters/DefaultFilterForDependencies.d.ts +16 -0
  75. package/build/main/src/sdk/filters/DefaultFilterForDependencies.js +145 -0
  76. package/build/main/src/sdk/filters/DefaultFilterForScanning.d.ts +16 -0
  77. package/build/main/src/sdk/filters/DefaultFilterForScanning.js +194 -0
  78. package/build/main/src/sdk/filters/filtering.d.ts +32 -0
  79. package/build/main/src/sdk/filters/filtering.js +228 -0
  80. package/build/main/src/sdk/grpc/GrpcDependencyService.d.ts +11 -0
  81. package/build/main/src/sdk/grpc/GrpcDependencyService.js +86 -0
  82. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  83. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  84. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  85. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
  86. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +39 -0
  87. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  88. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  89. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
  90. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +19 -0
  91. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
  92. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  93. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
  94. package/build/main/src/sdk/scanner/Dispatcher/DispatchableItem.d.ts +19 -0
  95. package/build/main/src/sdk/scanner/Dispatcher/DispatchableItem.js +43 -0
  96. package/build/main/src/sdk/scanner/Dispatcher/Dispatcher.d.ts +20 -0
  97. package/build/main/src/sdk/scanner/Dispatcher/Dispatcher.js +160 -0
  98. package/build/main/src/sdk/scanner/Dispatcher/DispatcherResponse.d.ts +12 -0
  99. package/build/main/src/sdk/scanner/Dispatcher/DispatcherResponse.js +33 -0
  100. package/build/main/src/sdk/scanner/Dispatcher/GlobalControllerAborter.d.ts +10 -0
  101. package/build/main/src/sdk/scanner/Dispatcher/GlobalControllerAborter.js +32 -0
  102. package/build/main/src/sdk/scanner/Fingerprint.d.ts +16 -0
  103. package/build/main/src/sdk/scanner/Fingerprint.js +78 -0
  104. package/build/main/src/sdk/scanner/Scannable/ScannableItem.d.ts +15 -0
  105. package/build/main/src/sdk/scanner/Scannable/ScannableItem.js +27 -0
  106. package/build/main/src/sdk/scanner/Scanner.d.ts +46 -0
  107. package/build/main/src/sdk/scanner/Scanner.js +283 -0
  108. package/build/main/src/sdk/scanner/ScannerCfg.d.ts +16 -0
  109. package/build/main/src/sdk/scanner/ScannerCfg.js +30 -0
  110. package/build/main/src/sdk/scanner/ScannerTypes.d.ts +121 -0
  111. package/build/main/src/sdk/scanner/ScannerTypes.js +48 -0
  112. package/build/main/src/sdk/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
  113. package/build/main/src/sdk/scanner/WfpProvider/FingerprintPackage.js +31 -0
  114. package/build/main/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +20 -0
  115. package/build/main/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +492 -0
  116. package/build/main/src/sdk/scanner/WfpProvider/WfpProvider.d.ts +35 -0
  117. package/build/main/src/sdk/scanner/WfpProvider/WfpProvider.js +68 -0
  118. package/build/main/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +21 -0
  119. package/build/main/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +139 -0
  120. package/build/main/src/sdk/tree/File.d.ts +7 -0
  121. package/build/main/src/sdk/tree/File.js +24 -0
  122. package/build/main/src/sdk/tree/Filters/DecompressionFilter.d.ts +7 -0
  123. package/build/main/src/sdk/tree/Filters/DecompressionFilter.js +21 -0
  124. package/build/main/src/sdk/tree/Filters/DependencyFilter.d.ts +7 -0
  125. package/build/main/src/sdk/tree/Filters/DependencyFilter.js +17 -0
  126. package/build/main/src/sdk/tree/Filters/Filter.d.ts +4 -0
  127. package/build/main/src/sdk/tree/Filters/Filter.js +6 -0
  128. package/build/main/src/sdk/tree/Filters/ScanFilter.d.ts +7 -0
  129. package/build/main/src/sdk/tree/Filters/ScanFilter.js +17 -0
  130. package/build/main/src/sdk/tree/Folder.d.ts +12 -0
  131. package/build/main/src/sdk/tree/Folder.js +58 -0
  132. package/build/main/src/sdk/tree/Node.d.ts +17 -0
  133. package/build/main/src/sdk/tree/Node.js +25 -0
  134. package/build/main/src/sdk/tree/Tree.d.ts +18 -0
  135. package/build/main/src/sdk/tree/Tree.js +70 -0
  136. package/build/main/tsconfig.tsbuildinfo +126 -123
  137. package/build/module/cli/bin/cli-bin.d.ts +2 -1
  138. package/build/module/cli/bin/cli-bin.js +6 -2
  139. package/build/module/package.json +120 -0
  140. package/build/module/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +1 -1
  141. package/build/module/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +4 -4
  142. package/build/module/sdk/scanner/Dispatcher/Dispatcher.js +5 -2
  143. package/build/module/sdk/scanner/Fingerprint.d.ts +2 -2
  144. package/build/module/sdk/scanner/Fingerprint.js +6 -6
  145. package/build/module/sdk/scanner/Scanner.js +4 -1
  146. package/build/module/sdk/scanner/ScannerCfg.d.ts +1 -0
  147. package/build/module/sdk/scanner/ScannerCfg.js +6 -3
  148. package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +6 -3
  149. package/build/module/src/cli/bin/cli-bin.d.ts +2 -0
  150. package/build/module/src/cli/bin/cli-bin.js +67 -0
  151. package/build/module/src/cli/commands/dep.d.ts +1 -0
  152. package/build/module/src/cli/commands/dep.js +32 -0
  153. package/build/module/src/cli/commands/helpers.d.ts +2 -0
  154. package/build/module/src/cli/commands/helpers.js +19 -0
  155. package/build/module/src/cli/commands/scan.d.ts +1 -0
  156. package/build/module/src/cli/commands/scan.js +135 -0
  157. package/build/module/src/cli/commands/wfp.d.ts +1 -0
  158. package/build/module/src/cli/commands/wfp.js +48 -0
  159. package/build/module/src/index.d.ts +14 -0
  160. package/build/module/src/index.js +19 -0
  161. package/build/module/src/sdk/DataLayer/DataLayerTypes.d.ts +108 -0
  162. package/build/module/src/sdk/DataLayer/DataLayerTypes.js +5 -0
  163. package/build/module/src/sdk/DataLayer/DataProviderManager.d.ts +7 -0
  164. package/build/module/src/sdk/DataLayer/DataProviderManager.js +21 -0
  165. package/build/module/src/sdk/DataLayer/DataProviders/ComponentDataProvider.d.ts +13 -0
  166. package/build/module/src/sdk/DataLayer/DataProviders/ComponentDataProvider.js +159 -0
  167. package/build/module/src/sdk/DataLayer/DataProviders/DependencyDataProvider.d.ts +9 -0
  168. package/build/module/src/sdk/DataLayer/DataProviders/DependencyDataProvider.js +34 -0
  169. package/build/module/src/sdk/DataLayer/DataProviders/LicenseDataProvider.d.ts +18 -0
  170. package/build/module/src/sdk/DataLayer/DataProviders/LicenseDataProvider.js +145 -0
  171. package/build/module/src/sdk/DataLayer/DataProviders/SummaryDataProvider.d.ts +11 -0
  172. package/build/module/src/sdk/DataLayer/DataProviders/SummaryDataProvider.js +30 -0
  173. package/build/module/src/sdk/Decompress/DecompressionManager.d.ts +12 -0
  174. package/build/module/src/sdk/Decompress/DecompressionManager.js +67 -0
  175. package/build/module/src/sdk/Decompress/Decompressor/DecompressTgz.d.ts +5 -0
  176. package/build/module/src/sdk/Decompress/Decompressor/DecompressTgz.js +16 -0
  177. package/build/module/src/sdk/Decompress/Decompressor/DecompressZips.d.ts +5 -0
  178. package/build/module/src/sdk/Decompress/Decompressor/DecompressZips.js +18 -0
  179. package/build/module/src/sdk/Decompress/Decompressor/Decompressor.d.ts +10 -0
  180. package/build/module/src/sdk/Decompress/Decompressor/Decompressor.js +15 -0
  181. package/build/module/src/sdk/Dependencies/DependencyScanner.d.ts +11 -0
  182. package/build/module/src/sdk/Dependencies/DependencyScanner.js +93 -0
  183. package/build/module/src/sdk/Dependencies/DependencyScannerCfg.d.ts +4 -0
  184. package/build/module/src/sdk/Dependencies/DependencyScannerCfg.js +7 -0
  185. package/build/module/src/sdk/Dependencies/DependencyTypes.d.ts +21 -0
  186. package/build/module/src/sdk/Dependencies/DependencyTypes.js +2 -0
  187. package/build/module/src/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
  188. package/build/module/src/sdk/Dependencies/LocalDependency/DependencyTypes.js +2 -0
  189. package/build/module/src/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +8 -0
  190. package/build/module/src/sdk/Dependencies/LocalDependency/LocalDependency.js +96 -0
  191. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +2 -0
  192. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +87 -0
  193. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +3 -0
  194. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/golangParser.js +88 -0
  195. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
  196. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +180 -0
  197. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +13 -0
  198. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/npmParser.js +175 -0
  199. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +3 -0
  200. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +49 -0
  201. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
  202. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/pyParser.js +57 -0
  203. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +3 -0
  204. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +125 -0
  205. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/utils.d.ts +2 -0
  206. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/utils.js +15 -0
  207. package/build/module/src/sdk/Report/Report.d.ts +8 -0
  208. package/build/module/src/sdk/Report/Report.js +20 -0
  209. package/build/module/src/sdk/filters/DefaultFilterForDependencies.d.ts +16 -0
  210. package/build/module/src/sdk/filters/DefaultFilterForDependencies.js +143 -0
  211. package/build/module/src/sdk/filters/DefaultFilterForScanning.d.ts +16 -0
  212. package/build/module/src/sdk/filters/DefaultFilterForScanning.js +192 -0
  213. package/build/module/src/sdk/filters/filtering.d.ts +32 -0
  214. package/build/module/src/sdk/filters/filtering.js +203 -0
  215. package/build/module/src/sdk/grpc/GrpcDependencyService.d.ts +11 -0
  216. package/build/module/src/sdk/grpc/GrpcDependencyService.js +64 -0
  217. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  218. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  219. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  220. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
  221. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +39 -0
  222. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  223. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  224. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
  225. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +19 -0
  226. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
  227. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  228. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
  229. package/build/module/src/sdk/scanner/Dispatcher/DispatchableItem.d.ts +19 -0
  230. package/build/module/src/sdk/scanner/Dispatcher/DispatchableItem.js +37 -0
  231. package/build/module/src/sdk/scanner/Dispatcher/Dispatcher.d.ts +20 -0
  232. package/build/module/src/sdk/scanner/Dispatcher/Dispatcher.js +135 -0
  233. package/build/module/src/sdk/scanner/Dispatcher/DispatcherResponse.d.ts +12 -0
  234. package/build/module/src/sdk/scanner/Dispatcher/DispatcherResponse.js +30 -0
  235. package/build/module/src/sdk/scanner/Dispatcher/GlobalControllerAborter.d.ts +10 -0
  236. package/build/module/src/sdk/scanner/Dispatcher/GlobalControllerAborter.js +26 -0
  237. package/build/module/src/sdk/scanner/Fingerprint.d.ts +16 -0
  238. package/build/module/src/sdk/scanner/Fingerprint.js +54 -0
  239. package/build/module/src/sdk/scanner/Scannable/ScannableItem.d.ts +15 -0
  240. package/build/module/src/sdk/scanner/Scannable/ScannableItem.js +24 -0
  241. package/build/module/src/sdk/scanner/Scanner.d.ts +46 -0
  242. package/build/module/src/sdk/scanner/Scanner.js +275 -0
  243. package/build/module/src/sdk/scanner/ScannerCfg.d.ts +16 -0
  244. package/build/module/src/sdk/scanner/ScannerCfg.js +27 -0
  245. package/build/module/src/sdk/scanner/ScannerTypes.d.ts +121 -0
  246. package/build/module/src/sdk/scanner/ScannerTypes.js +46 -0
  247. package/build/module/src/sdk/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
  248. package/build/module/src/sdk/scanner/WfpProvider/FingerprintPackage.js +28 -0
  249. package/build/module/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +20 -0
  250. package/build/module/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +486 -0
  251. package/build/module/src/sdk/scanner/WfpProvider/WfpProvider.d.ts +35 -0
  252. package/build/module/src/sdk/scanner/WfpProvider/WfpProvider.js +65 -0
  253. package/build/module/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +21 -0
  254. package/build/module/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +132 -0
  255. package/build/module/src/sdk/tree/File.d.ts +7 -0
  256. package/build/module/src/sdk/tree/File.js +19 -0
  257. package/build/module/src/sdk/tree/Filters/DecompressionFilter.d.ts +7 -0
  258. package/build/module/src/sdk/tree/Filters/DecompressionFilter.js +18 -0
  259. package/build/module/src/sdk/tree/Filters/DependencyFilter.d.ts +7 -0
  260. package/build/module/src/sdk/tree/Filters/DependencyFilter.js +14 -0
  261. package/build/module/src/sdk/tree/Filters/Filter.d.ts +4 -0
  262. package/build/module/src/sdk/tree/Filters/Filter.js +3 -0
  263. package/build/module/src/sdk/tree/Filters/ScanFilter.d.ts +7 -0
  264. package/build/module/src/sdk/tree/Filters/ScanFilter.js +14 -0
  265. package/build/module/src/sdk/tree/Folder.d.ts +12 -0
  266. package/build/module/src/sdk/tree/Folder.js +53 -0
  267. package/build/module/src/sdk/tree/Node.d.ts +17 -0
  268. package/build/module/src/sdk/tree/Node.js +22 -0
  269. package/build/module/src/sdk/tree/Tree.d.ts +18 -0
  270. package/build/module/src/sdk/tree/Tree.js +64 -0
  271. package/build/module/tsconfig.module.tsbuildinfo +126 -123
  272. package/package-lock.json +17117 -0
  273. package/package.json +1 -1
  274. package/src/cli/bin/cli-bin.ts +7 -4
  275. package/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.ts +10 -9
  276. package/src/sdk/scanner/Dispatcher/Dispatcher.ts +5 -2
  277. package/src/sdk/scanner/Fingerprint.ts +6 -8
  278. package/src/sdk/scanner/Scanner.ts +4 -0
  279. package/src/sdk/scanner/ScannerCfg.ts +8 -2
  280. package/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts +7 -2
  281. package/yarn.lock +4977 -4864
@@ -0,0 +1,492 @@
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.WfpCalculator = void 0;
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const worker_threads_1 = require("worker_threads");
8
+ const ScannableItem_1 = require("../../Scannable/ScannableItem");
9
+ const ScannerCfg_1 = require("../../ScannerCfg");
10
+ const FingerprintPackage_1 = require("../FingerprintPackage");
11
+ const WfpProvider_1 = require("../WfpProvider");
12
+ const stringWorker = `
13
+ const { parentPort } = require('worker_threads');
14
+
15
+ parentPort.on('message', async (scannableItem) => {
16
+
17
+ let fingerprint;
18
+ if ( scannableItem.winnowingMode === "FULL_WINNOWING") {
19
+ fingerprint = wfp_for_content(
20
+ scannableItem.content,
21
+ scannableItem.contentSource,
22
+ scannableItem.maxSizeWfp
23
+ );
24
+ } else if (scannableItem.winnowingMode === "FULL_WINNOWING_HPSM") {
25
+ fingerprint = wfp_hpsm_for_content(
26
+ scannableItem.content,
27
+ scannableItem.contentSource,
28
+ scannableItem.maxSizeWfp
29
+ );
30
+ } else if (scannableItem.winnowingMode === "WINNOWING_ONLY_MD5") {
31
+ fingerprint = wfp_only_md5(
32
+ scannableItem.content,
33
+ scannableItem.contentSource
34
+ );
35
+ }
36
+
37
+ scannableItem.fingerprint = fingerprint;
38
+ parentPort.postMessage(scannableItem);
39
+
40
+ });
41
+
42
+ /**
43
+ * Winnowing and HPSM algorithm begins
44
+ */
45
+
46
+ const crypto = require('crypto');
47
+ const isWin = process.platform === 'win32';
48
+ const pathSeparator = isWin ? String.fromCharCode(92) : '/';
49
+
50
+ // Winnowing configuration. DO NOT CHANGE.
51
+ const GRAM = 30;
52
+ const WINDOW = 64;
53
+
54
+ // ASCII characters
55
+ const ASCII_0 = 48;
56
+ const ASCII_9 = 57;
57
+ const ASCII_A = 65;
58
+ const ASCII_Z = 90;
59
+ const ASCII_a = 97;
60
+ const ASCII_z = 122;
61
+ const ASCII_LF = 10;
62
+
63
+ function normalize(byte) {
64
+ if (byte < ASCII_0 || byte > ASCII_z) {
65
+ return 0;
66
+ }
67
+ if (byte <= ASCII_9 || byte >= ASCII_a) {
68
+ return byte;
69
+ }
70
+ if (byte >= ASCII_A && byte <= ASCII_Z) {
71
+ return byte + 32;
72
+ }
73
+ return 0;
74
+ }
75
+
76
+ function min_hex_array(array) {
77
+ let min = 'ffffffff';
78
+ for (let i = 0; i < array.length; i++) {
79
+ if (array[i] < min) {
80
+ min = array[i];
81
+ }
82
+ }
83
+ return min;
84
+ }
85
+
86
+ function calc_wfp(contents, maxSize) {
87
+ let gram = '';
88
+ const window = [];
89
+ let normalized = 0;
90
+ let line = 1;
91
+ let min_hash = 'ffffffff';
92
+ let last_hash = 'ffffffff';
93
+ let last_line = 0;
94
+ let output = '';
95
+ let gram_crc32 = 0;
96
+ let wfp = '';
97
+
98
+ for (let i = 0; i < contents.length; i++) {
99
+ if(wfp.length > maxSize)
100
+ return wfp;
101
+
102
+ const byte = contents[i];
103
+ if (byte == ASCII_LF) {
104
+ line += 1;
105
+ normalized = 0;
106
+ } else {
107
+ normalized = normalize(byte);
108
+ }
109
+ // Is this an useful byte?
110
+ if (normalized) {
111
+ gram += String.fromCharCode(normalized);
112
+
113
+ if (gram.length >= GRAM) {
114
+ gram_crc32 = crc32c_hex(gram);
115
+ window.push(gram_crc32);
116
+
117
+ if (window.length >= WINDOW) {
118
+ min_hash = min_hex_array(window);
119
+ if (min_hash !== last_hash) {
120
+ // Hashing the hash will result in a better balanced output data set
121
+ // as it will counter the winnowing effect which selects the "minimum"
122
+ // hash in each window
123
+ const min_hash_bytes_le = parseHexString(
124
+ toLittleEndianCRCHex(min_hash)
125
+ );
126
+ const crc_hex = crc32c_for_bytes_hex(min_hash_bytes_le);
127
+
128
+ if (last_line != line) {
129
+ if (output.length > 0) {
130
+ wfp += String(output) + String.fromCharCode(10);
131
+ }
132
+ output = String(line) + '=' + String(crc_hex);
133
+ } else {
134
+ output += ',' + String(crc_hex);
135
+ }
136
+ last_line = line;
137
+ last_hash = min_hash;
138
+ }
139
+ window.shift();
140
+ }
141
+ gram = gram.slice(1);
142
+ }
143
+ }
144
+ }
145
+ if (output.length > 0) {
146
+ wfp += String(output) + String.fromCharCode(10);
147
+ }
148
+
149
+ return wfp;
150
+ }
151
+
152
+ function parseHexString(str) {
153
+ const result = [];
154
+ while (str.length >= 2) {
155
+ result.push(parseInt(str.substring(0, 2), 16));
156
+ str = str.substring(2, str.length);
157
+ }
158
+
159
+ return result;
160
+ }
161
+
162
+ /**
163
+ *
164
+ * @param {string} hex
165
+ */
166
+ function toLittleEndianCRCHex(hex) {
167
+ return (
168
+ hex.charAt(6) +
169
+ hex.charAt(7) +
170
+ hex.charAt(4) +
171
+ hex.charAt(5) +
172
+ hex.charAt(2) +
173
+ hex.charAt(3) +
174
+ hex.charAt(0) +
175
+ hex.charAt(1)
176
+ );
177
+ }
178
+
179
+ let CRC_TABLE = [];
180
+
181
+ function makeCRCTable() {
182
+ let c;
183
+ const crcTable = [];
184
+ for (let n = 0; n < 256; n++) {
185
+ c = n;
186
+ for (let k = 0; k < 8; k++) {
187
+ c = c & 1 ? 0x82f63b78 ^ (c >>> 1) : c >>> 1;
188
+ }
189
+ crcTable[n] = c;
190
+ }
191
+ return crcTable;
192
+ }
193
+
194
+ function crc32c(str) {
195
+ if (CRC_TABLE.length == 0) {
196
+ CRC_TABLE = makeCRCTable();
197
+ }
198
+ let crc = 0 ^ -1;
199
+
200
+ for (let i = 0; i < str.length; i++) {
201
+ crc = (crc >>> 8) ^ CRC_TABLE[(crc ^ str.charCodeAt(i)) & 0xff];
202
+ }
203
+
204
+ return (crc ^ -1) >>> 0;
205
+ }
206
+
207
+ function crc32c_for_bytes(bytes) {
208
+ if (CRC_TABLE.length == 0) {
209
+ CRC_TABLE = makeCRCTable();
210
+ }
211
+ let crc = 0 ^ -1;
212
+
213
+ for (let i = 0; i < bytes.length; i++) {
214
+ crc = (crc >>> 8) ^ CRC_TABLE[(crc ^ bytes[i]) & 0xff];
215
+ }
216
+
217
+ return (crc ^ -1) >>> 0;
218
+ }
219
+
220
+ function crc32c_for_bytes_hex(bytes) {
221
+ return crc32c_for_bytes(bytes).toString(16).padStart(8, '0');
222
+ }
223
+
224
+ function crc32c_hex(str) {
225
+ return crc32c(str).toString(16).padStart(8, '0');
226
+ }
227
+
228
+ function truncate_string(input, maxSize){
229
+ return input.slice(0, maxSize)
230
+ }
231
+
232
+ function toHexString(byteArray) {
233
+ return Array.from(byteArray, function(byte) {
234
+ return ('0' + (byte & 0xFF).toString(16)).slice(-2);
235
+ }).join('')
236
+ }
237
+
238
+ function calc_hpsm(content) {
239
+ let list_normalized = []; //Array of numbers
240
+ let crc_lines = []; //Array of numbers that represent the crc8_maxim for each line of the file
241
+
242
+ let last_line = 0;
243
+ crc8_MAXIM_DOW_GenerateTable();
244
+
245
+ for(let i = 0; i<content.length; i++) {
246
+ const c = content[i];
247
+ if (c == ASCII_LF) { //When there is a new line
248
+ if (list_normalized.length) {
249
+ crc_lines.push(crc8_MAXIM_DOW_Buffer(list_normalized))
250
+ list_normalized=[];
251
+ } else if(last_line+1 == i) {
252
+ crc_lines.push(0xFF);
253
+ } else if (i-last_line > 1) {
254
+ crc_lines.push(0x00)
255
+ }
256
+ last_line = i;
257
+ } else {
258
+ const c_normalized = normalize(c);
259
+ if (c_normalized != 0) list_normalized.push(c_normalized)
260
+ }
261
+ }
262
+ return "hpsm=" + toHexString(crc_lines)
263
+ }
264
+
265
+
266
+ /**
267
+ * Create a wfp_hpsm package joining wfp (with md5 line) and a hpsm.
268
+ *
269
+ * Example:
270
+ * wfp = file=508cb9dfbe1c7dca5ed24f124473f33d,300,asd.c
271
+ * 11=b19bdbfa
272
+ *
273
+ * hpsm = hpsm=1909ff06ff688630ff45a92b52f47eff3500ffff
274
+ *
275
+ * wfp_hpsm = file=508cb9dfbe1c7dca5ed24f124473f33d,300,asd.c
276
+ * hpsm=1909ff06ff688630ff45a92b52f47eff3500ffff
277
+ * 11=b19bdbfa
278
+ *
279
+ * @param {string} wfp Complete wfp string (with md5 line)
280
+ * @param {string} hpsm
281
+ * @returns {string}
282
+ */
283
+ function join_wfp_hpsm(wfp, hpsm) {
284
+ let header = wfp.match(/file=.*/);
285
+ header += String.fromCharCode(10);
286
+ header += hpsm;
287
+ wfp = wfp.replace(/file=.*/, "")
288
+ return header + wfp;
289
+ }
290
+
291
+ /**
292
+ *
293
+ * @param {Buffer} content
294
+ * @param {string} contentSource
295
+ * @param {number} maxSize
296
+ * @returns {string}
297
+ */
298
+ function wfp_hpsm_for_content(content, contentSource, maxSize) {
299
+ let wfp = wfp_for_content(content, contentSource, maxSize)
300
+ let hpsm = calc_hpsm(content) //Returns a string
301
+ let wfp_hpsm_joined = join_wfp_hpsm(wfp, hpsm)
302
+ return truncate_string(wfp_hpsm_joined, maxSize)
303
+ }
304
+
305
+ function wfp_for_content(content, contentSource, maxSize) {
306
+ let wfp = wfp_only_md5(content, contentSource);
307
+ wfp += calc_wfp(content, maxSize);
308
+ return wfp;
309
+ }
310
+
311
+ function wfp_only_md5(contents, contentSource) {
312
+ const file_md5 = crypto.createHash('md5').update(contents).digest('hex');
313
+ let wfp = 'file=' + String(file_md5) + ',' + String(contents.length) + ',' + String(contentSource)+ String.fromCharCode(10);
314
+ return wfp;
315
+ }
316
+
317
+ /**
318
+ * CRC8_MAXIM algorithm begins
319
+ */
320
+
321
+
322
+ //=============================================================================
323
+ // Implementation of CRC-8/MAXIM-DOW,CRC-8/MAXIM,DOW-CRC.
324
+ // Notes: Code ported from C Auto-generated by http://crc.drque.net/
325
+ //=============================================================================
326
+
327
+ //Table size
328
+ const CRC8_MAXIM_DOW_TABLE_SIZE = 0x100
329
+ const CRC8_MAXIM_DOW_POLYNOMIAL = 0x8C // 0x31 reflected
330
+ const CRC8_MAXIM_DOW_INITIAL = 0x00 // 0x00 reflected
331
+ const CRC8_MAXIM_DOW_FINAL = 0x00 // 0x00 reflected
332
+
333
+ let crc8_MAXIM_DOW_Table = []
334
+
335
+ /**
336
+ * Compute CRC of byte without lookup tables.
337
+ *
338
+ * @param {number} crc Current CRC or initial value
339
+ * @param {number} byte New byte to accumulate.
340
+ * @returns {number} Updated CRC.
341
+ */
342
+ function crc8_MAXIM_DOW_ByteNoTable(crc, byte) {
343
+ crc ^= byte;
344
+ for (let count = 0; count<8; count++) {
345
+ const isSet = (crc & 0x01)
346
+ crc >>= 1;
347
+ if (isSet) crc ^= CRC8_MAXIM_DOW_POLYNOMIAL
348
+ }
349
+ return crc
350
+ }
351
+
352
+ /**
353
+ * Create the lookup table.
354
+ * Note: Must be called before any table based CRC calculations can be done.
355
+ */
356
+ function crc8_MAXIM_DOW_GenerateTable() {
357
+ for(let i = 0; i<CRC8_MAXIM_DOW_TABLE_SIZE; i++) {
358
+ crc8_MAXIM_DOW_Table.push(crc8_MAXIM_DOW_ByteNoTable(0, i))
359
+ }
360
+ }
361
+
362
+ /**
363
+ * Update CRC by byte.
364
+ *
365
+ * @param {number} crc Initial CRC.
366
+ * @param {number} byte New byte to accumulate.
367
+ * @returns {number} Updated CRC.
368
+ */
369
+ function crc8_MAXIM_DOW_Byte( crc, byte )
370
+ {
371
+ const index = byte ^ crc;
372
+ return crc8_MAXIM_DOW_Table[ index ] ^ ( crc >> 8 );
373
+ }
374
+
375
+ /**
376
+ * Compute CRC of buffer.
377
+ * Note: crc8_MAXIM_DOW_GenerateTable() must be called before use this function
378
+ *
379
+ * @param {Buffer} buffer Buffer with bytes to calculate CRC.
380
+ * @returns {number} CRC
381
+ */
382
+ function crc8_MAXIM_DOW_Buffer(buffer) {
383
+ let crc = CRC8_MAXIM_DOW_INITIAL;
384
+ for (let index = 0; index < buffer.length ; index ++) {
385
+ crc = crc8_MAXIM_DOW_Byte(crc, buffer[index])
386
+ }
387
+ crc ^= CRC8_MAXIM_DOW_FINAL;
388
+ return crc;
389
+ }
390
+ `;
391
+ class WfpCalculator extends WfpProvider_1.WfpProvider {
392
+ constructor(scannerCfg = new ScannerCfg_1.ScannerCfg()) {
393
+ super();
394
+ this.scannerCfg = scannerCfg;
395
+ }
396
+ init() {
397
+ super.init();
398
+ this.continue = true;
399
+ this.fileList = [];
400
+ this.fileListIndex = 0;
401
+ }
402
+ prepareWorker() {
403
+ this.worker = new worker_threads_1.Worker(stringWorker, { eval: true });
404
+ this.worker.on('message', async (scannableItem) => {
405
+ this.fingerprintPacker(scannableItem.fingerprint);
406
+ await this.nextStepMachine();
407
+ });
408
+ }
409
+ recoveryIndex() {
410
+ // Files: contains all files winnowed but not packed yet
411
+ const files = new FingerprintPackage_1.FingerprintPackage(this.wfp, this.folderRoot).getFilesFingerprinted();
412
+ if (files.length) {
413
+ const lastFileWinnowed = files[files.length - 1];
414
+ let i = 0;
415
+ while (i <= files.length && lastFileWinnowed !== this.fileList[this.fileListIndex - i]) {
416
+ i += 1;
417
+ }
418
+ // If file already winnowed cannot be found in fileList emit an error.
419
+ if (i > files.length) {
420
+ this.sendError('Cannot recovery index on winnower');
421
+ return -1;
422
+ }
423
+ this.fileListIndex -= i;
424
+ if (this.fileList[this.fileListIndex] === lastFileWinnowed)
425
+ this.fileListIndex += 1;
426
+ }
427
+ return 0;
428
+ }
429
+ forceStopWorker() {
430
+ this.worker.removeAllListeners();
431
+ this.worker.terminate();
432
+ }
433
+ processPackedWfp(content) {
434
+ const fingerprint = new FingerprintPackage_1.FingerprintPackage(content, this.folderRoot);
435
+ this.sendFingerprint(fingerprint);
436
+ }
437
+ async getNextScannableItem() {
438
+ if (this.fileListIndex >= this.fileList.length)
439
+ return null;
440
+ const path = this.fileList[this.fileListIndex];
441
+ const contentSource = path.replace(`${this.folderRoot}`, '');
442
+ const content = await fs_1.default.promises.readFile(path);
443
+ this.fileListIndex += 1;
444
+ const scannable = new ScannableItem_1.ScannableItem(content, contentSource, this.winnowingMode, this.scannerCfg.WFP_FILE_MAX_SIZE);
445
+ return scannable;
446
+ }
447
+ async nextStepMachine() {
448
+ if (!this.continue)
449
+ return;
450
+ const scannableItem = await this.getNextScannableItem();
451
+ if (scannableItem)
452
+ this.worker.postMessage(scannableItem);
453
+ else {
454
+ this.finishWinnowing();
455
+ this.forceStopWorker();
456
+ this.sendLog('[ SCANNER ]: WFP Calculator finished...');
457
+ }
458
+ }
459
+ start(params) {
460
+ if (!params.fileList)
461
+ this.sendError('File list is required');
462
+ this.sendLog('[ SCANNER ]: WFP Calculator starting...');
463
+ this.init();
464
+ this.prepareWorker();
465
+ if (params.winnowingMode)
466
+ this.setWinnowingMode(params.winnowingMode);
467
+ this.pendingFiles = true;
468
+ this.folderRoot = params.folderRoot;
469
+ this.fileList = params.fileList;
470
+ this.nextStepMachine();
471
+ return this.finishPromise;
472
+ }
473
+ pause() {
474
+ this.sendLog('[ SCANNER ]: WFP Calculator paused...');
475
+ this.continue = false;
476
+ }
477
+ resume() {
478
+ this.sendLog('[ SCANNER ]: WFP Calculator resumed...');
479
+ this.continue = true;
480
+ this.recoveryIndex();
481
+ this.nextStepMachine();
482
+ }
483
+ stop() {
484
+ this.continue = false;
485
+ this.pendingFiles = false;
486
+ this.forceStopWorker();
487
+ this.prepareWorker();
488
+ this.init();
489
+ }
490
+ }
491
+ exports.WfpCalculator = WfpCalculator;
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ZwQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9XZnBQcm92aWRlci9XZnBDYWxjdWxhdG9yL1dmcENhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsbURBQXdDO0FBRXhDLGlFQUE4RDtBQUM5RCxpREFBOEM7QUFHOUMsOERBQTJEO0FBQzNELGdEQUFnRTtBQUVoRSxNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMFhwQixDQUFDO0FBRUYsTUFBYSxhQUFjLFNBQVEseUJBQVc7SUFPNUMsWUFBWSxVQUFVLEdBQUcsSUFBSSx1QkFBVSxFQUFFO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUk7UUFDRixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUs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
@@ -0,0 +1,35 @@
1
+ /// <reference types="node" />
2
+ import { Worker } from 'worker_threads';
3
+ import { EventEmitter } from "stream";
4
+ import { ScannerCfg } from "../ScannerCfg";
5
+ import { WinnowingMode } from "../ScannerTypes";
6
+ import { FingerprintPackage } from "./FingerprintPackage";
7
+ export interface IWfpProviderInput {
8
+ wfpPath?: string;
9
+ folderRoot?: string;
10
+ fileList?: Array<string>;
11
+ winnowingMode?: WinnowingMode;
12
+ }
13
+ export declare abstract class WfpProvider extends EventEmitter {
14
+ protected wfp: string;
15
+ protected scannerCfg: ScannerCfg;
16
+ protected folderRoot: string;
17
+ protected worker: Worker;
18
+ protected pendingFiles: boolean;
19
+ protected winnowingMode: WinnowingMode;
20
+ protected finishPromise: Promise<void>;
21
+ protected finishPromiseResolve: (value?: void | PromiseLike<void>) => void;
22
+ protected finishPromiseReject: (value?: void | PromiseLike<void>) => void;
23
+ protected init(): void;
24
+ protected fingerprintPacker(fingerprint: string): boolean;
25
+ protected finishWinnowing(): void;
26
+ protected sendFingerprint(fingerprintPackage: FingerprintPackage): void;
27
+ protected sendLog(logMsg: string): void;
28
+ protected sendError(errorMsg: string): void;
29
+ protected setWinnowingMode(mode: WinnowingMode): void;
30
+ abstract start(params: IWfpProviderInput): Promise<void>;
31
+ abstract stop(): void;
32
+ abstract pause(): void;
33
+ abstract resume(): void;
34
+ hasPendingFiles(): boolean;
35
+ }
@@ -0,0 +1,68 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.WfpProvider = void 0;
3
+ const stream_1 = require("stream");
4
+ const ScannerTypes_1 = require("../ScannerTypes");
5
+ const FingerprintPackage_1 = require("./FingerprintPackage");
6
+ class WfpProvider extends stream_1.EventEmitter {
7
+ init() {
8
+ this.wfp = '';
9
+ this.folderRoot = '';
10
+ this.pendingFiles = false;
11
+ this.winnowingMode = ScannerTypes_1.WinnowingMode.FULL_WINNOWING;
12
+ this.finishPromise = new Promise((resolve, reject) => {
13
+ this.finishPromiseResolve = resolve;
14
+ this.finishPromiseReject = reject;
15
+ });
16
+ }
17
+ // returns true if the function emitted a new fingerprint packet
18
+ fingerprintPacker(fingerprint) {
19
+ // When the fingerprint of one file is bigger than 64Kb, truncate to the last 64Kb line.
20
+ if (fingerprint.length > this.scannerCfg.WFP_FILE_MAX_SIZE) {
21
+ let truncateStringOnIndex = this.scannerCfg.WFP_FILE_MAX_SIZE;
22
+ let keepRemovingCharacters = true;
23
+ while (keepRemovingCharacters) {
24
+ if (fingerprint[truncateStringOnIndex] === '\n')
25
+ keepRemovingCharacters = false;
26
+ truncateStringOnIndex -= 1;
27
+ }
28
+ truncateStringOnIndex += 1;
29
+ // eslint-disable-next-line no-param-reassign
30
+ fingerprint = fingerprint.substring(0, truncateStringOnIndex);
31
+ // eslint-disable-next-line no-param-reassign
32
+ fingerprint += '\n';
33
+ }
34
+ if (this.wfp.length + fingerprint.length >= this.scannerCfg.WFP_FILE_MAX_SIZE && this.wfp.length > 0) {
35
+ this.sendFingerprint(new FingerprintPackage_1.FingerprintPackage(this.wfp, this.folderRoot));
36
+ this.wfp = '';
37
+ }
38
+ this.wfp += fingerprint;
39
+ if (this.wfp !== fingerprint)
40
+ return false;
41
+ return true;
42
+ }
43
+ finishWinnowing() {
44
+ if (this.wfp.length !== 0)
45
+ this.sendFingerprint(new FingerprintPackage_1.FingerprintPackage(this.wfp, this.folderRoot));
46
+ this.pendingFiles = false;
47
+ this.emit(ScannerTypes_1.ScannerEvents.WINNOWING_FINISHED);
48
+ this.finishPromiseResolve();
49
+ }
50
+ sendFingerprint(fingerprintPackage) {
51
+ this.emit(ScannerTypes_1.ScannerEvents.WINNOWING_NEW_CONTENT, fingerprintPackage);
52
+ }
53
+ sendLog(logMsg) {
54
+ this.emit(ScannerTypes_1.ScannerEvents.WINNOWER_LOG, logMsg);
55
+ }
56
+ sendError(errorMsg) {
57
+ this.emit(ScannerTypes_1.ScannerEvents.ERROR, new Error(errorMsg));
58
+ this.finishPromiseReject();
59
+ }
60
+ setWinnowingMode(mode) {
61
+ this.winnowingMode = mode;
62
+ }
63
+ hasPendingFiles() {
64
+ return this.pendingFiles;
65
+ }
66
+ }
67
+ exports.WfpProvider = WfpProvider;
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ZwUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL3NjYW5uZXIvV2ZwUHJvdmlkZXIvV2ZwUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtQ0FBc0M7QUFFdEMsa0RBQTZFO0FBQzdFLDZEQUEwRDtBQVUxRCxNQUFzQixXQUFZLFNBQVEscUJBQVk7SUFjMUMsSUFBSTtRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyw0QkFBYSxDQUFDLGNBQWMsQ0FBQztRQUVsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxnRUFBZ0U7SUFDdEQsaUJBQWlCLENBQUMsV0FBbUI7UUFDN0Msd0ZBQXdGO1FBQ3hGLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFO1lBQzFELElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RCxJQUFJLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNsQyxPQUFPLHNCQUFzQixFQUFFO2dCQUM3QixJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLElBQUk7b0JBQUUsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO2dCQUNoRixxQkFBcUIsSUFBSSxDQUFDLENBQUM7YUFDNUI7WUFDRCxxQkFBcUIsSUFBSSxDQUFDLENBQUM7WUFDM0IsNkNBQTZDO1lBQzdDLFdBQVcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlELDZDQUE2QztZQUM3QyxXQUFXLElBQUksSUFBSSxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQztRQUV4QixJQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssV0FBVztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVTLGVBQWU7UUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUdTLGVBQWUsQ0FBQyxrQkFBc0M7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBYSxDQUFDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVTLE9BQU8sQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVTLFNBQVMsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUFhLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVTLGdCQUFnQixDQUFDLElBQW1CO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFTTSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBRUY7QUExRkQsa0NBMEZDIn0=
@@ -0,0 +1,21 @@
1
+ import { IWfpProviderInput, WfpProvider } from "../WfpProvider";
2
+ import { ScannerCfg } from "../../ScannerCfg";
3
+ export declare class WfpSplitter extends WfpProvider {
4
+ private continue;
5
+ private wfpStream;
6
+ private chunkDataRead;
7
+ private fingerprints;
8
+ private fingerprintIndex;
9
+ private timer;
10
+ private ignoreFiles;
11
+ constructor(scannerCfg?: ScannerCfg);
12
+ start(params: IWfpProviderInput): Promise<void>;
13
+ stop(): void;
14
+ pause(): void;
15
+ resume(): void;
16
+ private sendFingerprints;
17
+ private stopSendFingerprints;
18
+ private streamBufferFlush;
19
+ private setStreamListeners;
20
+ private splitFingerprints;
21
+ }