scanoss 0.9.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +23 -15
  2. package/assets/ReportHTMLTemplate/index.html +74 -59
  3. package/build/main/cli/commands/scan.js +29 -18
  4. package/build/main/index.d.ts +10 -6
  5. package/build/main/index.js +11 -8
  6. package/build/main/sdk/Constants.d.ts +4 -0
  7. package/build/main/sdk/Constants.js +7 -0
  8. package/build/main/sdk/Dependencies/DependencyScanner.d.ts +2 -2
  9. package/build/main/sdk/Dependencies/DependencyScanner.js +6 -6
  10. package/build/main/sdk/Errors.d.ts +1 -0
  11. package/build/main/sdk/Errors.js +4 -0
  12. package/build/main/sdk/FileCount/FileCount.d.ts +1 -1
  13. package/build/main/sdk/FileCount/FileCount.js +10 -3
  14. package/build/main/sdk/{DataLayer → Report/DataLayer}/DataLayerTypes.d.ts +11 -4
  15. package/build/main/sdk/{DataLayer → Report/DataLayer}/DataLayerTypes.js +1 -4
  16. package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviderManager.d.ts +1 -1
  17. package/build/main/sdk/Report/DataLayer/DataProviderManager.js +25 -0
  18. package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviders/ComponentDataProvider.d.ts +3 -3
  19. package/build/main/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.js +175 -0
  20. package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviders/DependencyDataProvider.d.ts +2 -2
  21. package/build/main/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.js +42 -0
  22. package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviders/LicenseDataProvider.d.ts +3 -5
  23. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.js +118 -0
  24. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.d.ts +13 -0
  25. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.js +65 -0
  26. package/build/{module/sdk → main/sdk/Report}/DataLayer/DataProviders/SummaryDataProvider.d.ts +4 -2
  27. package/build/main/sdk/Report/DataLayer/DataProviders/SummaryDataProvider.js +38 -0
  28. package/build/main/sdk/Report/Report.d.ts +7 -1
  29. package/build/main/sdk/Report/Report.js +19 -6
  30. package/build/main/sdk/Services/Grpc/BaseService.d.ts +18 -0
  31. package/build/main/sdk/Services/Grpc/BaseService.js +94 -0
  32. package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +9 -0
  33. package/build/main/sdk/Services/Grpc/CryptographyService.js +35 -0
  34. package/build/{module/sdk/grpc/GrpcDependencyService.d.ts → main/sdk/Services/Grpc/DependencyService.d.ts} +1 -1
  35. package/build/main/sdk/{grpc/GrpcDependencyService.js → Services/Grpc/DependencyService.js} +4 -4
  36. package/build/main/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  37. package/build/main/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_pb.js +746 -0
  38. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +39 -0
  39. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +98 -0
  40. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +562 -0
  41. package/build/{module/sdk/grpc → main/sdk/Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +2 -2
  42. package/build/main/sdk/Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1397 -0
  43. package/build/main/tsconfig.tsbuildinfo +295 -213
  44. package/build/module/cli/commands/scan.js +31 -20
  45. package/build/module/index.d.ts +10 -6
  46. package/build/module/index.js +11 -8
  47. package/build/module/sdk/Constants.d.ts +4 -0
  48. package/build/module/sdk/Constants.js +5 -0
  49. package/build/module/sdk/Dependencies/DependencyScanner.d.ts +2 -2
  50. package/build/module/sdk/Dependencies/DependencyScanner.js +9 -9
  51. package/build/module/sdk/Errors.d.ts +1 -0
  52. package/build/module/sdk/Errors.js +2 -0
  53. package/build/module/sdk/FileCount/FileCount.d.ts +1 -1
  54. package/build/module/sdk/FileCount/FileCount.js +13 -6
  55. package/build/module/sdk/{DataLayer → Report/DataLayer}/DataLayerTypes.d.ts +11 -4
  56. package/build/module/sdk/Report/DataLayer/DataLayerTypes.js +2 -0
  57. package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviderManager.d.ts +1 -1
  58. package/build/module/sdk/Report/DataLayer/DataProviderManager.js +22 -0
  59. package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviders/ComponentDataProvider.d.ts +3 -3
  60. package/build/module/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.js +170 -0
  61. package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviders/DependencyDataProvider.d.ts +2 -2
  62. package/build/module/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.js +39 -0
  63. package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviders/LicenseDataProvider.d.ts +3 -5
  64. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.js +115 -0
  65. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.d.ts +13 -0
  66. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.js +60 -0
  67. package/build/{main/sdk → module/sdk/Report}/DataLayer/DataProviders/SummaryDataProvider.d.ts +4 -2
  68. package/build/module/sdk/Report/DataLayer/DataProviders/SummaryDataProvider.js +35 -0
  69. package/build/module/sdk/Report/Report.d.ts +7 -1
  70. package/build/module/sdk/Report/Report.js +19 -6
  71. package/build/module/sdk/Services/Grpc/BaseService.d.ts +18 -0
  72. package/build/module/sdk/Services/Grpc/BaseService.js +61 -0
  73. package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +9 -0
  74. package/build/module/sdk/Services/Grpc/CryptographyService.js +32 -0
  75. package/build/{main/sdk/grpc/GrpcDependencyService.d.ts → module/sdk/Services/Grpc/DependencyService.d.ts} +1 -1
  76. package/build/module/sdk/Services/Grpc/DependencyService.js +62 -0
  77. package/build/module/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  78. package/build/module/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_pb.js +746 -0
  79. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +39 -0
  80. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +98 -0
  81. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +562 -0
  82. package/build/{main/sdk/grpc → module/sdk/Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +2 -2
  83. package/build/module/sdk/Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1397 -0
  84. package/build/module/tsconfig.module.tsbuildinfo +295 -213
  85. package/package.json +2 -2
  86. package/build/main/sdk/DataLayer/DataProviderManager.js +0 -24
  87. package/build/main/sdk/DataLayer/DataProviders/ComponentDataProvider.js +0 -164
  88. package/build/main/sdk/DataLayer/DataProviders/DependencyDataProvider.js +0 -37
  89. package/build/main/sdk/DataLayer/DataProviders/LicenseDataProvider.js +0 -148
  90. package/build/main/sdk/DataLayer/DataProviders/SummaryDataProvider.js +0 -33
  91. package/build/main/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
  92. package/build/main/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -404
  93. package/build/main/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1197
  94. package/build/main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -19
  95. package/build/main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -66
  96. package/build/main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -14
  97. package/build/module/sdk/DataLayer/DataLayerTypes.js +0 -5
  98. package/build/module/sdk/DataLayer/DataProviderManager.js +0 -21
  99. package/build/module/sdk/DataLayer/DataProviders/ComponentDataProvider.js +0 -159
  100. package/build/module/sdk/DataLayer/DataProviders/DependencyDataProvider.js +0 -34
  101. package/build/module/sdk/DataLayer/DataProviders/LicenseDataProvider.js +0 -145
  102. package/build/module/sdk/DataLayer/DataProviders/SummaryDataProvider.js +0 -30
  103. package/build/module/sdk/grpc/GrpcDependencyService.js +0 -62
  104. package/build/module/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
  105. package/build/module/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -404
  106. package/build/module/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1197
  107. package/build/module/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -19
  108. package/build/module/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -66
  109. package/build/module/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -14
  110. /package/build/main/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  111. /package/build/main/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -0
  112. /package/build/main/sdk/{grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts → Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.d.ts} +0 -0
  113. /package/build/main/sdk/{grpc → Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -0
  114. /package/build/{module/sdk/grpc → main/sdk/Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -0
  115. /package/build/module/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  116. /package/build/module/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -0
  117. /package/build/{main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts → module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.d.ts} +0 -0
  118. /package/build/module/sdk/{grpc → Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -0
  119. /package/build/module/sdk/{grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts → Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts} +0 -0
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  };
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.DependencyScanner = void 0;
6
- const GrpcDependencyService_1 = require("../grpc/GrpcDependencyService");
7
- const scanoss_dependencies_pb_1 = require("../grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb");
6
+ const DependencyService_1 = require("../Services/Grpc/DependencyService");
7
+ const scanoss_dependencies_pb_1 = require("../Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb");
8
8
  const LocalDependency_1 = require("./LocalDependency/LocalDependency");
9
9
  const DependencyScannerCfg_1 = require("./DependencyScannerCfg");
10
10
  const packageurl_js_1 = require("packageurl-js");
@@ -22,12 +22,12 @@ class DependencyScanner {
22
22
  hostname = apiURL.host;
23
23
  cfg.API_URL = `${hostname}:${port}`;
24
24
  }
25
- this.grpcDependencyService = new GrpcDependencyService_1.GrpcDependencyService(cfg.API_URL, cfg.PROXY);
25
+ this.grpcDependencyService = new DependencyService_1.DependencyService(cfg.API_URL, cfg.PROXY);
26
26
  this.localDependency = new LocalDependency_1.LocalDependencies();
27
27
  }
28
28
  async scanFolder(path) {
29
29
  if (!(await fs_1.default.promises.lstat(path)).isDirectory())
30
- throw new Error("Specified path is not a directory");
30
+ throw new Error('Specified path is not a directory');
31
31
  const tree = new Tree_1.Tree(path);
32
32
  tree.build();
33
33
  return await this.scan(tree.getFileList());
@@ -107,7 +107,7 @@ class DependencyScanner {
107
107
  const localDependencyData = localDependencyInfo[filename + dependency.purl];
108
108
  if (localDependencyData === null || localDependencyData === void 0 ? void 0 : localDependencyData.scope)
109
109
  dependency['scope'] = localDependencyData.scope;
110
- if ((localDependencyData === null || localDependencyData === void 0 ? void 0 : localDependencyData.requirement) && dependency.version == "") {
110
+ if ((localDependencyData === null || localDependencyData === void 0 ? void 0 : localDependencyData.requirement) && dependency.version == '') {
111
111
  dependency.version = localDependencyData.requirement;
112
112
  }
113
113
  }
@@ -115,4 +115,4 @@ class DependencyScanner {
115
115
  }
116
116
  }
117
117
  exports.DependencyScanner = DependencyScanner;
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHlFQUFzRTtBQUN0RSx5R0FBb0g7QUFDcEgsdUVBQXNFO0FBQ3RFLGlFQUE4RDtBQUU5RCxpREFBMkM7QUFDM0MsNENBQW9CO0FBQ3BCLHVDQUFvQztBQUVwQyxNQUFhLGlCQUFpQjtJQU01QixZQUFZLEdBQUcsR0FBRyxJQUFJLDJDQUFvQixFQUFFO1FBRTFDLHdDQUF3QztRQUN4QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLFFBQWdCLENBQUM7WUFDckIsSUFBSSxJQUFZLENBQUM7WUFFakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUFFLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDdkIsR0FBRyxDQUFDLE9BQU8sR0FBSSxHQUFHLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLDZDQUFxQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxtQ0FBaUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFFLENB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
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDBFQUF1RTtBQUN2RSxrSEFHOEU7QUFDOUUsdUVBQXNFO0FBQ3RFLGlFQUE4RDtBQUU5RCxpREFBMkM7QUFDM0MsNENBQW9CO0FBQ3BCLHVDQUFvQztBQUVwQyxNQUFhLGlCQUFpQjtJQUs1QixZQUFZLEdBQUcsR0FBRyxJQUFJLDJDQUFvQixFQUFFO1FBQzFDLHdDQUF3QztRQUN4QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLFFBQWdCLENBQUM7WUFDckIsSUFBSSxJQUFZLENBQUM7WUFFakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUFFLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDdkIsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLHFDQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxtQ0FBaUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFFLENB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
@@ -0,0 +1 @@
1
+ export declare const ERROR_SERVICES_GRPC_API_TOKEN_REQUIRED = "Error: API token is required for this gRPC service. Please provide a valid token.";
@@ -0,0 +1,4 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.ERROR_SERVICES_GRPC_API_TOKEN_REQUIRED = void 0;
3
+ exports.ERROR_SERVICES_GRPC_API_TOKEN_REQUIRED = 'Error: API token is required for this gRPC service. Please provide a valid token.';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Nkay9FcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBYSxRQUFBLHNDQUFzQyxHQUNqRCxtRkFBbUYsQ0FBQyJ9
@@ -1,4 +1,4 @@
1
- import { FileCountOptions, IDirSummary } from "./Interfaces";
1
+ import { FileCountOptions, IDirSummary } from './Interfaces';
2
2
  export declare class FileCount {
3
3
  static walk(rootPath: string, option?: FileCountOptions): Promise<string | IDirSummary>;
4
4
  private static exploreBFS;
@@ -27,6 +27,7 @@ class FileCount {
27
27
  return this.produceCsv(data.fileSummary);
28
28
  return data;
29
29
  }
30
+ //Breadth First Search(BFS)
30
31
  static async exploreBFS(rootPath, filters) {
31
32
  var e_1, _a;
32
33
  const results = { fileSummary: new Map(), totalFileSize: 0 };
@@ -35,7 +36,9 @@ class FileCount {
35
36
  queue.push(rootPath);
36
37
  while (queue.length) {
37
38
  const currentPath = queue.shift();
38
- const entries = await fs_1.default.promises.readdir(currentPath, { withFileTypes: true });
39
+ const entries = await fs_1.default.promises.readdir(currentPath, {
40
+ withFileTypes: true,
41
+ });
39
42
  try {
40
43
  for (var entries_1 = (e_1 = void 0, __asyncValues(entries)), entries_1_1; entries_1_1 = await entries_1.next(), !entries_1_1.done;) {
41
44
  const entry = entries_1_1.value;
@@ -52,7 +55,11 @@ class FileCount {
52
55
  fileSum.size += currentFileSize;
53
56
  }
54
57
  else {
55
- results.fileSummary.set(currentExt, { count: 1, size: currentFileSize, percentage: 0 });
58
+ results.fileSummary.set(currentExt, {
59
+ count: 1,
60
+ size: currentFileSize,
61
+ percentage: 0,
62
+ });
56
63
  }
57
64
  results.totalFileSize += currentFileSize;
58
65
  }
@@ -85,4 +92,4 @@ class FileCount {
85
92
  }
86
93
  }
87
94
  exports.FileCount = FileCount;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUNvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9GaWxlQ291bnQvRmlsZUNvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsNkNBQWlGO0FBQ2pGLHNEQUFvRDtBQUNwRCx1REFBb0Q7QUFHcEQsTUFBYSxTQUFTO0lBRVgsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxNQUF5Qjs7UUFFbEUsaURBQWlEO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQVUsQ0FBQyxpQ0FBZSxDQUFDLENBQUM7UUFDaEQsVUFBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTywwQ0FBRSxXQUFXO1lBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxELE1BQU0sSUFBSSxHQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLEtBQUksbUJBQU0sQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFnQixFQUFFLE9BQW1COztRQUVuRSxNQUFNLE9BQU8sR0FBZ0IsRUFBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFDeEUsTUFBTSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUVoQywwREFBMEQ7UUFDMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUVwQixPQUFNLEtBQUssQ0FB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
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUNvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9GaWxlQ291bnQvRmlsZUNvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsNkNBS3NCO0FBQ3RCLHNEQUFvRDtBQUNwRCx1REFBb0Q7QUFFcEQsTUFBYSxTQUFTO0lBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxNQUF5Qjs7UUFDbEUsaURBQWlEO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQVUsQ0FBQyxpQ0FBZSxDQUFDLENBQUM7UUFDaEQsVUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTywwQ0FBRSxXQUFXO1lBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5ELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLEtBQUksbUJBQU0sQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyQkFBMkI7SUFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQzdCLFFBQWdCLEVBQ2hCLE9BQW1COztRQUVuQixNQUFNLE9BQU8sR0FBZ0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUVoQywwREFBMEQ7UUFDMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVy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
@@ -76,9 +76,6 @@ export interface LicenseDataLayer {
76
76
  label: string;
77
77
  value: number;
78
78
  components: Array<LicenseComponent>;
79
- incompatibleWith: Array<string>;
80
- hasIncompatibles: Array<string>;
81
- copyleft: boolean;
82
79
  }
83
80
  export interface LicenseComponent {
84
81
  purl: string;
@@ -88,7 +85,16 @@ export interface LicenseComponent {
88
85
  vendor: string;
89
86
  }
90
87
  /************* License interface definition *************/
88
+ /************* License Obligation interface definition *************/
89
+ export interface LicenseObligation {
90
+ label: string;
91
+ incompatibleWith: Array<string>;
92
+ hasIncompatibles: Array<string>;
93
+ copyleft: boolean;
94
+ }
95
+ /************* License Obligation interface definition *************/
91
96
  export interface SummaryDataLayer {
97
+ reportTitle: string;
92
98
  projectName: string;
93
99
  timestamp: Date;
94
100
  matchedFiles: number;
@@ -97,12 +103,13 @@ export interface SummaryDataLayer {
97
103
  }
98
104
  export interface IDataLayers {
99
105
  licenses: LicenseDataLayer[];
106
+ licensesObligations: LicenseObligation[];
100
107
  component: ComponentDataLayer[];
101
108
  dependencies: DependencyDataLayer[];
102
109
  vulnerabilities: VulnerabilityDataLayer[];
103
110
  summary: SummaryDataLayer;
104
111
  }
105
112
  export interface DataProvider {
106
- getData(): IDataLayers;
113
+ getData(): Promise<IDataLayers>;
107
114
  getLayerName(): string;
108
115
  }
@@ -1,5 +1,2 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- ;
3
- ;
4
- ;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxheWVyVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RhdGFMYXllci9EYXRhTGF5ZXJUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBc0JDLENBQUM7QUFLRCxDQUFDO0FBTUQsQ0FBQyJ9
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxheWVyVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL1JlcG9ydC9EYXRhTGF5ZXIvRGF0YUxheWVyVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -3,5 +3,5 @@ export declare class DataProviderManager {
3
3
  private dataLayersProviders;
4
4
  constructor();
5
5
  addDataProvider(l: DataProvider): void;
6
- generateData(): IDataLayers;
6
+ generateData(): Promise<IDataLayers>;
7
7
  }
@@ -0,0 +1,25 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.DataProviderManager = void 0;
3
+ class DataProviderManager {
4
+ constructor() {
5
+ this.dataLayersProviders = [];
6
+ }
7
+ addDataProvider(l) {
8
+ this.dataLayersProviders.push(l);
9
+ }
10
+ async generateData() {
11
+ let dataLayer = {
12
+ component: null,
13
+ dependencies: null,
14
+ vulnerabilities: null,
15
+ summary: null,
16
+ licenses: null,
17
+ licensesObligations: null,
18
+ };
19
+ for (const layer of this.dataLayersProviders)
20
+ Object.assign(dataLayer, await layer.getData());
21
+ return dataLayer;
22
+ }
23
+ }
24
+ exports.DataProviderManager = DataProviderManager;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVByb3ZpZGVyTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsTUFBYSxtQkFBbUI7SUFHOUI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxlQUFlLENBQUMsQ0FBZTtRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixJQUFJLFNBQVMsR0FBZ0I7WUFDM0IsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBekJELGtEQXlCQyJ9
@@ -1,13 +1,13 @@
1
1
  import { DataProvider, IDataLayers } from '../DataLayerTypes';
2
- import { ScannerResults } from '../../scanner/ScannerTypes';
3
- import { IDependencyResponse } from '../../Dependencies/DependencyTypes';
2
+ import { ScannerResults } from '../../../scanner/ScannerTypes';
3
+ import { IDependencyResponse } from '../../../Dependencies/DependencyTypes';
4
4
  export declare class ComponentDataProvider implements DataProvider {
5
5
  private scanRawResults;
6
6
  private componentList;
7
7
  private dependencies;
8
8
  constructor(scanRawResults: ScannerResults, dependencies?: IDependencyResponse);
9
9
  getLayerName(): string;
10
- getData(): IDataLayers;
10
+ getData(): Promise<IDataLayers>;
11
11
  private parseComponentsFromDependencies;
12
12
  private parseComponentsFromScanner;
13
13
  }
@@ -0,0 +1,175 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.ComponentDataProvider = void 0;
3
+ class ComponentDataProvider {
4
+ constructor(scanRawResults, dependencies) {
5
+ this.scanRawResults = scanRawResults;
6
+ this.dependencies = dependencies;
7
+ }
8
+ getLayerName() {
9
+ return this.constructor.name;
10
+ }
11
+ async getData() {
12
+ const componentLayer = { component: null };
13
+ if (!this.scanRawResults && !this.dependencies)
14
+ return componentLayer;
15
+ //Extract all components from scanRawResults, does not matter if there are duplicated
16
+ //And removes all no match results.
17
+ this.componentList = Object.values(this.scanRawResults).flat();
18
+ this.componentList = this.componentList.filter((component) => component.id !== 'none');
19
+ const scannerComponentLayer = this.parseComponentsFromScanner(this.componentList);
20
+ const dependenciesComponentLayer = this.parseComponentsFromDependencies(this.dependencies);
21
+ componentLayer.component = [
22
+ ...scannerComponentLayer,
23
+ ...dependenciesComponentLayer,
24
+ ].sort((itemA, itemB) => {
25
+ if (itemA.name < itemB.name)
26
+ return -1;
27
+ else if (itemA.name > itemB.name)
28
+ return 1;
29
+ return 0;
30
+ });
31
+ if (!componentLayer.component.length)
32
+ componentLayer.component = null;
33
+ return componentLayer;
34
+ }
35
+ parseComponentsFromDependencies(dependencies) {
36
+ const componentLayer = [];
37
+ if (!dependencies)
38
+ return componentLayer;
39
+ dependencies.filesList.forEach((file) => {
40
+ file.dependenciesList.forEach((dependency) => {
41
+ const newComponent = {};
42
+ newComponent.key = dependency.purl;
43
+ newComponent.purls = [dependency.purl];
44
+ newComponent.name = dependency.component;
45
+ newComponent.url = null;
46
+ newComponent.vendor = null;
47
+ newComponent.health = null;
48
+ newComponent.versions = [
49
+ {
50
+ version: dependency.version,
51
+ licenses: dependency.licensesList.map((license) => license.spdxId),
52
+ copyrights: null,
53
+ cryptography: null,
54
+ quality: null,
55
+ },
56
+ ];
57
+ const existingComponent = componentLayer.find((component) => component.key === newComponent.key);
58
+ if (existingComponent) {
59
+ const existingVersion = existingComponent.versions.find((version) => version.version === newComponent.versions[0].version);
60
+ if (!existingVersion)
61
+ existingComponent.versions.push({
62
+ version: newComponent.versions[0].version,
63
+ licenses: newComponent.versions[0].licenses,
64
+ copyrights: newComponent.versions[0].copyrights,
65
+ quality: null,
66
+ cryptography: null,
67
+ });
68
+ }
69
+ else {
70
+ //Component does not exist, insert as it is.
71
+ componentLayer.push(newComponent);
72
+ }
73
+ });
74
+ });
75
+ return componentLayer;
76
+ }
77
+ parseComponentsFromScanner(scanComponents) {
78
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
79
+ const componentLayer = [];
80
+ if (!scanComponents)
81
+ return componentLayer;
82
+ for (let i = 0; i < scanComponents.length; i++) {
83
+ try {
84
+ // qualityValue would have a number from 0 to 5 or undefined.
85
+ const qualityValue = Number((_d = (_c = (_b = (_a = scanComponents[i]) === null || _a === void 0 ? void 0 : _a.quality) === null || _b === void 0 ? void 0 : _b.shift()) === null || _c === void 0 ? void 0 : _c.score) === null || _d === void 0 ? void 0 : _d.split('/').shift());
86
+ //Generates a new component
87
+ const newComponent = {
88
+ key: scanComponents[i].purl[0],
89
+ purls: scanComponents[i].purl,
90
+ name: scanComponents[i].component,
91
+ url: scanComponents[i].url,
92
+ vendor: scanComponents[i].vendor,
93
+ health: scanComponents[i].health,
94
+ versions: [
95
+ {
96
+ version: scanComponents[i].version,
97
+ licenses: scanComponents[i].licenses.map((license) => license.name),
98
+ copyrights: scanComponents[i].copyrights,
99
+ quality: { sum: 0, scoreAvg: 0, count: 0 },
100
+ cryptography: (_e = scanComponents[i]) === null || _e === void 0 ? void 0 : _e.cryptography,
101
+ },
102
+ ],
103
+ };
104
+ //Removes duplicated licenses
105
+ newComponent.versions[0].licenses = [
106
+ ...new Set(newComponent.versions[0].licenses),
107
+ ];
108
+ if (qualityValue) {
109
+ newComponent.versions[0].quality.count = 1;
110
+ newComponent.versions[0].quality.sum = qualityValue;
111
+ newComponent.versions[0].quality.scoreAvg = qualityValue;
112
+ }
113
+ //Merge new component in componentList
114
+ const componentTarget = componentLayer.find((component) => component.key === newComponent.key);
115
+ if (componentTarget) {
116
+ const versionTarget = componentTarget.versions.find((item) => item.version === newComponent.versions[0].version);
117
+ if (versionTarget) {
118
+ //Insert licenses
119
+ newComponent.versions[0].licenses.forEach((licence) => {
120
+ if (!versionTarget.licenses.includes(licence))
121
+ versionTarget.licenses.push(licence);
122
+ });
123
+ //Insert copyright
124
+ (_g = (_f = newComponent.versions[0]) === null || _f === void 0 ? void 0 : _f.copyrights) === null || _g === void 0 ? void 0 : _g.forEach((newCopyright) => {
125
+ if (versionTarget.copyrights.every((copyright) => newCopyright.name != copyright.name)) {
126
+ versionTarget.copyrights.push(newCopyright);
127
+ }
128
+ });
129
+ //Insert cryptography
130
+ (_j = (_h = newComponent.versions[0]) === null || _h === void 0 ? void 0 : _h.cryptography) === null || _j === void 0 ? void 0 : _j.forEach((newCryptoAlgo) => {
131
+ if (versionTarget.cryptography.every((cryptoAlgorithm) => cryptoAlgorithm.algorithm != newCryptoAlgo.algorithm)) {
132
+ versionTarget.cryptography.push(newCryptoAlgo);
133
+ }
134
+ });
135
+ //recalculate quality average in case we have a quality value
136
+ if (qualityValue) {
137
+ versionTarget.quality.count++;
138
+ versionTarget.quality.sum += Number(qualityValue);
139
+ versionTarget.quality.scoreAvg =
140
+ versionTarget.quality.sum / versionTarget.quality.count;
141
+ }
142
+ }
143
+ else {
144
+ //newComponent version is not included in the component with same purl key
145
+ componentTarget.versions = componentTarget.versions.concat(newComponent.versions);
146
+ }
147
+ }
148
+ else
149
+ componentLayer.push(newComponent);
150
+ }
151
+ catch (e) {
152
+ console.error(`Problem inserting new component building Component Data Layer - `, e);
153
+ }
154
+ }
155
+ //Replace [] for null in versions
156
+ for (let i = 0; i < componentLayer.length; i++) {
157
+ if (!componentLayer[i].health)
158
+ componentLayer[i].health = null;
159
+ componentLayer[i].versions.forEach((version) => {
160
+ var _a, _b, _c;
161
+ if (((_a = version.copyrights) === null || _a === void 0 ? void 0 : _a.length) == 0)
162
+ version.copyrights = null;
163
+ if (((_b = version.licenses) === null || _b === void 0 ? void 0 : _b.length) == 0)
164
+ version.licenses = null;
165
+ if (((_c = version.cryptography) === null || _c === void 0 ? void 0 : _c.length) === 0)
166
+ version.cryptography = null;
167
+ if (version.quality.count === 0)
168
+ version.quality = null;
169
+ });
170
+ }
171
+ return componentLayer;
172
+ }
173
+ }
174
+ exports.ComponentDataProvider = ComponentDataProvider;
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50RGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9SZXBvcnQvRGF0YUxheWVyL0RhdGFQcm92aWRlcnMvQ29tcG9uZW50RGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsTUFBYSxxQkFBcUI7SUFPaEMsWUFDRSxjQUE4QixFQUM5QixZQUFrQztRQUVsQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNsQixNQUFNLGNBQWMsR0FBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sY0FBYyxDQUFDO1FBRXRFLHFGQUFxRjtRQUNyRixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUM1QyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQ3ZDLENBQUM7UUFDRixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDM0QsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztRQUNGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUNyRSxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO1FBRUYs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
@@ -1,9 +1,9 @@
1
1
  import { DataProvider, IDataLayers, DependencyDataLayer } from '../DataLayerTypes';
2
- import { IDependencyResponse } from '../../Dependencies/DependencyTypes';
2
+ import { IDependencyResponse } from '../../../Dependencies/DependencyTypes';
3
3
  export declare class DependencyDataProvider implements DataProvider {
4
4
  private dependencies;
5
5
  constructor(dependencies: IDependencyResponse);
6
6
  getLayerName(): string;
7
- getData(): IDataLayers;
7
+ getData(): Promise<IDataLayers>;
8
8
  parseDependencyData(dependencies: IDependencyResponse): DependencyDataLayer[];
9
9
  }
@@ -0,0 +1,42 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.DependencyDataProvider = void 0;
3
+ class DependencyDataProvider {
4
+ constructor(dependencies) {
5
+ this.dependencies = dependencies;
6
+ }
7
+ getLayerName() {
8
+ return this.constructor.name;
9
+ }
10
+ async getData() {
11
+ const dependencyLayer = { dependencies: null };
12
+ if (!this.dependencies)
13
+ return dependencyLayer;
14
+ const parsedDepLayer = this.parseDependencyData(this.dependencies);
15
+ dependencyLayer.dependencies = parsedDepLayer;
16
+ if (!dependencyLayer.dependencies.length)
17
+ dependencyLayer.dependencies = null;
18
+ return dependencyLayer;
19
+ }
20
+ parseDependencyData(dependencies) {
21
+ const dependencyLayer = [];
22
+ dependencies.filesList.forEach((file) => {
23
+ const newDependencies = [];
24
+ file.dependenciesList.forEach((dependency) => {
25
+ const newLicenses = [];
26
+ dependency.licensesList.forEach((license) => {
27
+ newLicenses.push({ name: license.name, spdxid: license.spdxId });
28
+ });
29
+ newDependencies.push({
30
+ purl: dependency.purl,
31
+ licenses: newLicenses,
32
+ version: dependency.version,
33
+ component: dependency.component,
34
+ });
35
+ });
36
+ dependencyLayer.push({ file: file.file, dependencies: newDependencies });
37
+ });
38
+ return dependencyLayer;
39
+ }
40
+ }
41
+ exports.DependencyDataProvider = DependencyDataProvider;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeURhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJzL0RlcGVuZGVuY3lEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxNQUFhLHNCQUFzQjtJQUdqQyxZQUFZLFlBQWlDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sZUFBZSxHQUFnQixFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLGVBQWUsQ0FBQztRQUMvQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25FLGVBQWUsQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDdEMsZUFBZSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFdEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVNLG1CQUFtQixDQUN4QixZQUFpQztRQUVqQyxNQUFNLGVBQWUsR0FBK0IsRUFBRSxDQUFDO1FBRXZELFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsTUFBTSxlQUFlLEdBQXNCLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQzNDLE1BQU0sV0FBVyxHQUFtQixFQUFFLENBQUM7Z0JBQ3ZDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ25FLENBQUMsQ0FBQyxDQUFDO2dCQUNILGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ25CLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtvQkFDckIsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztvQkFDM0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO2lCQUNoQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQTlDRCx3REE4Q0MifQ==
@@ -1,6 +1,6 @@
1
1
  import { DataProvider, IDataLayers } from '../DataLayerTypes';
2
- import { ScannerResults } from '../../scanner/ScannerTypes';
3
- import { IDependencyResponse } from '../../Dependencies/DependencyTypes';
2
+ import { ScannerResults } from '../../../scanner/ScannerTypes';
3
+ import { IDependencyResponse } from '../../../Dependencies/DependencyTypes';
4
4
  export declare class LicenseDataProvider implements DataProvider {
5
5
  private scanResults;
6
6
  private componentList;
@@ -9,10 +9,8 @@ export declare class LicenseDataProvider implements DataProvider {
9
9
  private licenseLayer;
10
10
  constructor(scanResults: ScannerResults, dependencies?: IDependencyResponse);
11
11
  getLayerName(): string;
12
- getData(): IDataLayers;
12
+ getData(): Promise<IDataLayers>;
13
13
  private updateLicenseStorageFromComponentList;
14
14
  private updateLicenseStorageFromDependencies;
15
- private updateIncompatibilities;
16
15
  private insertComponentIntoLicense;
17
- private unknownLicensesToEnd;
18
16
  }
@@ -0,0 +1,118 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.LicenseDataProvider = void 0;
3
+ class LicenseDataProvider {
4
+ constructor(scanResults, dependencies) {
5
+ this.scanResults = scanResults;
6
+ this.dependencies = dependencies;
7
+ //Maps a license name to its own data
8
+ this.licenseStorage = {};
9
+ this.licenseLayer = [];
10
+ }
11
+ getLayerName() {
12
+ return this.constructor.name;
13
+ }
14
+ async getData() {
15
+ this.componentList = Object.values(this.scanResults).flat();
16
+ this.componentList = this.componentList.filter((component) => component.id !== 'none');
17
+ if (this.componentList.length > 0)
18
+ this.updateLicenseStorageFromComponentList();
19
+ if (this.dependencies && this.dependencies.filesList.length > 0)
20
+ this.updateLicenseStorageFromDependencies();
21
+ this.licenseLayer = Object.values(this.licenseStorage);
22
+ this.licenseLayer.sort((itemA, itemB) => {
23
+ if (itemA.value > itemB.value)
24
+ return -1;
25
+ else if (itemA.value < itemB.value)
26
+ return 1;
27
+ return 0;
28
+ });
29
+ return { licenses: this.licenseLayer };
30
+ }
31
+ //Gets all license from the result of scan and stores in this.licenseStorage map
32
+ updateLicenseStorageFromComponentList() {
33
+ this.componentList.forEach((component) => {
34
+ component.licenses.forEach((license) => {
35
+ const newLicenseComponent = {};
36
+ newLicenseComponent.purl = component.purl[0];
37
+ newLicenseComponent.vendor = component.vendor;
38
+ newLicenseComponent.versions = [component.version];
39
+ newLicenseComponent.name = component.component;
40
+ newLicenseComponent.url = component.url;
41
+ const licenseExist = !!this.licenseStorage[license.name];
42
+ if (!licenseExist) {
43
+ const newLicense = {};
44
+ newLicense.value = 1;
45
+ newLicense.label = license.name;
46
+ newLicense.components = [newLicenseComponent];
47
+ this.licenseStorage[license.name] = newLicense;
48
+ }
49
+ else {
50
+ this.licenseStorage[license.name] = this.insertComponentIntoLicense(this.licenseStorage[license.name], newLicenseComponent);
51
+ }
52
+ });
53
+ });
54
+ }
55
+ //Gets all licenses from results of dependency analysis
56
+ updateLicenseStorageFromDependencies() {
57
+ this.dependencies.filesList.forEach((file) => {
58
+ file.dependenciesList.forEach((dependency) => {
59
+ dependency.licensesList.forEach((license) => {
60
+ const newLicenseComponent = {};
61
+ newLicenseComponent.purl = dependency.purl;
62
+ newLicenseComponent.versions = [dependency.version];
63
+ newLicenseComponent.name = dependency.component;
64
+ newLicenseComponent.vendor = null;
65
+ newLicenseComponent.url = null;
66
+ if (license.spdxId !== '') {
67
+ license.spdxId.split(/;|\//g).forEach((license_name) => {
68
+ const licenseExist = !!this.licenseStorage[license_name];
69
+ if (!licenseExist) {
70
+ const newLicense = {};
71
+ newLicense.value = 1;
72
+ newLicense.label = license_name;
73
+ newLicense.components = [newLicenseComponent];
74
+ this.licenseStorage[license_name] = newLicense;
75
+ }
76
+ else {
77
+ this.licenseStorage[license_name] =
78
+ this.insertComponentIntoLicense(this.licenseStorage[license_name], newLicenseComponent);
79
+ }
80
+ });
81
+ }
82
+ else {
83
+ // Unknown license
84
+ const licenseExist = !!this.licenseStorage['unknown'];
85
+ if (!licenseExist) {
86
+ const newLicense = {};
87
+ newLicense.value = 1;
88
+ newLicense.label = 'unknown';
89
+ newLicense.components = [newLicenseComponent];
90
+ this.licenseStorage['unknown'] = newLicense;
91
+ }
92
+ else {
93
+ this.licenseStorage['unknown'] = this.insertComponentIntoLicense(this.licenseStorage['unknown'], newLicenseComponent);
94
+ }
95
+ }
96
+ });
97
+ });
98
+ });
99
+ }
100
+ insertComponentIntoLicense(license, newComponent) {
101
+ const componentIndex = license.components.findIndex((c) => c.purl === newComponent.purl);
102
+ if (componentIndex >= 0) {
103
+ //if newComponent exist in license
104
+ const versionExist = !!license.components[componentIndex].versions.find((version) => version === newComponent.versions[0]);
105
+ if (!versionExist) {
106
+ license.components[componentIndex].versions.push(newComponent.versions[0]);
107
+ license.value++;
108
+ }
109
+ }
110
+ else {
111
+ license.components.push(newComponent);
112
+ license.value++;
113
+ }
114
+ return license;
115
+ }
116
+ }
117
+ exports.LicenseDataProvider = LicenseDataProvider;
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGljZW5zZURhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvUmVwb3J0L0RhdGFMYXllci9EYXRhUHJvdmlkZXJzL0xpY2Vuc2VEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxNQUFhLG1CQUFtQjtJQVc5QixZQUFZLFdBQTJCLEVBQUUsWUFBa0M7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFFakMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUN2QyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9CLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM3RCxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztRQUU5QyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FB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