scanoss 0.21.1 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +16 -4
  2. package/build/main/cli/bin/cli-bin.js +37 -1
  3. package/build/main/cli/commands/components.d.ts +1 -0
  4. package/build/main/cli/commands/components.js +98 -0
  5. package/build/main/cli/commands/scan.js +8 -3
  6. package/build/main/index.d.ts +6 -0
  7. package/build/main/index.js +9 -1
  8. package/build/main/sdk/BaseConfig.d.ts +5 -1
  9. package/build/main/sdk/BaseConfig.js +6 -2
  10. package/build/main/sdk/Clients/Components/ComponentsGRPCClient.d.ts +13 -0
  11. package/build/main/sdk/Clients/Components/ComponentsGRPCClient.js +33 -0
  12. package/build/main/sdk/Clients/Components/ComponentsHttpClient.d.ts +37 -0
  13. package/build/main/sdk/Clients/Components/ComponentsHttpClient.js +122 -0
  14. package/build/main/sdk/Clients/Components/IComponentsClient.d.ts +71 -0
  15. package/build/main/sdk/Clients/Components/IComponentsClient.js +3 -0
  16. package/build/main/sdk/Clients/Cryptography/CryptographyGRPCClient.d.ts +3 -0
  17. package/build/main/sdk/Clients/Cryptography/CryptographyGRPCClient.js +4 -1
  18. package/build/main/sdk/Clients/Cryptography/CryptographyHttpClient.d.ts +22 -3
  19. package/build/main/sdk/Clients/Cryptography/CryptographyHttpClient.js +28 -12
  20. package/build/main/sdk/Clients/Dependency/DependencyGRPCClient.d.ts +3 -0
  21. package/build/main/sdk/Clients/Dependency/DependencyGRPCClient.js +4 -1
  22. package/build/main/sdk/Clients/Dependency/DependencyHttpClient.d.ts +22 -3
  23. package/build/main/sdk/Clients/Dependency/DependencyHttpClient.js +27 -13
  24. package/build/main/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +81 -0
  25. package/build/main/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +160 -0
  26. package/build/main/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
  27. package/build/main/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_pb.js +2313 -0
  28. package/build/main/sdk/Clients/Transport/Transport.d.ts +4 -4
  29. package/build/main/sdk/Clients/Vulnerability/VulnerabilityHttpClient.d.ts +2 -3
  30. package/build/main/sdk/Clients/Vulnerability/VulnerabilityHttpClient.js +7 -13
  31. package/build/main/sdk/Clients/http/HttpClient.d.ts +8 -16
  32. package/build/main/sdk/Clients/http/HttpClient.js +4 -1
  33. package/build/main/sdk/Clients/interfaces/ClientConfig.d.ts +8 -9
  34. package/build/main/sdk/Clients/interfaces/ClientConfig.js +1 -7
  35. package/build/main/sdk/Components/ComponentsScanner.d.ts +34 -0
  36. package/build/main/sdk/Components/ComponentsScanner.js +123 -0
  37. package/build/main/sdk/Components/ComponentsScannerCfg.d.ts +21 -0
  38. package/build/main/sdk/Components/ComponentsScannerCfg.js +54 -0
  39. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +12 -6
  40. package/build/main/sdk/Cryptography/CryptoCfg.js +8 -11
  41. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +12 -6
  42. package/build/main/sdk/Dependencies/DependencyScanner.js +13 -4
  43. package/build/main/sdk/Dependencies/DependencyScannerCfg.js +8 -11
  44. package/build/main/sdk/Vulnerability/VulnerabilityCfg.js +8 -11
  45. package/build/main/sdk/Vulnerability/VulnerabilityScanner.js +11 -2
  46. package/build/main/sdk/scanner/ScannerCfg.js +10 -11
  47. package/build/main/tsconfig.tsbuildinfo +1 -1
  48. package/build/module/cli/bin/cli-bin.js +37 -1
  49. package/build/module/cli/commands/components.d.ts +1 -0
  50. package/build/module/cli/commands/components.js +92 -0
  51. package/build/module/cli/commands/scan.js +8 -3
  52. package/build/module/index.d.ts +6 -0
  53. package/build/module/index.js +9 -1
  54. package/build/module/sdk/BaseConfig.d.ts +5 -1
  55. package/build/module/sdk/BaseConfig.js +6 -2
  56. package/build/module/sdk/Clients/Components/ComponentsGRPCClient.d.ts +13 -0
  57. package/build/module/sdk/Clients/Components/ComponentsGRPCClient.js +29 -0
  58. package/build/module/sdk/Clients/Components/ComponentsHttpClient.d.ts +37 -0
  59. package/build/module/sdk/Clients/Components/ComponentsHttpClient.js +118 -0
  60. package/build/module/sdk/Clients/Components/IComponentsClient.d.ts +71 -0
  61. package/build/module/sdk/Clients/Components/IComponentsClient.js +2 -0
  62. package/build/module/sdk/Clients/Cryptography/CryptographyGRPCClient.d.ts +3 -0
  63. package/build/module/sdk/Clients/Cryptography/CryptographyGRPCClient.js +4 -1
  64. package/build/module/sdk/Clients/Cryptography/CryptographyHttpClient.d.ts +22 -3
  65. package/build/module/sdk/Clients/Cryptography/CryptographyHttpClient.js +28 -14
  66. package/build/module/sdk/Clients/Dependency/DependencyGRPCClient.d.ts +3 -0
  67. package/build/module/sdk/Clients/Dependency/DependencyGRPCClient.js +4 -1
  68. package/build/module/sdk/Clients/Dependency/DependencyHttpClient.d.ts +22 -3
  69. package/build/module/sdk/Clients/Dependency/DependencyHttpClient.js +27 -15
  70. package/build/module/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +81 -0
  71. package/build/module/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +160 -0
  72. package/build/module/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
  73. package/build/module/sdk/Clients/Grpc/scanoss/api/components/v2/scanoss-components_pb.js +2313 -0
  74. package/build/module/sdk/Clients/Transport/Transport.d.ts +4 -4
  75. package/build/module/sdk/Clients/Vulnerability/VulnerabilityHttpClient.d.ts +2 -3
  76. package/build/module/sdk/Clients/Vulnerability/VulnerabilityHttpClient.js +7 -15
  77. package/build/module/sdk/Clients/http/HttpClient.d.ts +8 -16
  78. package/build/module/sdk/Clients/http/HttpClient.js +4 -1
  79. package/build/module/sdk/Clients/interfaces/ClientConfig.d.ts +8 -9
  80. package/build/module/sdk/Clients/interfaces/ClientConfig.js +2 -6
  81. package/build/module/sdk/Components/ComponentsScanner.d.ts +34 -0
  82. package/build/module/sdk/Components/ComponentsScanner.js +119 -0
  83. package/build/module/sdk/Components/ComponentsScannerCfg.d.ts +21 -0
  84. package/build/module/sdk/Components/ComponentsScannerCfg.js +50 -0
  85. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +12 -6
  86. package/build/module/sdk/Cryptography/CryptoCfg.js +8 -11
  87. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +12 -6
  88. package/build/module/sdk/Dependencies/DependencyScanner.js +13 -4
  89. package/build/module/sdk/Dependencies/DependencyScannerCfg.js +8 -11
  90. package/build/module/sdk/Vulnerability/VulnerabilityCfg.js +8 -11
  91. package/build/module/sdk/Vulnerability/VulnerabilityScanner.js +11 -2
  92. package/build/module/sdk/scanner/ScannerCfg.js +10 -11
  93. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  94. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import FormData from 'form-data';
