scanoss 0.16.5 → 0.17.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.
- package/CHANGELOG.md +16 -0
- package/build/main/cli/bin/cli-bin.js +2 -2
- package/build/main/cli/commands/crypto.js +1 -1
- package/build/main/cli/commands/scan.js +8 -4
- package/build/main/sdk/BaseConfig.d.ts +38 -9
- package/build/main/sdk/BaseConfig.js +82 -13
- package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +5 -2
- package/build/main/sdk/Cryptography/CryptoCfg.d.ts +7 -13
- package/build/main/sdk/Cryptography/CryptoCfg.js +7 -14
- package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +5 -2
- package/build/main/sdk/Dependencies/DependencyScanner.d.ts +1 -0
- package/build/main/sdk/Dependencies/DependencyScanner.js +6 -13
- package/build/main/sdk/Dependencies/DependencyScannerCfg.d.ts +0 -1
- package/build/main/sdk/Dependencies/DependencyScannerCfg.js +1 -5
- package/build/main/sdk/Services/Grpc/BaseService.d.ts +26 -4
- package/build/main/sdk/Services/Grpc/BaseService.js +92 -21
- package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +9 -1
- package/build/main/sdk/Services/Grpc/CryptographyService.js +19 -12
- package/build/main/sdk/Services/Grpc/DependencyService.d.ts +10 -3
- package/build/main/sdk/Services/Grpc/DependencyService.js +19 -9
- package/build/main/sdk/scanner/ScannerCfg.d.ts +0 -1
- package/build/main/sdk/scanner/ScannerCfg.js +1 -3
- package/build/main/tsconfig.tsbuildinfo +1 -1
- package/build/module/cli/bin/cli-bin.js +2 -2
- package/build/module/cli/commands/crypto.js +1 -1
- package/build/module/cli/commands/scan.js +8 -4
- package/build/module/sdk/BaseConfig.d.ts +38 -9
- package/build/module/sdk/BaseConfig.js +82 -11
- package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +5 -2
- package/build/module/sdk/Cryptography/CryptoCfg.d.ts +7 -13
- package/build/module/sdk/Cryptography/CryptoCfg.js +7 -15
- package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +5 -2
- package/build/module/sdk/Dependencies/DependencyScanner.d.ts +1 -0
- package/build/module/sdk/Dependencies/DependencyScanner.js +6 -13
- package/build/module/sdk/Dependencies/DependencyScannerCfg.d.ts +0 -1
- package/build/module/sdk/Dependencies/DependencyScannerCfg.js +1 -2
- package/build/module/sdk/Services/Grpc/BaseService.d.ts +26 -4
- package/build/module/sdk/Services/Grpc/BaseService.js +92 -20
- package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +9 -1
- package/build/module/sdk/Services/Grpc/CryptographyService.js +19 -12
- package/build/module/sdk/Services/Grpc/DependencyService.d.ts +10 -3
- package/build/module/sdk/Services/Grpc/DependencyService.js +20 -11
- package/build/module/sdk/scanner/ScannerCfg.d.ts +0 -1
- package/build/module/sdk/scanner/ScannerCfg.js +1 -3
- package/build/module/tsconfig.module.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -22,6 +22,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
29
|
exports.BaseService = void 0;
|
|
27
30
|
const grpc = __importStar(require("@grpc/grpc-js"));
|
|
@@ -30,26 +33,37 @@ const Logger_1 = require("../../Logger");
|
|
|
30
33
|
const Constants_1 = require("../../Constants");
|
|
31
34
|
var Level = Logger_1.Logger.Level;
|
|
32
35
|
const Errors_1 = require("../../Errors");
|
|
36
|
+
const fs_1 = __importDefault(require("fs"));
|
|
33
37
|
class BaseService {
|
|
34
|
-
constructor() {
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
38
|
+
constructor({ HOSTNAME, PROXY_URL, API_TOKEN, IS_PREMIUM_SERVICE, SERVICE_NAME, CA_CERT, }) {
|
|
39
|
+
this._HOSTNAME = Constants_1.SCANOSS_GRPC_ENDPOINT;
|
|
40
|
+
this._API_TOKEN = '';
|
|
41
|
+
this._IS_PREMIUM_SERVICE = false;
|
|
42
|
+
this._SERVICE_NAME = '';
|
|
43
|
+
this.API_TOKEN = API_TOKEN;
|
|
44
|
+
this.PROXY_URL = PROXY_URL;
|
|
45
|
+
this.IS_PREMIUM_SERVICE = IS_PREMIUM_SERVICE;
|
|
46
|
+
this.SERVICE_NAME = SERVICE_NAME;
|
|
47
|
+
this.CA_CERT = CA_CERT;
|
|
48
|
+
this.HOSTNAME = HOSTNAME;
|
|
49
|
+
if (this.PROXY_URL)
|
|
50
|
+
process.env.grpc_proxy = this.PROXY_URL;
|
|
51
|
+
if (this.IS_PREMIUM_SERVICE && !this.API_TOKEN)
|
|
52
|
+
throw new Error(Errors_1.ERROR_SERVICES_GRPC_API_TOKEN_REQUIRED);
|
|
39
53
|
}
|
|
40
54
|
handleResponse(response) {
|
|
41
55
|
const { status, ...responseWithoutStatus } = response;
|
|
42
56
|
if (status.status === CommonMessages.StatusCode.FAILED) {
|
|
43
|
-
Logger_1.logger.log(`[ GRPC ${this.
|
|
57
|
+
Logger_1.logger.log(`[ GRPC ${this._SERVICE_NAME} ] - Server GRPC Code: ${status.status} - ${status.message}`, Level.error);
|
|
44
58
|
throw new Error(status.message);
|
|
45
59
|
}
|
|
46
60
|
else if (status.status === CommonMessages.StatusCode.WARNING ||
|
|
47
61
|
status.status === CommonMessages.StatusCode.SUCCEEDED_WITH_WARNINGS ||
|
|
48
62
|
status.status === CommonMessages.StatusCode.UNSPECIFIED) {
|
|
49
|
-
Logger_1.logger.log(`[ GRPC ${this.
|
|
63
|
+
Logger_1.logger.log(`[ GRPC ${this._SERVICE_NAME} ] - Server GRPC Code: ${status.status} - ${status.message}`, Level.warn);
|
|
50
64
|
}
|
|
51
65
|
else if (status.status === CommonMessages.StatusCode.SUCCESS) {
|
|
52
|
-
Logger_1.logger.log(`[ GRPC ${this.
|
|
66
|
+
Logger_1.logger.log(`[ GRPC ${this._SERVICE_NAME} ] - Server GRPC Code: ${status.status} - ${status.message}`, Level.info);
|
|
53
67
|
}
|
|
54
68
|
return responseWithoutStatus;
|
|
55
69
|
}
|
|
@@ -70,19 +84,76 @@ class BaseService {
|
|
|
70
84
|
return gRPCEchoRequest;
|
|
71
85
|
}
|
|
72
86
|
generateChannelCredentials() {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
let cc = grpc.credentials.createSsl();
|
|
88
|
+
if (this.CA_CERT && this.PROXY_URL) {
|
|
89
|
+
const caCert = fs_1.default.readFileSync(this.CA_CERT);
|
|
90
|
+
cc = grpc.credentials.createSsl(caCert);
|
|
91
|
+
}
|
|
92
|
+
if (this.API_TOKEN) {
|
|
93
|
+
const metaCallback = (_params, callback) => {
|
|
94
|
+
const metadata = new grpc.Metadata();
|
|
95
|
+
metadata.add(Constants_1.HEADER_NAME_API_TOKEN, this.API_TOKEN);
|
|
96
|
+
callback(null, metadata);
|
|
97
|
+
};
|
|
98
|
+
const callCredentials = grpc.credentials.createFromMetadataGenerator(metaCallback);
|
|
99
|
+
cc = grpc.credentials.combineChannelCredentials(cc, callCredentials);
|
|
100
|
+
}
|
|
101
|
+
return cc;
|
|
102
|
+
}
|
|
103
|
+
set SERVICE_NAME(serviceName) {
|
|
104
|
+
this._SERVICE_NAME = serviceName;
|
|
105
|
+
}
|
|
106
|
+
get SERVICE_NAME() {
|
|
107
|
+
return this._SERVICE_NAME;
|
|
108
|
+
}
|
|
109
|
+
set HOSTNAME(host) {
|
|
110
|
+
if (host !== null && host !== '') {
|
|
111
|
+
//Extract host from URL (hostname:port)
|
|
112
|
+
if (host.startsWith('http')) {
|
|
113
|
+
const apiURL = new URL(host);
|
|
114
|
+
let hostname;
|
|
115
|
+
let port;
|
|
116
|
+
if (!apiURL.port)
|
|
117
|
+
port = apiURL.protocol === 'https:' ? '443' : '80';
|
|
118
|
+
hostname = apiURL.host;
|
|
119
|
+
this._HOSTNAME = `${hostname}:${port}`;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this._HOSTNAME = host;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
get HOSTNAME() {
|
|
126
|
+
return this._HOSTNAME;
|
|
127
|
+
}
|
|
128
|
+
set API_TOKEN(apiToken) {
|
|
129
|
+
if (apiToken != null && apiToken != '')
|
|
130
|
+
this._API_TOKEN = apiToken;
|
|
131
|
+
}
|
|
132
|
+
get API_TOKEN() {
|
|
133
|
+
return this._API_TOKEN;
|
|
134
|
+
}
|
|
135
|
+
set IS_PREMIUM_SERVICE(isPremiumService) {
|
|
136
|
+
if (isPremiumService != null)
|
|
137
|
+
this._IS_PREMIUM_SERVICE = isPremiumService;
|
|
138
|
+
}
|
|
139
|
+
get IS_PREMIUM_SERVICE() {
|
|
140
|
+
return this._IS_PREMIUM_SERVICE;
|
|
141
|
+
}
|
|
142
|
+
set CA_CERT(caCertPath) {
|
|
143
|
+
if (caCertPath != null && caCertPath != '')
|
|
144
|
+
this._CA_CERT = caCertPath;
|
|
145
|
+
}
|
|
146
|
+
get CA_CERT() {
|
|
147
|
+
return this._CA_CERT;
|
|
148
|
+
}
|
|
149
|
+
set PROXY_URL(proxyURL) {
|
|
150
|
+
if (proxyURL != null && proxyURL != '') {
|
|
151
|
+
this._PROXY_URL = proxyURL;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
get PROXY_URL() {
|
|
155
|
+
return this._PROXY_URL;
|
|
85
156
|
}
|
|
86
157
|
}
|
|
87
158
|
exports.BaseService = BaseService;
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL1NlcnZpY2VzL0dycGMvQmFzZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBc0M7QUFDdEMsMEZBQTRFO0FBQzVFLHlDQUE4QztBQUM5QywrQ0FBK0U7QUFDL0UsSUFBTyxLQUFLLEdBQUcsZUFBTSxDQUFDLEtBQUssQ0FBQztBQUM1Qix5Q0FBc0U7QUFDdEUsNENBQW9CO0FBTXBCLE1BQWEsV0FBVztJQVF0QixZQUFZLEVBQ0UsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixPQUFPLEdBUXBCO1FBckJTLGNBQVMsR0FBVyxpQ0FBcUIsQ0FBQztRQUMxQyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQW1CbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBR3pCLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBc0MsQ0FBQyxDQUFDO0lBQzVELENB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
|
|
@@ -5,8 +5,16 @@ export interface AlgorithmResponse extends CryptographyMessages.AlgorithmRespons
|
|
|
5
5
|
export interface HintsResponse extends CryptographyMessages.HintsInRangeResponse.AsObject {
|
|
6
6
|
}
|
|
7
7
|
export declare class CryptographyService extends BaseService {
|
|
8
|
+
static readonly serviceName = "CryptographyService";
|
|
8
9
|
private client;
|
|
9
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Creates CryptographyService Instance.
|
|
12
|
+
* @param {string} token - Optional. API TOKEN.
|
|
13
|
+
* @param {string} hostName - Optional. Destination Host.
|
|
14
|
+
* @param {string} proxyHost -Optional. Proxy Host.
|
|
15
|
+
* @param {string} caCertPath - Optional. Path to certificates.
|
|
16
|
+
*/
|
|
17
|
+
constructor(token: string, hostName: string, proxyHost?: string, caCertPath?: string);
|
|
10
18
|
getAlgorithms(req: PurlRequest): Promise<AlgorithmResponse>;
|
|
11
19
|
getEncryptionHints(req: PurlRequest): Promise<HintsResponse>;
|
|
12
20
|
}
|
|
@@ -3,18 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CryptographyService = void 0;
|
|
4
4
|
const scanoss_cryptography_grpc_pb_1 = require("./scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb");
|
|
5
5
|
const BaseService_1 = require("./BaseService");
|
|
6
|
-
const Errors_1 = require("../../Errors");
|
|
7
6
|
class CryptographyService extends BaseService_1.BaseService {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
+
SERVICE_NAME: CryptographyService.serviceName,
|
|
20
|
+
IS_PREMIUM_SERVICE: true,
|
|
21
|
+
API_TOKEN: token,
|
|
22
|
+
});
|
|
23
|
+
this.client = new scanoss_cryptography_grpc_pb_1.CryptographyClient(this.HOSTNAME, this.generateChannelCredentials());
|
|
18
24
|
}
|
|
19
25
|
async getAlgorithms(req) {
|
|
20
26
|
return new Promise((resolve, reject) => {
|
|
@@ -48,4 +54,5 @@ class CryptographyService extends BaseService_1.BaseService {
|
|
|
48
54
|
}
|
|
49
55
|
}
|
|
50
56
|
exports.CryptographyService = CryptographyService;
|
|
51
|
-
|
|
57
|
+
CryptographyService.serviceName = 'CryptographyService';
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvU2VydmljZXMvR3JwYy9DcnlwdG9ncmFwaHlTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZHQUFnRztBQUVoRywrQ0FBeUQ7QUFTekQsTUFBYSxtQkFBb0IsU0FBUSx5QkFBVztJQUlsRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWEsRUFBRSxRQUFnQixFQUFFLFNBQWtCLEVBQUUsVUFBbUI7UUFDbEYsS0FBSyxDQUFDO1lBQ0osUUFBUSxFQUFFLFFBQVE7WUFDbEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWSxFQUFFLG1CQUFtQixDQUFDLFdBQVc7WUFDN0Msa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaURBQWtCLENBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQ2xDLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFnQjtRQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQzlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNoQixJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUM7b0JBQ0gsYUFBYTtvQkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFnQjtRQUM5QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQzlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNoQixJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUM7b0JBQ0gsYUFBYTtvQkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExREgsa0RBMkRDO0FBMUR3QiwrQkFBVyxHQUFHLHFCQUFxQixDQUFDIn0=
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import * as DependenciesMessages from './scanoss/api/dependencies/v2/scanoss-dependencies_pb';
|
|
2
2
|
import * as CommonMessages from './scanoss/api/common/v2/scanoss-common_pb';
|
|
3
|
-
|
|
3
|
+
import { BaseService } from "./BaseService";
|
|
4
|
+
export declare class DependencyService extends BaseService {
|
|
5
|
+
static readonly serviceName = "DependencyService";
|
|
4
6
|
private client;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Creates DependencyService Instance.
|
|
9
|
+
* @param {string} hostName - Optional. Destination Host.
|
|
10
|
+
* @param {string} proxyHost -Optional. Proxy Host.
|
|
11
|
+
* @param {string} caCertPath - Optional. Path to certificates.
|
|
12
|
+
*/
|
|
13
|
+
constructor(hostName?: string, proxyHost?: string, caCertPath?: string);
|
|
7
14
|
get(req: DependenciesMessages.DependencyRequest): Promise<DependenciesMessages.DependencyResponse>;
|
|
8
15
|
buildDependencyRequestMsg(plainObj: DependenciesMessages.DependencyRequest.AsObject): DependenciesMessages.DependencyRequest;
|
|
9
16
|
echo(req: CommonMessages.EchoRequest): Promise<CommonMessages.EchoResponse>;
|
|
@@ -24,17 +24,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.DependencyService = void 0;
|
|
27
|
-
const grpc = __importStar(require("@grpc/grpc-js"));
|
|
28
27
|
const scanoss_dependencies_grpc_pb_1 = require("./scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb");
|
|
29
28
|
const DependenciesMessages = __importStar(require("./scanoss/api/dependencies/v2/scanoss-dependencies_pb"));
|
|
30
29
|
const CommonMessages = __importStar(require("./scanoss/api/common/v2/scanoss-common_pb"));
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
const BaseService_1 = require("./BaseService");
|
|
31
|
+
class DependencyService extends BaseService_1.BaseService {
|
|
32
|
+
/**
|
|
33
|
+
* Creates DependencyService Instance.
|
|
34
|
+
* @param {string} hostName - Optional. Destination Host.
|
|
35
|
+
* @param {string} proxyHost -Optional. Proxy Host.
|
|
36
|
+
* @param {string} caCertPath - Optional. Path to certificates.
|
|
37
|
+
*/
|
|
38
|
+
constructor(hostName, proxyHost, caCertPath) {
|
|
39
|
+
super({
|
|
40
|
+
HOSTNAME: hostName,
|
|
41
|
+
IS_PREMIUM_SERVICE: false,
|
|
42
|
+
SERVICE_NAME: DependencyService.serviceName,
|
|
43
|
+
PROXY_URL: proxyHost,
|
|
44
|
+
CA_CERT: caCertPath,
|
|
45
|
+
});
|
|
46
|
+
this.client = new scanoss_dependencies_grpc_pb_1.DependenciesClient(this.HOSTNAME, this.generateChannelCredentials());
|
|
38
47
|
}
|
|
39
48
|
async get(req) {
|
|
40
49
|
return new Promise((resolve, reject) => {
|
|
@@ -88,4 +97,5 @@ class DependencyService {
|
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
exports.DependencyService = DependencyService;
|
|
91
|
-
|
|
100
|
+
DependencyService.serviceName = 'DependencyService';
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL1NlcnZpY2VzL0dycGMvRGVwZW5kZW5jeVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw2R0FBcUg7QUFDckgsNEdBQThGO0FBQzlGLDBGQUE0RTtBQUM1RSwrQ0FBNEM7QUFFNUMsTUFBYSxpQkFBa0IsU0FBUSx5QkFBVztJQUloRDs7Ozs7T0FLRztJQUNILFlBQVksUUFBaUIsRUFBRSxTQUFrQixFQUFFLFVBQW1CO1FBQ3BFLEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFdBQVc7WUFDM0MsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTyxFQUFFLFVBQVU7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlEQUFrQixDQUNsQyxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQ2QsR0FBMkM7UUFFM0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pELElBQUksR0FBRztvQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHlCQUF5QixDQUM5QixRQUF5RDtRQUV6RCxJQUFJLENBQUM7WUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDaEUsS0FBSyxNQUFNLFVBQVUsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUMxQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FDZixHQUErQjtRQUUvQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxHQUFHO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sbUJBQW1CLENBQ3hCLFFBQTZDO1FBRTdDLElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JELFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOztBQWpGSCw4Q0FrRkM7QUFqRndCLDZCQUFXLEdBQUcsbUJBQW1CLENBQUMifQ==
|
|
@@ -7,8 +7,6 @@ class ScannerCfg extends BaseConfig_1.BaseConfig {
|
|
|
7
7
|
super();
|
|
8
8
|
// Client Timestamp, default value is scanoss-js/${version}
|
|
9
9
|
this.CLIENT_TIMESTAMP = '';
|
|
10
|
-
// API URL
|
|
11
|
-
this.API_URL = null;
|
|
12
10
|
this.API_KEY = '';
|
|
13
11
|
//Set to true to ignore self certificates issues
|
|
14
12
|
this.IGNORE_CERT_ERRORS = false;
|
|
@@ -33,4 +31,4 @@ class ScannerCfg extends BaseConfig_1.BaseConfig {
|
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
33
|
exports.ScannerCfg = ScannerCfg;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nhbm5lckNmZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9TY2FubmVyQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUEyQztBQUUzQyxNQUFhLFVBQVcsU0FBUSx1QkFBVTtJQW9DeEM7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXBDViwyREFBMkQ7UUFDcEQscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFcEIsZ0RBQWdEO1FBQ3pDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVsQyx1QkFBdUI7UUFDaEIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLCtCQUErQjtRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBRXhCLCtDQUErQztRQUN4QyxzQkFBaUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRTlCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUNwQywwREFBMEQ7UUFDMUQsOEVBQThFO1FBQ3ZFLG9DQUErQixHQUFHLEVBQUUsQ0FBQztRQUVyQyx3Q0FBbUMsR0FBRyxDQUFDLENBQUM7UUFFeEMseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRW5DLCtDQUErQztRQUN4Qyw0QkFBdUIsR0FBRyxHQUFHLENBQUM7UUFFOUIsb0NBQStCLEdBQUcsSUFBSSxDQUFDO1FBRXZDLG9DQUErQixHQUFHLElBQUksQ0FBQztRQUk1QyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUF4Q0QsZ0NBd0NDIn0=
|