scanoss 0.7.9 → 0.7.10

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 (424) hide show
  1. package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +1 -1
  2. package/build/main/tsconfig.tsbuildinfo +1 -1
  3. package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +1 -1
  4. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  5. package/package.json +1 -1
  6. package/.circleci/config.yml +0 -64
  7. package/.cspell.json +0 -36
  8. package/.editorconfig +0 -15
  9. package/.eslintrc.json +0 -37
  10. package/.github/workflows/reuse.yml +0 -15
  11. package/.github/workflows/scanoss.yml +0 -24
  12. package/.gitignore +0 -10
  13. package/.idea/.gitignore +0 -5
  14. package/.idea/codeStyles/Project.xml +0 -61
  15. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  16. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  17. package/.idea/modules.xml +0 -8
  18. package/.idea/scanoss.js.iml +0 -12
  19. package/.idea/vcs.xml +0 -6
  20. package/.idea/workspace.xml +0 -313
  21. package/.nyc_output/3da9f448-90e4-4399-887b-e4fd1b8d7052.json +0 -1
  22. package/.nyc_output/processinfo/3da9f448-90e4-4399-887b-e4fd1b8d7052.json +0 -1
  23. package/.nyc_output/processinfo/index.json +0 -1
  24. package/.prettierignore +0 -2
  25. package/.reuse/dep5 +0 -16
  26. package/.vscode/extensions.json +0 -8
  27. package/.vscode/launch.json +0 -29
  28. package/.vscode/settings.json +0 -7
  29. package/LICENSES/CC0-1.0.txt +0 -121
  30. package/LICENSES/MIT.txt +0 -9
  31. package/assets/ReportHTMLTemplate/index.html +0 -1181
  32. package/build/main/package.json +0 -120
  33. package/build/main/sdk/filters/DefaultFilterForDependencies.d.ts +0 -16
  34. package/build/main/sdk/filters/DefaultFilterForDependencies.js +0 -145
  35. package/build/main/sdk/filters/DefaultFilterForScanning.d.ts +0 -16
  36. package/build/main/sdk/filters/DefaultFilterForScanning.js +0 -194
  37. package/build/main/sdk/filters/filtering.d.ts +0 -32
  38. package/build/main/sdk/filters/filtering.js +0 -228
  39. package/build/main/src/cli/bin/cli-bin.d.ts +0 -2
  40. package/build/main/src/cli/bin/cli-bin.js +0 -68
  41. package/build/main/src/cli/commands/dep.d.ts +0 -1
  42. package/build/main/src/cli/commands/dep.js +0 -38
  43. package/build/main/src/cli/commands/helpers.d.ts +0 -2
  44. package/build/main/src/cli/commands/helpers.js +0 -25
  45. package/build/main/src/cli/commands/scan.d.ts +0 -1
  46. package/build/main/src/cli/commands/scan.js +0 -138
  47. package/build/main/src/cli/commands/wfp.d.ts +0 -1
  48. package/build/main/src/cli/commands/wfp.js +0 -54
  49. package/build/main/src/index.d.ts +0 -14
  50. package/build/main/src/index.js +0 -30
  51. package/build/main/src/sdk/DataLayer/DataLayerTypes.d.ts +0 -108
  52. package/build/main/src/sdk/DataLayer/DataLayerTypes.js +0 -5
  53. package/build/main/src/sdk/DataLayer/DataProviderManager.d.ts +0 -7
  54. package/build/main/src/sdk/DataLayer/DataProviderManager.js +0 -24
  55. package/build/main/src/sdk/DataLayer/DataProviders/ComponentDataProvider.d.ts +0 -13
  56. package/build/main/src/sdk/DataLayer/DataProviders/ComponentDataProvider.js +0 -164
  57. package/build/main/src/sdk/DataLayer/DataProviders/DependencyDataProvider.d.ts +0 -9
  58. package/build/main/src/sdk/DataLayer/DataProviders/DependencyDataProvider.js +0 -37
  59. package/build/main/src/sdk/DataLayer/DataProviders/LicenseDataProvider.d.ts +0 -18
  60. package/build/main/src/sdk/DataLayer/DataProviders/LicenseDataProvider.js +0 -148
  61. package/build/main/src/sdk/DataLayer/DataProviders/SummaryDataProvider.d.ts +0 -11
  62. package/build/main/src/sdk/DataLayer/DataProviders/SummaryDataProvider.js +0 -33
  63. package/build/main/src/sdk/Decompress/DecompressionManager.d.ts +0 -12
  64. package/build/main/src/sdk/Decompress/DecompressionManager.js +0 -73
  65. package/build/main/src/sdk/Decompress/Decompressor/DecompressTgz.d.ts +0 -5
  66. package/build/main/src/sdk/Decompress/Decompressor/DecompressTgz.js +0 -22
  67. package/build/main/src/sdk/Decompress/Decompressor/DecompressZips.d.ts +0 -5
  68. package/build/main/src/sdk/Decompress/Decompressor/DecompressZips.js +0 -24
  69. package/build/main/src/sdk/Decompress/Decompressor/Decompressor.d.ts +0 -10
  70. package/build/main/src/sdk/Decompress/Decompressor/Decompressor.js +0 -18
  71. package/build/main/src/sdk/Dependencies/DependencyScanner.d.ts +0 -11
  72. package/build/main/src/sdk/Dependencies/DependencyScanner.js +0 -96
  73. package/build/main/src/sdk/Dependencies/DependencyScannerCfg.d.ts +0 -4
  74. package/build/main/src/sdk/Dependencies/DependencyScannerCfg.js +0 -10
  75. package/build/main/src/sdk/Dependencies/DependencyTypes.d.ts +0 -21
  76. package/build/main/src/sdk/Dependencies/DependencyTypes.js +0 -2
  77. package/build/main/src/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +0 -16
  78. package/build/main/src/sdk/Dependencies/LocalDependency/DependencyTypes.js +0 -2
  79. package/build/main/src/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +0 -8
  80. package/build/main/src/sdk/Dependencies/LocalDependency/LocalDependency.js +0 -102
  81. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +0 -2
  82. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +0 -95
  83. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +0 -3
  84. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/golangParser.js +0 -97
  85. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +0 -2
  86. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +0 -183
  87. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +0 -13
  88. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/npmParser.js +0 -187
  89. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +0 -3
  90. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +0 -58
  91. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +0 -2
  92. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/pyParser.js +0 -64
  93. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +0 -3
  94. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +0 -132
  95. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/utils.d.ts +0 -2
  96. package/build/main/src/sdk/Dependencies/LocalDependency/parsers/utils.js +0 -19
  97. package/build/main/src/sdk/Report/Report.d.ts +0 -8
  98. package/build/main/src/sdk/Report/Report.js +0 -26
  99. package/build/main/src/sdk/filters/DefaultFilterForDependencies.d.ts +0 -16
  100. package/build/main/src/sdk/filters/DefaultFilterForDependencies.js +0 -145
  101. package/build/main/src/sdk/filters/DefaultFilterForScanning.d.ts +0 -16
  102. package/build/main/src/sdk/filters/DefaultFilterForScanning.js +0 -194
  103. package/build/main/src/sdk/filters/filtering.d.ts +0 -32
  104. package/build/main/src/sdk/filters/filtering.js +0 -228
  105. package/build/main/src/sdk/grpc/GrpcDependencyService.d.ts +0 -11
  106. package/build/main/src/sdk/grpc/GrpcDependencyService.js +0 -86
  107. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  108. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
  109. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -1
  110. package/build/main/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -404
  111. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -39
  112. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +0 -98
  113. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -1
  114. package/build/main/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1197
  115. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -19
  116. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -66
  117. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +0 -1
  118. package/build/main/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -14
  119. package/build/main/src/sdk/scanner/Dispatcher/DispatchableItem.d.ts +0 -19
  120. package/build/main/src/sdk/scanner/Dispatcher/DispatchableItem.js +0 -43
  121. package/build/main/src/sdk/scanner/Dispatcher/Dispatcher.d.ts +0 -20
  122. package/build/main/src/sdk/scanner/Dispatcher/Dispatcher.js +0 -160
  123. package/build/main/src/sdk/scanner/Dispatcher/DispatcherResponse.d.ts +0 -12
  124. package/build/main/src/sdk/scanner/Dispatcher/DispatcherResponse.js +0 -33
  125. package/build/main/src/sdk/scanner/Dispatcher/GlobalControllerAborter.d.ts +0 -10
  126. package/build/main/src/sdk/scanner/Dispatcher/GlobalControllerAborter.js +0 -32
  127. package/build/main/src/sdk/scanner/Fingerprint.d.ts +0 -16
  128. package/build/main/src/sdk/scanner/Fingerprint.js +0 -78
  129. package/build/main/src/sdk/scanner/Scannable/ScannableItem.d.ts +0 -15
  130. package/build/main/src/sdk/scanner/Scannable/ScannableItem.js +0 -27
  131. package/build/main/src/sdk/scanner/Scanner.d.ts +0 -46
  132. package/build/main/src/sdk/scanner/Scanner.js +0 -283
  133. package/build/main/src/sdk/scanner/ScannerCfg.d.ts +0 -16
  134. package/build/main/src/sdk/scanner/ScannerCfg.js +0 -30
  135. package/build/main/src/sdk/scanner/ScannerTypes.d.ts +0 -121
  136. package/build/main/src/sdk/scanner/ScannerTypes.js +0 -48
  137. package/build/main/src/sdk/scanner/WfpProvider/FingerprintPackage.d.ts +0 -9
  138. package/build/main/src/sdk/scanner/WfpProvider/FingerprintPackage.js +0 -31
  139. package/build/main/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +0 -20
  140. package/build/main/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +0 -492
  141. package/build/main/src/sdk/scanner/WfpProvider/WfpProvider.d.ts +0 -35
  142. package/build/main/src/sdk/scanner/WfpProvider/WfpProvider.js +0 -68
  143. package/build/main/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +0 -21
  144. package/build/main/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +0 -139
  145. package/build/main/src/sdk/tree/File.d.ts +0 -7
  146. package/build/main/src/sdk/tree/File.js +0 -24
  147. package/build/main/src/sdk/tree/Filters/DecompressionFilter.d.ts +0 -7
  148. package/build/main/src/sdk/tree/Filters/DecompressionFilter.js +0 -21
  149. package/build/main/src/sdk/tree/Filters/DependencyFilter.d.ts +0 -7
  150. package/build/main/src/sdk/tree/Filters/DependencyFilter.js +0 -17
  151. package/build/main/src/sdk/tree/Filters/Filter.d.ts +0 -4
  152. package/build/main/src/sdk/tree/Filters/Filter.js +0 -6
  153. package/build/main/src/sdk/tree/Filters/ScanFilter.d.ts +0 -7
  154. package/build/main/src/sdk/tree/Filters/ScanFilter.js +0 -17
  155. package/build/main/src/sdk/tree/Folder.d.ts +0 -12
  156. package/build/main/src/sdk/tree/Folder.js +0 -58
  157. package/build/main/src/sdk/tree/Node.d.ts +0 -17
  158. package/build/main/src/sdk/tree/Node.js +0 -25
  159. package/build/main/src/sdk/tree/Tree.d.ts +0 -18
  160. package/build/main/src/sdk/tree/Tree.js +0 -70
  161. package/build/module/package.json +0 -120
  162. package/build/module/sdk/filters/DefaultFilterForDependencies.d.ts +0 -16
  163. package/build/module/sdk/filters/DefaultFilterForDependencies.js +0 -143
  164. package/build/module/sdk/filters/DefaultFilterForScanning.d.ts +0 -16
  165. package/build/module/sdk/filters/DefaultFilterForScanning.js +0 -192
  166. package/build/module/sdk/filters/filtering.d.ts +0 -32
  167. package/build/module/sdk/filters/filtering.js +0 -203
  168. package/build/module/src/cli/bin/cli-bin.d.ts +0 -2
  169. package/build/module/src/cli/bin/cli-bin.js +0 -67
  170. package/build/module/src/cli/commands/dep.d.ts +0 -1
  171. package/build/module/src/cli/commands/dep.js +0 -32
  172. package/build/module/src/cli/commands/helpers.d.ts +0 -2
  173. package/build/module/src/cli/commands/helpers.js +0 -19
  174. package/build/module/src/cli/commands/scan.d.ts +0 -1
  175. package/build/module/src/cli/commands/scan.js +0 -135
  176. package/build/module/src/cli/commands/wfp.d.ts +0 -1
  177. package/build/module/src/cli/commands/wfp.js +0 -48
  178. package/build/module/src/index.d.ts +0 -14
  179. package/build/module/src/index.js +0 -19
  180. package/build/module/src/sdk/DataLayer/DataLayerTypes.d.ts +0 -108
  181. package/build/module/src/sdk/DataLayer/DataLayerTypes.js +0 -5
  182. package/build/module/src/sdk/DataLayer/DataProviderManager.d.ts +0 -7
  183. package/build/module/src/sdk/DataLayer/DataProviderManager.js +0 -21
  184. package/build/module/src/sdk/DataLayer/DataProviders/ComponentDataProvider.d.ts +0 -13
  185. package/build/module/src/sdk/DataLayer/DataProviders/ComponentDataProvider.js +0 -159
  186. package/build/module/src/sdk/DataLayer/DataProviders/DependencyDataProvider.d.ts +0 -9
  187. package/build/module/src/sdk/DataLayer/DataProviders/DependencyDataProvider.js +0 -34
  188. package/build/module/src/sdk/DataLayer/DataProviders/LicenseDataProvider.d.ts +0 -18
  189. package/build/module/src/sdk/DataLayer/DataProviders/LicenseDataProvider.js +0 -145
  190. package/build/module/src/sdk/DataLayer/DataProviders/SummaryDataProvider.d.ts +0 -11
  191. package/build/module/src/sdk/DataLayer/DataProviders/SummaryDataProvider.js +0 -30
  192. package/build/module/src/sdk/Decompress/DecompressionManager.d.ts +0 -12
  193. package/build/module/src/sdk/Decompress/DecompressionManager.js +0 -67
  194. package/build/module/src/sdk/Decompress/Decompressor/DecompressTgz.d.ts +0 -5
  195. package/build/module/src/sdk/Decompress/Decompressor/DecompressTgz.js +0 -16
  196. package/build/module/src/sdk/Decompress/Decompressor/DecompressZips.d.ts +0 -5
  197. package/build/module/src/sdk/Decompress/Decompressor/DecompressZips.js +0 -18
  198. package/build/module/src/sdk/Decompress/Decompressor/Decompressor.d.ts +0 -10
  199. package/build/module/src/sdk/Decompress/Decompressor/Decompressor.js +0 -15
  200. package/build/module/src/sdk/Dependencies/DependencyScanner.d.ts +0 -11
  201. package/build/module/src/sdk/Dependencies/DependencyScanner.js +0 -93
  202. package/build/module/src/sdk/Dependencies/DependencyScannerCfg.d.ts +0 -4
  203. package/build/module/src/sdk/Dependencies/DependencyScannerCfg.js +0 -7
  204. package/build/module/src/sdk/Dependencies/DependencyTypes.d.ts +0 -21
  205. package/build/module/src/sdk/Dependencies/DependencyTypes.js +0 -2
  206. package/build/module/src/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +0 -16
  207. package/build/module/src/sdk/Dependencies/LocalDependency/DependencyTypes.js +0 -2
  208. package/build/module/src/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +0 -8
  209. package/build/module/src/sdk/Dependencies/LocalDependency/LocalDependency.js +0 -96
  210. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +0 -2
  211. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +0 -87
  212. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +0 -3
  213. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/golangParser.js +0 -88
  214. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +0 -2
  215. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +0 -180
  216. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +0 -13
  217. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/npmParser.js +0 -175
  218. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +0 -3
  219. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +0 -49
  220. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +0 -2
  221. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/pyParser.js +0 -57
  222. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +0 -3
  223. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +0 -125
  224. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/utils.d.ts +0 -2
  225. package/build/module/src/sdk/Dependencies/LocalDependency/parsers/utils.js +0 -15
  226. package/build/module/src/sdk/Report/Report.d.ts +0 -8
  227. package/build/module/src/sdk/Report/Report.js +0 -20
  228. package/build/module/src/sdk/filters/DefaultFilterForDependencies.d.ts +0 -16
  229. package/build/module/src/sdk/filters/DefaultFilterForDependencies.js +0 -143
  230. package/build/module/src/sdk/filters/DefaultFilterForScanning.d.ts +0 -16
  231. package/build/module/src/sdk/filters/DefaultFilterForScanning.js +0 -192
  232. package/build/module/src/sdk/filters/filtering.d.ts +0 -32
  233. package/build/module/src/sdk/filters/filtering.js +0 -203
  234. package/build/module/src/sdk/grpc/GrpcDependencyService.d.ts +0 -11
  235. package/build/module/src/sdk/grpc/GrpcDependencyService.js +0 -64
  236. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  237. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
  238. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -1
  239. package/build/module/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -404
  240. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -39
  241. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +0 -98
  242. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -1
  243. package/build/module/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1197
  244. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -19
  245. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -66
  246. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +0 -1
  247. package/build/module/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -14
  248. package/build/module/src/sdk/scanner/Dispatcher/DispatchableItem.d.ts +0 -19
  249. package/build/module/src/sdk/scanner/Dispatcher/DispatchableItem.js +0 -37
  250. package/build/module/src/sdk/scanner/Dispatcher/Dispatcher.d.ts +0 -20
  251. package/build/module/src/sdk/scanner/Dispatcher/Dispatcher.js +0 -135
  252. package/build/module/src/sdk/scanner/Dispatcher/DispatcherResponse.d.ts +0 -12
  253. package/build/module/src/sdk/scanner/Dispatcher/DispatcherResponse.js +0 -30
  254. package/build/module/src/sdk/scanner/Dispatcher/GlobalControllerAborter.d.ts +0 -10
  255. package/build/module/src/sdk/scanner/Dispatcher/GlobalControllerAborter.js +0 -26
  256. package/build/module/src/sdk/scanner/Fingerprint.d.ts +0 -16
  257. package/build/module/src/sdk/scanner/Fingerprint.js +0 -54
  258. package/build/module/src/sdk/scanner/Scannable/ScannableItem.d.ts +0 -15
  259. package/build/module/src/sdk/scanner/Scannable/ScannableItem.js +0 -24
  260. package/build/module/src/sdk/scanner/Scanner.d.ts +0 -46
  261. package/build/module/src/sdk/scanner/Scanner.js +0 -275
  262. package/build/module/src/sdk/scanner/ScannerCfg.d.ts +0 -16
  263. package/build/module/src/sdk/scanner/ScannerCfg.js +0 -27
  264. package/build/module/src/sdk/scanner/ScannerTypes.d.ts +0 -121
  265. package/build/module/src/sdk/scanner/ScannerTypes.js +0 -46
  266. package/build/module/src/sdk/scanner/WfpProvider/FingerprintPackage.d.ts +0 -9
  267. package/build/module/src/sdk/scanner/WfpProvider/FingerprintPackage.js +0 -28
  268. package/build/module/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +0 -20
  269. package/build/module/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +0 -486
  270. package/build/module/src/sdk/scanner/WfpProvider/WfpProvider.d.ts +0 -35
  271. package/build/module/src/sdk/scanner/WfpProvider/WfpProvider.js +0 -65
  272. package/build/module/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +0 -21
  273. package/build/module/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +0 -132
  274. package/build/module/src/sdk/tree/File.d.ts +0 -7
  275. package/build/module/src/sdk/tree/File.js +0 -19
  276. package/build/module/src/sdk/tree/Filters/DecompressionFilter.d.ts +0 -7
  277. package/build/module/src/sdk/tree/Filters/DecompressionFilter.js +0 -18
  278. package/build/module/src/sdk/tree/Filters/DependencyFilter.d.ts +0 -7
  279. package/build/module/src/sdk/tree/Filters/DependencyFilter.js +0 -14
  280. package/build/module/src/sdk/tree/Filters/Filter.d.ts +0 -4
  281. package/build/module/src/sdk/tree/Filters/Filter.js +0 -3
  282. package/build/module/src/sdk/tree/Filters/ScanFilter.d.ts +0 -7
  283. package/build/module/src/sdk/tree/Filters/ScanFilter.js +0 -14
  284. package/build/module/src/sdk/tree/Folder.d.ts +0 -12
  285. package/build/module/src/sdk/tree/Folder.js +0 -53
  286. package/build/module/src/sdk/tree/Node.d.ts +0 -17
  287. package/build/module/src/sdk/tree/Node.js +0 -22
  288. package/build/module/src/sdk/tree/Tree.d.ts +0 -18
  289. package/build/module/src/sdk/tree/Tree.js +0 -64
  290. package/package-lock.json +0 -17116
  291. package/src/cli/bin/cli-bin.ts +0 -81
  292. package/src/cli/commands/dep.ts +0 -37
  293. package/src/cli/commands/helpers.ts +0 -19
  294. package/src/cli/commands/scan.ts +0 -173
  295. package/src/cli/commands/wfp.ts +0 -60
  296. package/src/index.ts +0 -31
  297. package/src/sdk/DataLayer/DataLayerTypes.ts +0 -129
  298. package/src/sdk/DataLayer/DataProviderManager.ts +0 -27
  299. package/src/sdk/DataLayer/DataProviders/ComponentDataProvider.ts +0 -195
  300. package/src/sdk/DataLayer/DataProviders/DependencyDataProvider.ts +0 -48
  301. package/src/sdk/DataLayer/DataProviders/LicenseDataProvider.ts +0 -184
  302. package/src/sdk/DataLayer/DataProviders/SummaryDataProvider.ts +0 -47
  303. package/src/sdk/Decompress/DecompressionManager.ts +0 -91
  304. package/src/sdk/Decompress/Decompressor/DecompressTgz.ts +0 -20
  305. package/src/sdk/Decompress/Decompressor/DecompressZips.ts +0 -21
  306. package/src/sdk/Decompress/Decompressor/Decompressor.ts +0 -20
  307. package/src/sdk/Dependencies/DependencyScanner.ts +0 -108
  308. package/src/sdk/Dependencies/DependencyScannerCfg.ts +0 -7
  309. package/src/sdk/Dependencies/DependencyTypes.ts +0 -24
  310. package/src/sdk/Dependencies/LocalDependency/DependencyTypes.ts +0 -21
  311. package/src/sdk/Dependencies/LocalDependency/LocalDependency.ts +0 -111
  312. package/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.ts +0 -115
  313. package/src/sdk/Dependencies/LocalDependency/parsers/golangParser.ts +0 -130
  314. package/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.ts +0 -209
  315. package/src/sdk/Dependencies/LocalDependency/parsers/npmParser.ts +0 -227
  316. package/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.ts +0 -64
  317. package/src/sdk/Dependencies/LocalDependency/parsers/pyParser.ts +0 -58
  318. package/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.ts +0 -174
  319. package/src/sdk/Dependencies/LocalDependency/parsers/utils.ts +0 -15
  320. package/src/sdk/FileCount/FileCount.ts +0 -81
  321. package/src/sdk/FileCount/FileCountFilter.ts +0 -14
  322. package/src/sdk/FileCount/Interfaces.ts +0 -23
  323. package/src/sdk/Filtering/DefaultFilterForDependencies.ts +0 -148
  324. package/src/sdk/Filtering/DefaultFilterForScanning.ts +0 -206
  325. package/src/sdk/Filtering/Filtering.ts +0 -273
  326. package/src/sdk/Report/Report.ts +0 -30
  327. package/src/sdk/grpc/GrpcDependencyService.ts +0 -72
  328. package/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -1
  329. package/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -1
  330. package/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -79
  331. package/src/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -482
  332. package/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -30
  333. package/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +0 -109
  334. package/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -206
  335. package/src/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1489
  336. package/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -25
  337. package/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -73
  338. package/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +0 -6
  339. package/src/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -15
  340. package/src/sdk/scanner/Dispatcher/DispatchableItem.ts +0 -62
  341. package/src/sdk/scanner/Dispatcher/Dispatcher.ts +0 -173
  342. package/src/sdk/scanner/Dispatcher/DispatcherResponse.ts +0 -40
  343. package/src/sdk/scanner/Dispatcher/GlobalControllerAborter.ts +0 -33
  344. package/src/sdk/scanner/Fingerprint.ts +0 -82
  345. package/src/sdk/scanner/Scannable/ScannableItem.ts +0 -43
  346. package/src/sdk/scanner/Scanner.ts +0 -360
  347. package/src/sdk/scanner/ScannerCfg.ts +0 -43
  348. package/src/sdk/scanner/ScannerTypes.ts +0 -127
  349. package/src/sdk/scanner/WfpProvider/FingerprintPackage.ts +0 -34
  350. package/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts +0 -516
  351. package/src/sdk/scanner/WfpProvider/WfpProvider.ts +0 -105
  352. package/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.ts +0 -184
  353. package/src/sdk/tree/File.ts +0 -22
  354. package/src/sdk/tree/Filters/DecompressionFilter.ts +0 -22
  355. package/src/sdk/tree/Filters/DependencyFilter.ts +0 -22
  356. package/src/sdk/tree/Filters/Filter.ts +0 -5
  357. package/src/sdk/tree/Filters/ScanFilter.ts +0 -22
  358. package/src/sdk/tree/Folder.ts +0 -57
  359. package/src/sdk/tree/Node.ts +0 -39
  360. package/src/sdk/tree/Tree.ts +0 -82
  361. package/tests/scanoss.sh +0 -56
  362. package/tests/sdk/DataLayer/DataProviders/ComponentDataProvider.spec.ts +0 -176
  363. package/tests/sdk/DataLayer/DataProviders/DependencyDataProvider.spec.ts +0 -51
  364. package/tests/sdk/DataLayer/DataProviders/SummaryDataProvider.spec.ts +0 -35
  365. package/tests/sdk/DataLayer/DataProviders/samples/results-with-dep.json +0 -665
  366. package/tests/sdk/DataLayer/DataProviders/samples/results.json +0 -556
  367. package/tests/sdk/DataLayer/samples/simple/results-with-dep.json +0 -665
  368. package/tests/sdk/DataLayer/samples/simple-1/output1.json +0 -1196
  369. package/tests/sdk/Dependencies/LocalDependency/LocalDependency.spec.ts +0 -24
  370. package/tests/sdk/Dependencies/LocalDependency/Parsers/buildGradle.spec.ts +0 -48
  371. package/tests/sdk/Dependencies/LocalDependency/Parsers/golangParser.spec.ts +0 -146
  372. package/tests/sdk/Dependencies/LocalDependency/Parsers/npmParser.spec.ts +0 -135
  373. package/tests/sdk/Dependencies/LocalDependency/Parsers/nugetParser.spec.ts +0 -73
  374. package/tests/sdk/Dependencies/LocalDependency/Parsers/pomParser.spec.ts +0 -45
  375. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/1/Gemfile +0 -6
  376. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/1/Gemfile~ +0 -0
  377. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/2/Gemfile +0 -3
  378. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/2/Gemfile~ +0 -6
  379. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/3/Gemfile +0 -7
  380. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/3/Gemfile~ +0 -6
  381. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/4/Gemfile +0 -31
  382. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile/4/Gemfile~ +0 -7
  383. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile.lock/1/Gemfile.lock +0 -180
  384. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile.lock/2/Gemfile.lock +0 -60
  385. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/Gemfile.lock/2/Gemfile.lock~ +0 -0
  386. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/go.sum/1/go.sum +0 -119
  387. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/go.sum/depJSON.sh +0 -23
  388. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/1/build.gradle +0 -26
  389. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/2/build.gradle +0 -16
  390. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/NoDependencies.csproj +0 -115
  391. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/netcore-2.csproj +0 -18
  392. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/netcore.csproj +0 -14
  393. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/packageConfig-1/packages.config +0 -5
  394. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/pom.xml/1/pom.xml +0 -670
  395. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/pom.xml/2/pom.xml +0 -780
  396. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/generate_expected_output.sh +0 -4
  397. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1/yarn.lock +0 -50
  398. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1/yarn.lock-expected +0 -13
  399. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1-complex/yarn.lock +0 -27
  400. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1-complex/yarn.lock-expected +0 -8
  401. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1_2/scancode-out.json +0 -149662
  402. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1_2/yarn.lock +0 -8409
  403. package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1_2/yarn.lock-expected +0 -1153
  404. package/tests/sdk/FileCount/FileCount.spec.ts +0 -35
  405. package/tests/sdk/FileCount/samples/16557/.y.ts +0 -27
  406. package/tests/sdk/FileCount/samples/16557/.z.ts +0 -129
  407. package/tests/sdk/FileCount/samples/16557/files/a.ts +0 -195
  408. package/tests/sdk/FileCount/samples/16557/files/b.ts +0 -184
  409. package/tests/sdk/FileCount/samples/16557/files/c.ts +0 -47
  410. package/tests/sdk/FileCount/samples/22036/files/a.ts +0 -195
  411. package/tests/sdk/FileCount/samples/22036/files/b.ts +0 -184
  412. package/tests/sdk/FileCount/samples/22036/files/c.ts +0 -47
  413. package/tests/sdk/FileCount/samples/22036/files/d.ts +0 -48
  414. package/tests/sdk/FileCount/samples/22036/y.ts +0 -27
  415. package/tests/sdk/FileCount/samples/22036/z.ts +0 -129
  416. package/tests/sdk/Scanner/WfpProvider/WfpCalculator/WfpCalculator.spec.ts +0 -102
  417. package/tests/sdk/Scanner/WfpProvider/WfpCalculator/samples/file1.c +0 -41
  418. package/tests/sdk/Scanner/WfpProvider/WfpCalculator/samples/file2.go +0 -87
  419. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/WfpSplitter.spec.ts +0 -35
  420. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/samples/wfp.wfp +0 -68
  421. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/samples/wfp.wfp~ +0 -68
  422. package/tsconfig.json +0 -31
  423. package/tsconfig.module.json +0 -11
  424. package/yarn.lock +0 -5481