2
2
  export declare abstract class Transport<T1> {
3
- abstract get(url: string): Promise<T1>;
4
- abstract post(url: string, body: FormData): Promise<T1>;
5
- abstract put(url: string, body: FormData): Promise<T1>;
6
- abstract delete(url: string): Promise<T1>;
3
+ protected abstract get(url: string): Promise<T1>;
4
+ protected abstract post(url: string, body: FormData): Promise<T1>;
5
+ protected abstract put(url: string, body: FormData): Promise<T1>;
6
+ protected abstract delete(url: string): Promise<T1>;
7
7
  }
@@ -2,10 +2,9 @@ import { HttpClient } from "../http/HttpClient";
2
2
  import { IVulnerabilityClient } from "./IVulnerabilityClient";
3
3
  import { Component } from "../../types/common/types";
4
4
  import { ComponentsVulnerabilitiesResponse, ComponentVulnerabilityResponse } from "../../types/vulnerability/types";
5
+ import { ClientConfig } from "../interfaces/ClientConfig";
5
6
  export declare class VulnerabilityHttpClient extends HttpClient implements IVulnerabilityClient {
6
- private client;
7
- private readonly baseUrl;
8
- constructor(token: string, hostName: string, ignoreCertErrors?: boolean, proxyHost?: string, caCertPath?: string);
7
+ constructor(clientConfig: ClientConfig);
9
8
  getVulnerabilitiesComponents(components: Array<Component>): Promise<ComponentsVulnerabilitiesResponse>;
10
9
  getVulnerabilitiesComponent(component: Component): Promise<ComponentVulnerabilityResponse>;
11
10
  }
@@ -1,23 +1,14 @@
1
1
  import { HttpClient } from "../http/HttpClient";
2
2
  import { logger } from "../../Logger";
