scanoss 0.17.3 → 0.18.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 (180) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/build/main/cli/bin/cli-bin.js +7 -2
  3. package/build/main/cli/commands/crypto.js +13 -8
  4. package/build/main/cli/commands/dep.js +17 -3
  5. package/build/main/cli/commands/scan.js +29 -25
  6. package/build/main/index.d.ts +4 -4
  7. package/build/main/index.js +4 -4
  8. package/build/main/sdk/BaseConfig.d.ts +87 -11
  9. package/build/main/sdk/BaseConfig.js +92 -7
  10. package/build/main/sdk/Clients/Cryptography/CryptographyClient.d.ts +20 -0
  11. package/build/main/sdk/Clients/Cryptography/CryptographyClient.js +142 -0
  12. package/build/main/sdk/Clients/Cryptography/CryptographyHttpClient.d.ts +10 -0
  13. package/build/main/sdk/Clients/Cryptography/CryptographyHttpClient.js +56 -0
  14. package/build/main/sdk/Clients/Cryptography/ICryptographyClient.d.ts +40 -0
  15. package/build/main/sdk/Clients/Cryptography/ICryptographyClient.js +3 -0
  16. package/build/main/sdk/{Services/Grpc/DependencyService.d.ts → Clients/Dependency/DependencyClient.d.ts} +5 -5
  17. package/build/main/sdk/Clients/Dependency/DependencyClient.js +100 -0
  18. package/build/main/sdk/Clients/Dependency/DependencyHttpClient.d.ts +9 -0
  19. package/build/main/sdk/Clients/Dependency/DependencyHttpClient.js +61 -0
  20. package/build/main/sdk/Clients/Dependency/IDependencyClient.d.ts +41 -0
  21. package/build/main/sdk/Clients/Dependency/IDependencyClient.js +3 -0
  22. package/build/main/sdk/{Services/Grpc/BaseService.d.ts → Clients/Grpc/BaseGRPCClient.d.ts} +6 -10
  23. package/build/main/sdk/Clients/Grpc/BaseGRPCClient.js +150 -0
  24. package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +1 -1
  25. package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_pb.js +1 -1
  26. package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +1 -1
  27. package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1 -1
  28. package/build/{module/sdk/Services → main/sdk/Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +1 -1
  29. package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1 -1
  30. package/build/main/sdk/{Services → Clients}/Transport/Transport.js +1 -1
  31. package/build/main/sdk/Clients/Vulnerability/IVulnerabilityClient.d.ts +5 -0
  32. package/build/main/sdk/Clients/Vulnerability/IVulnerabilityClient.js +3 -0
  33. package/build/main/sdk/Clients/Vulnerability/VulnerabilityHttpClient.d.ts +10 -0
  34. package/build/main/sdk/Clients/Vulnerability/VulnerabilityHttpClient.js +58 -0
  35. package/build/main/sdk/Clients/helper/clientHelper.d.ts +3 -0
  36. package/build/main/sdk/Clients/helper/clientHelper.js +25 -0
  37. package/build/main/sdk/{Services → Clients}/http/HttpClient.d.ts +5 -3
  38. package/build/main/sdk/Clients/http/HttpClient.js +88 -0
  39. package/build/main/sdk/Clients/interfaces/ClientConfig.d.ts +11 -0
  40. package/build/main/sdk/Clients/interfaces/ClientConfig.js +9 -0
  41. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +5 -5
  42. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +6 -6
  43. package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +3 -3
  44. package/build/main/sdk/Cryptography/CryptoCfg.d.ts +15 -37
  45. package/build/main/sdk/Cryptography/CryptoCfg.js +32 -36
  46. package/build/main/sdk/Cryptography/CryptographyScanner.d.ts +2 -2
  47. package/build/main/sdk/Cryptography/CryptographyScanner.js +1 -1
  48. package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +4 -0
  49. package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +2 -2
  50. package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +7 -7
  51. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +4 -4
  52. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +4 -4
  53. package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.js +3 -3
  54. package/build/main/sdk/Dependencies/DependencyScanner.d.ts +4 -4
  55. package/build/main/sdk/Dependencies/DependencyScanner.js +57 -41
  56. package/build/main/sdk/Dependencies/DependencyScannerCfg.d.ts +20 -6
  57. package/build/main/sdk/Dependencies/DependencyScannerCfg.js +50 -1
  58. package/build/main/sdk/Logger.d.ts +4 -2
  59. package/build/main/sdk/Logger.js +22 -6
  60. package/build/main/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.d.ts +2 -2
  61. package/build/main/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.js +1 -1
  62. package/build/main/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.d.ts +3 -3
  63. package/build/main/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.js +1 -1
  64. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.d.ts +2 -2
  65. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.js +1 -1
  66. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.d.ts +2 -2
  67. package/build/main/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.js +1 -1
  68. package/build/main/sdk/Vulnerability/VulnerabilityCfg.d.ts +29 -0
  69. package/build/main/sdk/Vulnerability/VulnerabilityCfg.js +54 -0
  70. package/build/main/sdk/Vulnerability/VulnerabilityScanner.d.ts +8 -0
  71. package/build/main/sdk/Vulnerability/VulnerabilityScanner.js +34 -0
  72. package/build/main/sdk/scanner/Scanner.d.ts +0 -1
  73. package/build/main/sdk/scanner/Scanner.js +2 -3
  74. package/build/main/sdk/scanner/ScannerCfg.d.ts +11 -0
  75. package/build/main/sdk/scanner/ScannerCfg.js +28 -2
  76. package/build/main/sdk/shared/interfaces/Component.d.ts +4 -0
  77. package/build/main/sdk/shared/interfaces/Component.js +3 -0
  78. package/build/main/tsconfig.tsbuildinfo +1 -1
  79. package/build/module/cli/bin/cli-bin.js +7 -2
  80. package/build/module/cli/commands/crypto.js +13 -8
  81. package/build/module/cli/commands/dep.js +17 -3
  82. package/build/module/cli/commands/scan.js +29 -25
  83. package/build/module/index.d.ts +4 -4
  84. package/build/module/index.js +4 -4
  85. package/build/module/sdk/BaseConfig.d.ts +87 -11
  86. package/build/module/sdk/BaseConfig.js +91 -7
  87. package/build/module/sdk/Clients/Cryptography/CryptographyClient.d.ts +20 -0
  88. package/build/module/sdk/Clients/Cryptography/CryptographyClient.js +131 -0
  89. package/build/module/sdk/Clients/Cryptography/CryptographyHttpClient.d.ts +10 -0
  90. package/build/module/sdk/Clients/Cryptography/CryptographyHttpClient.js +54 -0
  91. package/build/module/sdk/Clients/Cryptography/ICryptographyClient.d.ts +40 -0
  92. package/build/module/sdk/Clients/Cryptography/ICryptographyClient.js +2 -0
  93. package/build/module/sdk/{Services/Grpc/DependencyService.d.ts → Clients/Dependency/DependencyClient.d.ts} +5 -5
  94. package/build/module/sdk/Clients/Dependency/DependencyClient.js +74 -0
  95. package/build/module/sdk/Clients/Dependency/DependencyHttpClient.d.ts +9 -0
  96. package/build/module/sdk/Clients/Dependency/DependencyHttpClient.js +59 -0
  97. package/build/module/sdk/Clients/Dependency/IDependencyClient.d.ts +41 -0
  98. package/build/module/sdk/Clients/Dependency/IDependencyClient.js +2 -0
  99. package/build/module/sdk/{Services/Grpc/BaseService.d.ts → Clients/Grpc/BaseGRPCClient.d.ts} +6 -10
  100. package/build/module/sdk/Clients/Grpc/BaseGRPCClient.js +122 -0
  101. package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +1 -1
  102. package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_pb.js +1 -1
  103. package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +1 -1
  104. package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1 -1
  105. package/build/{main/sdk/Services → module/sdk/Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +1 -1
  106. package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1 -1
  107. package/build/module/sdk/{Services → Clients}/Transport/Transport.js +1 -1
  108. package/build/module/sdk/Clients/Vulnerability/IVulnerabilityClient.d.ts +5 -0
  109. package/build/module/sdk/Clients/Vulnerability/IVulnerabilityClient.js +2 -0
  110. package/build/module/sdk/Clients/Vulnerability/VulnerabilityHttpClient.d.ts +10 -0
  111. package/build/module/sdk/Clients/Vulnerability/VulnerabilityHttpClient.js +56 -0
  112. package/build/module/sdk/Clients/helper/clientHelper.d.ts +3 -0
  113. package/build/module/sdk/Clients/helper/clientHelper.js +21 -0
  114. package/build/module/sdk/{Services → Clients}/http/HttpClient.d.ts +5 -3
  115. package/build/module/sdk/Clients/http/HttpClient.js +82 -0
  116. package/build/module/sdk/Clients/interfaces/ClientConfig.d.ts +11 -0
  117. package/build/module/sdk/Clients/interfaces/ClientConfig.js +6 -0
  118. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +5 -5
  119. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +6 -6
  120. package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +3 -3
  121. package/build/module/sdk/Cryptography/CryptoCfg.d.ts +15 -37
  122. package/build/module/sdk/Cryptography/CryptoCfg.js +34 -40
  123. package/build/module/sdk/Cryptography/CryptographyScanner.d.ts +2 -2
  124. package/build/module/sdk/Cryptography/CryptographyScanner.js +1 -1
  125. package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +4 -0
  126. package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +2 -2
  127. package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +7 -7
  128. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +4 -4
  129. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +4 -4
  130. package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.js +3 -3
  131. package/build/module/sdk/Dependencies/DependencyScanner.d.ts +4 -4
  132. package/build/module/sdk/Dependencies/DependencyScanner.js +58 -42
  133. package/build/module/sdk/Dependencies/DependencyScannerCfg.d.ts +20 -6
  134. package/build/module/sdk/Dependencies/DependencyScannerCfg.js +50 -1
  135. package/build/module/sdk/Logger.d.ts +4 -2
  136. package/build/module/sdk/Logger.js +22 -7
  137. package/build/module/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.d.ts +2 -2
  138. package/build/module/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.js +1 -1
  139. package/build/module/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.d.ts +3 -3
  140. package/build/module/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.js +1 -1
  141. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.d.ts +2 -2
  142. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.js +1 -1
  143. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.d.ts +2 -2
  144. package/build/module/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.js +1 -1
  145. package/build/module/sdk/Vulnerability/VulnerabilityCfg.d.ts +29 -0
  146. package/build/module/sdk/Vulnerability/VulnerabilityCfg.js +50 -0
  147. package/build/module/sdk/Vulnerability/VulnerabilityScanner.d.ts +8 -0
  148. package/build/module/sdk/Vulnerability/VulnerabilityScanner.js +32 -0
  149. package/build/module/sdk/scanner/Scanner.d.ts +0 -1
  150. package/build/module/sdk/scanner/Scanner.js +2 -3
  151. package/build/module/sdk/scanner/ScannerCfg.d.ts +11 -0
  152. package/build/module/sdk/scanner/ScannerCfg.js +28 -2
  153. package/build/module/sdk/shared/interfaces/Component.d.ts +4 -0
  154. package/build/module/sdk/shared/interfaces/Component.js +2 -0
  155. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  156. package/package.json +1 -1
  157. package/build/main/sdk/Services/Grpc/BaseService.js +0 -159
  158. package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +0 -20
  159. package/build/main/sdk/Services/Grpc/CryptographyService.js +0 -58
  160. package/build/main/sdk/Services/Grpc/DependencyService.js +0 -101
  161. package/build/main/sdk/Services/http/HttpClient.js +0 -81
  162. package/build/module/sdk/Services/Grpc/BaseService.js +0 -131
  163. package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +0 -20
  164. package/build/module/sdk/Services/Grpc/CryptographyService.js +0 -55
  165. package/build/module/sdk/Services/Grpc/DependencyService.js +0 -75
  166. package/build/module/sdk/Services/http/HttpClient.js +0 -75
  167. /package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  168. /package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -0
  169. /package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +0 -0
  170. /package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.d.ts +0 -0
  171. /package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -0
  172. /package/build/main/sdk/{Services → Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -0
  173. /package/build/main/sdk/{Services → Clients}/Transport/Transport.d.ts +0 -0
  174. /package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  175. /package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -0
  176. /package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +0 -0
  177. /package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.d.ts +0 -0
  178. /package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -0
  179. /package/build/module/sdk/{Services → Clients}/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -0
  180. /package/build/module/sdk/{Services → Clients}/Transport/Transport.d.ts +0 -0
@@ -0,0 +1,131 @@
1
+ import { CryptographyClient as GrpcCryptographyClient } from '../Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb';
2
+ import { BaseGRPCClient } from '../Grpc/BaseGRPCClient';
3
+ import { logger } from '../../Logger';
4
+ export class CryptographyClient extends BaseGRPCClient {
5
+ static clientName = 'Cryptography gRPC Client';
6
+ client;
7
+ /**
8
+ * Creates CryptographyService Instance.
9
+ * @param {string} token - Optional. API TOKEN.
10
+ * @param {string} hostName - Optional. Destination Host.
11
+ * @param {string} proxyHost -Optional. Proxy Host.
12
+ * @param {string} caCertPath - Optional. Path to certificates.
13
+ */
14
+ constructor(token, hostName, proxyHost, caCertPath) {
15
+ super({
16
+ HOSTNAME: hostName,
17
+ PROXY_URL: proxyHost,
18
+ CA_CERT: caCertPath,
19
+ CLIENT_NAME: CryptographyClient.clientName,
20
+ API_TOKEN: token,
21
+ });
22
+ this.client = new GrpcCryptographyClient(this.HOSTNAME, this.generateChannelCredentials());
23
+ }
24
+ async getAlgorithms(components) {
25
+ this.validateComponents(components);
26
+ const req = {
27
+ purlsList: components.map(comp => ({
28
+ purl: comp.purl,
29
+ requirement: comp.requirement || ''
30
+ }))
31
+ };
32
+ return new Promise((resolve, reject) => {
33
+ this.client.getAlgorithms(this.buildGRPCPurlRequest(req), (err, response) => {
34
+ if (err) {
35
+ const errorMessage = `Failed to get algorithms: ${err.message}`;
36
+ logger.log(`Error getting algorithms: ${errorMessage}`);
37
+ reject(new Error(errorMessage));
38
+ return;
39
+ }
40
+ try {
41
+ const result = this.handleResponse(response.toObject());
42
+ resolve(this.transformGrpcAlgorithmResponse(result));
43
+ }
44
+ catch (e) {
45
+ const errorMessage = `Failed to process algorithms response: ${e instanceof Error ? e.message : 'Unknown error'}`;
46
+ logger.log(`Error processing algorithms response: ${errorMessage}`);
47
+ reject(new Error(errorMessage));
48
+ }
49
+ });
50
+ });
51
+ }
52
+ async getEncryptionHints(components) {
53
+ this.validateComponents(components);
54
+ const req = {
55
+ purlsList: components.map(comp => ({
56
+ purl: comp.purl,
57
+ requirement: comp.requirement || ''
58
+ }))
59
+ };
60
+ return new Promise((resolve, reject) => {
61
+ this.client.getHintsInRange(this.buildGRPCPurlRequest(req), (err, response) => {
62
+ if (err) {
63
+ const errorMessage = `Failed to get encryption hints: ${err.message}`;
64
+ logger.log(`Error getting encryption hints: ${errorMessage}`);
65
+ reject(new Error(errorMessage));
66
+ return;
67
+ }
68
+ try {
69
+ const result = this.handleResponse(response.toObject());
70
+ resolve(this.transformGrpcHintsResponse(result));
71
+ }
72
+ catch (e) {
73
+ const errorMessage = `Failed to process hints response: ${e instanceof Error ? e.message : 'Unknown error'}`;
74
+ logger.log(`Error processing hints response: ${errorMessage}`);
75
+ reject(new Error(errorMessage));
76
+ }
77
+ });
78
+ });
79
+ }
80
+ validateComponents(components) {
81
+ if (!components || components.length === 0) {
82
+ throw new Error('Components array cannot be empty');
83
+ }
84
+ if (!Array.isArray(components)) {
85
+ throw new Error('Components must be an array');
86
+ }
87
+ for (const component of components) {
88
+ if (!component.purl || typeof component.purl !== 'string') {
89
+ throw new Error('Each component must have a valid purl string');
90
+ }
91
+ }
92
+ }
93
+ transformGrpcAlgorithmResponse(grpcResponse) {
94
+ return {
95
+ purls: grpcResponse.purlsList?.map((purl) => ({
96
+ purl: purl.purl,
97
+ version: purl.version || '',
98
+ algorithms: purl.algorithmsList?.map((algo) => ({
99
+ algorithm: algo.algorithm,
100
+ strength: algo.strength
101
+ })) || []
102
+ })) || [],
103
+ status: {
104
+ status: grpcResponse.status?.status || 'UNKNOWN',
105
+ message: grpcResponse.status?.message || ''
106
+ }
107
+ };
108
+ }
109
+ transformGrpcHintsResponse(grpcResponse) {
110
+ return {
111
+ purls: grpcResponse.purlsList?.map((purl) => ({
112
+ purl: purl.purl,
113
+ version: purl.version || '',
114
+ versions: purl.versionsList || [],
115
+ hints: purl.hintsList?.map((hint) => ({
116
+ id: hint.id,
117
+ name: hint.name,
118
+ description: hint.description,
119
+ category: hint.category,
120
+ url: hint.url,
121
+ purl: hint.purl
122
+ })) || []
123
+ })) || [],
124
+ status: {
125
+ status: grpcResponse.status?.status || 'UNKNOWN',
126
+ message: grpcResponse.status?.message || ''
127
+ }
128
+ };
129
+ }
130
+ }
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5Q2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DbGllbnRzL0NyeXB0b2dyYXBoeS9DcnlwdG9ncmFwaHlDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixJQUFJLHNCQUFzQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDaEksT0FBTyxFQUFFLGNBQWMsRUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBT3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDN0MsTUFBTSxDQUFVLFVBQVUsR0FBRywwQkFBMEIsQ0FBQztJQUN2RCxNQUFNLENBQXlCO0lBRXZDOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBYSxFQUFFLFFBQWdCLEVBQUUsU0FBa0IsRUFBRSxVQUFtQjtRQUNsRixLQUFLLENBQUM7WUFDSixRQUFRLEVBQUUsUUFBUTtZQUNsQixTQUFTLEVBQUUsU0FBUztZQUNwQixPQUFPLEVBQUUsVUFBVTtZQUNuQixXQUFXLEVBQUUsa0JBQWtCLENBQUMsVUFBVTtZQUMxQyxTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksc0JBQXNCLENBQ3RDLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQ2xDLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUF1QjtRQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsTUFBTSxHQUFHLEdBQWdCO1lBQ3ZCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dC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
@@ -0,0 +1,10 @@
1
+ import { HttpClient } from "../http/HttpClient";
2
+ import { Component } from "../../shared/interfaces/Component";
3
+ import { ICryptographyClient, AlgorithmResponse, HintsInRangeResponse } from "./ICryptographyClient";
4
+ export declare class CryptographyHttpClient extends HttpClient implements ICryptographyClient {
5
+ private client;
6
+ private readonly baseUrl;
7
+ constructor(token: string, hostName: string, proxyHost?: string, caCertPath?: string);
8
+ getAlgorithms(components: Component[]): Promise<AlgorithmResponse>;
9
+ getEncryptionHints(components: Component[]): Promise<HintsInRangeResponse>;
10
+ }
@@ -0,0 +1,54 @@
1
+ import { HttpClient } from "../http/HttpClient";
2
+ import { logger } from "../../Logger";
3
+ import { validateComponents } from "../helper/clientHelper";
4
+ export class CryptographyHttpClient extends HttpClient {
5
+ client;
6
+ baseUrl;
7
+ constructor(token, hostName, proxyHost, caCertPath) {
8
+ super();
9
+ this.client = new HttpClient({
10
+ HOST_URL: hostName,
11
+ API_KEY: token,
12
+ HTTPS_PROXY: proxyHost,
13
+ CA_CERT: caCertPath,
14
+ });
15
+ this.baseUrl = hostName;
16
+ }
17
+ async getAlgorithms(components) {
18
+ try {
19
+ validateComponents(components);
20
+ const response = await this.client.post(`${this.baseUrl}/api/v2/cryptography/algorithms`, { purls: components });
21
+ if (response.ok) {
22
+ const algorithms = await response.json();
23
+ return algorithms;
24
+ }
25
+ const errorText = await response.text();
26
+ const errorMessage = `Failed to get algorithms: ${response.status} ${response.statusText} - ${errorText}`;
27
+ logger.log(`Error getting algorithms: ${errorMessage}`);
28
+ throw new Error(errorMessage);
29
+ }
30
+ catch (error) {
31
+ logger.log('Error getting algorithms:', error);
32
+ throw this.handleError(error, 'Failed to get algorithms');
33
+ }
34
+ }
35
+ async getEncryptionHints(components) {
36
+ try {
37
+ validateComponents(components);
38
+ const response = await this.client.post(`${this.baseUrl}/api/v2/cryptography/hintsInRange`, { purls: components });
39
+ if (response.ok) {
40
+ const hints = await response.json();
41
+ return hints;
42
+ }
43
+ const errorText = await response.text();
44
+ const errorMessage = `Failed to get encryption hints: ${response.status} ${response.statusText} - ${errorText}`;
45
+ logger.log(`Error getting encryption hints: ${errorMessage}`);
46
+ throw new Error(errorMessage);
47
+ }
48
+ catch (error) {
49
+ logger.log('Error getting encryption hints:', error);
50
+ throw this.handleError(error, 'Failed to get encryption hints');
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5SHR0cENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ2xpZW50cy9DcnlwdG9ncmFwaHkvQ3J5cHRvZ3JhcGh5SHR0cENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU90QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsVUFBVTtJQUU1QyxNQUFNLENBQWE7SUFDVixPQUFPLENBQVM7SUFFakMsWUFBWSxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxTQUFrQixFQUFFLFVBQW1CO1FBQ2xGLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMzQixRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsS0FBSztZQUNkLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQzFCLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQXVCO1FBQ2hELElBQUksQ0FBQztZQUNILGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxpQ0FBaUMsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBRWpILElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekMsT0FBTyxVQUErQixDQUFDO1lBQ3pDLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFlBQVksR0FBRyw2QkFBNkIsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQzFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQXVCO1FBQ3JELElBQUksQ0FBQztZQUNILGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxtQ0FBbUMsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBRW5ILElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxLQUE2QixDQUFDO1lBQ3ZDLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFlBQVksR0FBRyxtQ0FBbUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQ2hILE1BQU0sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,40 @@
1
+ import { Component } from "../../shared/interfaces/Component";
2
+ export interface Hint {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ category: string;
7
+ url: string;
8
+ purl: string;
9
+ }
10
+ export interface Algorithm {
11
+ algorithm: string;
12
+ strength: string;
13
+ }
14
+ export interface Purl {
15
+ purl: string;
16
+ version: string;
17
+ }
18
+ export interface ComponentAlgorithm extends Purl {
19
+ algorithms: Algorithm[];
20
+ }
21
+ export interface Status {
22
+ status: string;
23
+ message: string;
24
+ }
25
+ export interface AlgorithmResponse {
26
+ purls: ComponentAlgorithm[];
27
+ status: Status;
28
+ }
29
+ export interface ComponentHintResponse extends Purl {
30
+ hints: Hint[];
31
+ versions: string[];
32
+ }
33
+ export interface HintsInRangeResponse {
34
+ purls: ComponentHintResponse[];
35
+ status: Status;
36
+ }
37
+ export interface ICryptographyClient {
38
+ getAlgorithms(components: Component[]): Promise<AlgorithmResponse>;
39
+ getEncryptionHints(components: Component[]): Promise<HintsInRangeResponse>;
40
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUNyeXB0b2dyYXBoeUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ2xpZW50cy9DcnlwdG9ncmFwaHkvSUNyeXB0b2dyYXBoeUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,8 +1,8 @@
1
- import * as DependenciesMessages from './scanoss/api/dependencies/v2/scanoss-dependencies_pb';
2
- import * as CommonMessages from './scanoss/api/common/v2/scanoss-common_pb';
3
- import { BaseService } from "./BaseService";
4
- export declare class DependencyService extends BaseService {
5
- static readonly serviceName = "DependencyService";
1
+ import * as DependenciesMessages from '../Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb';
2
+ import * as CommonMessages from '../Grpc/scanoss/api/common/v2/scanoss-common_pb';
3
+ import { BaseGRPCClient } from "../Grpc/BaseGRPCClient";
4
+ export declare class DependencyClient extends BaseGRPCClient {
5
+ static readonly clientName = "Dependency gRPC Client";
6
6
  private client;
7
7
  /**
8
8
  * Creates DependencyService Instance.
@@ -0,0 +1,74 @@
1
+ import { DependenciesClient } from "../Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb";
2
+ import * as DependenciesMessages from '../Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb';
3
+ import * as CommonMessages from '../Grpc/scanoss/api/common/v2/scanoss-common_pb';
4
+ import { BaseGRPCClient } from "../Grpc/BaseGRPCClient";
5
+ export class DependencyClient extends BaseGRPCClient {
6
+ static clientName = 'Dependency gRPC Client';
7
+ client;
8
+ /**
9
+ * Creates DependencyService Instance.
10
+ * @param {string} hostName - Optional. Destination Host.
11
+ * @param {string} proxyHost -Optional. Proxy Host.
12
+ * @param {string} caCertPath - Optional. Path to certificates.
13
+ */
14
+ constructor(hostName, proxyHost, caCertPath) {
15
+ super({
16
+ HOSTNAME: hostName,
17
+ CLIENT_NAME: DependencyClient.clientName,
18
+ PROXY_URL: proxyHost,
19
+ CA_CERT: caCertPath,
20
+ });
21
+ this.client = new DependenciesClient(this.HOSTNAME, this.generateChannelCredentials());
22
+ }
23
+ async get(req) {
24
+ return new Promise((resolve, reject) => {
25
+ this.client.getDependencies(req, (err, response) => {
26
+ if (err)
27
+ reject(err);
28
+ resolve(response);
29
+ });
30
+ });
31
+ }
32
+ buildDependencyRequestMsg(plainObj) {
33
+ try {
34
+ const depMessage = new DependenciesMessages.DependencyRequest();
35
+ for (const dependency of plainObj.filesList) {
36
+ const fileMsg = new DependenciesMessages.DependencyRequest.Files();
37
+ fileMsg.setFile(dependency.file);
38
+ for (const purl of dependency.purlsList) {
39
+ const purlMsg = new DependenciesMessages.DependencyRequest.Purls();
40
+ purlMsg.setPurl(purl.purl);
41
+ purlMsg.setRequirement(purl?.requirement);
42
+ fileMsg.addPurls(purlMsg);
43
+ }
44
+ depMessage.addFiles(fileMsg);
45
+ }
46
+ return depMessage;
47
+ }
48
+ catch (e) {
49
+ console.error(e);
50
+ return null;
51
+ }
52
+ }
53
+ async echo(req) {
54
+ return new Promise((resolve, reject) => {
55
+ this.client.echo(req, (err, response) => {
56
+ if (err)
57
+ reject(err);
58
+ resolve(response);
59
+ });
60
+ });
61
+ }
62
+ buildEchoRequestMsg(plainObj) {
63
+ try {
64
+ const echoMessage = new CommonMessages.EchoRequest();
65
+ echoMessage.setMessage(plainObj.message);
66
+ return echoMessage;
67
+ }
68
+ catch (e) {
69
+ console.error(e);
70
+ return null;
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ2xpZW50cy9EZXBlbmRlbmN5L0RlcGVuZGVuY3lDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdEcsT0FBTyxLQUFLLG9CQUFvQixNQUFNLDZEQUE2RCxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxjQUFjLE1BQU0saURBQWlELENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBQzNDLE1BQU0sQ0FBVSxVQUFVLEdBQUcsd0JBQXdCLENBQUM7SUFDckQsTUFBTSxDQUFxQjtJQUVuQzs7Ozs7T0FLRztJQUNILFlBQVksUUFBaUIsRUFBRSxTQUFrQixFQUFFLFVBQW1CO1FBQ3BFLEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVO1lBQ3hDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FDbEMsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUNkLEdBQTJDO1FBRTNDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx5QkFBeUIsQ0FDOUIsUUFBeUQ7UUFFekQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hFLEtBQUssTUFBTSxVQUFVLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuRSxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ25FLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQixPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDMUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztnQkFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQ2YsR0FBK0I7UUFFL0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksR0FBRztvQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQixDQUN4QixRQUE2QztRQUU3QyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQyJ9
@@ -0,0 +1,9 @@
1
+ import { HttpClient } from "../http/HttpClient";
2
+ import { DependencyRequest, DependencyResponse, IDependencyClient } from "./IDependencyClient";
3
+ export declare class DependencyHttpClient extends HttpClient implements IDependencyClient {
4
+ private client;
5
+ private readonly baseUrl;
6
+ constructor(token: string, hostName: string, ignoreCertErrors?: boolean, proxyHost?: string, caCertPath?: string);
7
+ getDependencies(req: DependencyRequest): Promise<DependencyResponse>;
8
+ private toDependencyResponse;
9
+ }
@@ -0,0 +1,59 @@
1
+ import { HttpClient } from "../http/HttpClient";
2
+ export class DependencyHttpClient extends HttpClient {
3
+ client;
4
+ baseUrl;
5
+ constructor(token, hostName, ignoreCertErrors = false, proxyHost, caCertPath) {
6
+ super();
7
+ this.client = new HttpClient({
8
+ HOST_URL: hostName,
9
+ API_KEY: token,
10
+ HTTPS_PROXY: proxyHost,
11
+ CA_CERT: caCertPath,
12
+ IGNORE_CERT_ERRORS: ignoreCertErrors
13
+ });
14
+ this.baseUrl = hostName;
15
+ }
16
+ async getDependencies(req) {
17
+ try {
18
+ const response = await this.client.post(`${this.baseUrl}/api/v2/dependencies/dependencies`, req);
19
+ if (response.ok) {
20
+ return this.toDependencyResponse(await response.json());
21
+ }
22
+ const errorText = await response.text();
23
+ const errorMessage = `Failed to get dependencies: ${response.status} ${response.statusText} - ${errorText}`;
24
+ throw new Error(errorMessage);
25
+ }
26
+ catch (error) {
27
+ throw this.handleError(error, 'Failed to get dependencies');
28
+ }
29
+ }
30
+ // TODO: Remove this adapter with new protobuf definition. This method keeps backward compatibility
31
+ toDependencyResponse(dependencies) {
32
+ // Convert files array to filesList
33
+ const filesList = dependencies.files.map(file => ({
34
+ file: file.file,
35
+ id: file.id,
36
+ status: file.status,
37
+ dependenciesList: file.dependencies.map(dep => ({
38
+ component: dep.component,
39
+ purl: dep.purl,
40
+ version: dep.version,
41
+ licensesList: dep.licenses.map(license => ({
42
+ name: license.name,
43
+ spdxId: license.spdxId,
44
+ isSpdxApproved: license.isSpdxApproved,
45
+ url: license.url
46
+ })),
47
+ url: dep.url,
48
+ comment: dep.comment,
49
+ // Add scope if it exists in the original, otherwise default to "dependencies"
50
+ scope: dep.scope || "dependencies"
51
+ }))
52
+ }));
53
+ return {
54
+ filesList: filesList,
55
+ status: dependencies.status,
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeUh0dHBDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NsaWVudHMvRGVwZW5kZW5jeS9EZXBlbmRlbmN5SHR0cENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFVBQVU7SUFFMUMsTUFBTSxDQUFhO0lBQ1YsT0FBTyxDQUFTO0lBRWpDLFlBQVksS0FBYSxFQUFFLFFBQWdCLEVBQUUsbUJBQTRCLEtBQUssRUFBQyxTQUFrQixFQUFFLFVBQW1CO1FBQ3BILEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMzQixRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsS0FBSztZQUNkLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLGtCQUFrQixFQUFFLGdCQUFnQjtTQUNyQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFzQjtRQUNqRCxJQUFHLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sbUNBQW1DLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakcsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLCtCQUErQixRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLE1BQU0sU0FBUyxFQUFFLENBQUM7WUFDNUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUNELG1HQUFtRztJQUMzRixvQkFBb0IsQ0FBQyxZQUFpQjtRQUM1QyxtQ0FBbUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlDLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztnQkFDeEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDcEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDekMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07b0JBQ3RCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztvQkFDdEMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0gsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUNaLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDcEIsOEVBQThFO2dCQUM5RSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxjQUFjO2FBQ25DLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTztZQUNMLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtTQUM1QixDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -0,0 +1,41 @@
1
+ import { Component } from "../../shared/interfaces/Component";
2
+ interface License {
3
+ name: string;
4
+ spdxId: string;
5
+ isSpdxApproved: boolean;
6
+ url: string;
7
+ }
8
+ export interface Dependency {
9
+ component: string;
10
+ purl: string;
11
+ version: string;
12
+ licensesList: License[];
13
+ url: string;
14
+ comment: string;
15
+ }
16
+ export interface DependencyFile {
17
+ file: string;
18
+ id: string;
19
+ status: string;
20
+ dependenciesList: Dependency[];
21
+ }
22
+ export interface Status {
23
+ status: string;
24
+ message: string;
25
+ }
26
+ export interface DependencyResponse {
27
+ filesList: DependencyFile[];
28
+ status: Status;
29
+ }
30
+ export interface DependencyRequest {
31
+ files: [
32
+ {
33
+ file: string;
34
+ purls: Array<Component>;
35
+ }
36
+ ];
37
+ }
38
+ export interface IDependencyClient {
39
+ getDependencies(req: DependencyRequest): Promise<DependencyResponse>;
40
+ }
41
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSURlcGVuZGVuY3lDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NsaWVudHMvRGVwZW5kZW5jeS9JRGVwZW5kZW5jeUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -4,19 +4,17 @@ export interface PurlRequest extends CommonMessages.PurlRequest.AsObject {
4
4
  }
5
5
  export interface EchoRequest extends CommonMessages.EchoRequest.AsObject {
6
6
  }
7
- export declare class BaseService {
7
+ export declare class BaseGRPCClient {
8
8
  protected _HOSTNAME: string;
9
9
  protected _API_TOKEN: string;
10
- protected _IS_PREMIUM_SERVICE: boolean;
11
- protected _SERVICE_NAME: string;
10
+ protected _CLIENT_NAME: string;
12
11
  protected _CA_CERT: string;
13
12
  protected _PROXY_URL: string;
14
- constructor({ HOSTNAME, PROXY_URL, API_TOKEN, IS_PREMIUM_SERVICE, SERVICE_NAME, CA_CERT, }: {
13
+ constructor({ HOSTNAME, PROXY_URL, API_TOKEN, CLIENT_NAME, CA_CERT, }: {
15
14
  HOSTNAME?: string;
16
15
  PROXY_URL?: string;
17
16
  API_TOKEN?: string;
18
- IS_PREMIUM_SERVICE?: boolean;
19
- SERVICE_NAME?: string;
17
+ CLIENT_NAME?: string;
20
18
  CA_CERT?: string;
21
19
  });
22
20
  protected handleResponse(response: {
@@ -25,14 +23,12 @@ export declare class BaseService {
25
23
  protected buildGRPCPurlRequest(purlRequest: PurlRequest): CommonMessages.PurlRequest;
26
24
  protected buildGRPCEchoRequest(echoRequest: EchoRequest): CommonMessages.EchoRequest;
27
25
  protected generateChannelCredentials(): grpc.ChannelCredentials;
28
- set SERVICE_NAME(serviceName: string);
29
- get SERVICE_NAME(): string;
26
+ set CLIENT_NAME(serviceName: string);
27
+ get CLIENT_NAME(): string;
30
28
  set HOSTNAME(host: string);
31
29
  get HOSTNAME(): string;
32
30
  set API_TOKEN(apiToken: string);
33
31
  get API_TOKEN(): string;
34
- set IS_PREMIUM_SERVICE(isPremiumService: boolean);
35
- get IS_PREMIUM_SERVICE(): boolean;
36
32
  set CA_CERT(caCertPath: string);
37
33
  get CA_CERT(): string;
38
34
  set PROXY_URL(proxyURL: string);
@@ -0,0 +1,122 @@
1
+ import * as grpc from '@grpc/grpc-js';
2
+ import * as CommonMessages from './scanoss/api/common/v2/scanoss-common_pb';
3
+ import { Logger, logger } from '../../Logger';
4
+ import { HEADER_NAME_API_TOKEN, SCANOSS_GRPC_ENDPOINT } from '../../Constants';
5
+ var Level = Logger.Level;
6
+ import { ERROR_SERVICES_GRPC_API_TOKEN_REQUIRED } from '../../Errors';
7
+ import fs from "fs";
8
+ export class BaseGRPCClient {
9
+ _HOSTNAME = SCANOSS_GRPC_ENDPOINT;
10
+ _API_TOKEN = '';
11
+ _CLIENT_NAME = '';
12
+ _CA_CERT;
13
+ _PROXY_URL;
14
+ constructor({ HOSTNAME, PROXY_URL, API_TOKEN, CLIENT_NAME, CA_CERT, }) {
15
+ this.API_TOKEN = API_TOKEN;
16
+ this.PROXY_URL = PROXY_URL;
17
+ this.CLIENT_NAME = CLIENT_NAME;
18
+ this.CA_CERT = CA_CERT;
19
+ this.HOSTNAME = HOSTNAME;
20
+ if (this.PROXY_URL)
21
+ process.env.grpc_proxy = this.PROXY_URL;
22
+ if (!this.API_TOKEN)
23
+ throw new Error(ERROR_SERVICES_GRPC_API_TOKEN_REQUIRED);
24
+ }
25
+ handleResponse(response) {
26
+ const { status, ...responseWithoutStatus } = response;
27
+ if (status.status === CommonMessages.StatusCode.FAILED) {
28
+ logger.log(`[ GRPC ${this._CLIENT_NAME} ] - Server GRPC Code: ${status.status} - ${status.message}`, Level.error);
29
+ throw new Error(status.message);
30
+ }
31
+ else if (status.status === CommonMessages.StatusCode.WARNING ||
32
+ status.status === CommonMessages.StatusCode.SUCCEEDED_WITH_WARNINGS ||
33
+ status.status === CommonMessages.StatusCode.UNSPECIFIED) {
34
+ logger.log(`[ GRPC ${this._CLIENT_NAME} ] - Server GRPC Code: ${status.status} - ${status.message}`, Level.warn);
35
+ }
36
+ else if (status.status === CommonMessages.StatusCode.SUCCESS) {
37
+ logger.log(`[ GRPC ${this._CLIENT_NAME} ] - Server GRPC Code: ${status.status} - ${status.message}`, Level.info);
38
+ }
39
+ return responseWithoutStatus;
40
+ }
41
+ buildGRPCPurlRequest(purlRequest) {
42
+ const GRPCPurlList = purlRequest.purlsList.map(({ purl, requirement }) => {
43
+ const gRPCPurlMessage = new CommonMessages.PurlRequest.Purls();
44
+ gRPCPurlMessage.setPurl(purl);
45
+ gRPCPurlMessage.setRequirement(requirement);
46
+ return gRPCPurlMessage;
47
+ });
48
+ const gRPCPurlRequest = new CommonMessages.PurlRequest();
49
+ gRPCPurlRequest.setPurlsList(GRPCPurlList);
50
+ return gRPCPurlRequest;
51
+ }
52
+ buildGRPCEchoRequest(echoRequest) {
53
+ const gRPCEchoRequest = new CommonMessages.EchoRequest();
54
+ gRPCEchoRequest.setMessage(echoRequest.message);
55
+ return gRPCEchoRequest;
56
+ }
57
+ generateChannelCredentials() {
58
+ let cc = grpc.credentials.createSsl();
59
+ if (this.CA_CERT && this.PROXY_URL) {
60
+ const caCert = fs.readFileSync(this.CA_CERT);
61
+ cc = grpc.credentials.createSsl(caCert);
62
+ }
63
+ if (this.API_TOKEN) {
64
+ const metaCallback = (_params, callback) => {
65
+ const metadata = new grpc.Metadata();
66
+ metadata.add(HEADER_NAME_API_TOKEN, this.API_TOKEN);
67
+ callback(null, metadata);
68
+ };
69
+ const callCredentials = grpc.credentials.createFromMetadataGenerator(metaCallback);
70
+ cc = grpc.credentials.combineChannelCredentials(cc, callCredentials);
71
+ }
72
+ return cc;
73
+ }
74
+ set CLIENT_NAME(serviceName) {
75
+ this._CLIENT_NAME = serviceName;
76
+ }
77
+ get CLIENT_NAME() {
78
+ return this._CLIENT_NAME;
79
+ }
80
+ set HOSTNAME(host) {
81
+ if (host !== null && host !== '') {
82
+ //Extract host from URL (hostname:port)
83
+ if (host.startsWith('http')) {
84
+ const apiURL = new URL(host);
85
+ let hostname;
86
+ let port;
87
+ if (!apiURL.port)
88
+ port = apiURL.protocol === 'https:' ? '443' : '80';
89
+ hostname = apiURL.host;
90
+ this._HOSTNAME = `${hostname}:${port}`;
91
+ return;
92
+ }
93
+ this._HOSTNAME = host;
94
+ }
95
+ }
96
+ get HOSTNAME() {
97
+ return this._HOSTNAME;
98
+ }
99
+ set API_TOKEN(apiToken) {
100
+ if (apiToken != null && apiToken != '')
101
+ this._API_TOKEN = apiToken;
102
+ }
103
+ get API_TOKEN() {
104
+ return this._API_TOKEN;
105
+ }
106
+ set CA_CERT(caCertPath) {
107
+ if (caCertPath != null && caCertPath != '')
108
+ this._CA_CERT = caCertPath;
109
+ }
110
+ get CA_CERT() {
111
+ return this._CA_CERT;
112
+ }
113
+ set PROXY_URL(proxyURL) {
114
+ if (proxyURL != null && proxyURL != '') {
115
+ this._PROXY_URL = proxyURL;
116
+ }
117
+ }
118
+ get PROXY_URL() {
119
+ return this._PROXY_URL;
120
+ }
121
+ }
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUdSUENDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NsaWVudHMvR3JwYy9CYXNlR1JQQ0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssY0FBYyxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLElBQU8sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDNUIsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQU1wQixNQUFNLE9BQU8sY0FBYztJQUNmLFNBQVMsR0FBVyxxQkFBcUIsQ0FBQztJQUMxQyxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsUUFBUSxDQUFTO0lBQ2pCLFVBQVUsQ0FBUztJQUU3QixZQUFZLEVBQ0UsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sR0FPcEI7UUFDQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUd6QixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FB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
@@ -1,2 +1,2 @@
1
1
  // GENERATED CODE -- NO SERVICES IN PROTO
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jb21tb25fZ3JwY19wYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvU2VydmljZXMvR3JwYy9zY2Fub3NzL2FwaS9jb21tb24vdjIvc2Nhbm9zcy1jb21tb25fZ3JwY19wYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUMifQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jb21tb25fZ3JwY19wYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ2xpZW50cy9HcnBjL3NjYW5vc3MvYXBpL2NvbW1vbi92Mi9zY2Fub3NzLWNvbW1vbl9ncnBjX3BiLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QyJ9