@@ -1,1181 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
9
- integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
10
- <title>SCANOSS Detected Report</title>
11
- </head>
12
-
13
- <style>
14
- @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
15
-
16
- :root {
17
- --primary: #6366F1;
18
- --dark: #18181B;
19
- --bg-color: rgba(241, 245, 249, 1);
20
- }
21
-
22
- body {
23
- max-width: 1200px;
24
- margin: 0 auto;
25
- background: var(--bg-color);
26
- color: var(--dark);
27
- font-family: 'Space Grotesk', sans-serif;
28
- }
29
-
30
-
31
- .nav-link {
32
- display: none;
33
- }
34
-
35
- .nav-link.visible {
36
- display: inline-block;
37
- }
38
-
39
- header {
40
- display: flex;
41
- flex-direction: column;
42
- }
43
-
44
- footer {
45
- font-size: 12px;
46
- color: gray;
47
- }
48
-
49
- .header-title {
50
- display: flex;
51
- flex-direction: row;
52
- justify-content: space-between;
53
- width: 100%;
54
- margin-top: 15px;
55
- margin-bottom: 16px;
56
- }
57
-
58
- .project-name-container {
59
- display: flex;
60
- justify-content: center;
61
- align-items: center;
62
- font-size: 48px;
63
- }
64
-
65
- .header-title img {
66
- height: 55px;
67
- }
68
-
69
- h1,
70
- h2,
71
- h3,
72
- h4,
73
- h5 {
74
- color: #656df1;
75
- font-weight: 400;
76
- }
77
-
78
- .primary {
79
- color: var(--primary) !important;
80
- }
81
-
82
- #date {
83
- margin-top: 0;
84
- color: darkgray;
85
- font-size: 14px;
86
- }
87
-
88
- .divider {
89
- border-bottom: 1px solid rgba(228, 228, 231, 1);
90
- margin: 10px 0;
91
- }
92
-
93
- .divider.big {
94
- margin: 25px 0;
95
- }
96
-
97
- .text-center {
98
- text-align: center;
99
- }
100
-
101
- .main-container {
102
- width: 100%;
103
- }
104
-
105
- .scan-summary {
106
- display: flex;
107
- justify-content: center;
108
- gap: 15px;
109
- }
110
-
111
- .license-table-container {
112
- width: 100%;
113
- height: 700px;
114
- display: flex;
115
- flex-direction: row;
116
- justify-content: center;
117
- align-items: flex-start;
118
- padding-left: 4%;
119
- padding-right: 7%;
120
- }
121
-
122
- .pie-chart-container {
123
- margin: 0 auto;
124
- }
125
-
126
-
127
- .incompatible-license-table td:first-child {
128
- text-align: left;
129
- font-size: 14px;
130
- font-weight: 500;
131
- line-height: 20px;
132
- letter-spacing: 0em;
133
- text-align: left;
134
- color: var(--dark);
135
- }
136
-
137
- .incompatible-license-table th {
138
- font-size: 18px;
139
- font-weight: 400;
140
- line-height: 23px;
141
- color: #A1A1AA;
142
- border-color: #E4E4E7;
143
- }
144
-
145
- .incompatible-license-table th:first-child {
146
- text-align: left;
147
- }
148
-
149
- .table td,
150
- .table th {
151
- padding: 0.15rem;
152
- text-align: center;
153
- vertical-align: middle;
154
- }
155
-
156
- table {
157
- width: 100%;
158
- }
159
-
160
- th {
161
- font-size: 13px;
162
- font-weight: bold;
163
- }
164
-
165
- tr {
166
- font-size: 11px;
167
- }
168
-
169
- .color-reference {
170
- width: 15px;
171
- height: 15px;
172
- display: block;
173
- border-radius: 2px;
174
- }
175
-
176
-
177
- .table-striped tbody tr:nth-of-type(odd) {
178
- background-color: rgb(105 101 101 / 5%);
179
- }
180
-
181
-
182
-
183
- .button-solid {
184
- border: none;
185
- background-color: transparent;
186
- margin-right: 0;
187
- padding: 10px 0 10px 10px;
188
- color: #656df1;
189
- font-size: 12px;
190
- font-weight: 600;
191
- line-height: 15px;
192
- letter-spacing: 0em;
193
- text-align: right;
194
- }
195
-
196
-
197
- .button-solid:focus,
198
- #drop-down-license-detail-btn:focus {
199
- border: none;
200
- outline: none;
201
- }
202
-
203
- .hide {
204
- display: none;
205
- }
206
-
207
-
208
- .label {
209
- display: flex;
210
- justify-content: left;
211
- align-items: center;
212
- width: 100%;
213
- color: rgb(0 0 0 / 51%);
214
- }
215
-
216
- p {
217
- margin-top: 0;
218
- margin-bottom: 0;
219
- text-align: left;
220
- }
221
-
222
- .drop-down-license-detail-container button {
223
- display: flex;
224
- justify-content: center;
225
- width: 100%;
226
- }
227
-
228
- .license-info-detail {
229
- display: flex;
230
- justify-content: space-around;
231
- width: 100%;
232
- padding: 6px 0;
233
- }
234
-
235
- .license-ref {
236
- width: 90%;
237
- display: flex;
238
- }
239
-
240
- .license-component-button-container {
241
- width: 40%;
242
- display: flex;
243
- align-items: center;
244
- justify-content: flex-end;
245
- }
246
-
247
- .license-info-container {
248
- display: flex;
249
- width: 85%;
250
- }
251
-
252
- .color-reference-container {
253
- width: 14%;
254
- align-items: center;
255
- justify-content: center;
256
- display: flex;
257
- }
258
-
259
- .info-container {
260
- display: flex;
261
- justify-content: center;
262
- align-items: center;
263
- width: 85%;
264
- height: 30px;
265
- }
266
-
267
- .info {
268
- display: flex;
269
- flex-direction: column;
270
- width: 100%;
271
- }
272
-
273
- .info.big {
274
- width: auto;
275
- margin: 0 15px;
276
- }
277
-
278
- .info.big .label {
279
- font-weight: 400;
280
- font-size: 20px;
281
- color: rgb(113, 113, 122);
282
- justify-content: center;
283
- }
284
-
285
- .info.big .value {
286
- font-weight: 600;
287
- font-size: 64px;
288
- line-height: 64px;
289
- justify-content: center;
290
- }
291
-
292
- .info .label {
293
- display: flex;
294
- justify-content: flex-start;
295
- width: 100%;
296
- }
297
-
298
- .info .value {
299
- display: flex;
300
- justify-content: flex-start;
301
- text-align: left;
302
- width: 100%;
303
- color: rgb(24, 24, 27);
304
- font-size: 16px;
305
- font-weight: 500;
306
- line-height: 26px;
307
-
308
- }
309
-
310
- .info .value.small {
311
- font-size: 16px;
312
- font-weight: 400;
313
- line-height: 20px;
314
- color: rgb(24, 24, 27)
315
- }
316
-
317
- .row-license-info-container {
318
- display: flex;
319
- width: 100%;
320
- }
321
-
322
- td.cell-info-container {
323
- width: 30%;
324
- display: flex;
325
- }
326
-
327
- td.cell-info-container:last-child {
328
- justify-content: right;
329
- }
330
-
331
- td.cell-info-container:last-child {
332
- justify-content: right;
333
- }
334
-
335
- td.cell-info-container.index {
336
- width: 10%;
337
-
338
- }
339
-
340
- .row-info-container {
341
- display: flex;
342
- justify-content: center;
343
- align-items: center;
344
- }
345
-
346
- .detected-license-report-table-container,
347
- .incompatibilities-table-container {
348
- margin: 0px;
349
- }
350
-
351
- .incompatible-license-container {
352
- margin: 10px 0;
353
- min-height: 20px;
354
- align-items: center;
355
- }
356
-
357
- .license-block {
358
- margin: 2px;
359
- font-size: 12px;
360
- background-color: #dfdedd;
361
- display: flex;
362
- flex-flow: wrap;
363
- justify-content: center;
364
- align-items: center;
365
- padding: 5px;
366
- border-radius: 3px;
367
- font-weight: bold;
368
-
369
- -webkit-print-color-adjust: exact !important;
370
-
371
- }
372
-
373
- .incompatible-license-container {
374
- display: flex;
375
- flex-flow: wrap;
376
- flex-direction: row;
377
- }
378
-
379
- #incompatible-license {
380
- vertical-align: baseline;
381
- border-top: 1px solid #fafafa;
382
- }
383
-
384
- .incompatible-ref {
385
- background-color: #dc3545;
386
- color: white;
387
- -webkit-print-color-adjust: exact !important;
388
- }
389
-
390
- table.main-table>thead {
391
- position: sticky;
392
- top: 0;
393
- background: var(--bg-color);
394
- }
395
-
396
- table.main-table td,
397
- table.main-table th {
398
- text-align: left;
399
- }
400
-
401
- .table.main-table>:not(:first-child) {
402
- border-top: 0 !important;
403
- }
404
-
405
- table.main-table th {
406
- padding: .5rem;
407
- font-size: 18px;
408
- font-weight: 400;
409
- line-height: 23px;
410
- color: #A1A1AA;
411
- border-color: #E4E4E7;
412
- }
413
-
414
-
415
- table.main-table td {
416
- padding: .5rem;
417
- vertical-align: top;
418
- font-size: 14px;
419
- font-weight: 400;
420
- line-height: 20px;
421
- letter-spacing: 0em;
422
- text-align: left;
423
- color: var(--dark);
424
- }
425
-
426
- table.main-table tr.subheader {
427
- position: sticky;
428
- top: 36px;
429
- }
430
-
431
- table.main-table tr.subheader td {
432
- background-color: #efeff5;
433
- font-size: 12px;
434
- font-weight: 600;
435
- color: rgb(40, 40, 43)
436
- }
437
-
438
- table.main-table td:first-child {
439
- font-weight: 600;
440
- }
441
- </style>
442
-
443
- <body>
444
- <header>
445
- <div class="header-title">
446
- <img
447
- src="data:image/png;base64,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">
448
- <div>
449
- <h5>Detected Report</h5>
450
- <h5 id="date"></h5>
451
- </div>
452
- </div>
453
- <section class="project-name-container">
454
- <h1 id='project-name'></h1>
455
- </section>
456
- <div class="divider mt-3 mb-5"></div>
457
-
458
- <div class="scan-summary"></div>
459
-
460
- <div class="divider mt-5"></div>
461
- </header>
462
-
463
-
464
- <nav>
465
- <div class="nav nav-pills d-flex justify-content-center mb-5" id="nav-tab" role="tablist">
466
- <button class="nav-link active" id="nav-licenses-tab" data-bs-toggle="tab" data-bs-target="#nav-licenses"
467
- type="button" role="tab" aria-controls="nav-licenses" aria-selected="true">Licenses</button>
468
- <button class="nav-link" id="nav-components-tab" data-bs-toggle="tab" data-bs-target="#nav-components"
469
- type="button" role="tab" aria-controls="nav-components" aria-selected="false">Components</button>
470
- <button class="nav-link" id="nav-vulnerabilities-tab" data-bs-toggle="tab" data-bs-target="#nav-vulnerabilities"
471
- type="button" role="tab" aria-controls="nav-vulnerabilities" aria-selected="false">Vulnerabilities</button>
472
- <button class="nav-link" id="nav-dependencies-tab" data-bs-toggle="tab" data-bs-target="#nav-dependencies"
473
- type="button" role="tab" aria-controls="nav-dependencies" aria-selected="false">Dependencies</button>
474
- <button class="nav-link" id="nav-copyrights-tab" data-bs-toggle="tab" data-bs-target="#nav-copyrights"
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>
482
- <button class="nav-link" id="nav-summary-tab" data-bs-toggle="tab" data-bs-target="#nav-summary" type="button"
483
- role="tab" aria-controls="nav-summary" aria-selected="false">Summary</button>
484
- </div>
485
- </nav>
486
-
487
-
488
- <main class="main-container">
489
-
490
- <div class="tab-content" id="nav-tabContent">
491
-
492
- <!-- licenses -->
493
- <div class="tab-pane fade show active" id="nav-licenses" role="tabpanel" aria-labelledby="nav-licenses-tab"
494
- tabindex="0">
495
- <section class="mt-5">
496
- <div class="pie-chart-container">
497
- <div>
498
- <canvas id="myChart"></canvas>
499
- </div>
500
- </div>
501
- </section>
502
- <section class="mt-5">
503
- <div class="detected-license-report-table-container">
504
- <table class="table">
505
- <tbody id="body-license-detail-table">
506
- </tbody>
507
- </table>
508
- </div>
509
- </section>
510
- <section class="mt-5">
511
- <h4>License obligations</h4>
512
- <div class="incompatibilities-table-container">
513
- <table class="table incompatible-license-table main-table">
514
- <thead>
515
- <tr>
516
- <th>License</th>
517
- <th>Copyleft</th>
518
- <th>Incompatible Licenses</th>
519
- </tr>
520
- </thead>
521
- <tbody id="incompatible-license">
522
- </tbody>
523
- </table>
524
- </div>
525
- </section>
526
- </div>
527
-
528
- <!-- components -->
529
- <section class="tab-pane fade" id="nav-components" role="tabpanel" aria-labelledby="nav-components-tab"
530
- tabindex="0">
531
- <table id="table-components" class="table main-table">
532
- <thead>
533
- <tr>
534
- <th>Component</th>
535
- <th>PURL</th>
536
- <th>Detected Versions</th>
537
- <th>URL</th>
538
- </tr>
539
- </thead>
540
- <tbody>
541
- </tbody>
542
- </table>
543
-
544
- <template id="tpl-component-row">
545
- <tr>
546
- <td></td>
547
- <td></td>
548
- <td></td>
549
- <td></td>
550
- </tr>
551
- </template>
552
- </section>
553
-
554
- <!-- vulnerabilities -->
555
- <section class="tab-pane fade" id="nav-vulnerabilities" role="tabpanel" aria-labelledby="nav-vulnerabilities-tab"
556
- tabindex="0">
557
- <table id="table-vulnerabilities" class="table main-table">
558
- <thead>
559
- <tr>
560
- <th>Component</th>
561
- <th>Version</th>
562
- <th>CVE</th>
563
- <th>Severity</th>
564
- <th>Published</th>
565
- <th>Patched</th>
566
- <th>Summary</th>
567
- </tr>
568
- </thead>
569
- <tbody>
570
- </tbody>
571
- </table>
572
-
573
- <template id="tpl-vulnerabilities-row">
574
- <tr>
575
- <td></td>
576
- <td></td>
577
- <td></td>
578
- <td></td>
579
- <td></td>
580
- <td></td>
581
- <td></td>
582
- </tr>
583
- </template>
584
- </section>
585
-
586
- <!-- dependencies -->
587
- <section class="tab-pane fade" id="nav-dependencies" role="tabpanel" aria-labelledby="nav-dependencies-tab"
588
- tabindex="0">
589
- <table id="table-dependencies" class="table main-table">
590
- <thead>
591
- <tr>
592
- <th>Dependency</th>
593
- <th>PURL</th>
594
- <th>Version</th>
595
- <th>License</th>
596
- </tr>
597
- </thead>
598
- <tbody>
599
- </tbody>
600
- </table>
601
-
602
- <template id="tpl-dependencies-row">
603
- <tr>
604
- <td></td>
605
- <td></td>
606
- <td></td>
607
- <td></td>
608
- </tr>
609
- </template>
610
- </section>
611
-
612
- <!-- copyright -->
613
- <section class="tab-pane fade" id="nav-copyrights" role="tabpanel" aria-labelledby="nav-copyrights-tab"
614
- tabindex="0">
615
- <table id="table-copyrights" class="table main-table">
616
- <thead>
617
- <tr>
618
- <th>Component</th>
619
- <th>Version</th>
620
- <th>Copyright</th>
621
- </tr>
622
- </thead>
623
- <tbody>
624
- </tbody>
625
- </table>
626
-
627
- <template id="tpl-copyrights-row">
628
- <tr>
629
- <td></td>
630
- <td></td>
631
- <td></td>
632
- </tr>
633
- </template>
634
- </section>
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
-
720
- <!-- summary -->
721
- <div class="tab-pane fade" id="nav-summary" role="tabpanel" aria-labelledby="nav-summary-tab" tabindex="0">
722
- SUMMARY
723
- </div>
724
- </div>
725
- </main>
726
-
727
- <div class="divider mt-5"></div>
728
-
729
- <footer class="mb-2 text-center">
730
- <p class="text-center">Reported generated by <a href="https://github.com/scanoss/scanoss.js"
731
- target="_blank">scanoss.js</a></p>
732
- <p class="text-center"><a href="https://www.scanoss.com" target="_blank">www.scanoss.com</a></p>
733
- </footer>
734
-
735
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js"
736
- integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8"
737
- crossorigin="anonymous"></script>
738
- <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
739
- <script>
740
- addEventListener('DOMContentLoaded', (event) => {
741
- const entryData = '#DATA';
742
- const data = JSON.parse(entryData);
743
- let pieChartDataEntry = {
744
- labels: [],
745
- components: []
746
- };
747
-
748
- data.licenses.forEach((l) => {
749
- pieChartDataEntry.labels.push(l.label);
750
- pieChartDataEntry.components.push(l.value);
751
- });
752
-
753
- const color = [
754
- '#E8B34B',
755
- '#E22C2C',
756
- '#5754D0',
757
- '#9F69C0',
758
- '#FE7F10',
759
- '#E56399',
760
- '#E637BF',
761
- '#474647',
762
- '#153243',
763
- '#2DE1C2',
764
- '#F05365',
765
- '#A2D729',
766
- '#3C91E6',
767
- '#FA824C',
768
- '#C94277',
769
- '#E56B6F',
770
- '#F71735',
771
- '#011627',
772
- '#724E91',
773
- '#7D451B',
774
- '#9BE564',
775
- ];
776
-
777
- function init() {
778
-
779
- setupNavigation();
780
-
781
- renderHeader();
782
- renderLicensesTable();
783
- renderComponentTable();
784
- renderDependenciesTable();
785
- renderVulnerabilitiesTable();
786
- renderCopyrightTable();
787
- renderCryptographyTable();
788
- renderQualityTable();
789
- renderHealthTable();
790
- }
791
-
792
- init();
793
-
794
- function setupNavigation(componentList) {
795
- const showTab = (id) => document.querySelector('.nav-link#' + id).classList.add('visible');
796
-
797
- const existVersionKey = (key, componentList) => {
798
- for (const component of componentList) {
799
- for (const version of component.versions) {
800
- if (version && version[key]) return true;
801
- }
802
- }
803
- return false;
804
- };
805
-
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
-
815
- if (data.licenses) showTab('nav-licenses-tab');
816
- if (data.component) showTab('nav-components-tab');
817
- if (data.dependencies) showTab('nav-dependencies-tab');
818
- if (data.vulnerabilities) showTab('nav-vulnerabilities-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');
823
- }
824
-
825
- function renderHeader() {
826
-
827
- // date
828
- const d = document.querySelector('#date');
829
- d.innerHTML += new Date(data.summary.timestamp).toLocaleDateString();
830
-
831
- // project name
832
- const p = document.querySelector('#project-name');
833
- p.innerHTML += data.summary.projectName ? data.summary.projectName : '-';
834
-
835
-
836
- // summary
837
- const s = document.querySelector('.scan-summary');
838
- s.innerHTML += `
839
- <div class="info big">
840
- <div class="value primary">${data.summary.totalFiles}</div>
841
- <div class="label">Files Scanned</div>
842
- </div>
843
- <div class="info big">
844
- <div class="value">${data.summary.matchedFiles}</div>
845
- <div class="label">Matched</div>
846
- </div>
847
- <div class="info big">
848
- <div class="value">${data.summary.noMatchFiles}</div>
849
- <div class="label">No Matches</div>
850
- </div>
851
- `;
852
- }
853
-
854
- function renderLicensesTable() {
855
-
856
- function dropDown(id) {
857
- const nodes = document.getElementsByClassName(id);
858
- for (let i = 0; i < nodes.length; i += 1) {
859
- if (nodes[i].classList.contains('hide')) {
860
- nodes[i].classList.remove('hide');
861
- nodes[i].classList.add('show');
862
- } else {
863
- nodes[i].classList.remove('show');
864
- nodes[i].classList.add('hide');
865
- }
866
- }
867
- }
868
-
869
- function addButtonListener() {
870
- const btn = document.querySelectorAll('.button-solid');
871
- btn.forEach((button) => {
872
- button.addEventListener('click', (event) => {
873
- dropDown(event.target.id);
874
- });
875
- });
876
- }
877
-
878
- function pieChart() {
879
- const data = {
880
- labels: pieChartDataEntry.labels,
881
- datasets: [
882
- {
883
- backgroundColor: color,
884
- borderColor: 'rgb(255, 255, 255)',
885
- data: pieChartDataEntry.components,
886
- },
887
- ],
888
- };
889
- const config = {
890
- type: 'doughnut',
891
- data,
892
- options: {
893
- responsive: true,
894
- maintainAspectRatio: false,
895
- elements: {
896
- arc: {
897
- borderWidth: 1,
898
- },
899
- },
900
- plugins: {
901
- legend: {
902
- display: true,
903
- position: 'right',
904
- },
905
- },
906
- },
907
- };
908
- const myChart = new Chart(document.getElementById('myChart'), config);
909
- }
910
-
911
- function licenseDetail() {
912
- const body = document.querySelector('#body-license-detail-table');
913
- data.licenses.forEach((l, index) => {
914
- body.innerHTML += `
915
- <tr>
916
- <td>
917
- <div class="license-info-detail">
918
- <div class="license-ref">
919
- <div class="license-info-container">
920
- <div class="info-container">
921
- <div class="info">
922
- <div class="label">
923
- License
924
- </div>
925
- <div class="value">
926
- ${l.label}
927
- </div>
928
- </div>
929
- </div>
930
- </div>
931
- </div>
932
- <div class="license-component-button-container">
933
- <button class="button-solid" id="${l.label}"> ${l.value} component found &#x25BC</button>
934
- </div>
935
- </div>
936
- </td>
937
- </tr>`;
938
-
939
- body.innerHTML += `<tr class="${l.label} hide">
940
- <td colspan="2">
941
- <table>
942
- ${l.components.map((c, index) => {
943
- return `<tr class="row-license-info-container">
944
- <td class="cell-info-container index">
945
- <div class="row-info-container">
946
- <div class="info">
947
- <div class="value small">
948
- ${index + 1}
949
- </div>
950
- </div>
951
- </div>
952
- </td>
953
- <td class="cell-info-container">
954
- <div class="row-info-container">
955
- <div class="info">
956
- <div class="label">
957
- Component
958
- </div>
959
- <div class="value small">
960
- ${c.name}
961
- </div>
962
- </div>
963
- </div>
964
- </td>
965
- <td class="cell-info-container">
966
- <div class="row-info-container">
967
- <div class="info">
968
- <div class="label">
969
- Purl
970
- </div>
971
- <div class="value small">
972
- ${decodeURIComponent(c.purl)}
973
- </div>
974
- </div>
975
- </div>
976
- </td>
977
- <td class="cell-info-container">
978
- <div class="row-info-container">
979
- <div class="info">
980
- <div class="label">
981
- ${c.versions.length > 1 ? 'Versions' : 'Version'}
982
- </div>
983
- <div class="value small">
984
- ${c.versions.toString()}
985
- </div>
986
- </div>
987
- </div>
988
- </td>
989
- </tr>`
990
- }).join(' ')}
991
- </table>
992
- </td>
993
- </tr>`;
994
- });
995
-
996
- addButtonListener();
997
- }
998
-
999
- function incompatibleLicenses() {
1000
- const licenseMapper = new Set();
1001
- data.licenses.forEach((l) => licenseMapper.add(l.label));
1002
- const body = document.querySelector('#incompatible-license');
1003
- data.licenses.forEach((l) => {
1004
- body.innerHTML += `
1005
- <tr>
1006
- <td>${l.label}</td>
1007
- <td>${l.copyleft === true ? '&#10004' : '&#10006'}</td>
1008
- <td><div class="incompatible-license-container">${l.incompatibleWith.map((i) => {
1009
- return `<div class="license-block ${licenseMapper.has(i) === true ? 'incompatible-ref' : ''}">
1010
- <p>${i}</p>
1011
- </div>`;
1012
- }).join(' ')}</div></td>
1013
- </tr>`;
1014
- });
1015
- }
1016
-
1017
- pieChart();
1018
- licenseDetail();
1019
- incompatibleLicenses()
1020
-
1021
- }
1022
-
1023
- function renderComponentTable() {
1024
- const template = document.querySelector("#tpl-component-row");
1025
- const table = document.querySelector("#table-components tbody");
1026
-
1027
- const { component: componentData } = data;
1028
-
1029
- if (!componentData) return false;
1030
-
1031
- for (const component of componentData) {
1032
- const clon = template.content.cloneNode(true);
1033
- clon.querySelector('td:nth-child(1)').innerHTML = component.name;
1034
- clon.querySelector('td:nth-child(2)').innerHTML = decodeURIComponent(component.key);
1035
- clon.querySelector('td:nth-child(3)').innerHTML = component.versions?.map(item => item.version).join(', ');
1036
- clon.querySelector('td:nth-child(4)').innerHTML = component.url ? `<a href="${component.url}" target="_blank">${decodeURIComponent(component.url)}</a>` : '-';
1037
- table.appendChild(clon);
1038
- }
1039
- }
1040
-
1041
- function renderDependenciesTable() {
1042
- const template = document.querySelector("#tpl-dependencies-row");
1043
- const table = document.querySelector("#table-dependencies tbody");
1044
-
1045
- const { dependencies: dependencyData } = data;
1046
-
1047
- if (!dependencyData) return false;
1048
-
1049
- for (const depData of dependencyData) {
1050
- table.innerHTML += `<tr class="subheader"> <td colspan='4'> ${depData.dependencies?.length} ${depData.dependencies?.length == 1 ? 'dependency' : 'dependencies'} found in <span class="primary">${depData.file}</span> </td> </tr>`;
1051
- for (const dependency of depData.dependencies) {
1052
- const clon = template.content.cloneNode(true);
1053
- clon.querySelector('td:nth-child(1)').innerHTML = dependency.component || '-';
1054
- clon.querySelector('td:nth-child(2)').innerHTML = decodeURIComponent(dependency.purl);
1055
- clon.querySelector('td:nth-child(3)').innerHTML = dependency.version;
1056
- clon.querySelector('td:nth-child(4)').innerHTML = dependency.licenses?.map(item => item.name).join(', ');
1057
- table.appendChild(clon);
1058
- }
1059
- }
1060
- };
1061
-
1062
- function renderVulnerabilitiesTable() {
1063
- const template = document.querySelector("#tpl-vulnerabilities-row");
1064
- const table = document.querySelector("#table-vulnerabilities tbody");
1065
-
1066
- const { vulnerabilities: vulnerabilityData } = data;
1067
-
1068
- if (!vulnerabilityData) return false;
1069
-
1070
- for (const purlVulData of vulnerabilityData) {
1071
- for (const vulnerabilty of purlVulData.vulnerability) {
1072
- const clon = template.content.cloneNode(true);
1073
- clon.querySelector('td:nth-child(1)').innerHTML = decodeURIComponent(purlVulData.purl);
1074
- clon.querySelector('td:nth-child(2)').innerHTML = "-";
1075
- clon.querySelector('td:nth-child(3)').innerHTML = vulnerabilty.cve;
1076
- clon.querySelector('td:nth-child(4)').innerHTML = vulnerabilty.severity;
1077
- clon.querySelector('td:nth-child(5)').innerHTML = vulnerabilty.published;
1078
- clon.querySelector('td:nth-child(6)').innerHTML = vulnerabilty.modified;
1079
- clon.querySelector('td:nth-child(7)').innerHTML = vulnerabilty.summary;
1080
- table.appendChild(clon);
1081
- }
1082
-
1083
- }
1084
- }
1085
-
1086
-
1087
- function renderCopyrightTable() {
1088
- const template = document.querySelector("#tpl-copyrights-row");
1089
- const table = document.querySelector("#table-copyrights tbody");
1090
-
1091
- const { component: componentData } = data;
1092
-
1093
- if (!componentData) return false;
1094
-
1095
- for (const compData of componentData) {
1096
- for (const version of compData.versions) {
1097
- if (!version.copyrights) continue
1098
- const clon = template.content.cloneNode(true);
1099
- clon.querySelector('td:nth-child(1)').innerHTML = compData.name;
1100
- clon.querySelector('td:nth-child(2)').innerHTML = version.version;
1101
- clon.querySelector('td:nth-child(3)').innerHTML = version.copyrights?.map(item => item.name).join(' - ');
1102
-
1103
- table.appendChild(clon);
1104
- }
1105
- }
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
- }
1174
- });
1175
- </script>
1176
-
1177
-
1178
-
1179
- </body>
1180
-
1181
- </html>