3
3
  export class VulnerabilityHttpClient extends HttpClient {
4
- client;
5
- baseUrl;
6
- constructor(token, hostName, ignoreCertErrors = false, proxyHost, caCertPath) {
7
- super();
8
- this.client = new HttpClient({
9
- HOST_URL: hostName,
10
- API_KEY: token,
11
- HTTPS_PROXY: proxyHost,
12
- CA_CERT: caCertPath,
13
- IGNORE_CERT_ERRORS: ignoreCertErrors
14
- });
15
- this.baseUrl = hostName;
4
+ constructor(clientConfig) {
5
+ super(clientConfig);
16
6
  }
17
7
  async getVulnerabilitiesComponents(components) {
18
8
  try {
9
+ const baseURL = this.hostURL();
19
10
  logger.debug(`Getting vulnerabilities for ${components.map((c) => JSON.stringify(c, null, 2))} components`);
20
- const response = await this.client.post(`${this.baseUrl}/v2/vulnerabilities/components`, { components: components });
11
+ const response = await this.post(`${baseURL}/v2/vulnerabilities/components`, { components: components });
21
12
  if (response.ok) {
22
13
  return await response.json();
23
14
  }
@@ -31,12 +22,13 @@ export class VulnerabilityHttpClient extends HttpClient {
31
22
  }
32
23
  async getVulnerabilitiesComponent(component) {
33
24
  try {
25
+ const baseURL = this.hostURL();
34
26
  const queryParams = new URLSearchParams();
35
27
  queryParams.append('purl', component.purl);
36
28
  if (component.requirement) {
37
29
  queryParams.append('requirement', component.requirement);
38
30
  }
39
- const response = await this.client.get(`${this.baseUrl}/api/v2/vulnerabilities/component?${queryParams.toString()}`);
31
+ const response = await this.get(`${baseURL}/api/v2/vulnerabilities/component?${queryParams.toString()}`);
40
32
  if (response.ok) {
41
33
  return await response.json();
42
34
  }
@@ -49,4 +41,4 @@ export class VulnerabilityHttpClient extends HttpClient {
49
41
  }
50
42
  }
51
43
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVnVsbmVyYWJpbGl0eUh0dHBDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NsaWVudHMvVnVsbmVyYWJpbGl0eS9WdWxuZXJhYmlsaXR5SHR0cENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUl0QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsVUFBVTtJQUM3QyxNQUFNLENBQWE7SUFDVixPQUFPLENBQVM7SUFFakMsWUFBWSxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxtQkFBNEIsS0FBSyxFQUFFLFNBQWtCLEVBQUUsVUFBbUI7UUFDckgsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsV0FBVyxFQUFFLFNBQVM7WUFDdEIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsa0JBQWtCLEVBQUUsZ0JBQWdCO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQzFCLENBQUM7SUFFTSxLQUFLLENBQUMsNEJBQTRCLENBQUMsVUFBNEI7UUFDcEUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pHLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxnQ0FBZ0MsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3JILElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBdUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsa0NBQWtDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvRyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLFNBQW9CO1FBQzNELElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDMUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMxQixXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxxQ0FBcUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0SCxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQW9DLENBQUM7WUFDakUsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLGtDQUFrQyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLE1BQU0sU0FBUyxFQUFFLENBQUM7WUFDL0csTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVnVsbmVyYWJpbGl0eUh0dHBDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NsaWVudHMvVnVsbmVyYWJpbGl0eS9WdWxuZXJhYmlsaXR5SHR0cENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt0QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsVUFBVTtJQUVyRCxZQUFZLFlBQTBCO1FBQ3BDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLFVBQTRCO1FBQ3BFLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekcsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxnQ0FBZ0MsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3pHLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBdUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsa0NBQWtDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvRyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLFNBQW9CO1FBQzNELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDMUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBSSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLHFDQUFxQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFHLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBb0MsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsa0NBQWtDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvRyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1,24 +1,16 @@
1
1
  import { Response } from 'node-fetch';
2
2
  import { Transport } from '../Transport/Transport';
3
3
  import FormData from 'form-data';
4
- export interface HttpProxyConfig {
5
- PAC_PROXY?: string;
6
- API_KEY?: string;
7
- NO_PROXY?: string;
8
- HTTP_PROXY?: string;
9
- HTTPS_PROXY?: string;
10
- IGNORE_CERT_ERRORS?: boolean;
11
- CA_CERT?: string;
12
- HOST_URL: string;
13
- }
4
+ import { ClientConfig } from "../interfaces/ClientConfig";
14
5
  export declare class HttpClient extends Transport<Response> {
15
6
  private readonly proxyAgent;
16
- protected cfg: HttpProxyConfig;
17
- constructor(cfg?: HttpProxyConfig);
7
+ protected cfg: ClientConfig;
8
+ constructor(cfg?: ClientConfig);
18
9
  private init;
19
- get(url: string): Promise<Response>;
20
- post(url: string, body: any): Promise<Response>;
21
- delete(url: string): Promise<Response>;
22
- put(url: string, body: FormData): Promise<Response>;
10
+ protected get(url: string): Promise<Response>;
11
+ protected post(url: string, body: any): Promise<Response>;
12
+ protected delete(url: string): Promise<Response>;
13
+ protected put(url: string, body: FormData): Promise<Response>;
23
14
  protected handleError(error: unknown, context: string): Error;
15
+ protected hostURL(): string;
24
16
  }
@@ -78,5 +78,8 @@ export class HttpClient extends Transport {
78
78
  }
79
79
  return new Error(`${context}: Unknown error occurred`);
80
80
  }
81
+ hostURL() {
82
+ return this.cfg.HOST_URL;
83
+ }
81
84
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ2xpZW50cy9odHRwL0h0dHBDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFtQixNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFhMUMsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFtQjtJQUU5QixVQUFVLENBQWE7SUFDOUIsR0FBRyxDQUFrQjtJQUUvQixZQUFZLEdBQXFCO1FBQy9CLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLElBQUk7UUFDVixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQUc7WUFDcEIsVUFBVSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsSUFBSSxFQUFFO1lBQ2pELFdBQVcsRUFBRyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLElBQUksRUFBRTtZQUNwRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMs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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ2xpZW50cy9odHRwL0h0dHBDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFtQixNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLMUMsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFtQjtJQUU5QixVQUFVLENBQWE7SUFDOUIsR0FBRyxDQUFlO0lBRTVCLFlBQVksR0FBa0I7UUFDNUIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sSUFBSTtRQUNWLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5RSxNQUFNLFdBQVcsR0FBRztZQUNwQixVQUFVLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxJQUFJLEVBQUU7WUFDakQsV0FBVyxFQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsSUFBSSxFQUFFO1lBQ3BELFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxD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
@@ -1,11 +1,10 @@
1
- export declare enum Protocol {
2
- REST = "REST",
3
- GRPC = "GRPC"
4
- }
5
1
  export interface ClientConfig {
6
- token?: string;
7
- hostName: string;
8
- proxyHost?: string;
9
- caCertPath?: string;
10
- protocol?: Protocol;
2
+ PAC_PROXY?: string;
3
+ API_KEY?: string;
4
+ NO_PROXY?: string;
5
+ HTTP_PROXY?: string;
6
+ HTTPS_PROXY?: string;
7
+ IGNORE_CERT_ERRORS?: boolean;
8
+ CA_CERT?: string;
9
+ HOST_URL: string;
11
10
  }
@@ -1,6 +1,2 @@
1
- export var Protocol;
2
- (function (Protocol) {
3
- Protocol["REST"] = "REST";
4
- Protocol["GRPC"] = "GRPC";
5
- })(Protocol || (Protocol = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DbGllbnRzL2ludGVyZmFjZXMvQ2xpZW50Q29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkIifQ==
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DbGllbnRzL2ludGVyZmFjZXMvQ2xpZW50Q29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,34 @@
1
+ import { ComponentsScannerCfg } from './ComponentsScannerCfg';
2
+ import { ComponentSearchRequest, ComponentSearchResponse, ComponentVersionRequest, ComponentVersionResponse, ComponentStatisticResponse } from "../Clients/Components/IComponentsClient";
3
+ import { Component } from "../types/common/types";
4
+ export declare class ComponentsScanner {
5
+ private componentsClient;
6
+ private config;
7
+ constructor(cfg?: ComponentsScannerCfg);
8
+ /**
9
+ * Search for components based on search criteria
10
+ * @param searchRequest - Component search parameters
11
+ * @returns Promise<ComponentSearchResponse>
12
+ */
13
+ searchComponents(searchRequest: ComponentSearchRequest): Promise<ComponentSearchResponse>;
14
+ /**
15
+ * Get version information for a specific component
16
+ * @param versionRequest - Component version request parameters
17
+ * @returns Promise<ComponentVersionResponse>
18
+ */
19
+ getComponentVersions(versionRequest: ComponentVersionRequest): Promise<ComponentVersionResponse>;
20
+ /**
21
+ * Get statistics for multiple components
22
+ * @param components - Array of components to get statistics for
23
+ * @returns Promise<ComponentStatisticResponse>
24
+ */
25
+ getComponentStatistics(components: Component[]): Promise<ComponentStatisticResponse>;
26
+ /**
27
+ * Search for a component by name and optionally get its versions and statistics
28
+ * @param componentName - Name of the component to search for
29
+ * @param includeVersions - Whether to include version information
30
+ * @param includeStatistics - Whether to include statistics
31
+ * @returns Combined component information
32
+ */
33
+ getComponentInfo(componentName: string, includeVersions?: boolean, includeStatistics?: boolean): Promise<any>;
34
+ }
@@ -0,0 +1,119 @@
1
+ import { ComponentsScannerCfg } from './ComponentsScannerCfg';
2
+ import { logger } from "../Logger";
3
+ import { ComponentsHttpClient } from "../Clients/Components/ComponentsHttpClient";
4
+ import { ComponentsGRPCClient } from "../Clients/Components/ComponentsGRPCClient";
5
+ export class ComponentsScanner {
6
+ componentsClient;
7
+ config = new ComponentsScannerCfg();
8
+ constructor(cfg) {
9
+ if (cfg)
10
+ this.config = cfg;
11
+ else
12
+ this.config = new ComponentsScannerCfg();
13
+ // Initialize the appropriate client based on configuration
14
+ if (this.config.USE_GRPC) {
15
+ this.componentsClient = new ComponentsGRPCClient(this.config.API_KEY, this.config.API_URL, this.config.GRPC_PROXY, this.config.CA_CERT);
16
+ logger.log('Using gRPC client for components service');
17
+ }
18
+ else {
19
+ const clientCfg = {
20
+ API_KEY: this.config.API_KEY,
21
+ HTTP_PROXY: this.config.HTTP_PROXY,
22
+ HTTPS_PROXY: this.config.HTTPS_PROXY,
23
+ NO_PROXY: this.config.NO_PROXY,
24
+ CA_CERT: this.config.CA_CERT,
25
+ IGNORE_CERT_ERRORS: this.config.IGNORE_CERT_ERRORS,
26
+ HOST_URL: this.config.API_URL, // Only map the one that differs. TODO: Migrate to HOST URL on v1 version
27
+ };
28
+ this.componentsClient = new ComponentsHttpClient(clientCfg);
29
+ logger.log('Using HTTP client for components service');
30
+ }
31
+ }
32
+ /**
33
+ * Search for components based on search criteria
34
+ * @param searchRequest - Component search parameters
35
+ * @returns Promise<ComponentSearchResponse>
36
+ */
37
+ async searchComponents(searchRequest) {
38
+ try {
39
+ logger.log(`Searching for components with criteria: ${JSON.stringify(searchRequest)}`);
40
+ const response = await this.componentsClient.searchComponents(searchRequest);
41
+ logger.log(`Found ${response.components.length} components`);
42
+ return response;
43
+ }
44
+ catch (error) {
45
+ logger.log('Error searching components:', error);
46
+ throw error;
47
+ }
48
+ }
49
+ /**
50
+ * Get version information for a specific component
51
+ * @param versionRequest - Component version request parameters
52
+ * @returns Promise<ComponentVersionResponse>
53
+ */
54
+ async getComponentVersions(versionRequest) {
55
+ try {
56
+ logger.log(`Getting component versions for purl: ${versionRequest.purl}`);
57
+ const response = await this.componentsClient.getComponentVersions(versionRequest);
58
+ logger.log(`Found ${response.component.versions.length} versions for component`);
59
+ return response;
60
+ }
61
+ catch (error) {
62
+ logger.log('Error getting component versions:', error);
63
+ throw error;
64
+ }
65
+ }
66
+ /**
67
+ * Get statistics for multiple components
68
+ * @param components - Array of components to get statistics for
69
+ * @returns Promise<ComponentStatisticResponse>
70
+ */
71
+ async getComponentStatistics(components) {
72
+ try {
73
+ logger.log(`Getting statistics for ${components.length} components`);
74
+ const response = await this.componentsClient.getComponentStatistics(components);
75
+ logger.log(`Retrieved statistics for ${response.purls.length} components`);
76
+ return response;
77
+ }
78
+ catch (error) {
79
+ logger.log('Error getting component statistics:', error);
80
+ throw error;
81
+ }
82
+ }
83
+ /**
84
+ * Search for a component by name and optionally get its versions and statistics
85
+ * @param componentName - Name of the component to search for
86
+ * @param includeVersions - Whether to include version information
87
+ * @param includeStatistics - Whether to include statistics
88
+ * @returns Combined component information
89
+ */
90
+ async getComponentInfo(componentName, includeVersions = false, includeStatistics = false) {
91
+ try {
92
+ // First search for the component
93
+ const searchResponse = await this.searchComponents({ search: componentName, limit: 1 });
94
+ if (searchResponse.components.length === 0) {
95
+ throw new Error(`No component found with name: ${componentName}`);
96
+ }
97
+ const component = searchResponse.components[0];
98
+ const result = {
99
+ component: component,
100
+ versions: null,
101
+ statistics: null
102
+ };
103
+ if (includeVersions) {
104
+ const versionsResponse = await this.getComponentVersions({ purl: component.purl });
105
+ result.versions = versionsResponse.component.versions;
106
+ }
107
+ if (includeStatistics) {
108
+ const statsResponse = await this.getComponentStatistics([{ purl: component.purl }]);
109
+ result.statistics = statsResponse.purls[0]?.statistics || null;
110
+ }
111
+ return result;
112
+ }
113
+ catch (error) {
114
+ logger.log('Error getting component info:', error);
115
+ throw error;
116
+ }
117
+ }
118
+ }
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50c1NjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0NvbXBvbmVudHMvQ29tcG9uZW50c1NjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVlsRixNQUFNLE9BQU8saUJBQWlCO0lBRXBCLGdCQUFnQixDQUFvQjtJQUNwQyxNQUFNLEdBQXlCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUVsRSxZQUFZLEdBQTBCO1FBQ3BDLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDOztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUU5QywyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG9CQUFvQixDQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDcEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFpQjtnQkFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDNUIsVUFBVSxFQUFFLElB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
@@ -0,0 +1,21 @@
1
+ import { BaseConfig } from "../BaseConfig";
2
+ export declare class ComponentsScannerCfg extends BaseConfig {
3
+ _API_KEY: string;
4
+ _USE_GRPC: boolean;
5
+ constructor(config?: ComponentsScannerCfg);
6
+ get API_KEY(): string;
7
+ set API_KEY(value: string);
8
+ get USE_GRPC(): boolean;
9
+ set USE_GRPC(value: boolean);
10
+ /**
11
+ * Resolves the appropriate scanner URL based on API key presence and current URL.
12
+ * If an API key is provided and the current URL is the default, returns the premium
13
+ * scanner URL, otherwise removes '/scan/direct' suffix from the URL.
14
+ * @param apiKey - The API key (if any)
15
+ * @param currentUrl - The current API URL
16
+ * @returns The resolved scanner URL
17
+ */
18
+ protected resolveApiUrl(apiKey: string, currentUrl: string): string;
19
+ get API_URL(): string;
20
+ set API_URL(url: string);
21
+ }
@@ -0,0 +1,50 @@
1
+ import { BaseConfig } from "../BaseConfig";
2
+ export class ComponentsScannerCfg extends BaseConfig {
3
+ _API_KEY = '';
4
+ _USE_GRPC = false;
5
+ constructor(config) {
6
+ super(config);
7
+ if (config) {
8
+ this.API_KEY = config.API_KEY ? config.API_KEY : '';
9
+ this.USE_GRPC = config.USE_GRPC !== undefined ? config.USE_GRPC : false;
10
+ }
11
+ }
12
+ get API_KEY() {
13
+ return this._API_KEY;
14
+ }
15
+ set API_KEY(value) {
16
+ this._API_KEY = value;
17
+ }
18
+ get USE_GRPC() {
19
+ return this._USE_GRPC;
20
+ }
21
+ set USE_GRPC(value) {
22
+ this._USE_GRPC = value;
23
+ }
24
+ /**
25
+ * Resolves the appropriate scanner URL based on API key presence and current URL.
26
+ * If an API key is provided and the current URL is the default, returns the premium
27
+ * scanner URL, otherwise removes '/scan/direct' suffix from the URL.
28
+ * @param apiKey - The API key (if any)
29
+ * @param currentUrl - The current API URL
30
+ * @returns The resolved scanner URL
31
+ */
32
+ resolveApiUrl(apiKey, currentUrl) {
33
+ // Case 1: Has API key and using default URL -> upgrade to premium URL
34
+ if (apiKey && currentUrl === BaseConfig.getDefaultURL())
35
+ return BaseConfig.getPremiumURL();
36
+ // Case 2: Has API key and using custom URL -> keep custom URL but remove /scan/direct
37
+ if (apiKey && (currentUrl.startsWith(BaseConfig.getPremiumURL()) || currentUrl.startsWith(BaseConfig.getDefaultURL()))) {
38
+ return currentUrl.replace(/\/scan\/direct$/, '');
39
+ }
40
+ // Case 3: No API key -> use default URL
41
+ return BaseConfig.getDefaultURL();
42
+ }
43
+ get API_URL() {
44
+ return this.resolveApiUrl(this.API_KEY, super.API_URL);
45
+ }
46
+ set API_URL(url) {
47
+ super.API_URL = url;
48
+ }
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50c1NjYW5uZXJDZmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0NvbXBvbmVudHMvQ29tcG9uZW50c1NjYW5uZXJDZmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBVTtJQUVsRCxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFM0IsWUFBWSxNQUE2QjtRQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFHLE1BQU0sRUFBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxhQUFhLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQ3hELHNFQUFzRTtRQUN0RSxJQUFJLE1BQU0sSUFBSSxVQUFVLEtBQUssVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUNyRCxPQUFPLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVwQyxzRkFBc0Y7UUFDdEYsSUFBSSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO1lBQ3RILE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLE9BQU8sVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVc7UUFDckIsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=
@@ -1,5 +1,5 @@
1
1
  import { BaseCryptographyScanner } from "../../BaseCryptographyScanner";
2
- import { CryptographyGRPCClient } from "../../../Clients/Cryptography/CryptographyGRPCClient";
2
+ import { CryptographyHttpClient } from "../../../Clients/Cryptography/CryptographyHttpClient";
3
3
  /**
4
4
  * Scanner for detecting cryptographic algorithms in software components.
5
5
  * This class extends the base cryptography scanner to specifically handle
@@ -14,13 +14,19 @@ export class ComponentAlgorithmScanner extends BaseCryptographyScanner {
14
14
  * @returns {AlgorithmResponse} A promise that resolves to an AlgorithmResponse containing detected cryptographic algorithms.
15
15
  */
16
16
  async scan(components) {
17
- const cryptographyClient = new CryptographyGRPCClient(this.config.API_KEY, // API KEY
18
- this.config.API_URL, // Destination Host
19
- this.config.GRPC_PROXY, // Proxy Host
20
- this.config.CA_CERT);
17
+ const clientCfg = {
18
+ API_KEY: this.config.API_KEY,
19
+ HTTP_PROXY: this.config.HTTP_PROXY,
20
+ HTTPS_PROXY: this.config.HTTPS_PROXY,
21
+ NO_PROXY: this.config.NO_PROXY,
22
+ CA_CERT: this.config.CA_CERT,
23
+ IGNORE_CERT_ERRORS: this.config.IGNORE_CERT_ERRORS,
24
+ HOST_URL: this.config.API_URL, // Only map the one that differs. TODO: Migrate to HOST URL on v1 version
25
+ };
26
+ const cryptographyClient = new CryptographyHttpClient(clientCfg);
21
27
  const results = await cryptographyClient.getAlgorithms(components);
22
28
  this.resultCollector.collectAlgorithmResults(results);
23
29
  return results;
24
30
  }
25
31
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50QWxnb3JpdGhtU2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0FsZ29yaXRobS9Db21wb25lbnRzL0NvbXBvbmVudEFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFOUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx5QkFDWCxTQUFRLHVCQUdZO0lBRXBCOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBdUI7UUFDdkMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHNCQUFzQixDQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG1CQUFtQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQXFCLE1BQU0sa0JBQWtCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIn0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50QWxnb3JpdGhtU2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0FsZ29yaXRobS9Db21wb25lbnRzL0NvbXBvbmVudEFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFJOUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx5QkFDWCxTQUFRLHVCQUdZO0lBRXBCOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBdUI7UUFDdkMsTUFBTSxTQUFTLEdBQWlCO1lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUM1QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQjtZQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUseUVBQXlFO1NBQ3pHLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLElBQUksc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQXFCLE1BQU0sa0JBQWtCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIn0=
@@ -23,19 +23,16 @@ export class CryptoCfg extends BaseConfig {
23
23
  * @returns The resolved API URL
24
24
  */
25
25
  resolveApiUrl(apiKey, currentUrl) {
26
- // Case 1: Has API key and using default URL -> upgrade to premium URL. The default URL is set on the BaseConfig.ts file
27
- if (apiKey && currentUrl === BaseConfig.getDefaultURL())
28
- return BaseConfig.getPremiumURL();
29
- // Case 2: Has API key and using custom URL -> keep custom URL
30
- if (apiKey && currentUrl.startsWith(BaseConfig.getPremiumURL()) || currentUrl.startsWith(BaseConfig.getDefaultURL())) {
31
- // Check if custom URL is not the same as the default one.
32
- if (currentUrl.startsWith(BaseConfig.getPremiumURL()) || currentUrl.startsWith(BaseConfig.getDefaultURL())) {
33
- return currentUrl.replace(/\/scan\/direct$/, '');
26
+ if (!apiKey) {
27
+ if (currentUrl !== BaseConfig.getDefaultURL()) {
28
+ return currentUrl;
34
29
  }
35
30
  return currentUrl;
36
31
  }
37
- // Case 4: No API key and default/empty URL -> use default URL
38
- return BaseConfig.getDefaultURL();
32
+ if (currentUrl !== BaseConfig.getDefaultURL() && currentUrl !== BaseConfig.getPremiumURL()) {
33
+ return currentUrl;
34
+ }
35
+ return BaseConfig.getPremiumURL();
39
36
  }
40
37
  get API_URL() {
41
38
  return this.resolveApiUrl(this.API_KEY, super.API_URL);
@@ -44,4 +41,4 @@ export class CryptoCfg extends BaseConfig {
44
41
  super.API_URL = value;
45
42
  }
46
43
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFFckIsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUVyQyxvQkFBb0IsQ0FBUztJQUU3QixrQkFBa0IsQ0FBUztJQUUzQixPQUFPLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUV2QyxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBRXJCLFlBQVksR0FBZTtRQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRjs7Ozs7OztPQU9HO0lBQ1EsYUFBYSxDQUFDLE1BQWMsRUFBRSxVQUFrQjtRQUN6RCx3SEFBd0g7UUFDeEgsSUFBSSxNQUFNLElBQUksVUFBVSxLQUFLLFVBQVUsQ0FBQyxhQUFhLEVBQUU7WUFDckQsT0FBTyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsOERBQThEO1FBQzlELElBQUksTUFBTSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBQyxDQUFDO1lBQ3BILDBEQUEwRDtZQUMxRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMzRyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCw4REFBOEQ7UUFDOUQsT0FBTyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQWE7UUFDOUIsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztDQUVIIn0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvQ2ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQ3J5cHRvQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFFckIsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUVyQyxvQkFBb0IsQ0FBUztJQUU3QixrQkFBa0IsQ0FBUztJQUUzQixPQUFPLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUV2QyxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBRXJCLFlBQVksR0FBZTtRQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRjs7Ozs7OztPQU9HO0lBQ1EsYUFBYSxDQUFDLE1BQWMsRUFBRSxVQUFrQjtRQUN6RCxJQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLFVBQVUsS0FBSyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLFVBQVUsS0FBSyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksVUFBVSxLQUFLLFVBQVUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzNGLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsS0FBYTtRQUM5QixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0NBRUgifQ==
@@ -1,5 +1,5 @@
1
1
  import { BaseCryptographyScanner } from "../../BaseCryptographyScanner";
2
- import { CryptographyGRPCClient } from "../../../Clients/Cryptography/CryptographyGRPCClient";
2
+ import { CryptographyHttpClient } from "../../../Clients/Cryptography/CryptographyHttpClient";
3
3
  /**
4
4
  * Scanner for detecting cryptographic hints in software components.
5
5
  * This class extends the base cryptography scanner to specifically handle
@@ -14,13 +14,19 @@ export class ComponentHintScanner extends BaseCryptographyScanner {
14
14
  * @returns {HintsResponse} A promise that resolves to a HintsResponse containing detected cryptographic hints.
15
15
  */
16
16
  async scan(req) {
17
- const cryptographyClient = new CryptographyGRPCClient(this.config.API_KEY, // API KEY
18
- this.config.API_URL, // Destination Host
19
- this.config.GRPC_PROXY, // Proxy Host
20
- this.config.CA_CERT);
17
+ const clientCfg = {
18
+ API_KEY: this.config.API_KEY,
19
+ HTTP_PROXY: this.config.HTTP_PROXY,
20
+ HTTPS_PROXY: this.config.HTTPS_PROXY,
21
+ NO_PROXY: this.config.NO_PROXY,
22
+ CA_CERT: this.config.CA_CERT,
23
+ IGNORE_CERT_ERRORS: this.config.IGNORE_CERT_ERRORS,
24
+ HOST_URL: this.config.API_URL, // Only map the one that differs. TODO: Migrate to HOST URL on v1 version
25
+ };
26
+ const cryptographyClient = new CryptographyHttpClient(clientCfg);
21
27
  const results = await cryptographyClient.getEncryptionHints(req);
22
28
  this.resultCollector.collectHintResults(results);
23
29
  return results;
24
30
  }
25
31
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50SGludFNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9IaW50L0NvbXBvbmVudHMvQ29tcG9uZW50SGludFNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFOUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxvQkFDWCxTQUFRLHVCQUdlO0lBRXZCOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBZ0I7UUFDaEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHNCQUFzQixDQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG1CQUFtQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiJ9
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50SGludFNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9IaW50L0NvbXBvbmVudHMvQ29tcG9uZW50SGludFNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFJOUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxvQkFDWCxTQUFRLHVCQUdlO0lBRXZCOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBZ0I7UUFDaEMsTUFBTSxTQUFTLEdBQWlCO1lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUM1QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQjtZQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUseUVBQXlFO1NBQ3pHLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLElBQUksc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiJ9
@@ -14,7 +14,16 @@ export class DependencyScanner {
14
14
  this.config = cfg;
15
15
  else
16
16
  this.config = new DependencyScannerCfg();
17
- this.dependencyClient = new DependencyHttpClient(this.config.API_KEY, this.config.API_URL, this.config.IGNORE_CERT_ERRORS, this.config.HTTPS_PROXY, this.config.CA_CERT);
17
+ const clientCfg = {
18
+ API_KEY: this.config.API_KEY,
19
+ HTTP_PROXY: this.config.HTTP_PROXY,
20
+ HTTPS_PROXY: this.config.HTTPS_PROXY,
21
+ NO_PROXY: this.config.NO_PROXY,
22
+ CA_CERT: this.config.CA_CERT,
23
+ IGNORE_CERT_ERRORS: this.config.IGNORE_CERT_ERRORS,
24
+ HOST_URL: this.config.API_URL, // Only map the one that differs. TODO: Migrate to HOST URL on v1 version
25
+ };
26
+ this.dependencyClient = new DependencyHttpClient(clientCfg);
18
27
  this.localDependency = new LocalDependencies();
19
28
  }
20
29
  async scanFolder(path) {
@@ -67,12 +76,12 @@ export class DependencyScanner {
67
76
  }
68
77
  catch (e) {
69
78
  logger.debug(`Error while scanning dependencies: ${JSON.stringify(request, null, 2)}`);
70
- err = e.message;
79
+ err = e;
71
80
  failedRequests.push(request);
72
81
  }
73
82
  }
74
83
  if (err) {
75
- logger.error(`ERROR: ${err}`);
84
+ logger.error(err);
76
85
  }
77
86
  if (failedRequests.length > 0) {
78
87
  overallStatus = { status: 'SUCCEEDED WITH WARNINGS', message: 'Warning: some dependencies were not scanned' };
@@ -164,4 +173,4 @@ export class DependencyScanner {
164
173
  }
165
174
  }
166
175
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFRbEYsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixlQUFlLENBQW9CO0lBRW5DLGdCQUFnQixDQUFvQjtJQUVwQyxNQUFNLEdBQXlCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUVsRSxZQUFZLEdBQTBCO1FBQ3BDLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDOztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUN0SCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxD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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFVbEYsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixlQUFlLENBQW9CO0lBRW5DLGdCQUFnQixDQUFvQjtJQUVwQyxNQUFNLEdBQXlCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUVsRSxZQUFZLEdBQTBCO1FBQ3BDLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDOztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUU5QyxNQUFNLFNBQVMsR0FBaUI7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUM1QixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLGtCQUFrQixFQUFFLElB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