@appconda/sdk 1.0.552 → 1.0.555
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/dist/client.d.ts +8 -0
- package/dist/client.js +75 -8
- package/dist/getAppcondaClient.d.ts +14 -3
- package/dist/getAppcondaClient.js +51 -59
- package/dist/getSDKForService.d.ts +3 -1
- package/dist/getSDKForService.js +4 -4
- package/dist/index.d.ts +5 -1
- package/dist/index.js +3 -1
- package/dist/modules/emploid/schema.d.ts +10 -5
- package/dist/modules/emploid/schema.js +11 -6
- package/package.json +1 -1
- package/src/client.ts +96 -8
- package/src/getAppcondaClient.ts +69 -58
- package/src/getSDKForService.ts +7 -4
- package/src/index.ts +5 -2
- package/src/modules/emploid/schema.ts +11 -6
package/dist/client.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ declare class Client {
|
|
|
32
32
|
forwardeduseragent: string;
|
|
33
33
|
};
|
|
34
34
|
headers: Headers;
|
|
35
|
+
private fetchImpl?;
|
|
35
36
|
/**
|
|
36
37
|
* Set Endpoint
|
|
37
38
|
*
|
|
@@ -59,6 +60,13 @@ declare class Client {
|
|
|
59
60
|
* @returns {this}
|
|
60
61
|
*/
|
|
61
62
|
addHeader(header: string, value: string): this;
|
|
63
|
+
/**
|
|
64
|
+
* Set custom fetch implementation.
|
|
65
|
+
*
|
|
66
|
+
* Useful for Node.js versions without a global fetch.
|
|
67
|
+
*/
|
|
68
|
+
setFetch(fetchImpl: typeof fetch): this;
|
|
69
|
+
private getFetch;
|
|
62
70
|
/**
|
|
63
71
|
* Set Project
|
|
64
72
|
*
|
package/dist/client.js
CHANGED
|
@@ -8,6 +8,44 @@ class AppcondaException extends Error {
|
|
|
8
8
|
this.response = response;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
function hasGlobalFileConstructor() {
|
|
12
|
+
return typeof globalThis !== 'undefined' && typeof globalThis.File !== 'undefined';
|
|
13
|
+
}
|
|
14
|
+
function isFileLike(value) {
|
|
15
|
+
if (!value || typeof value !== 'object') {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
if (hasGlobalFileConstructor() && value instanceof globalThis.File) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return typeof value.size === 'number' && typeof value.slice === 'function';
|
|
22
|
+
}
|
|
23
|
+
function getFileName(file, fallbackName = 'upload.bin') {
|
|
24
|
+
if (typeof file.name === 'string' && file.name.length > 0) {
|
|
25
|
+
return file.name;
|
|
26
|
+
}
|
|
27
|
+
return fallbackName;
|
|
28
|
+
}
|
|
29
|
+
function createChunkFile(chunk, filename) {
|
|
30
|
+
if (hasGlobalFileConstructor()) {
|
|
31
|
+
return new globalThis.File([chunk], filename, {
|
|
32
|
+
type: chunk.type || 'application/octet-stream',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const blob = new Blob([chunk], {
|
|
36
|
+
type: chunk.type || 'application/octet-stream',
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
Object.defineProperty(blob, 'name', {
|
|
40
|
+
value: filename,
|
|
41
|
+
configurable: true,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Fallback for runtimes where Blob is not extensible.
|
|
46
|
+
}
|
|
47
|
+
return blob;
|
|
48
|
+
}
|
|
11
49
|
function getUserAgent() {
|
|
12
50
|
let ua = 'AppcondaNodeJSSDK/14.1.0';
|
|
13
51
|
// `process` is a global in Node.js, but not fully available in all runtimes.
|
|
@@ -101,6 +139,22 @@ class Client {
|
|
|
101
139
|
this.headers[header.toLowerCase()] = value;
|
|
102
140
|
return this;
|
|
103
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Set custom fetch implementation.
|
|
144
|
+
*
|
|
145
|
+
* Useful for Node.js versions without a global fetch.
|
|
146
|
+
*/
|
|
147
|
+
setFetch(fetchImpl) {
|
|
148
|
+
this.fetchImpl = fetchImpl;
|
|
149
|
+
return this;
|
|
150
|
+
}
|
|
151
|
+
getFetch() {
|
|
152
|
+
const runtimeFetch = this.fetchImpl ?? (typeof globalThis !== 'undefined' ? globalThis.fetch : undefined);
|
|
153
|
+
if (!runtimeFetch) {
|
|
154
|
+
throw new AppcondaException('Fetch API is not available. Use Node.js 18+ or set a custom fetch with client.setFetch().');
|
|
155
|
+
}
|
|
156
|
+
return runtimeFetch.bind(globalThis);
|
|
157
|
+
}
|
|
104
158
|
/**
|
|
105
159
|
* Set Project
|
|
106
160
|
*
|
|
@@ -229,12 +283,17 @@ class Client {
|
|
|
229
283
|
case 'multipart/form-data':
|
|
230
284
|
const formData = new FormData();
|
|
231
285
|
for (const [key, value] of Object.entries(params)) {
|
|
232
|
-
if (value
|
|
233
|
-
formData.append(key, value, value
|
|
286
|
+
if (isFileLike(value)) {
|
|
287
|
+
formData.append(key, value, getFileName(value));
|
|
234
288
|
}
|
|
235
289
|
else if (Array.isArray(value)) {
|
|
236
290
|
for (const nestedValue of value) {
|
|
237
|
-
|
|
291
|
+
if (isFileLike(nestedValue)) {
|
|
292
|
+
formData.append(`${key}[]`, nestedValue, getFileName(nestedValue));
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
formData.append(`${key}[]`, nestedValue);
|
|
296
|
+
}
|
|
238
297
|
}
|
|
239
298
|
}
|
|
240
299
|
else {
|
|
@@ -249,7 +308,10 @@ class Client {
|
|
|
249
308
|
return { uri: url.toString(), options };
|
|
250
309
|
}
|
|
251
310
|
async chunkedUpload(method, url, headers = {}, originalPayload = {}, onProgress) {
|
|
252
|
-
const file = Object.values(originalPayload).find((value) => value
|
|
311
|
+
const file = Object.values(originalPayload).find((value) => isFileLike(value));
|
|
312
|
+
if (!file) {
|
|
313
|
+
return await this.call(method, url, headers, originalPayload);
|
|
314
|
+
}
|
|
253
315
|
if (file.size <= Client.CHUNK_SIZE) {
|
|
254
316
|
return await this.call(method, url, headers, originalPayload);
|
|
255
317
|
}
|
|
@@ -262,7 +324,10 @@ class Client {
|
|
|
262
324
|
}
|
|
263
325
|
headers['content-range'] = `bytes ${start}-${end - 1}/${file.size}`;
|
|
264
326
|
const chunk = file.slice(start, end);
|
|
265
|
-
|
|
327
|
+
const payload = {
|
|
328
|
+
...originalPayload,
|
|
329
|
+
file: createChunkFile(chunk, getFileName(file)),
|
|
330
|
+
};
|
|
266
331
|
response = await this.call(method, url, headers, payload);
|
|
267
332
|
if (onProgress && typeof onProgress === 'function') {
|
|
268
333
|
onProgress({
|
|
@@ -282,7 +347,8 @@ class Client {
|
|
|
282
347
|
}
|
|
283
348
|
async redirect(method, url, headers = {}, params = {}) {
|
|
284
349
|
const { uri, options } = this.prepareRequest(method, url, headers, params);
|
|
285
|
-
const
|
|
350
|
+
const runtimeFetch = this.getFetch();
|
|
351
|
+
const response = await runtimeFetch(uri, {
|
|
286
352
|
...options,
|
|
287
353
|
redirect: 'manual'
|
|
288
354
|
});
|
|
@@ -293,9 +359,10 @@ class Client {
|
|
|
293
359
|
}
|
|
294
360
|
async call(method, url, headers = {}, params = {}, responseType = 'json') {
|
|
295
361
|
const { uri, options } = this.prepareRequest(method, url, headers, params);
|
|
362
|
+
const runtimeFetch = this.getFetch();
|
|
296
363
|
let data = null;
|
|
297
364
|
try {
|
|
298
|
-
const response = await
|
|
365
|
+
const response = await runtimeFetch(uri, options);
|
|
299
366
|
const warnings = response.headers.get('x-appconda-warning');
|
|
300
367
|
if (warnings) {
|
|
301
368
|
warnings.split(';').forEach((warning) => console.warn('Warning: ' + warning));
|
|
@@ -338,4 +405,4 @@ class Client {
|
|
|
338
405
|
Client.CHUNK_SIZE = 1024 * 1024 * 5;
|
|
339
406
|
export { Client, AppcondaException };
|
|
340
407
|
export { Query } from './query';
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsTUFBTSxpQkFBa0IsU0FBUSxLQUFLO0lBSWpDLFlBQVksT0FBZSxFQUFFLE9BQWUsQ0FBQyxFQUFFLE9BQWUsRUFBRSxFQUFFLFdBQW1CLEVBQUU7UUFDbkYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0o7QUFFRCxTQUFTLFlBQVk7SUFDakIsSUFBSSxFQUFFLEdBQUcsMEJBQTBCLENBQUM7SUFFcEMsNkVBQTZFO0lBQzdFLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUM5QixJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVE7WUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRSxJQUFJLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixFQUFFLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCx5RUFBeUU7SUFDekUsb0ZBQW9G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SyxFQUFFLE1BQU0sU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5cbnR5cGUgUGF5bG9hZCA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbnR5cGUgVXBsb2FkUHJvZ3Jlc3MgPSB7XG4gICAgJGlkOiBzdHJpbmc7XG4gICAgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICBzaXplVXBsb2FkZWQ6IG51bWJlcjtcbiAgICBjaHVua3NUb3RhbDogbnVtYmVyO1xuICAgIGNodW5rc1VwbG9hZGVkOiBudW1iZXI7XG59XG5cbnR5cGUgSGVhZGVycyA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmNsYXNzIEFwcGNvbmRhRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvZGU6IG51bWJlcjtcbiAgICByZXNwb25zZTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGNvZGU6IG51bWJlciA9IDAsIHR5cGU6IHN0cmluZyA9ICcnLCByZXNwb25zZTogc3RyaW5nID0gJycpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdBcHBjb25kYUV4Y2VwdGlvbic7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFVzZXJBZ2VudCgpIHtcbiAgICBsZXQgdWEgPSAnQXBwY29uZGFOb2RlSlNTREsvMTQuMS4wJztcblxuICAgIC8vIGBwcm9jZXNzYCBpcyBhIGdsb2JhbCBpbiBOb2RlLmpzLCBidXQgbm90IGZ1bGx5IGF2YWlsYWJsZSBpbiBhbGwgcnVudGltZXMuXG4gICAgY29uc3QgcGxhdGZvcm06IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MucGxhdGZvcm0gPT09ICdzdHJpbmcnKSBwbGF0Zm9ybS5wdXNoKHByb2Nlc3MucGxhdGZvcm0pO1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MuYXJjaCA9PT0gJ3N0cmluZycpIHBsYXRmb3JtLnB1c2gocHJvY2Vzcy5hcmNoKTtcbiAgICB9XG4gICAgaWYgKHBsYXRmb3JtLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdWEgKz0gYCAoJHtwbGF0Zm9ybS5qb2luKCc7ICcpfSlgO1xuICAgIH1cblxuICAgIC8vIGBuYXZpZ2F0b3IudXNlckFnZW50YCBpcyBhdmFpbGFibGUgaW4gTm9kZS5qcyAyMSBhbmQgbGF0ZXIuXG4gICAgLy8gSXQncyBhbHNvIHBhcnQgb2YgdGhlIFdpbnRlckNHIHNwZWMsIHNvIG1hbnkgZWRnZSBydW50aW1lcyBwcm92aWRlIGl0LlxuICAgIC8vIGh0dHBzOi8vY29tbW9uLW1pbi1hcGkucHJvcG9zYWwud2ludGVyY2cub3JnLyNyZXF1aXJlbWVudHMtZm9yLW5hdmlnYXRvcnVzZXJhZ2VudFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdWEgKz0gYCAke25hdmlnYXRvci51c2VyQWdlbnR9YDtcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5FZGdlUnVudGltZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdWEgKz0gYCBFZGdlUnVudGltZWA7XG5cbiAgICAgICAgLy8gT2xkZXIgTm9kZS5qcyB2ZXJzaW9ucyBkb24ndCBoYXZlIGBuYXZpZ2F0b3IudXNlckFnZW50YCwgc28gd2UgaGF2ZSB0byB1c2UgYHByb2Nlc3MudmVyc2lvbmAuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHByb2Nlc3MudmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdWEgKz0gYCBOb2RlLmpzLyR7cHJvY2Vzcy52ZXJzaW9ufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVhO1xufVxuXG5jbGFzcyBDbGllbnQge1xuICAgIHN0YXRpYyBDSFVOS19TSVpFID0gMTAyNCAqIDEwMjQgKiA1O1xuXG4gICAgY29uZmlnID0ge1xuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vY2xvdWQuYXBwY29uZGEuaW8vdjEnLFxuICAgICAgICBzZWxmU2lnbmVkOiBmYWxzZSxcbiAgICAgICAgcHJvamVjdDogJycsXG4gICAgICAgIG1vZGU6ICcnLFxuICAgICAgICBrZXk6ICcnLFxuICAgICAgICBqd3Q6ICcnLFxuICAgICAgICBsb2NhbGU6ICcnLFxuICAgICAgICBzZXNzaW9uOiAnJyxcbiAgICAgICAgZm9yd2FyZGVkdXNlcmFnZW50OiAnJyxcbiAgICB9O1xuICAgIGhlYWRlcnM6IEhlYWRlcnMgPSB7XG4gICAgICAgICd4LXNkay1uYW1lJzogJ05vZGUuanMnLFxuICAgICAgICAneC1zZGstcGxhdGZvcm0nOiAnc2VydmVyJyxcbiAgICAgICAgJ3gtc2RrLWxhbmd1YWdlJzogJ25vZGVqcycsXG4gICAgICAgICd4LXNkay12ZXJzaW9uJzogJzE0LjEuMCcsXG4gICAgICAgICd1c2VyLWFnZW50JzogZ2V0VXNlckFnZW50KCksXG4gICAgICAgICdYLUFwcGNvbmRhLVJlc3BvbnNlLUZvcm1hdCc6ICcxLjYuMCcsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldCBFbmRwb2ludFxuICAgICAqXG4gICAgICogWW91ciBwcm9qZWN0IGVuZHBvaW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfVxuICAgICAqL1xuICAgIHNldEVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb25maWcuZW5kcG9pbnQgPSBlbmRwb2ludDtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgc2VsZi1zaWduZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VsZlNpZ25lZFxuICAgICAqXG4gICAgICogQHJldHVybnMge3RoaXN9XG4gICAgICovXG4gICAgc2V0U2VsZlNpZ25lZChzZWxmU2lnbmVkOiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLkVkZ2VSdW50aW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdzZXRTZWxmU2lnbmVkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZWRnZSBydW50aW1lcy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLnNlbGZTaWduZWQgPSBzZWxmU2lnbmVkO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBoZWFkZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfVxuICAgICAqL1xuICAgIGFkZEhlYWRlcihoZWFkZXI6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhlYWRlcnNbaGVhZGVyLnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IFByb2plY3RcbiAgICAgKlxuICAgICAqIFlvdXIgcHJvamVjdCBJRFxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIHN0cmluZ1xuICAgICAqXG4gICAgICogQHJldHVybiB7dGhpc31cbiAgICAgKi9cbiAgICBzZXRQcm9qZWN0KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUFwcGNvbmRhLVByb2plY3QnXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZy5wcm9qZWN0ID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgICAgLyoqXG4gICAgICogU2V0IE1vZGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgICBzZXRNb2RlKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUFwcGNvbmRhLU1vZGUnXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZy5tb2RlID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBLZXlcbiAgICAgKlxuICAgICAqIFlvdXIgc2VjcmV0IEFQSSBrZXlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgc2V0S2V5KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUFwcGNvbmRhLUtleSddID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29uZmlnLmtleSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IEpXVFxuICAgICAqXG4gICAgICogWW91ciBzZWNyZXQgSlNPTiBXZWIgVG9rZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgc2V0SldUKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUFwcGNvbmRhLUpXVCddID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29uZmlnLmp3dCA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IExvY2FsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIHN0cmluZ1xuICAgICAqXG4gICAgICogQHJldHVybiB7dGhpc31cbiAgICAgKi9cbiAgICBzZXRMb2NhbGUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhlYWRlcnNbJ1gtQXBwY29uZGEtTG9jYWxlJ10gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWcubG9jYWxlID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgU2Vzc2lvblxuICAgICAqXG4gICAgICogVGhlIHVzZXIgc2Vzc2lvbiB0byBhdXRoZW50aWNhdGUgd2l0aFxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIHN0cmluZ1xuICAgICAqXG4gICAgICogQHJldHVybiB7dGhpc31cbiAgICAgKi9cbiAgICBzZXRTZXNzaW9uKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUFwcGNvbmRhLVNlc3Npb24nXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZy5zZXNzaW9uID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgRm9yd2FyZGVkVXNlckFnZW50XG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBhZ2VudCBzdHJpbmcgb2YgdGhlIGNsaWVudCB0aGF0IG1hZGUgdGhlIHJlcXVlc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgc2V0Rm9yd2FyZGVkVXNlckFnZW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUZvcndhcmRlZC1Vc2VyLUFnZW50J10gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWcuZm9yd2FyZGVkdXNlcmFnZW50ID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHNldEZhbGxiYWNrQ29va2llcyh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1GYWxsYmFjay1Db29raWVzJ10gPSB2YWx1ZTtcbiAgICAgICAgLy90aGlzLmNvbmZpZy5mb3J3YXJkZWR1c2VyYWdlbnQgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJlcGFyZVJlcXVlc3QobWV0aG9kOiBzdHJpbmcsIHVybDogVVJMLCBoZWFkZXJzOiBIZWFkZXJzID0ge30sIHBhcmFtczogUGF5bG9hZCA9IHt9KTogeyB1cmk6IHN0cmluZywgb3B0aW9uczogUmVxdWVzdEluaXQgfSB7XG4gICAgICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhlYWRlcnMsIGhlYWRlcnMpO1xuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICAgICAgICBjb25zdCBjb29raWVGYWxsYmFjayA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29va2llRmFsbGJhY2snKTtcbiAgICAgICAgICAgIGlmIChjb29raWVGYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbJ1gtRmFsbGJhY2stQ29va2llcyddID0gY29va2llRmFsbGJhY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChoZWFkZXJzWydYLUFwcGNvbmRhLURldi1LZXknXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gJ2luY2x1ZGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKENsaWVudC5mbGF0dGVuKHBhcmFtcykpKSB7XG4gICAgICAgICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlLCB2YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5lc3RlZFZhbHVlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChgJHtrZXl9W11gLCBuZXN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJvZHkgPSBmb3JtRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHVyaTogdXJsLnRvU3RyaW5nKCksIG9wdGlvbnMgfTtcbiAgICB9XG5cbiAgICBhc3luYyBjaHVua2VkVXBsb2FkKG1ldGhvZDogc3RyaW5nLCB1cmw6IFVSTCwgaGVhZGVyczogSGVhZGVycyA9IHt9LCBvcmlnaW5hbFBheWxvYWQ6IFBheWxvYWQgPSB7fSwgb25Qcm9ncmVzczogKHByb2dyZXNzOiBVcGxvYWRQcm9ncmVzcykgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBmaWxlOiBhbnkgPSBPYmplY3QudmFsdWVzKG9yaWdpbmFsUGF5bG9hZCkuZmluZCgodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgRmlsZSk7XG5cbiAgICAgICAgaWYgKGZpbGUuc2l6ZSA8PSBDbGllbnQuQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FsbChtZXRob2QsIHVybCwgaGVhZGVycywgb3JpZ2luYWxQYXlsb2FkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCByZXNwb25zZTogYW55ID0gbnVsbDtcblxuICAgICAgICB3aGlsZSAoc3RhcnQgPCBmaWxlLnNpemUpIHtcbiAgICAgICAgICAgIGxldCBlbmQgPSBzdGFydCArIENsaWVudC5DSFVOS19TSVpFOyAvLyBQcmVwYXJlIGVuZCBmb3IgdGhlIG5leHQgY2h1bmtcbiAgICAgICAgICAgIGlmIChlbmQgPj0gZmlsZS5zaXplKSB7XG4gICAgICAgICAgICAgICAgZW5kID0gZmlsZS5zaXplOyAvLyBBZGp1c3QgZm9yIHRoZSBsYXN0IGNodW5rIHRvIGluY2x1ZGUgdGhlIGxhc3QgYnl0ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoZWFkZXJzWydjb250ZW50LXJhbmdlJ10gPSBgYnl0ZXMgJHtzdGFydH0tJHtlbmQgLSAxfS8ke2ZpbGUuc2l6ZX1gO1xuICAgICAgICAgICAgY29uc3QgY2h1bmsgPSBmaWxlLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgICAgICAgICBsZXQgcGF5bG9hZCA9IHsgLi4ub3JpZ2luYWxQYXlsb2FkLCBmaWxlOiBuZXcgRmlsZShbY2h1bmtdLCBmaWxlLm5hbWUpIH07XG5cbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKG1ldGhvZCwgdXJsLCBoZWFkZXJzLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgaWYgKG9uUHJvZ3Jlc3MgJiYgdHlwZW9mIG9uUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzKHtcbiAgICAgICAgICAgICAgICAgICAgJGlkOiByZXNwb25zZS4kaWQsXG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBNYXRoLnJvdW5kKChlbmQgLyBmaWxlLnNpemUpICogMTAwKSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZVVwbG9hZGVkOiBlbmQsXG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1RvdGFsOiBNYXRoLmNlaWwoZmlsZS5zaXplIC8gQ2xpZW50LkNIVU5LX1NJWkUpLFxuICAgICAgICAgICAgICAgICAgICBjaHVua3NVcGxvYWRlZDogTWF0aC5jZWlsKGVuZCAvIENsaWVudC5DSFVOS19TSVpFKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuJGlkKSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1sneC1hcHBjb25kYS1pZCddID0gcmVzcG9uc2UuJGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGFydCA9IGVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBhc3luYyByZWRpcmVjdChtZXRob2Q6IHN0cmluZywgdXJsOiBVUkwsIGhlYWRlcnM6IEhlYWRlcnMgPSB7fSwgcGFyYW1zOiBQYXlsb2FkID0ge30pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCB7IHVyaSwgb3B0aW9ucyB9ID0gdGhpcy5wcmVwYXJlUmVxdWVzdChtZXRob2QsIHVybCwgaGVhZGVycywgcGFyYW1zKTtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVyaSwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHJlZGlyZWN0OiAnbWFudWFsJ1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAzMDEgJiYgcmVzcG9uc2Uuc3RhdHVzICE9PSAzMDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignSW52YWxpZCByZWRpcmVjdCcsIHJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2xvY2F0aW9uJykgfHwgJyc7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsbChtZXRob2Q6IHN0cmluZywgdXJsOiBVUkwsIGhlYWRlcnM6IEhlYWRlcnMgPSB7fSwgcGFyYW1zOiBQYXlsb2FkID0ge30sIHJlc3BvbnNlVHlwZSA9ICdqc29uJyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHsgdXJpLCBvcHRpb25zIH0gPSB0aGlzLnByZXBhcmVSZXF1ZXN0KG1ldGhvZCwgdXJsLCBoZWFkZXJzLCBwYXJhbXMpO1xuXG4gICAgICAgIGxldCBkYXRhOiBhbnkgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVyaSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHdhcm5pbmdzID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ3gtYXBwY29uZGEtd2FybmluZycpO1xuICAgICAgICAgICAgaWYgKHdhcm5pbmdzKSB7XG4gICAgICAgICAgICAgICAgd2FybmluZ3Muc3BsaXQoJzsnKS5mb3JFYWNoKCh3YXJuaW5nOiBzdHJpbmcpID0+IGNvbnNvbGUud2FybignV2FybmluZzogJyArIHdhcm5pbmcpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKT8uaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlVHlwZSA9PT0gJ2FycmF5QnVmZmVyJykge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoNDAwIDw9IHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbihkYXRhPy5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMsIGRhdGE/LnR5cGUsIGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmxhdHRlbihkYXRhOiBQYXlsb2FkLCBwcmVmaXggPSAnJyk6IFBheWxvYWQge1xuICAgICAgICBsZXQgb3V0cHV0OiBQYXlsb2FkID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YSkpIHtcbiAgICAgICAgICAgIGxldCBmaW5hbEtleSA9IHByZWZpeCA/IHByZWZpeCArICdbJyArIGtleSArICddJyA6IGtleTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IHsgLi4ub3V0cHV0LCAuLi5DbGllbnQuZmxhdHRlbih2YWx1ZSwgZmluYWxLZXkpIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dHB1dFtmaW5hbEtleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxufVxuXG5leHBvcnQgeyBDbGllbnQsIEFwcGNvbmRhRXhjZXB0aW9uIH07XG5leHBvcnQgeyBRdWVyeSB9IGZyb20gJy4vcXVlcnknO1xuZXhwb3J0IHR5cGUgeyBNb2RlbHMsIFBheWxvYWQsIFVwbG9hZFByb2dyZXNzIH07XG5leHBvcnQgdHlwZSB7IFF1ZXJ5VHlwZXMsIFF1ZXJ5VHlwZXNMaXN0IH0gZnJvbSAnLi9xdWVyeSc7XG4iXX0=
|
|
408
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsTUFBTSxpQkFBa0IsU0FBUSxLQUFLO0lBSWpDLFlBQVksT0FBZSxFQUFFLE9BQWUsQ0FBQyxFQUFFLE9BQWUsRUFBRSxFQUFFLFdBQW1CLEVBQUU7UUFDbkYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0o7QUFTRCxTQUFTLHdCQUF3QjtJQUM3QixPQUFPLE9BQU8sVUFBVSxLQUFLLFdBQVcsSUFBSSxPQUFRLFVBQWtCLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUNoRyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYztJQUM5QixJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLHdCQUF3QixFQUFFLElBQUksS0FBSyxZQUFhLFVBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sT0FBUSxLQUFrQixDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBUSxLQUFrQixDQUFDLEtBQUssS0FBSyxVQUFVLENBQUM7QUFDM0csQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQWMsRUFBRSxZQUFZLEdBQUcsWUFBWTtJQUM1RCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FB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QUFHLElBQUksR0FBRyxDQUFDLEFBQWxCLENBQW1CO0FBaVh4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG50eXBlIFBheWxvYWQgPSB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG50eXBlIFVwbG9hZFByb2dyZXNzID0ge1xuICAgICRpZDogc3RyaW5nO1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgc2l6ZVVwbG9hZGVkOiBudW1iZXI7XG4gICAgY2h1bmtzVG90YWw6IG51bWJlcjtcbiAgICBjaHVua3NVcGxvYWRlZDogbnVtYmVyO1xufVxuXG50eXBlIEhlYWRlcnMgPSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5jbGFzcyBBcHBjb25kYUV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgICBjb2RlOiBudW1iZXI7XG4gICAgcmVzcG9uc2U6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBjb2RlOiBudW1iZXIgPSAwLCB0eXBlOiBzdHJpbmcgPSAnJywgcmVzcG9uc2U6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnQXBwY29uZGFFeGNlcHRpb24nO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgfVxufVxuXG50eXBlIEZpbGVMaWtlID0ge1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBzbGljZTogKHN0YXJ0PzogbnVtYmVyLCBlbmQ/OiBudW1iZXIpID0+IEJsb2I7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBoYXNHbG9iYWxGaWxlQ29uc3RydWN0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgKGdsb2JhbFRoaXMgYXMgYW55KS5GaWxlICE9PSAndW5kZWZpbmVkJztcbn1cblxuZnVuY3Rpb24gaXNGaWxlTGlrZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEZpbGVMaWtlIHtcbiAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChoYXNHbG9iYWxGaWxlQ29uc3RydWN0b3IoKSAmJiB2YWx1ZSBpbnN0YW5jZW9mIChnbG9iYWxUaGlzIGFzIGFueSkuRmlsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZW9mICh2YWx1ZSBhcyBGaWxlTGlrZSkuc2l6ZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mICh2YWx1ZSBhcyBGaWxlTGlrZSkuc2xpY2UgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGdldEZpbGVOYW1lKGZpbGU6IEZpbGVMaWtlLCBmYWxsYmFja05hbWUgPSAndXBsb2FkLmJpbicpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZmlsZS5uYW1lID09PSAnc3RyaW5nJyAmJiBmaWxlLm5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmlsZS5uYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxsYmFja05hbWU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNodW5rRmlsZShjaHVuazogQmxvYiwgZmlsZW5hbWU6IHN0cmluZyk6IEJsb2IgfCBGaWxlIHtcbiAgICBpZiAoaGFzR2xvYmFsRmlsZUNvbnN0cnVjdG9yKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsVGhpcyBhcyBhbnkpLkZpbGUoW2NodW5rXSwgZmlsZW5hbWUsIHtcbiAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY2h1bmtdLCB7XG4gICAgICAgIHR5cGU6IGNodW5rLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgfSkgYXMgQmxvYiAmIHsgbmFtZT86IHN0cmluZyB9O1xuXG4gICAgdHJ5IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJsb2IsICduYW1lJywge1xuICAgICAgICAgICAgdmFsdWU6IGZpbGVuYW1lLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gRmFsbGJhY2sgZm9yIHJ1bnRpbWVzIHdoZXJlIEJsb2IgaXMgbm90IGV4dGVuc2libGUuXG4gICAgfVxuXG4gICAgcmV0dXJuIGJsb2I7XG59XG5cbmZ1bmN0aW9uIGdldFVzZXJBZ2VudCgpIHtcbiAgICBsZXQgdWEgPSAnQXBwY29uZGFOb2RlSlNTREsvMTQuMS4wJztcblxuICAgIC8vIGBwcm9jZXNzYCBpcyBhIGdsb2JhbCBpbiBOb2RlLmpzLCBidXQgbm90IGZ1bGx5IGF2YWlsYWJsZSBpbiBhbGwgcnVudGltZXMuXG4gICAgY29uc3QgcGxhdGZvcm06IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MucGxhdGZvcm0gPT09ICdzdHJpbmcnKSBwbGF0Zm9ybS5wdXNoKHByb2Nlc3MucGxhdGZvcm0pO1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MuYXJjaCA9PT0gJ3N0cmluZycpIHBsYXRmb3JtLnB1c2gocHJvY2Vzcy5hcmNoKTtcbiAgICB9XG4gICAgaWYgKHBsYXRmb3JtLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdWEgKz0gYCAoJHtwbGF0Zm9ybS5qb2luKCc7ICcpfSlgO1xuICAgIH1cblxuICAgIC8vIGBuYXZpZ2F0b3IudXNlckFnZW50YCBpcyBhdmFpbGFibGUgaW4gTm9kZS5qcyAyMSBhbmQgbGF0ZXIuXG4gICAgLy8gSXQncyBhbHNvIHBhcnQgb2YgdGhlIFdpbnRlckNHIHNwZWMsIHNvIG1hbnkgZWRnZSBydW50aW1lcyBwcm92aWRlIGl0LlxuICAgIC8vIGh0dHBzOi8vY29tbW9uLW1pbi1hcGkucHJvcG9zYWwud2ludGVyY2cub3JnLyNyZXF1aXJlbWVudHMtZm9yLW5hdmlnYXRvcnVzZXJhZ2VudFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdWEgKz0gYCAke25hdmlnYXRvci51c2VyQWdlbnR9YDtcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5FZGdlUnVudGltZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdWEgKz0gYCBFZGdlUnVudGltZWA7XG5cbiAgICAgICAgLy8gT2xkZXIgTm9kZS5qcyB2ZXJzaW9ucyBkb24ndCBoYXZlIGBuYXZpZ2F0b3IudXNlckFnZW50YCwgc28gd2UgaGF2ZSB0byB1c2UgYHByb2Nlc3MudmVyc2lvbmAuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHByb2Nlc3MudmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdWEgKz0gYCBOb2RlLmpzLyR7cHJvY2Vzcy52ZXJzaW9ufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVhO1xufVxuXG5jbGFzcyBDbGllbnQge1xuICAgIHN0YXRpYyBDSFVOS19TSVpFID0gMTAyNCAqIDEwMjQgKiA1O1xuXG4gICAgY29uZmlnID0ge1xuICAgICAgICBlbmRwb2ludDogJ2h0dHBzOi8vY2xvdWQuYXBwY29uZGEuaW8vdjEnLFxuICAgICAgICBzZWxmU2lnbmVkOiBmYWxzZSxcbiAgICAgICAgcHJvamVjdDogJycsXG4gICAgICAgIG1vZGU6ICcnLFxuICAgICAgICBrZXk6ICcnLFxuICAgICAgICBqd3Q6ICcnLFxuICAgICAgICBsb2NhbGU6ICcnLFxuICAgICAgICBzZXNzaW9uOiAnJyxcbiAgICAgICAgZm9yd2FyZGVkdXNlcmFnZW50OiAnJyxcbiAgICB9O1xuICAgIGhlYWRlcnM6IEhlYWRlcnMgPSB7XG4gICAgICAgICd4LXNkay1uYW1lJzogJ05vZGUuanMnLFxuICAgICAgICAneC1zZGstcGxhdGZvcm0nOiAnc2VydmVyJyxcbiAgICAgICAgJ3gtc2RrLWxhbmd1YWdlJzogJ25vZGVqcycsXG4gICAgICAgICd4LXNkay12ZXJzaW9uJzogJzE0LjEuMCcsXG4gICAgICAgICd1c2VyLWFnZW50JzogZ2V0VXNlckFnZW50KCksXG4gICAgICAgICdYLUFwcGNvbmRhLVJlc3BvbnNlLUZvcm1hdCc6ICcxLjYuMCcsXG4gICAgfTtcbiAgICBwcml2YXRlIGZldGNoSW1wbD86IHR5cGVvZiBmZXRjaDtcblxuICAgIC8qKlxuICAgICAqIFNldCBFbmRwb2ludFxuICAgICAqXG4gICAgICogWW91ciBwcm9qZWN0IGVuZHBvaW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfVxuICAgICAqL1xuICAgIHNldEVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb25maWcuZW5kcG9pbnQgPSBlbmRwb2ludDtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgc2VsZi1zaWduZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VsZlNpZ25lZFxuICAgICAqXG4gICAgICogQHJldHVybnMge3RoaXN9XG4gICAgICovXG4gICAgc2V0U2VsZlNpZ25lZChzZWxmU2lnbmVkOiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLkVkZ2VSdW50aW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdzZXRTZWxmU2lnbmVkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZWRnZSBydW50aW1lcy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLnNlbGZTaWduZWQgPSBzZWxmU2lnbmVkO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBoZWFkZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfVxuICAgICAqL1xuICAgIGFkZEhlYWRlcihoZWFkZXI6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhlYWRlcnNbaGVhZGVyLnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGN1c3RvbSBmZXRjaCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIFVzZWZ1bCBmb3IgTm9kZS5qcyB2ZXJzaW9ucyB3aXRob3V0IGEgZ2xvYmFsIGZldGNoLlxuICAgICAqL1xuICAgIHNldEZldGNoKGZldGNoSW1wbDogdHlwZW9mIGZldGNoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuZmV0Y2hJbXBsID0gZmV0Y2hJbXBsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZldGNoKCk6IHR5cGVvZiBmZXRjaCB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVGZXRjaCA9IHRoaXMuZmV0Y2hJbXBsID8/ICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzLmZldGNoIDogdW5kZWZpbmVkKTtcblxuICAgICAgICBpZiAoIXJ1bnRpbWVGZXRjaCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdGZXRjaCBBUEkgaXMgbm90IGF2YWlsYWJsZS4gVXNlIE5vZGUuanMgMTgrIG9yIHNldCBhIGN1c3RvbSBmZXRjaCB3aXRoIGNsaWVudC5zZXRGZXRjaCgpLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVGZXRjaC5iaW5kKGdsb2JhbFRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBQcm9qZWN0XG4gICAgICpcbiAgICAgKiBZb3VyIHByb2plY3QgSURcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgc2V0UHJvamVjdCh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1BcHBjb25kYS1Qcm9qZWN0J10gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWcucHJvamVjdCA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAgIC8qKlxuICAgICAqIFNldCBNb2RlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHt0aGlzfVxuICAgICAqL1xuICAgICAgc2V0TW9kZSh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1BcHBjb25kYS1Nb2RlJ10gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWcubW9kZSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgS2V5XG4gICAgICpcbiAgICAgKiBZb3VyIHNlY3JldCBBUEkga2V5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHt0aGlzfVxuICAgICAqL1xuICAgIHNldEtleSh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1BcHBjb25kYS1LZXknXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZy5rZXkgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldCBKV1RcbiAgICAgKlxuICAgICAqIFlvdXIgc2VjcmV0IEpTT04gV2ViIFRva2VuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHt0aGlzfVxuICAgICAqL1xuICAgIHNldEpXVCh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1BcHBjb25kYS1KV1QnXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZy5qd3QgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldCBMb2NhbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgc2V0TG9jYWxlKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzWydYLUFwcGNvbmRhLUxvY2FsZSddID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvY2FsZSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IFNlc3Npb25cbiAgICAgKlxuICAgICAqIFRoZSB1c2VyIHNlc3Npb24gdG8gYXV0aGVudGljYXRlIHdpdGhcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3RoaXN9XG4gICAgICovXG4gICAgc2V0U2Vzc2lvbih2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1BcHBjb25kYS1TZXNzaW9uJ10gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWcuc2Vzc2lvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IEZvcndhcmRlZFVzZXJBZ2VudFxuICAgICAqXG4gICAgICogVGhlIHVzZXIgYWdlbnQgc3RyaW5nIG9mIHRoZSBjbGllbnQgdGhhdCBtYWRlIHRoZSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHt0aGlzfVxuICAgICAqL1xuICAgIHNldEZvcndhcmRlZFVzZXJBZ2VudCh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1snWC1Gb3J3YXJkZWQtVXNlci1BZ2VudCddID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29uZmlnLmZvcndhcmRlZHVzZXJhZ2VudCA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzZXRGYWxsYmFja0Nvb2tpZXModmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhlYWRlcnNbJ1gtRmFsbGJhY2stQ29va2llcyddID0gdmFsdWU7XG4gICAgICAgIC8vdGhpcy5jb25maWcuZm9yd2FyZGVkdXNlcmFnZW50ID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByZXBhcmVSZXF1ZXN0KG1ldGhvZDogc3RyaW5nLCB1cmw6IFVSTCwgaGVhZGVyczogSGVhZGVycyA9IHt9LCBwYXJhbXM6IFBheWxvYWQgPSB7fSk6IHsgdXJpOiBzdHJpbmcsIG9wdGlvbnM6IFJlcXVlc3RJbml0IH0ge1xuICAgICAgICBtZXRob2QgPSBtZXRob2QudG9VcHBlckNhc2UoKTtcblxuICAgICAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5oZWFkZXJzLCBoZWFkZXJzKTtcblxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgICAgY29uc3QgY29va2llRmFsbGJhY2sgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Nvb2tpZUZhbGxiYWNrJyk7XG4gICAgICAgICAgICBpZiAoY29va2llRmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzWydYLUZhbGxiYWNrLUNvb2tpZXMnXSA9IGNvb2tpZUZhbGxiYWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaGVhZGVyc1snWC1BcHBjb25kYS1EZXYtS2V5J10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9ICdpbmNsdWRlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhDbGllbnQuZmxhdHRlbihwYXJhbXMpKSkge1xuICAgICAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL2pzb24nOlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJvZHkgPSBKU09OLnN0cmluZ2lmeShwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ211bHRpcGFydC9mb3JtLWRhdGEnOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbGVMaWtlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlIGFzIHVua25vd24gYXMgQmxvYiwgZ2V0RmlsZU5hbWUodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5lc3RlZFZhbHVlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbGVMaWtlKG5lc3RlZFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGAke2tleX1bXWAsIG5lc3RlZFZhbHVlIGFzIHVua25vd24gYXMgQmxvYiwgZ2V0RmlsZU5hbWUobmVzdGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChgJHtrZXl9W11gLCBuZXN0ZWRWYWx1ZSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ib2R5ID0gZm9ybURhdGE7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBoZWFkZXJzWydjb250ZW50LXR5cGUnXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyB1cmk6IHVybC50b1N0cmluZygpLCBvcHRpb25zIH07XG4gICAgfVxuXG4gICAgYXN5bmMgY2h1bmtlZFVwbG9hZChtZXRob2Q6IHN0cmluZywgdXJsOiBVUkwsIGhlYWRlcnM6IEhlYWRlcnMgPSB7fSwgb3JpZ2luYWxQYXlsb2FkOiBQYXlsb2FkID0ge30sIG9uUHJvZ3Jlc3M6IChwcm9ncmVzczogVXBsb2FkUHJvZ3Jlc3MpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IE9iamVjdC52YWx1ZXMob3JpZ2luYWxQYXlsb2FkKS5maW5kKCh2YWx1ZSkgPT4gaXNGaWxlTGlrZSh2YWx1ZSkpIGFzIEZpbGVMaWtlIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FsbChtZXRob2QsIHVybCwgaGVhZGVycywgb3JpZ2luYWxQYXlsb2FkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlLnNpemUgPD0gQ2xpZW50LkNIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNhbGwobWV0aG9kLCB1cmwsIGhlYWRlcnMsIG9yaWdpbmFsUGF5bG9hZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgICBsZXQgcmVzcG9uc2U6IGFueSA9IG51bGw7XG5cbiAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZmlsZS5zaXplKSB7XG4gICAgICAgICAgICBsZXQgZW5kID0gc3RhcnQgKyBDbGllbnQuQ0hVTktfU0laRTsgLy8gUHJlcGFyZSBlbmQgZm9yIHRoZSBuZXh0IGNodW5rXG4gICAgICAgICAgICBpZiAoZW5kID49IGZpbGUuc2l6ZSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IGZpbGUuc2l6ZTsgLy8gQWRqdXN0IGZvciB0aGUgbGFzdCBjaHVuayB0byBpbmNsdWRlIHRoZSBsYXN0IGJ5dGVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC1yYW5nZSddID0gYGJ5dGVzICR7c3RhcnR9LSR7ZW5kIC0gMX0vJHtmaWxlLnNpemV9YDtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rID0gZmlsZS5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgICAgICAuLi5vcmlnaW5hbFBheWxvYWQsXG4gICAgICAgICAgICAgICAgZmlsZTogY3JlYXRlQ2h1bmtGaWxlKGNodW5rLCBnZXRGaWxlTmFtZShmaWxlKSksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2FsbChtZXRob2QsIHVybCwgaGVhZGVycywgcGF5bG9hZCk7XG5cbiAgICAgICAgICAgIGlmIChvblByb2dyZXNzICYmIHR5cGVvZiBvblByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyh7XG4gICAgICAgICAgICAgICAgICAgICRpZDogcmVzcG9uc2UuJGlkLFxuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogTWF0aC5yb3VuZCgoZW5kIC8gZmlsZS5zaXplKSAqIDEwMCksXG4gICAgICAgICAgICAgICAgICAgIHNpemVVcGxvYWRlZDogZW5kLFxuICAgICAgICAgICAgICAgICAgICBjaHVua3NUb3RhbDogTWF0aC5jZWlsKGZpbGUuc2l6ZSAvIENsaWVudC5DSFVOS19TSVpFKSxcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzVXBsb2FkZWQ6IE1hdGguY2VpbChlbmQgLyBDbGllbnQuQ0hVTktfU0laRSlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLiRpZCkge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbJ3gtYXBwY29uZGEtaWQnXSA9IHJlc3BvbnNlLiRpZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhcnQgPSBlbmQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVkaXJlY3QobWV0aG9kOiBzdHJpbmcsIHVybDogVVJMLCBoZWFkZXJzOiBIZWFkZXJzID0ge30sIHBhcmFtczogUGF5bG9hZCA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgeyB1cmksIG9wdGlvbnMgfSA9IHRoaXMucHJlcGFyZVJlcXVlc3QobWV0aG9kLCB1cmwsIGhlYWRlcnMsIHBhcmFtcyk7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVGZXRjaCA9IHRoaXMuZ2V0RmV0Y2goKTtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJ1bnRpbWVGZXRjaCh1cmksIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICByZWRpcmVjdDogJ21hbnVhbCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMzAxICYmIHJlc3BvbnNlLnN0YXR1cyAhPT0gMzAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ0ludmFsaWQgcmVkaXJlY3QnLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpIHx8ICcnO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbGwobWV0aG9kOiBzdHJpbmcsIHVybDogVVJMLCBoZWFkZXJzOiBIZWFkZXJzID0ge30sIHBhcmFtczogUGF5bG9hZCA9IHt9LCByZXNwb25zZVR5cGUgPSAnanNvbicpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCB7IHVyaSwgb3B0aW9ucyB9ID0gdGhpcy5wcmVwYXJlUmVxdWVzdChtZXRob2QsIHVybCwgaGVhZGVycywgcGFyYW1zKTtcbiAgICAgICAgY29uc3QgcnVudGltZUZldGNoID0gdGhpcy5nZXRGZXRjaCgpO1xuXG4gICAgICAgIGxldCBkYXRhOiBhbnkgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJ1bnRpbWVGZXRjaCh1cmksIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBjb25zdCB3YXJuaW5ncyA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCd4LWFwcGNvbmRhLXdhcm5pbmcnKTtcbiAgICAgICAgICAgIGlmICh3YXJuaW5ncykge1xuICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNwbGl0KCc7JykuZm9yRWFjaCgod2FybmluZzogc3RyaW5nKSA9PiBjb25zb2xlLndhcm4oJ1dhcm5pbmc6ICcgKyB3YXJuaW5nKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk/LmluY2x1ZGVzKCdhcHBsaWNhdGlvbi9qc29uJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZVR5cGUgPT09ICdhcnJheUJ1ZmZlcicpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKDQwMCA8PSByZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oZGF0YT8ubWVzc2FnZSwgcmVzcG9uc2Uuc3RhdHVzLCBkYXRhPy50eXBlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZsYXR0ZW4oZGF0YTogUGF5bG9hZCwgcHJlZml4ID0gJycpOiBQYXlsb2FkIHtcbiAgICAgICAgbGV0IG91dHB1dDogUGF5bG9hZCA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgICAgICAgICBsZXQgZmluYWxLZXkgPSBwcmVmaXggPyBwcmVmaXggKyAnWycgKyBrZXkgKyAnXScgOiBrZXk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB7IC4uLm91dHB1dCwgLi4uQ2xpZW50LmZsYXR0ZW4odmFsdWUsIGZpbmFsS2V5KSB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbZmluYWxLZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cbn1cblxuZXhwb3J0IHsgQ2xpZW50LCBBcHBjb25kYUV4Y2VwdGlvbiB9O1xuZXhwb3J0IHsgUXVlcnkgfSBmcm9tICcuL3F1ZXJ5JztcbmV4cG9ydCB0eXBlIHsgTW9kZWxzLCBQYXlsb2FkLCBVcGxvYWRQcm9ncmVzcyB9O1xuZXhwb3J0IHR5cGUgeyBRdWVyeVR5cGVzLCBRdWVyeVR5cGVzTGlzdCB9IGZyb20gJy4vcXVlcnknO1xuIl19
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
import { Client } from
|
|
2
|
-
export
|
|
3
|
-
|
|
1
|
+
import { Client } from './client';
|
|
2
|
+
export type AppcondaClientOptions = {
|
|
3
|
+
endpoint?: string;
|
|
4
|
+
project?: string;
|
|
5
|
+
mode?: string;
|
|
6
|
+
key?: string;
|
|
7
|
+
jwt?: string;
|
|
8
|
+
session?: string;
|
|
9
|
+
locale?: string;
|
|
10
|
+
forwardedUserAgent?: string;
|
|
11
|
+
headers?: Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
export declare function getAppcondaClient(options?: AppcondaClientOptions): Client;
|
|
14
|
+
export declare function getAppcondaClientSync(options?: AppcondaClientOptions): Client;
|
|
@@ -1,68 +1,60 @@
|
|
|
1
|
-
import { Client } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { Client } from './client';
|
|
2
|
+
const APPCONDA_DEFAULT_PATH = '/api/appconda/v1';
|
|
3
|
+
const APPCONDA_NODE_DEFAULT_ENDPOINT = 'http://localhost:3000/api/appconda/v1';
|
|
4
|
+
function normalizeEndpoint(endpoint) {
|
|
5
|
+
return endpoint.replace(/\/+$/, '');
|
|
6
|
+
}
|
|
7
|
+
function resolveEndpoint(overrideEndpoint) {
|
|
8
|
+
if (overrideEndpoint) {
|
|
9
|
+
return normalizeEndpoint(overrideEndpoint);
|
|
10
|
+
}
|
|
11
|
+
const envEndpoint = (typeof process !== 'undefined' && process?.env?.APPCONDA_ENDPOINT) ||
|
|
12
|
+
(typeof process !== 'undefined' && process?.env?.NEXT_PUBLIC_APPCONDA_ENDPOINT) ||
|
|
13
|
+
'';
|
|
14
|
+
if (envEndpoint) {
|
|
15
|
+
return normalizeEndpoint(envEndpoint);
|
|
10
16
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return { hostname: '', port: '', protocol: '' };
|
|
17
|
+
if (typeof window !== 'undefined' && window?.location?.origin) {
|
|
18
|
+
return normalizeEndpoint(new URL(APPCONDA_DEFAULT_PATH, window.location.origin).toString());
|
|
14
19
|
}
|
|
20
|
+
return APPCONDA_NODE_DEFAULT_ENDPOINT;
|
|
15
21
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (typeof window !== 'undefined') {
|
|
20
|
-
const hostInfo = getPortAndHostname(window.location.href);
|
|
21
|
-
if (hostInfo.port) {
|
|
22
|
-
url = `${hostInfo.protocol}//${hostInfo.hostname}:${hostInfo.port}/${APPCONDA_ENDPOINT}`;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
url = `${hostInfo.protocol}//${hostInfo.hostname}/${APPCONDA_ENDPOINT}`;
|
|
26
|
-
}
|
|
22
|
+
function applyClientOptions(client, options) {
|
|
23
|
+
if (options.project) {
|
|
24
|
+
client.setProject(options.project);
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
if (options.mode) {
|
|
27
|
+
client.setMode(options.mode);
|
|
30
28
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
} else {
|
|
34
|
-
url = `${ApplicationConfig.Protocol}://${ApplicationConfig.Domain}/v1`
|
|
35
|
-
} */
|
|
36
|
-
const adminClient = new Client()
|
|
37
|
-
.setEndpoint(url) // Your API Endpoint
|
|
38
|
-
.setProject('console');
|
|
39
|
-
return adminClient;
|
|
40
|
-
}
|
|
41
|
-
export function getAppcondaClientSync() {
|
|
42
|
-
let url;
|
|
43
|
-
if (APPCONDA_ENDPOINT) {
|
|
44
|
-
url = APPCONDA_ENDPOINT;
|
|
29
|
+
if (options.key) {
|
|
30
|
+
client.setKey(options.key);
|
|
45
31
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (hostInfo.port) {
|
|
49
|
-
url = `${hostInfo.protocol}//${hostInfo.hostname}:${hostInfo.port}/v1`;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
url = `${hostInfo.protocol}//${hostInfo.hostname}/v1`;
|
|
53
|
-
}
|
|
32
|
+
if (options.jwt) {
|
|
33
|
+
client.setJWT(options.jwt);
|
|
54
34
|
}
|
|
55
|
-
|
|
56
|
-
|
|
35
|
+
if (options.session) {
|
|
36
|
+
client.setSession(options.session);
|
|
57
37
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
.
|
|
66
|
-
|
|
38
|
+
if (options.locale) {
|
|
39
|
+
client.setLocale(options.locale);
|
|
40
|
+
}
|
|
41
|
+
if (options.forwardedUserAgent) {
|
|
42
|
+
client.setForwardedUserAgent(options.forwardedUserAgent);
|
|
43
|
+
}
|
|
44
|
+
if (options.headers) {
|
|
45
|
+
for (const [headerName, headerValue] of Object.entries(options.headers)) {
|
|
46
|
+
client.addHeader(headerName, headerValue);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return client;
|
|
50
|
+
}
|
|
51
|
+
export function getAppcondaClient(options = {}) {
|
|
52
|
+
const client = new Client()
|
|
53
|
+
.setEndpoint(resolveEndpoint(options.endpoint))
|
|
54
|
+
.setProject(options.project ?? 'console');
|
|
55
|
+
return applyClientOptions(client, options);
|
|
56
|
+
}
|
|
57
|
+
export function getAppcondaClientSync(options = {}) {
|
|
58
|
+
return getAppcondaClient(options);
|
|
67
59
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QXBwY29uZGFDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0QXBwY29uZGFDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDO0FBQ2pELE1BQU0sOEJBQThCLEdBQUcsdUNBQXVDLENBQUM7QUFjL0UsU0FBUyxpQkFBaUIsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxnQkFBeUI7SUFDOUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLE9BQU8saUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQ2IsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQztRQUNuRSxDQUFDLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLEVBQUUsR0FBRyxFQUFFLDZCQUE2QixDQUFDO1FBQy9FLEVBQUUsQ0FBQztJQUVQLElBQUksV0FBVyxFQUFFLENBQUM7UUFDZCxPQUFPLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzVELE9BQU8saUJBQWlCLENBQUMsSUFBSSxHQUFHLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxPQUFPLDhCQUE4QixDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxPQUE4QjtJQUN0RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQWlDLEVBQUU7SUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7U0FDdEIsV0FBVyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDLENBQUM7SUFFOUMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxVQUFpQyxFQUFFO0lBQ3JFLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaWVudCB9IGZyb20gJy4vY2xpZW50JztcblxuY29uc3QgQVBQQ09OREFfREVGQVVMVF9QQVRIID0gJy9hcGkvYXBwY29uZGEvdjEnO1xuY29uc3QgQVBQQ09OREFfTk9ERV9ERUZBVUxUX0VORFBPSU5UID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGkvYXBwY29uZGEvdjEnO1xuXG5leHBvcnQgdHlwZSBBcHBjb25kYUNsaWVudE9wdGlvbnMgPSB7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgcHJvamVjdD86IHN0cmluZztcbiAgICBtb2RlPzogc3RyaW5nO1xuICAgIGtleT86IHN0cmluZztcbiAgICBqd3Q/OiBzdHJpbmc7XG4gICAgc2Vzc2lvbj86IHN0cmluZztcbiAgICBsb2NhbGU/OiBzdHJpbmc7XG4gICAgZm9yd2FyZGVkVXNlckFnZW50Pzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5kcG9pbnQucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVFbmRwb2ludChvdmVycmlkZUVuZHBvaW50Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAob3ZlcnJpZGVFbmRwb2ludCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplRW5kcG9pbnQob3ZlcnJpZGVFbmRwb2ludCk7XG4gICAgfVxuXG4gICAgY29uc3QgZW52RW5kcG9pbnQgPVxuICAgICAgICAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3M/LmVudj8uQVBQQ09OREFfRU5EUE9JTlQpIHx8XG4gICAgICAgICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcz8uZW52Py5ORVhUX1BVQkxJQ19BUFBDT05EQV9FTkRQT0lOVCkgfHxcbiAgICAgICAgJyc7XG5cbiAgICBpZiAoZW52RW5kcG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUVuZHBvaW50KGVudkVuZHBvaW50KTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVFbmRwb2ludChuZXcgVVJMKEFQUENPTkRBX0RFRkFVTFRfUEFUSCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbikudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFQUENPTkRBX05PREVfREVGQVVMVF9FTkRQT0lOVDtcbn1cblxuZnVuY3Rpb24gYXBwbHlDbGllbnRPcHRpb25zKGNsaWVudDogQ2xpZW50LCBvcHRpb25zOiBBcHBjb25kYUNsaWVudE9wdGlvbnMpOiBDbGllbnQge1xuICAgIGlmIChvcHRpb25zLnByb2plY3QpIHtcbiAgICAgICAgY2xpZW50LnNldFByb2plY3Qob3B0aW9ucy5wcm9qZWN0KTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubW9kZSkge1xuICAgICAgICBjbGllbnQuc2V0TW9kZShvcHRpb25zLm1vZGUpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5rZXkpIHtcbiAgICAgICAgY2xpZW50LnNldEtleShvcHRpb25zLmtleSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmp3dCkge1xuICAgICAgICBjbGllbnQuc2V0SldUKG9wdGlvbnMuand0KTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc2Vzc2lvbikge1xuICAgICAgICBjbGllbnQuc2V0U2Vzc2lvbihvcHRpb25zLnNlc3Npb24pO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sb2NhbGUpIHtcbiAgICAgICAgY2xpZW50LnNldExvY2FsZShvcHRpb25zLmxvY2FsZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmZvcndhcmRlZFVzZXJBZ2VudCkge1xuICAgICAgICBjbGllbnQuc2V0Rm9yd2FyZGVkVXNlckFnZW50KG9wdGlvbnMuZm9yd2FyZGVkVXNlckFnZW50KTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICBmb3IgKGNvbnN0IFtoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucy5oZWFkZXJzKSkge1xuICAgICAgICAgICAgY2xpZW50LmFkZEhlYWRlcihoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xpZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwY29uZGFDbGllbnQob3B0aW9uczogQXBwY29uZGFDbGllbnRPcHRpb25zID0ge30pOiBDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBDbGllbnQoKVxuICAgICAgICAuc2V0RW5kcG9pbnQocmVzb2x2ZUVuZHBvaW50KG9wdGlvbnMuZW5kcG9pbnQpKVxuICAgICAgICAuc2V0UHJvamVjdChvcHRpb25zLnByb2plY3QgPz8gJ2NvbnNvbGUnKTtcblxuICAgIHJldHVybiBhcHBseUNsaWVudE9wdGlvbnMoY2xpZW50LCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcGNvbmRhQ2xpZW50U3luYyhvcHRpb25zOiBBcHBjb25kYUNsaWVudE9wdGlvbnMgPSB7fSk6IENsaWVudCB7XG4gICAgcmV0dXJuIGdldEFwcGNvbmRhQ2xpZW50KG9wdGlvbnMpO1xufVxuIl19
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AppcondaClientOptions } from './getAppcondaClient';
|
|
1
2
|
import { BuilderService, DataSourceService, ScrapflowService, WaitlistService } from "./modules";
|
|
2
3
|
import { AccountService } from "./modules/accounv1";
|
|
3
4
|
import { TenantService } from "./modules/tenant/service";
|
|
@@ -17,4 +18,5 @@ export type AppcondaSDK = {
|
|
|
17
18
|
waitlist: WaitlistService;
|
|
18
19
|
configuration: Configuration;
|
|
19
20
|
};
|
|
20
|
-
export
|
|
21
|
+
export type AppcondaSDKOptions = AppcondaClientOptions;
|
|
22
|
+
export declare function getSDKForService(token?: string, options?: AppcondaSDKOptions): AppcondaSDK;
|
package/dist/getSDKForService.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAppcondaClient } from
|
|
1
|
+
import { getAppcondaClient } from './getAppcondaClient';
|
|
2
2
|
import { BuilderService, DataSourceService, ScrapflowService, WaitlistService } from "./modules";
|
|
3
3
|
import { AccountService } from "./modules/accounv1";
|
|
4
4
|
import { TenantService } from "./modules/tenant/service";
|
|
@@ -6,8 +6,8 @@ import { Configuration } from "./services/configuration";
|
|
|
6
6
|
import { OrganizationService } from "./modules/organization/service";
|
|
7
7
|
import { EmploidService } from "./modules/emploid/service";
|
|
8
8
|
import { BpmService } from "./modules/bpm/service";
|
|
9
|
-
export function getSDKForService(token) {
|
|
10
|
-
const adminClient = getAppcondaClient();
|
|
9
|
+
export function getSDKForService(token, options = {}) {
|
|
10
|
+
const adminClient = getAppcondaClient(options);
|
|
11
11
|
adminClient.addHeader('x-service-token', '');
|
|
12
12
|
if (token) {
|
|
13
13
|
adminClient.addHeader('Authorization', `Bearer ${token}`);
|
|
@@ -69,4 +69,4 @@ export function getSDKForService(token) {
|
|
|
69
69
|
configuration
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U0RLRm9yU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9nZXRTREtGb3JTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3hELE9BQU8sRUFBVyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUErQm5ELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsVUFBOEIsRUFBRTtJQUMvRSxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxXQUFXLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixXQUFXLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sWUFBWSxHQUFHLElBQUksbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O29EQW1CZ0Q7SUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFckQsT0FBTztRQUNMLFFBQVE7UUFDUixPQUFPO1FBQ1AsWUFBWTtRQUNaLE9BQU87UUFDUCxHQUFHO1FBQ0gsVUFBVTtRQUNWLE9BQU87UUFDUCxTQUFTO1FBQ1Q7Ozs7Ozs7Ozs7Ozs7cUJBYWE7UUFDYixRQUFRO1FBQ1IsYUFBYTtLQUNkLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QXBwY29uZGFDbGllbnQgfSBmcm9tICcuL2dldEFwcGNvbmRhQ2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBwY29uZGFDbGllbnRPcHRpb25zIH0gZnJvbSAnLi9nZXRBcHBjb25kYUNsaWVudCc7XG5cbmltcG9ydCB7IEFjY291bnQsIEJ1aWxkZXJTZXJ2aWNlLCBEYXRhU291cmNlU2VydmljZSwgU2NyYXBmbG93U2VydmljZSwgV2FpdGxpc3RTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlc1wiO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2R1bGVzL2FjY291bnYxXCI7XG5pbXBvcnQgeyBUZW5hbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlcy90ZW5hbnQvc2VydmljZVwiO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2R1bGVzL29yZ2FuaXphdGlvbi9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFbXBsb2lkU2VydmljZSB9IGZyb20gXCIuL21vZHVsZXMvZW1wbG9pZC9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCcG1TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlcy9icG0vc2VydmljZVwiO1xuXG5leHBvcnQgdHlwZSBBcHBjb25kYVNESyA9IHtcbiAgYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxuICB0ZW5hbnRzOiBUZW5hbnRTZXJ2aWNlLFxuICBvcmdhbml6YXRpb246IE9yZ2FuaXphdGlvblNlcnZpY2UsXG4gIGVtcGxvaWQ6IEVtcGxvaWRTZXJ2aWNlLFxuICBicG06IEJwbVNlcnZpY2UsXG4gIGRhdGFzb3VyY2U6IERhdGFTb3VyY2VTZXJ2aWNlLFxuICBidWlsZGVyOiBCdWlsZGVyU2VydmljZSxcbiAgc2NyYXBmbG93OiBTY3JhcGZsb3dTZXJ2aWNlLFxuICAvKiAgIGN1cnJlbnRVc2VyLFxuICAgIGFjY291bnRzLFxuICAgIGRhdGFiYXNlcyxcbiAgICBwcm9qZWN0cyxcbiAgICB1c2VycyxcbiAgICB0ZWFtcyxcbiAgICB0ZW5hbnRzLFxuICAgIHJvbGVzLFxuICAgIHBlcm1pc3Npb25zLFxuICAgIHNjaGVtYXMsXG4gICAgY29tbXVuaXR5LFxuICAgIHRlbmFudFN1YnNjcmlwdGlvbnMsXG4gICAgc3Vic2NyaXB0aW9uLFxuICAgIHByaWNpbmcsICovXG4gIHdhaXRsaXN0OiBXYWl0bGlzdFNlcnZpY2UsXG4gIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb25cbn1cblxuZXhwb3J0IHR5cGUgQXBwY29uZGFTREtPcHRpb25zID0gQXBwY29uZGFDbGllbnRPcHRpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U0RLRm9yU2VydmljZSh0b2tlbj86IHN0cmluZywgb3B0aW9uczogQXBwY29uZGFTREtPcHRpb25zID0ge30pOiBBcHBjb25kYVNESyB7XG4gIGNvbnN0IGFkbWluQ2xpZW50ID0gZ2V0QXBwY29uZGFDbGllbnQob3B0aW9ucyk7XG5cbiAgYWRtaW5DbGllbnQuYWRkSGVhZGVyKCd4LXNlcnZpY2UtdG9rZW4nLCAnJyk7XG4gIGlmICh0b2tlbikge1xuICAgIGFkbWluQ2xpZW50LmFkZEhlYWRlcignQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0b2tlbn1gKTtcbiAgfVxuXG4gIGNvbnN0IGFjY291bnRzID0gbmV3IEFjY291bnRTZXJ2aWNlKGFkbWluQ2xpZW50KTtcbiAgY29uc3QgdGVuYW50cyA9IG5ldyBUZW5hbnRTZXJ2aWNlKGFkbWluQ2xpZW50KTtcbiAgY29uc3Qgb3JnYW5pemF0aW9uID0gbmV3IE9yZ2FuaXphdGlvblNlcnZpY2UoYWRtaW5DbGllbnQpO1xuICBjb25zdCBlbXBsb2lkID0gbmV3IEVtcGxvaWRTZXJ2aWNlKGFkbWluQ2xpZW50KTtcbiAgY29uc3QgYnBtID0gbmV3IEJwbVNlcnZpY2UoYWRtaW5DbGllbnQpO1xuICBjb25zdCBkYXRhc291cmNlID0gbmV3IERhdGFTb3VyY2VTZXJ2aWNlKGFkbWluQ2xpZW50KTtcbiAgY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyU2VydmljZShhZG1pbkNsaWVudCk7XG4gIGNvbnN0IHNjcmFwZmxvdyA9IG5ldyBTY3JhcGZsb3dTZXJ2aWNlKGFkbWluQ2xpZW50KTtcblxuICAvKiAgICAgY29uc3QgZGF0YWJhc2VzID0gbmV3IERhdGFiYXNlcyhhZG1pbkNsaWVudCk7XG4gIFxuICAgICAgY29uc3QgcHJvamVjdHMgPSBuZXcgUHJvamVjdHMoYWRtaW5DbGllbnQpO1xuICBcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gYXdhaXQgYWNjb3VudHMuZ2V0KCk7XG4gIFxuICAgICAgY29uc3QgdXNlcnMgPSBuZXcgVXNlcnMoYWRtaW5DbGllbnQpO1xuICAgICAgY29uc3QgdGVhbXMgPSBuZXcgVGVhbXMoYWRtaW5DbGllbnQpO1xuICBcbiAgICAgXG4gICAgICBjb25zdCByb2xlcyA9IG5ldyBSb2xlcyhhZG1pbkNsaWVudCk7XG4gICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IG5ldyBQZXJtaXNzaW9ucyhhZG1pbkNsaWVudCk7XG4gICAgICBjb25zdCBzY2hlbWFzID0gbmV3IFNjaGVtYXMoYWRtaW5DbGllbnQpO1xuICBcbiAgICAgIGNvbnN0IGNvbW11bml0eSA9IG5ldyBDb21tdW5pdHkoYWRtaW5DbGllbnQpO1xuICBcbiAgICAgIGNvbnN0IHRlbmFudFN1YnNjcmlwdGlvbnMgPSBuZXcgVGVuYW50U3Vic2NyaXB0aW9uKGFkbWluQ2xpZW50KTtcbiAgXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKGFkbWluQ2xpZW50KTtcbiAgICAgIGNvbnN0IHByaWNpbmcgPSBuZXcgUHJpY2luZyhhZG1pbkNsaWVudCk7ICovXG4gIGNvbnN0IHdhaXRsaXN0ID0gbmV3IFdhaXRsaXN0U2VydmljZShhZG1pbkNsaWVudCk7XG4gIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbihhZG1pbkNsaWVudCk7XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50cyxcbiAgICB0ZW5hbnRzLFxuICAgIG9yZ2FuaXphdGlvbixcbiAgICBlbXBsb2lkLFxuICAgIGJwbSxcbiAgICBkYXRhc291cmNlLFxuICAgIGJ1aWxkZXIsXG4gICAgc2NyYXBmbG93LFxuICAgIC8qICAgY3VycmVudFVzZXIsXG4gICAgICBhY2NvdW50cyxcbiAgICAgIGRhdGFiYXNlcyxcbiAgICAgIHByb2plY3RzLFxuICAgICAgdXNlcnMsXG4gICAgICB0ZWFtcyxcbiAgICAgIHRlbmFudHMsXG4gICAgICByb2xlcyxcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgc2NoZW1hcyxcbiAgICAgIGNvbW11bml0eSxcbiAgICAgIHRlbmFudFN1YnNjcmlwdGlvbnMsXG4gICAgICBzdWJzY3JpcHRpb24sXG4gICAgICBwcmljaW5nLCAqL1xuICAgIHdhaXRsaXN0LFxuICAgIGNvbmZpZ3VyYXRpb25cbiAgfVxufVxuIl19
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export * from './modules';
|
|
2
|
-
export { getSDKForService
|
|
2
|
+
export { getSDKForService } from './getSDKForService';
|
|
3
|
+
export type { AppcondaSDK, AppcondaSDKOptions } from './getSDKForService';
|
|
3
4
|
export * from './EmploidClient';
|
|
5
|
+
export { getAppcondaClient, getAppcondaClientSync } from './getAppcondaClient';
|
|
6
|
+
export type { AppcondaClientOptions } from './getAppcondaClient';
|
|
7
|
+
export { Client, AppcondaException, Query } from './client';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './modules';
|
|
2
2
|
export { getSDKForService } from './getSDKForService';
|
|
3
3
|
export * from './EmploidClient';
|
|
4
|
-
|
|
4
|
+
export { getAppcondaClient, getAppcondaClientSync } from './getAppcondaClient';
|
|
5
|
+
export { Client, AppcondaException, Query } from './client';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kdWxlcyc7XG5leHBvcnQgeyBnZXRTREtGb3JTZXJ2aWNlIH0gZnJvbSAnLi9nZXRTREtGb3JTZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHsgQXBwY29uZGFTREssIEFwcGNvbmRhU0RLT3B0aW9ucyB9IGZyb20gJy4vZ2V0U0RLRm9yU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL0VtcGxvaWRDbGllbnQnO1xuZXhwb3J0IHsgZ2V0QXBwY29uZGFDbGllbnQsIGdldEFwcGNvbmRhQ2xpZW50U3luYyB9IGZyb20gJy4vZ2V0QXBwY29uZGFDbGllbnQnO1xuZXhwb3J0IHR5cGUgeyBBcHBjb25kYUNsaWVudE9wdGlvbnMgfSBmcm9tICcuL2dldEFwcGNvbmRhQ2xpZW50JztcbmV4cG9ydCB7IENsaWVudCwgQXBwY29uZGFFeGNlcHRpb24sIFF1ZXJ5IH0gZnJvbSAnLi9jbGllbnQnO1xuIl19
|
|
@@ -1017,9 +1017,13 @@ export declare const ListWorkerTopicsSchema: z.ZodObject<{
|
|
|
1017
1017
|
workerId: z.ZodOptional<z.ZodString>;
|
|
1018
1018
|
}, z.core.$strip>;
|
|
1019
1019
|
export declare const CreateTopicSchema: z.ZodObject<{
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1020
|
+
tenantId: z.ZodString;
|
|
1021
|
+
entityId: z.ZodString;
|
|
1022
|
+
entityType: z.ZodString;
|
|
1023
|
+
title: z.ZodString;
|
|
1024
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
1025
|
+
instructions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1026
|
+
category: z.ZodString;
|
|
1023
1027
|
}, z.core.$strip>;
|
|
1024
1028
|
export declare const UpdateTopicSchema: z.ZodObject<{
|
|
1025
1029
|
id: z.ZodString;
|
|
@@ -1047,6 +1051,7 @@ export declare const PublishWorkerSchema: z.ZodObject<{
|
|
|
1047
1051
|
workerId: z.ZodString;
|
|
1048
1052
|
}, z.core.$strip>;
|
|
1049
1053
|
export declare const EnhanceTopicSchema: z.ZodObject<{
|
|
1050
|
-
|
|
1051
|
-
|
|
1054
|
+
entityName: z.ZodString;
|
|
1055
|
+
entityDescription: z.ZodString;
|
|
1056
|
+
categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1052
1057
|
}, z.core.$strip>;
|