@rudderstack/integrations-lib 0.2.56 → 0.2.57
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/build/index.d.ts +1 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -4
- package/build/network/clients/axios_client.d.ts +5 -6
- package/build/network/clients/axios_client.d.ts.map +1 -1
- package/build/network/clients/axios_client.js +40 -75
- package/build/network/clients/types.d.ts +5 -93
- package/build/network/clients/types.d.ts.map +1 -1
- package/build/network/clients/types.js +1 -1
- package/build/network/factory.d.ts +2 -12
- package/build/network/factory.d.ts.map +1 -1
- package/build/network/factory.js +1 -24
- package/build/sdks/criteoAudience/criteoAudience.d.ts +39 -11
- package/build/sdks/criteoAudience/criteoAudience.d.ts.map +1 -1
- package/build/sdks/criteoAudience/criteoAudience.js +69 -33
- package/build/sdks/criteoAudience/types.d.ts +0 -3
- package/build/sdks/criteoAudience/types.d.ts.map +1 -1
- package/build/sdks/criteoAudience/types.js +1 -1
- package/build/sdks/customerio_audience/index.d.ts +15 -11
- package/build/sdks/customerio_audience/index.d.ts.map +1 -1
- package/build/sdks/customerio_audience/index.js +34 -23
- package/build/sdks/customerio_audience/type.d.ts +0 -3
- package/build/sdks/customerio_audience/type.d.ts.map +1 -1
- package/build/sdks/customerio_audience/type.js +1 -1
- package/build/sdks/googleAdsRestAPI/googleAds.d.ts +17 -16
- package/build/sdks/googleAdsRestAPI/googleAds.d.ts.map +1 -1
- package/build/sdks/googleAdsRestAPI/googleAds.js +37 -44
- package/build/sdks/googleAdsRestAPI/types.d.ts +0 -3
- package/build/sdks/googleAdsRestAPI/types.d.ts.map +1 -1
- package/build/sdks/googleAdsRestAPI/types.js +1 -1
- package/build/sdks/index.d.ts +0 -1
- package/build/sdks/index.d.ts.map +1 -1
- package/build/sdks/index.js +1 -5
- package/build/sdks/salesforce/types.d.ts +1 -2
- package/build/sdks/salesforce/types.d.ts.map +1 -1
- package/build/sdks/salesforce/types.js +1 -1
- package/build/sdks/sfmc/index.d.ts +1 -1
- package/build/sdks/sfmc/index.d.ts.map +1 -1
- package/build/sdks/sfmc/index.js +3 -4
- package/build/sdks/zoho/types.d.ts +0 -3
- package/build/sdks/zoho/types.d.ts.map +1 -1
- package/build/sdks/zoho/types.js +1 -1
- package/build/sdks/zoho/zoho.d.ts +17 -13
- package/build/sdks/zoho/zoho.d.ts.map +1 -1
- package/build/sdks/zoho/zoho.js +51 -44
- package/mock/axios_client_mock_util.d.ts +1 -1
- package/mock/axios_client_mock_util.d.ts.map +1 -1
- package/mock/axios_client_mock_util.js +3 -5
- package/package.json +1 -2
- package/build/mock_utils/axios_client_mock_util.d.ts +0 -3
- package/build/mock_utils/axios_client_mock_util.d.ts.map +0 -1
- package/build/mock_utils/axios_client_mock_util.js +0 -12
- package/build/mock_utils/index.d.ts +0 -2
- package/build/mock_utils/index.d.ts.map +0 -1
- package/build/mock_utils/index.js +0 -18
- package/build/sdks/common/base-sdk.d.ts +0 -64
- package/build/sdks/common/base-sdk.d.ts.map +0 -1
- package/build/sdks/common/base-sdk.js +0 -182
- package/build/sdks/common/index.d.ts +0 -3
- package/build/sdks/common/index.d.ts.map +0 -1
- package/build/sdks/common/index.js +0 -7
- package/build/sdks/common/types.d.ts +0 -13
- package/build/sdks/common/types.d.ts.map +0 -1
- package/build/sdks/common/types.js +0 -3
package/build/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import setValue from './lib/set-value';
|
|
2
|
-
import { mockAxiosFromLib } from './mock_utils';
|
|
3
2
|
export * from './types';
|
|
4
3
|
export * from './tags';
|
|
5
4
|
export * from './errors';
|
|
@@ -12,5 +11,5 @@ export * from './sdks';
|
|
|
12
11
|
export * from './cluster';
|
|
13
12
|
export * from './feature-flags';
|
|
14
13
|
export * from './auth-types';
|
|
15
|
-
export { setValue
|
|
14
|
+
export { setValue };
|
|
16
15
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -17,11 +17,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
20
|
+
exports.setValue = void 0;
|
|
21
21
|
const set_value_1 = __importDefault(require("./lib/set-value"));
|
|
22
22
|
exports.setValue = set_value_1.default;
|
|
23
|
-
const mock_utils_1 = require("./mock_utils");
|
|
24
|
-
Object.defineProperty(exports, "mockAxiosFromLib", { enumerable: true, get: function () { return mock_utils_1.mockAxiosFromLib; } });
|
|
25
23
|
__exportStar(require("./types"), exports);
|
|
26
24
|
__exportStar(require("./tags"), exports);
|
|
27
25
|
__exportStar(require("./errors"), exports);
|
|
@@ -34,4 +32,4 @@ __exportStar(require("./sdks"), exports);
|
|
|
34
32
|
__exportStar(require("./cluster"), exports);
|
|
35
33
|
__exportStar(require("./feature-flags"), exports);
|
|
36
34
|
__exportStar(require("./auth-types"), exports);
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBdUM7QUFjOUIsbUJBZEYsbUJBQVEsQ0FjRTtBQVpqQiwwQ0FBd0I7QUFDeEIseUNBQXVCO0FBQ3ZCLDJDQUF5QjtBQUN6QiwyQ0FBeUI7QUFDekIsc0RBQW9DO0FBQ3BDLDRDQUEwQjtBQUMxQiwwQ0FBd0I7QUFDeEIsOENBQTRCO0FBQzVCLHlDQUF1QjtBQUN2Qiw0Q0FBMEI7QUFDMUIsa0RBQWdDO0FBQ2hDLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzZXRWYWx1ZSBmcm9tICcuL2xpYi9zZXQtdmFsdWUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFncyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ2dlcic7XG5leHBvcnQgKiBmcm9tICcuL3N0cnVjdHVyZWQtbG9nZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yayc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Rrcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsdXN0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWZsYWdzJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC10eXBlcyc7XG5leHBvcnQgeyBzZXRWYWx1ZSB9O1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosRequestConfig } from 'axios';
|
|
2
|
-
import { ApiResponse, HttpClient, ResponseParser
|
|
2
|
+
import { ApiResponse, HttpClient, ResponseParser } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* A wrapper around axios to make http requests
|
|
5
5
|
*
|
|
@@ -27,13 +27,12 @@ import { ApiResponse, HttpClient, ResponseParser, AxiosClientObservabilityConfig
|
|
|
27
27
|
export declare class AxiosClient implements HttpClient {
|
|
28
28
|
private options;
|
|
29
29
|
private instance;
|
|
30
|
-
|
|
31
|
-
constructor(options?: AxiosRequestConfig, observabilityConfig?: AxiosClientObservabilityConfig);
|
|
30
|
+
constructor(options?: AxiosRequestConfig);
|
|
32
31
|
private makeRequest;
|
|
33
32
|
get<T>(url: string, options?: AxiosRequestConfig, responseParser?: ResponseParser<T>): Promise<ApiResponse<T>>;
|
|
34
|
-
post<T>(url: string, data?:
|
|
35
|
-
put<T>(url: string, data?:
|
|
36
|
-
patch<T>(url: string, data?:
|
|
33
|
+
post<T>(url: string, data?: any, options?: AxiosRequestConfig, responseParser?: ResponseParser<T>): Promise<ApiResponse<T>>;
|
|
34
|
+
put<T>(url: string, data?: any, options?: AxiosRequestConfig, responseParser?: ResponseParser<T>): Promise<ApiResponse<T>>;
|
|
35
|
+
patch<T>(url: string, data?: any, options?: AxiosRequestConfig, responseParser?: ResponseParser<T>): Promise<ApiResponse<T>>;
|
|
37
36
|
delete<T>(url: string, options?: AxiosRequestConfig, responseParser?: ResponseParser<T>): Promise<ApiResponse<T>>;
|
|
38
37
|
}
|
|
39
38
|
//# sourceMappingURL=axios_client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios_client.d.ts","sourceRoot":"","sources":["../../../src/network/clients/axios_client.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,kBAAkB,EAA6B,MAAM,OAAO,CAAC;AAI7E,OAAO,
|
|
1
|
+
{"version":3,"file":"axios_client.d.ts","sourceRoot":"","sources":["../../../src/network/clients/axios_client.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,kBAAkB,EAA6B,MAAM,OAAO,CAAC;AAI7E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGlE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAY,YAAW,UAAU;IAC5C,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,OAAO,CAAC,EAAE,kBAAkB;YAoB1B,WAAW;IAqEZ,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAWb,IAAI,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAYb,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAYb,KAAK,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAYb,MAAM,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAY3B"}
|
|
@@ -1,11 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.AxiosClient = void 0;
|
|
7
40
|
/* eslint-disable require-await */
|
|
8
|
-
const axios_1 =
|
|
41
|
+
const axios_1 = __importStar(require("axios"));
|
|
9
42
|
const http_1 = __importDefault(require("http"));
|
|
10
43
|
const https_1 = __importDefault(require("https"));
|
|
11
44
|
const constants_1 = require("../../constants");
|
|
@@ -35,7 +68,7 @@ const utils_1 = require("../../utils");
|
|
|
35
68
|
* }
|
|
36
69
|
*/
|
|
37
70
|
class AxiosClient {
|
|
38
|
-
constructor(options
|
|
71
|
+
constructor(options) {
|
|
39
72
|
const defaultOptions = {
|
|
40
73
|
timeout: 1000 * 10,
|
|
41
74
|
// `withCredentials` indicates whether or not cross-site Access-Control requests should be made using credentials
|
|
@@ -53,67 +86,23 @@ class AxiosClient {
|
|
|
53
86
|
};
|
|
54
87
|
this.options = { ...defaultOptions, ...options };
|
|
55
88
|
this.instance = axios_1.default.create(this.options);
|
|
56
|
-
// Merge with default config to eliminate null checks
|
|
57
|
-
const defaultObservabilityConfig = {
|
|
58
|
-
logger: undefined,
|
|
59
|
-
statsClient: undefined,
|
|
60
|
-
defaultStatTags: {},
|
|
61
|
-
};
|
|
62
|
-
this.observabilityConfig = { ...defaultObservabilityConfig, ...observabilityConfig };
|
|
63
89
|
}
|
|
64
90
|
async makeRequest(config, responseParser) {
|
|
65
|
-
|
|
66
|
-
// Extract metadata for logging/metrics
|
|
67
|
-
const method = config.method?.toUpperCase() || 'UNKNOWN';
|
|
68
|
-
const url = config.url || 'unknown';
|
|
69
|
-
const body = config.data || undefined;
|
|
70
|
-
const statTags = {
|
|
71
|
-
requestMethod: method,
|
|
72
|
-
endpointPath: url,
|
|
73
|
-
...this.observabilityConfig.defaultStatTags,
|
|
74
|
-
};
|
|
75
|
-
// Optional request logging
|
|
76
|
-
const requestLogParams = {
|
|
77
|
-
requestDetails: {
|
|
78
|
-
method: method || 'undefined',
|
|
79
|
-
url: url || 'undefined',
|
|
80
|
-
body: body || 'undefined',
|
|
81
|
-
},
|
|
82
|
-
metadata: statTags.metadata || {},
|
|
83
|
-
};
|
|
84
|
-
this.observabilityConfig.logger?.requestLog(`[HTTP] ${method} ${url} request`, requestLogParams);
|
|
91
|
+
let output;
|
|
85
92
|
try {
|
|
86
93
|
const requestConfig = config;
|
|
87
94
|
const response = await this.instance.request(requestConfig);
|
|
88
95
|
const { status, data, headers } = response;
|
|
89
|
-
const duration = Date.now() - startTime;
|
|
90
|
-
// Add status code to statTags for better observability
|
|
91
|
-
const successStatTags = {
|
|
92
|
-
...statTags,
|
|
93
|
-
statusCode: status,
|
|
94
|
-
};
|
|
95
|
-
// Optional response logging
|
|
96
|
-
const responseLogParams = {
|
|
97
|
-
responseDetails: {
|
|
98
|
-
status: status || 0,
|
|
99
|
-
body: data || 'undefined',
|
|
100
|
-
headers: headers || 'undefined',
|
|
101
|
-
},
|
|
102
|
-
metadata: statTags.metadata || {},
|
|
103
|
-
};
|
|
104
|
-
this.observabilityConfig.logger?.responseLog(`[HTTP] ${method} ${url} response`, responseLogParams);
|
|
105
|
-
// Optional success metrics
|
|
106
|
-
this.observabilityConfig.statsClient?.timing('outgoing_request_latency', duration, successStatTags);
|
|
107
|
-
this.observabilityConfig.statsClient?.increment('outgoing_request_count', 1, successStatTags);
|
|
108
96
|
if (responseParser) {
|
|
109
97
|
try {
|
|
110
98
|
const parsedData = responseParser(data);
|
|
111
|
-
|
|
99
|
+
output = {
|
|
112
100
|
type: 'success',
|
|
113
101
|
statusCode: status,
|
|
114
102
|
responseBody: parsedData,
|
|
115
103
|
headers,
|
|
116
104
|
};
|
|
105
|
+
return output;
|
|
117
106
|
}
|
|
118
107
|
catch (error) {
|
|
119
108
|
const unknownError = error;
|
|
@@ -128,31 +117,7 @@ class AxiosClient {
|
|
|
128
117
|
return { type: 'success', statusCode: status, responseBody: data, headers };
|
|
129
118
|
}
|
|
130
119
|
catch (error) {
|
|
131
|
-
|
|
132
|
-
// Determine status code for error metrics
|
|
133
|
-
let errorStatusCode = 500; // Default to 500 for network/unknown errors
|
|
134
|
-
if (axios_1.default.isAxiosError(error)) {
|
|
135
|
-
const axiosError = error;
|
|
136
|
-
if (axiosError.response) {
|
|
137
|
-
errorStatusCode = axiosError.response.status;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// Add status code and error flag to statTags for better observability
|
|
141
|
-
const errorStatTags = {
|
|
142
|
-
...statTags,
|
|
143
|
-
statusCode: errorStatusCode,
|
|
144
|
-
error: true,
|
|
145
|
-
};
|
|
146
|
-
// Optional error logging
|
|
147
|
-
this.observabilityConfig.logger?.error?.(`[HTTP] ${method} ${url} error`, {
|
|
148
|
-
error: error.message,
|
|
149
|
-
duration,
|
|
150
|
-
statTags: errorStatTags,
|
|
151
|
-
});
|
|
152
|
-
// Optional error metrics
|
|
153
|
-
this.observabilityConfig.statsClient?.timing('outgoing_request_latency', duration, errorStatTags);
|
|
154
|
-
this.observabilityConfig.statsClient?.increment('outgoing_request_count', 1, errorStatTags);
|
|
155
|
-
if (axios_1.default.isAxiosError(error)) {
|
|
120
|
+
if (error instanceof axios_1.AxiosError) {
|
|
156
121
|
const axiosError = error;
|
|
157
122
|
if (axiosError.response) {
|
|
158
123
|
const { response } = axiosError;
|
|
@@ -241,4 +206,4 @@ class AxiosClient {
|
|
|
241
206
|
}
|
|
242
207
|
}
|
|
243
208
|
exports.AxiosClient = AxiosClient;
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3NfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvY2xpZW50cy9heGlvc19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLGtEQUE2RTtBQUM3RSxnREFBd0I7QUFDeEIsa0RBQTBCO0FBQzFCLCtDQUF5RDtBQVV6RCx1Q0FBeUM7QUFFekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSxXQUFXO0lBT3RCLFlBQVksT0FBNEIsRUFBRSxtQkFBb0Q7UUFDNUYsTUFBTSxjQUFjLEdBQUc7WUFDckIsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ2xCLGlIQUFpSDtZQUNqSCxlQUFlLEVBQUUsS0FBSztZQUN0QixzRkFBc0Y7WUFDdEYsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4Qix3R0FBd0c7WUFDeEcsYUFBYSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUMvQiwrRUFBK0U7WUFDL0UsWUFBWSxFQUFFLENBQUM7WUFDZixxRkFBcUY7WUFDckYsU0FBUyxFQUFFLElBQUksY0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUM5QyxrSUFBa0k7WUFDbEksVUFBVSxFQUFFLElBQUksZUFBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNqRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzQyxxREFBcUQ7UUFDckQsTUFBTSwwQkFBMEIsR0FBbUM7WUFDakUsTUFBTSxFQUFFLFNBQVM7WUFDakIsV0FBVyxFQUFFLFNBQVM7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c291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVxdWlyZS1hd2FpdCAqL1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVxdWVzdENvbmZpZywgQXhpb3NFcnJvciwgQXhpb3NJbnN0YW5jZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IE5FVFdPUktfU1RBVFVTX0VSUl9NQVAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXBpUmVzcG9uc2UsXG4gIEh0dHBDbGllbnQsXG4gIFJlc3BvbnNlUGFyc2VyLFxuICBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWcsXG4gIFN0YXRUYWdzLFxuICBSZXF1ZXN0TG9nUGFyYW1zLFxuICBSZXNwb25zZUxvZ1BhcmFtcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpc05vdEVtcHR5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYXhpb3MgdG8gbWFrZSBodHRwIHJlcXVlc3RzXG4gKlxuICogQGNsYXNzIEF4aW9zQ2xpZW50XG4gKiBAY2xhc3NkZXNjXG4gKiBUaGUgYEF4aW9zQ2xpZW50YCBjbGFzcyBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBheGlvcyBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSBmb3IgbWFraW5nIEhUVFAgcmVxdWVzdHMuIEl0IGhhbmRsZXMgdmFyaW91cyB0eXBlcyBvZiBlcnJvcnMgYW5kIHByb3ZpZGVzIGEgY29uc2lzdGVudCByZXNwb25zZSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtBeGlvc1JlcXVlc3RDb25maWd9IG9wdGlvbnMgLSBUaGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgaHR0cCBjbGllbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgYXhpb3NDbGllbnQgPSBuZXcgQXhpb3NDbGllbnQoeyB0aW1lb3V0OiAxMDAwICogMTAgfSk7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zQ2xpZW50LnBvc3QoXCJodHRwczovL2V4YW1wbGUuY29tXCIsIHsgZm9vOiBcImJhclwiIH0pO1xuICogaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwic3VjY2Vzc1wiKSB7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5yZXNwb25zZUJvZHkpO1xuICogfSBlbHNlIGlmIChyZXNwb25zZS50eXBlID09PSBcImFwcGxpY2F0aW9uLWVycm9yXCIpIHtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5yZXNwb25zZUJvZHkpO1xuICogfSBlbHNlIGlmIChyZXNwb25zZS50eXBlID09PSBcImNsaWVudC1lcnJvclwiKSB7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5tZXNzYWdlKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGNsYXNzIEF4aW9zQ2xpZW50IGltcGxlbWVudHMgSHR0cENsaWVudCB7XG4gIHByaXZhdGUgb3B0aW9uczogQXhpb3NSZXF1ZXN0Q29uZmlnO1xuXG4gIHByaXZhdGUgaW5zdGFuY2U6IEF4aW9zSW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBvYnNlcnZhYmlsaXR5Q29uZmlnOiBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IEF4aW9zUmVxdWVzdENvbmZpZywgb2JzZXJ2YWJpbGl0eUNvbmZpZz86IEF4aW9zQ2xpZW50T2JzZXJ2YWJpbGl0eUNvbmZpZykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgdGltZW91dDogMTAwMCAqIDEwLFxuICAgICAgLy8gYHdpdGhDcmVkZW50aWFsc2AgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGNyb3NzLXNpdGUgQWNjZXNzLUNvbnRyb2wgcmVxdWVzdHMgc2hvdWxkIGJlIG1hZGUgdXNpbmcgY3JlZGVudGlhbHNcbiAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgICAvLyBgcmVzcG9uc2VFbmNvZGluZ2AgaW5kaWNhdGVzIGVuY29kaW5nIHRvIHVzZSBmb3IgZGVjb2RpbmcgcmVzcG9uc2VzIChOb2RlLmpzIG9ubHkpLFxuICAgICAgcmVzcG9uc2VFbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgLy8gYG1heEJvZHlMZW5ndGhgIChOb2RlIG9ubHkgb3B0aW9uKSBkZWZpbmVzIHRoZSBtYXggc2l6ZSBvZiB0aGUgaHR0cCByZXF1ZXN0IGNvbnRlbnQgaW4gYnl0ZXMgYWxsb3dlZCxcbiAgICAgIG1heEJvZHlMZW5ndGg6IDEwMDAgKiAxMDAwICogMTAsXG4gICAgICAvLyBgbWF4UmVkaXJlY3RzYCBkZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZWRpcmVjdHMgdG8gZm9sbG93IGluIG5vZGUuanMsXG4gICAgICBtYXhSZWRpcmVjdHM6IDUsXG4gICAgICAvLyBgaHR0cEFnZW50YCBhbmQgYGh0dHBzQWdlbnRgIGRlZmluZSBhIGN1c3RvbSBhZ2VudCB0byBiZSB1c2VkIHdoZW4gcGVyZm9ybWluZyBodHRwXG4gICAgICBodHRwQWdlbnQ6IG5ldyBodHRwLkFnZW50KHsga2VlcEFsaXZlOiB0cnVlIH0pLFxuICAgICAgLy8gYW5kIGh0dHBzIHJlcXVlc3RzLCByZXNwZWN0aXZlbHksIGluIG5vZGUuanMuIFRoaXMgYWxsb3dzIG9wdGlvbnMgdG8gYmUgYWRkZWQgbGlrZSBga2VlcEFsaXZlYCB0aGF0IGFyZSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LlxuICAgICAgaHR0cHNBZ2VudDogbmV3IGh0dHBzLkFnZW50KHsga2VlcEFsaXZlOiB0cnVlIH0pLFxuICAgIH07XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHRoaXMuaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUodGhpcy5vcHRpb25zKTtcblxuICAgIC8vIE1lcmdlIHdpdGggZGVmYXVsdCBjb25maWcgdG8gZWxpbWluYXRlIG51bGwgY2hlY2tzXG4gICAgY29uc3QgZGVmYXVsdE9ic2VydmFiaWxpdHlDb25maWc6IEF4aW9zQ2xpZW50T2JzZXJ2YWJpbGl0eUNvbmZpZyA9IHtcbiAgICAgIGxvZ2dlcjogdW5kZWZpbmVkLFxuICAgICAgc3RhdHNDbGllbnQ6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRTdGF0VGFnczoge30sXG4gICAgfTtcbiAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcgPSB7IC4uLmRlZmF1bHRPYnNlcnZhYmlsaXR5Q29uZmlnLCAuLi5vYnNlcnZhYmlsaXR5Q29uZmlnIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1ha2VSZXF1ZXN0PFQ+KFxuICAgIGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIC8vIEV4dHJhY3QgbWV0YWRhdGEgZm9yIGxvZ2dpbmcvbWV0cmljc1xuICAgIGNvbnN0IG1ldGhvZCA9IGNvbmZpZy5tZXRob2Q/LnRvVXBwZXJDYXNlKCkgfHwgJ1VOS05PV04nO1xuICAgIGNvbnN0IHVybCA9IGNvbmZpZy51cmwgfHwgJ3Vua25vd24nO1xuICAgIGNvbnN0IGJvZHkgPSBjb25maWcuZGF0YSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RhdFRhZ3M6IFN0YXRUYWdzID0ge1xuICAgICAgcmVxdWVzdE1ldGhvZDogbWV0aG9kLFxuICAgICAgZW5kcG9pbnRQYXRoOiB1cmwsXG4gICAgICAuLi50aGlzLm9ic2VydmFiaWxpdHlDb25maWcuZGVmYXVsdFN0YXRUYWdzLFxuICAgIH07XG5cbiAgICAvLyBPcHRpb25hbCByZXF1ZXN0IGxvZ2dpbmdcbiAgICBjb25zdCByZXF1ZXN0TG9nUGFyYW1zOiBSZXF1ZXN0TG9nUGFyYW1zID0ge1xuICAgICAgcmVxdWVzdERldGFpbHM6IHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QgfHwgJ3VuZGVmaW5lZCcsXG4gICAgICAgIHVybDogdXJsIHx8ICd1bmRlZmluZWQnLFxuICAgICAgICBib2R5OiBib2R5IHx8ICd1bmRlZmluZWQnLFxuICAgICAgfSxcbiAgICAgIG1ldGFkYXRhOiBzdGF0VGFncy5tZXRhZGF0YSB8fCB7fSxcbiAgICB9O1xuICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5sb2dnZXI/LnJlcXVlc3RMb2coXG4gICAgICBgW0hUVFBdICR7bWV0aG9kfSAke3VybH0gcmVxdWVzdGAsXG4gICAgICByZXF1ZXN0TG9nUGFyYW1zLFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5pbnN0YW5jZS5yZXF1ZXN0KHJlcXVlc3RDb25maWcpO1xuICAgICAgY29uc3QgeyBzdGF0dXMsIGRhdGEsIGhlYWRlcnMgfSA9IHJlc3BvbnNlO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAvLyBBZGQgc3RhdHVzIGNvZGUgdG8gc3RhdFRhZ3MgZm9yIGJldHRlciBvYnNlcnZhYmlsaXR5XG4gICAgICBjb25zdCBzdWNjZXNzU3RhdFRhZ3MgPSB7XG4gICAgICAgIC4uLnN0YXRUYWdzLFxuICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXMsXG4gICAgICB9O1xuXG4gICAgICAvLyBPcHRpb25hbCByZXNwb25zZSBsb2dnaW5nXG4gICAgICBjb25zdCByZXNwb25zZUxvZ1BhcmFtczogUmVzcG9uc2VMb2dQYXJhbXMgPSB7XG4gICAgICAgIHJlc3BvbnNlRGV0YWlsczoge1xuICAgICAgICAgIHN0YXR1czogc3RhdHVzIHx8IDAsXG4gICAgICAgICAgYm9keTogZGF0YSB8fCAndW5kZWZpbmVkJyxcbiAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzIHx8ICd1bmRlZmluZWQnLFxuICAgICAgICB9LFxuICAgICAgICBtZXRhZGF0YTogc3RhdFRhZ3MubWV0YWRhdGEgfHwge30sXG4gICAgICB9O1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLmxvZ2dlcj8ucmVzcG9uc2VMb2coXG4gICAgICAgIGBbSFRUUF0gJHttZXRob2R9ICR7dXJsfSByZXNwb25zZWAsXG4gICAgICAgIHJlc3BvbnNlTG9nUGFyYW1zLFxuICAgICAgKTtcblxuICAgICAgLy8gT3B0aW9uYWwgc3VjY2VzcyBtZXRyaWNzXG4gICAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcuc3RhdHNDbGllbnQ/LnRpbWluZyhcbiAgICAgICAgJ291dGdvaW5nX3JlcXVlc3RfbGF0ZW5jeScsXG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICBzdWNjZXNzU3RhdFRhZ3MsXG4gICAgICApO1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLnN0YXRzQ2xpZW50Py5pbmNyZW1lbnQoJ291dGdvaW5nX3JlcXVlc3RfY291bnQnLCAxLCBzdWNjZXNzU3RhdFRhZ3MpO1xuXG4gICAgICBpZiAocmVzcG9uc2VQYXJzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gcmVzcG9uc2VQYXJzZXIoZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHN0YXR1cyxcbiAgICAgICAgICAgIHJlc3BvbnNlQm9keTogcGFyc2VkRGF0YSxcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCB1bmtub3duRXJyb3IgPSBlcnJvciBhcyBFcnJvcjtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2NsaWVudC1lcnJvcicsXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBFcnJvciBoYXMgc3RhdHVzXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiB1bmtub3duRXJyb3Iuc3RhdHVzIHx8IDUwMCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gcGFyc2UgcmVzcG9uc2UgZGF0YTogJHt1bmtub3duRXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHR5cGU6ICdzdWNjZXNzJywgc3RhdHVzQ29kZTogc3RhdHVzLCByZXNwb25zZUJvZHk6IGRhdGEsIGhlYWRlcnMgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAvLyBEZXRlcm1pbmUgc3RhdHVzIGNvZGUgZm9yIGVycm9yIG1ldHJpY3NcbiAgICAgIGxldCBlcnJvclN0YXR1c0NvZGUgPSA1MDA7IC8vIERlZmF1bHQgdG8gNTAwIGZvciBuZXR3b3JrL3Vua25vd24gZXJyb3JzXG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICBjb25zdCBheGlvc0Vycm9yID0gZXJyb3IgYXMgQXhpb3NFcnJvcjtcbiAgICAgICAgaWYgKGF4aW9zRXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgICBlcnJvclN0YXR1c0NvZGUgPSBheGlvc0Vycm9yLnJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgc3RhdHVzIGNvZGUgYW5kIGVycm9yIGZsYWcgdG8gc3RhdFRhZ3MgZm9yIGJldHRlciBvYnNlcnZhYmlsaXR5XG4gICAgICBjb25zdCBlcnJvclN0YXRUYWdzID0ge1xuICAgICAgICAuLi5zdGF0VGFncyxcbiAgICAgICAgc3RhdHVzQ29kZTogZXJyb3JTdGF0dXNDb2RlLFxuICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIC8vIE9wdGlvbmFsIGVycm9yIGxvZ2dpbmdcbiAgICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5sb2dnZXI/LmVycm9yPy4oYFtIVFRQXSAke21ldGhvZH0gJHt1cmx9IGVycm9yYCwge1xuICAgICAgICBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgc3RhdFRhZ3M6IGVycm9yU3RhdFRhZ3MsXG4gICAgICB9KTtcblxuICAgICAgLy8gT3B0aW9uYWwgZXJyb3IgbWV0cmljc1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLnN0YXRzQ2xpZW50Py50aW1pbmcoXG4gICAgICAgICdvdXRnb2luZ19yZXF1ZXN0X2xhdGVuY3knLFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgZXJyb3JTdGF0VGFncyxcbiAgICAgICk7XG4gICAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcuc3RhdHNDbGllbnQ/LmluY3JlbWVudCgnb3V0Z29pbmdfcmVxdWVzdF9jb3VudCcsIDEsIGVycm9yU3RhdFRhZ3MpO1xuXG4gICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICBjb25zdCBheGlvc0Vycm9yID0gZXJyb3IgYXMgQXhpb3NFcnJvcjtcbiAgICAgICAgaWYgKGF4aW9zRXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCB7IHJlc3BvbnNlIH0gPSBheGlvc0Vycm9yO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24tZXJyb3InLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgIHJlc3BvbnNlQm9keTogcmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXhpb3NFcnJvci5jb2RlKSB7XG4gICAgICAgICAgY29uc3QgcmVzcCA9IE5FVFdPUktfU1RBVFVTX0VSUl9NQVBbYXhpb3NFcnJvci5jb2RlXTtcbiAgICAgICAgICBpZiAoIXJlc3ApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgICBzdGF0dXNDb2RlOiA1MDAsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmtub3duIEVycm9yOiR7YXhpb3NFcnJvci5tZXNzYWdlfWAsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2NsaWVudC1lcnJvcicsXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiByZXNwLnN0YXR1cyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AubWVzc2FnZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVua25vd25FcnJvciA9IGVycm9yIGFzIEVycm9yO1xuICAgICAgY29uc3Qgc3RhdHVzID0gNTAwO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHVua25vd25FcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIEVycm9yJztcblxuICAgICAgcmV0dXJuIHsgdHlwZTogJ2NsaWVudC1lcnJvcicsIHN0YXR1c0NvZGU6IHN0YXR1cywgbWVzc2FnZSB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEF4aW9zUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybCxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwb3N0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGRhdGE/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBBeGlvc1JlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IEF4aW9zUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAncHV0JyxcbiAgICAgIHVybCxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgICBpZiAoaXNOb3RFbXB0eShvcHRpb25zKSkge1xuICAgICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3Q8VD4oY29uZmlnLCByZXNwb25zZVBhcnNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGF0Y2g8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IEF4aW9zUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGU8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEF4aW9zUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICAgIHVybCxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIC8vIEFkZCBvdGhlciBIVFRQIG1ldGhvZHMgYXMgbmVlZGVkXG59XG4iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3NfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvY2xpZW50cy9heGlvc19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLCtDQUE2RTtBQUM3RSxnREFBd0I7QUFDeEIsa0RBQTBCO0FBQzFCLCtDQUF5RDtBQUV6RCx1Q0FBeUM7QUFFekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSxXQUFXO0lBS3RCLFlBQVksT0FBNEI7UUFDdEMsTUFBTSxjQUFjLEdBQUc7WUFDckIsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ2xCLGlIQUFpSDtZQUNqSCxlQUFlLEVBQUUsS0FBSztZQUN0QixzRkFBc0Y7WUFDdEYsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4Qix3R0FBd0c7WUFDeEcsYUFBYSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUMvQiwrRUFBK0U7WUFDL0UsWUFBWSxFQUFFLENBQUM7WUFDZixxRkFBcUY7WUFDckYsU0FBUyxFQUFFLElBQUksY0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUM5QyxrSUFBa0k7WUFDbEksVUFBVSxFQUFFLElBQUksZUFBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNqRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FDdkIsTUFBMEIsRUFDMUIsY0FBa0M7UUFF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L0IsTUFBTSxFQUFFLE9BQU87WUFDZixHQUFHO1lBQ0gsSUFBSTtTQUNMLENBQUM7UUFDRixJQUFJLElBQUEsa0JBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBSSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEdBQVcsRUFDWCxPQUE0QixFQUM1QixjQUFrQztRQUVsQyxJQUFJLE1BQU0sR0FBdUI7WUFDL0IsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRztTQUNKLENBQUM7UUFDRixJQUFJLElBQUEsa0JBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBSSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUdGO0FBaExELGtDQWdMQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCBheGlvcywgeyBBeGlvc1JlcXVlc3RDb25maWcsIEF4aW9zRXJyb3IsIEF4aW9zSW5zdGFuY2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgeyBORVRXT1JLX1NUQVRVU19FUlJfTUFQIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlLCBIdHRwQ2xpZW50LCBSZXNwb25zZVBhcnNlciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgaXNOb3RFbXB0eSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGF4aW9zIHRvIG1ha2UgaHR0cCByZXF1ZXN0c1xuICpcbiAqIEBjbGFzcyBBeGlvc0NsaWVudFxuICogQGNsYXNzZGVzY1xuICogVGhlIGBBeGlvc0NsaWVudGAgY2xhc3MgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgYXhpb3MgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgZm9yIG1ha2luZyBIVFRQIHJlcXVlc3RzLiBJdCBoYW5kbGVzIHZhcmlvdXMgdHlwZXMgb2YgZXJyb3JzIGFuZCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgcmVzcG9uc2UgZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSBvcHRpb25zIC0gVGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGh0dHAgY2xpZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGF4aW9zQ2xpZW50ID0gbmV3IEF4aW9zQ2xpZW50KHsgdGltZW91dDogMTAwMCAqIDEwIH0pO1xuICogY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvc0NsaWVudC5wb3N0KFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiLCB7IGZvbzogXCJiYXJcIiB9KTtcbiAqIGlmIChyZXNwb25zZS50eXBlID09PSBcInN1Y2Nlc3NcIikge1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJhcHBsaWNhdGlvbi1lcnJvclwiKSB7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5tZXNzYWdlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJjbGllbnQtZXJyb3JcIikge1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UubWVzc2FnZSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBjbGFzcyBBeGlvc0NsaWVudCBpbXBsZW1lbnRzIEh0dHBDbGllbnQge1xuICBwcml2YXRlIG9wdGlvbnM6IEF4aW9zUmVxdWVzdENvbmZpZztcblxuICBwcml2YXRlIGluc3RhbmNlOiBBeGlvc0luc3RhbmNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBBeGlvc1JlcXVlc3RDb25maWcpIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVvdXQ6IDEwMDAgKiAxMCxcbiAgICAgIC8vIGB3aXRoQ3JlZGVudGlhbHNgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBjcm9zcy1zaXRlIEFjY2Vzcy1Db250cm9sIHJlcXVlc3RzIHNob3VsZCBiZSBtYWRlIHVzaW5nIGNyZWRlbnRpYWxzXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgICAgLy8gYHJlc3BvbnNlRW5jb2RpbmdgIGluZGljYXRlcyBlbmNvZGluZyB0byB1c2UgZm9yIGRlY29kaW5nIHJlc3BvbnNlcyAoTm9kZS5qcyBvbmx5KSxcbiAgICAgIHJlc3BvbnNlRW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIC8vIGBtYXhCb2R5TGVuZ3RoYCAoTm9kZSBvbmx5IG9wdGlvbikgZGVmaW5lcyB0aGUgbWF4IHNpemUgb2YgdGhlIGh0dHAgcmVxdWVzdCBjb250ZW50IGluIGJ5dGVzIGFsbG93ZWQsXG4gICAgICBtYXhCb2R5TGVuZ3RoOiAxMDAwICogMTAwMCAqIDEwLFxuICAgICAgLy8gYG1heFJlZGlyZWN0c2AgZGVmaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVkaXJlY3RzIHRvIGZvbGxvdyBpbiBub2RlLmpzLFxuICAgICAgbWF4UmVkaXJlY3RzOiA1LFxuICAgICAgLy8gYGh0dHBBZ2VudGAgYW5kIGBodHRwc0FnZW50YCBkZWZpbmUgYSBjdXN0b20gYWdlbnQgdG8gYmUgdXNlZCB3aGVuIHBlcmZvcm1pbmcgaHR0cFxuICAgICAgaHR0cEFnZW50OiBuZXcgaHR0cC5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbiAgICAgIC8vIGFuZCBodHRwcyByZXF1ZXN0cywgcmVzcGVjdGl2ZWx5LCBpbiBub2RlLmpzLiBUaGlzIGFsbG93cyBvcHRpb25zIHRvIGJlIGFkZGVkIGxpa2UgYGtlZXBBbGl2ZWAgdGhhdCBhcmUgbm90IGVuYWJsZWQgYnkgZGVmYXVsdC5cbiAgICAgIGh0dHBzQWdlbnQ6IG5ldyBodHRwcy5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgICB0aGlzLmluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1ha2VSZXF1ZXN0PFQ+KFxuICAgIGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBsZXQgb3V0cHV0OiBBcGlSZXNwb25zZTxUPjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5pbnN0YW5jZS5yZXF1ZXN0KHJlcXVlc3RDb25maWcpO1xuICAgICAgY29uc3QgeyBzdGF0dXMsIGRhdGEsIGhlYWRlcnMgfSA9IHJlc3BvbnNlO1xuXG4gICAgICBpZiAocmVzcG9uc2VQYXJzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gcmVzcG9uc2VQYXJzZXIoZGF0YSk7XG4gICAgICAgICAgb3V0cHV0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogc3RhdHVzLFxuICAgICAgICAgICAgcmVzcG9uc2VCb2R5OiBwYXJzZWREYXRhLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc3QgdW5rbm93bkVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogRXJyb3IgaGFzIHN0YXR1c1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogdW5rbm93bkVycm9yLnN0YXR1cyB8fCA1MDAsXG4gICAgICAgICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGRhdGE6ICR7dW5rbm93bkVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VjY2VzcycsIHN0YXR1c0NvZGU6IHN0YXR1cywgcmVzcG9uc2VCb2R5OiBkYXRhLCBoZWFkZXJzIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEF4aW9zRXJyb3IpIHtcbiAgICAgICAgY29uc3QgYXhpb3NFcnJvciA9IGVycm9yIGFzIEF4aW9zRXJyb3I7XG4gICAgICAgIGlmIChheGlvc0Vycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXhpb3NFcnJvcjtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uLWVycm9yJyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICAgICAgICByZXNwb25zZUJvZHk6IHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aW9zRXJyb3IuY29kZSkge1xuICAgICAgICAgIGNvbnN0IHJlc3AgPSBORVRXT1JLX1NUQVRVU19FUlJfTUFQW2F4aW9zRXJyb3IuY29kZV07XG4gICAgICAgICAgaWYgKCFyZXNwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiAnY2xpZW50LWVycm9yJyxcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5rbm93biBFcnJvcjoke2F4aW9zRXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzcC5zdGF0dXMsXG4gICAgICAgICAgICBtZXNzYWdlOiByZXNwLm1lc3NhZ2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1bmtub3duRXJyb3IgPSBlcnJvciBhcyBFcnJvcjtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IDUwMDtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB1bmtub3duRXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBFcnJvcic7XG5cbiAgICAgIHJldHVybiB7IHR5cGU6ICdjbGllbnQtZXJyb3InLCBzdGF0dXNDb2RlOiBzdGF0dXMsIG1lc3NhZ2UgfTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBBeGlvc1JlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICB1cmwsXG4gICAgfTtcbiAgICBpZiAoaXNOb3RFbXB0eShvcHRpb25zKSkge1xuICAgICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3Q8VD4oY29uZmlnLCByZXNwb25zZVBhcnNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhPzogYW55LFxuICAgIG9wdGlvbnM/OiBBeGlvc1JlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YT86IGFueSxcbiAgICBvcHRpb25zPzogQXhpb3NSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBsZXQgY29uZmlnOiBBeGlvc1JlcXVlc3RDb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwYXRjaDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhPzogYW55LFxuICAgIG9wdGlvbnM/OiBBeGlvc1JlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ3BhdGNoJyxcbiAgICAgIHVybCxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgICBpZiAoaXNOb3RFbXB0eShvcHRpb25zKSkge1xuICAgICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3Q8VD4oY29uZmlnLCByZXNwb25zZVBhcnNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBBeGlvc1JlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmwsXG4gICAgfTtcbiAgICBpZiAoaXNOb3RFbXB0eShvcHRpb25zKSkge1xuICAgICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3Q8VD4oY29uZmlnLCByZXNwb25zZVBhcnNlcik7XG4gIH1cblxuICAvLyBBZGQgb3RoZXIgSFRUUCBtZXRob2RzIGFzIG5lZWRlZFxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AxiosRequestConfig, AxiosResponseHeaders, RawAxiosResponseHeaders } from 'axios';
|
|
2
2
|
type ResponseHeaders = RawAxiosResponseHeaders | AxiosResponseHeaders | undefined;
|
|
3
|
-
export type ResponseParser<T> = (responseData:
|
|
3
|
+
export type ResponseParser<T> = (responseData: any) => T;
|
|
4
4
|
export type SuccessfulApiResponse<T> = {
|
|
5
5
|
type: 'success';
|
|
6
6
|
statusCode: number;
|
|
@@ -16,104 +16,16 @@ export type ApplicationErrorApiResponse = {
|
|
|
16
16
|
type: 'application-error';
|
|
17
17
|
statusCode: number;
|
|
18
18
|
message: string;
|
|
19
|
-
responseBody:
|
|
19
|
+
responseBody: any;
|
|
20
20
|
headers: ResponseHeaders;
|
|
21
21
|
};
|
|
22
22
|
export type ApiResponse<T> = SuccessfulApiResponse<T> | ClientErrorApiResponse | ApplicationErrorApiResponse;
|
|
23
23
|
export type RequestConfig = AxiosRequestConfig;
|
|
24
|
-
/**
|
|
25
|
-
* HTTP Logger interface compatible with transformer's logger pattern
|
|
26
|
-
* Provides request/response logging capabilities for HTTP wrapper
|
|
27
|
-
*/
|
|
28
|
-
export type Metadata = {
|
|
29
|
-
destinationId?: string;
|
|
30
|
-
sourceId?: string;
|
|
31
|
-
workspaceId?: string;
|
|
32
|
-
destType?: string;
|
|
33
|
-
destinationType?: string;
|
|
34
|
-
module?: string;
|
|
35
|
-
implementation?: string;
|
|
36
|
-
feature?: string;
|
|
37
|
-
};
|
|
38
|
-
export type RequestLogParams = {
|
|
39
|
-
metadata?: Metadata | Metadata[] | undefined;
|
|
40
|
-
requestDetails: {
|
|
41
|
-
url?: string;
|
|
42
|
-
body?: unknown;
|
|
43
|
-
method?: string;
|
|
44
|
-
[key: string]: unknown;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
export type ResponseLogParams = {
|
|
48
|
-
metadata?: Metadata | Metadata[] | undefined;
|
|
49
|
-
responseDetails: {
|
|
50
|
-
body?: unknown;
|
|
51
|
-
status?: number;
|
|
52
|
-
headers?: Record<string, string> | unknown;
|
|
53
|
-
[key: string]: unknown;
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
export interface IHttpLogger {
|
|
57
|
-
requestLog(message: string, data?: RequestLogParams): void;
|
|
58
|
-
responseLog(message: string, data?: ResponseLogParams): void;
|
|
59
|
-
error?(message: string, data?: unknown): void;
|
|
60
|
-
warn?(message: string, data?: unknown): void;
|
|
61
|
-
info?(message: string, data?: unknown): void;
|
|
62
|
-
debug?(message: string, data?: unknown): void;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* HTTP Stats Client interface compatible with transformer's stats pattern
|
|
66
|
-
* Provides metrics collection capabilities for HTTP wrapper
|
|
67
|
-
*/
|
|
68
|
-
export interface IHttpStatsClient {
|
|
69
|
-
timing(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
70
|
-
increment(name: string, value?: number, tags?: Record<string, unknown>): void;
|
|
71
|
-
counter(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
72
|
-
timingSummary?(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
73
|
-
gauge?(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
74
|
-
histogram?(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* StatTags interface for metadata and metrics tagging
|
|
78
|
-
* Compatible with transformer's statTags structure
|
|
79
|
-
*/
|
|
80
|
-
export interface StatTags {
|
|
81
|
-
[key: string]: unknown;
|
|
82
|
-
destType?: string;
|
|
83
|
-
feature?: string;
|
|
84
|
-
endpointPath?: string;
|
|
85
|
-
requestMethod?: string;
|
|
86
|
-
module?: string;
|
|
87
|
-
metadata?: Metadata | Metadata[];
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* HTTP Client Configuration interface with optional dependencies
|
|
91
|
-
* Enables flexible configuration for different usage scenarios
|
|
92
|
-
*/
|
|
93
|
-
export interface HttpClientConfig {
|
|
94
|
-
logger?: IHttpLogger;
|
|
95
|
-
statsClient?: IHttpStatsClient;
|
|
96
|
-
defaultTimeout?: number;
|
|
97
|
-
defaultStatTags?: Record<string, unknown>;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* AxiosClient Observability Configuration interface for optional metrics and logging
|
|
101
|
-
*/
|
|
102
|
-
export interface AxiosClientObservabilityConfig {
|
|
103
|
-
statsClient?: IHttpStatsClient;
|
|
104
|
-
logger?: IHttpLogger;
|
|
105
|
-
defaultStatTags?: Record<string, unknown>;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* @deprecated Use AxiosClientObservabilityConfig instead
|
|
109
|
-
*/
|
|
110
|
-
export interface AxiosClientConfig extends AxiosClientObservabilityConfig {
|
|
111
|
-
}
|
|
112
24
|
export interface HttpClient {
|
|
113
|
-
post: <T>(url: string, data:
|
|
25
|
+
post: <T>(url: string, data: any, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
114
26
|
get: <T>(url: string, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
115
|
-
put: <T>(url: string, data:
|
|
116
|
-
patch: <T>(url: string, data:
|
|
27
|
+
put: <T>(url: string, data: any, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
28
|
+
patch: <T>(url: string, data: any, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
117
29
|
delete: <T>(url: string, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
118
30
|
}
|
|
119
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/network/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAE1F,KAAK,eAAe,GAAG,uBAAuB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAClF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/network/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAE1F,KAAK,eAAe,GAAG,uBAAuB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAClF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC;AACzD,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB,qBAAqB,CAAC,CAAC,CAAC,GACxB,sBAAsB,GACtB,2BAA2B,CAAC;AAGhC,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,CAAC,EACN,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,EACL,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7B,GAAG,EAAE,CAAC,CAAC,EACL,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,EAAE,CAAC,CAAC,EACP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7B,MAAM,EAAE,CAAC,CAAC,EACR,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29yay9jbGllbnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcsIEF4aW9zUmVzcG9uc2VIZWFkZXJzLCBSYXdBeGlvc1Jlc3BvbnNlSGVhZGVycyB9IGZyb20gJ2F4aW9zJztcblxudHlwZSBSZXNwb25zZUhlYWRlcnMgPSBSYXdBeGlvc1Jlc3BvbnNlSGVhZGVycyB8IEF4aW9zUmVzcG9uc2VIZWFkZXJzIHwgdW5kZWZpbmVkO1xuZXhwb3J0IHR5cGUgUmVzcG9uc2VQYXJzZXI8VD4gPSAocmVzcG9uc2VEYXRhOiBhbnkpID0+IFQ7XG5leHBvcnQgdHlwZSBTdWNjZXNzZnVsQXBpUmVzcG9uc2U8VD4gPSB7XG4gIHR5cGU6ICdzdWNjZXNzJztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICByZXNwb25zZUJvZHk6IFQ7XG4gIGhlYWRlcnM6IFJlc3BvbnNlSGVhZGVycztcbn07XG5leHBvcnQgdHlwZSBDbGllbnRFcnJvckFwaVJlc3BvbnNlID0ge1xuICB0eXBlOiAnY2xpZW50LWVycm9yJztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQXBwbGljYXRpb25FcnJvckFwaVJlc3BvbnNlID0ge1xuICB0eXBlOiAnYXBwbGljYXRpb24tZXJyb3InO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmVzcG9uc2VCb2R5OiBhbnk7XG4gIGhlYWRlcnM6IFJlc3BvbnNlSGVhZGVycztcbn07XG5leHBvcnQgdHlwZSBBcGlSZXNwb25zZTxUPiA9XG4gIHwgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlPFQ+XG4gIHwgQ2xpZW50RXJyb3JBcGlSZXNwb25zZVxuICB8IEFwcGxpY2F0aW9uRXJyb3JBcGlSZXNwb25zZTtcblxuLy8gT3RoZXIgY2xpZW50IFJlcXVzZXQgY29uZmlnIHR5cGVzIHRvIGJlIGFkZGVkIGhlcmVcbmV4cG9ydCB0eXBlIFJlcXVlc3RDb25maWcgPSBBeGlvc1JlcXVlc3RDb25maWc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENsaWVudCB7XG4gIHBvc3Q6IDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhOiBhbnksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKSA9PiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PjtcbiAgZ2V0OiA8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKSA9PiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PjtcblxuICBwdXQ6IDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhOiBhbnksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKSA9PiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PjtcblxuICBwYXRjaDogPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGRhdGE6IGFueSxcbiAgICBvcHRpb25zPzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApID0+IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+O1xuXG4gIGRlbGV0ZTogPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICkgPT4gUHJvbWlzZTxBcGlSZXNwb25zZTxUPj47XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AxiosRequestConfig } from 'axios';
|
|
2
|
-
import { HttpClient
|
|
3
|
-
export { ApiResponse, ApplicationErrorApiResponse, ClientErrorApiResponse, SuccessfulApiResponse, ResponseParser,
|
|
2
|
+
import { HttpClient } from './clients/types';
|
|
3
|
+
export { ApiResponse, ApplicationErrorApiResponse, ClientErrorApiResponse, SuccessfulApiResponse, ResponseParser, } from './clients/types';
|
|
4
4
|
export declare enum ClientNames {
|
|
5
5
|
Axios = "axios"
|
|
6
6
|
}
|
|
@@ -26,15 +26,5 @@ export type clientOptions = AxiosRequestConfig;
|
|
|
26
26
|
*/
|
|
27
27
|
export declare class HttpClientFactory {
|
|
28
28
|
static getHttpClient(name: ClientNames, options?: clientOptions): HttpClient;
|
|
29
|
-
/**
|
|
30
|
-
* Create HTTP client with metrics and logging capabilities
|
|
31
|
-
* @param name - Client name (currently only supports Axios)
|
|
32
|
-
* @param logger - Logger instance for request/response logging
|
|
33
|
-
* @param statsClient - Stats client instance for metrics collection
|
|
34
|
-
* @param defaultStatTags - Default stat tags for all requests
|
|
35
|
-
* @param options - Axios configuration options
|
|
36
|
-
* @returns Enhanced HTTP client with logging and metrics
|
|
37
|
-
*/
|
|
38
|
-
static getHttpClientWithMetrics(name: ClientNames, logger?: IHttpLogger, statsClient?: IHttpStatsClient, defaultStatTags?: Record<string, unknown>, options?: clientOptions): HttpClient;
|
|
39
29
|
}
|
|
40
30
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/network/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/network/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,oBAAY,WAAW;IACrB,KAAK,UAAU;CAGhB;AAGD,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU;CAY7E"}
|
package/build/network/factory.js
CHANGED
|
@@ -41,29 +41,6 @@ class HttpClientFactory {
|
|
|
41
41
|
throw new platform_error_1.PlatformError('Invalid client name');
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Create HTTP client with metrics and logging capabilities
|
|
46
|
-
* @param name - Client name (currently only supports Axios)
|
|
47
|
-
* @param logger - Logger instance for request/response logging
|
|
48
|
-
* @param statsClient - Stats client instance for metrics collection
|
|
49
|
-
* @param defaultStatTags - Default stat tags for all requests
|
|
50
|
-
* @param options - Axios configuration options
|
|
51
|
-
* @returns Enhanced HTTP client with logging and metrics
|
|
52
|
-
*/
|
|
53
|
-
static getHttpClientWithMetrics(name, logger, statsClient, defaultStatTags, options) {
|
|
54
|
-
switch (name) {
|
|
55
|
-
case ClientNames.Axios: {
|
|
56
|
-
const observabilityConfig = {
|
|
57
|
-
logger,
|
|
58
|
-
statsClient,
|
|
59
|
-
defaultStatTags: defaultStatTags || {},
|
|
60
|
-
};
|
|
61
|
-
return new axios_client_1.AxiosClient(options, observabilityConfig);
|
|
62
|
-
}
|
|
63
|
-
default:
|
|
64
|
-
throw new platform_error_1.PlatformError('Invalid client name');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
44
|
}
|
|
68
45
|
exports.HttpClientFactory = HttpClientFactory;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXR3b3JrL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQXlEO0FBRXpELHlEQUFxRDtBQVVyRCxJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixjQUFjO0FBQ2hCLENBQUMsRUFKVyxXQUFXLDJCQUFYLFdBQVcsUUFJdEI7QUFLRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFpQixFQUFFLE9BQXVCO1FBQzdELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFdBQVcsQ0FBQyxLQUFLO2dCQUNwQixPQUFPLElBQUksMEJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQywwQkFBMEI7WUFDMUIscURBQXFEO1lBQ3JELHdCQUF3QjtZQUN4QixpREFBaUQ7WUFDakQ7Z0JBQ0UsTUFBTSxJQUFJLDhCQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBYkQsOENBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBQbGF0Zm9ybUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3BsYXRmb3JtX2Vycm9yJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICcuL2NsaWVudHMvdHlwZXMnO1xuaW1wb3J0IHsgQXhpb3NDbGllbnQgfSBmcm9tICcuL2NsaWVudHMvYXhpb3NfY2xpZW50JztcblxuZXhwb3J0IHtcbiAgQXBpUmVzcG9uc2UsXG4gIEFwcGxpY2F0aW9uRXJyb3JBcGlSZXNwb25zZSxcbiAgQ2xpZW50RXJyb3JBcGlSZXNwb25zZSxcbiAgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlLFxuICBSZXNwb25zZVBhcnNlcixcbn0gZnJvbSAnLi9jbGllbnRzL3R5cGVzJztcblxuZXhwb3J0IGVudW0gQ2xpZW50TmFtZXMge1xuICBBeGlvcyA9ICdheGlvcycsXG4gIC8vIEZldGNoID0gJ2ZldGNoJyxcbiAgLy8gWGhyID0gJ3hocidcbn1cblxuLy8gQXMgd2UgYWRkIG1vcmUgY2xpZW50cywgd2Ugd2lsbCB1bmlvbiB0aGVtIGhlcmVcbmV4cG9ydCB0eXBlIGNsaWVudE9wdGlvbnMgPSBBeGlvc1JlcXVlc3RDb25maWc7XG5cbi8qKlxuICogQGNsYXNzIEh0dHBDbGllbnRGYWN0b3J5XG4gKiBAY2xhc3NkZXNjXG4gKiBBIGZhY3RvcnkgY2xhc3MgdG8gZ2VuZXJhdGUgaHR0cCBjbGllbnRzXG4gKiBAZXhhbXBsZVxuICogY29uc3QgaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoJ2F4aW9zJyk7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IGh0dHBDbGllbnQucG9zdChcImh0dHBzOi8vZXhhbXBsZS5jb21cIiwgeyBmb286IFwiYmFyXCIgfSk7XG4gKiBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJhcHBsaWNhdGlvbi1lcnJvclwiKSB7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICogY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJjbGllbnQtZXJyb3JcIikge1xuICogY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5tZXNzYWdlKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBDbGllbnRGYWN0b3J5IHtcbiAgc3RhdGljIGdldEh0dHBDbGllbnQobmFtZTogQ2xpZW50TmFtZXMsIG9wdGlvbnM/OiBjbGllbnRPcHRpb25zKTogSHR0cENsaWVudCB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlIENsaWVudE5hbWVzLkF4aW9zOlxuICAgICAgICByZXR1cm4gbmV3IEF4aW9zQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgLy8gY2FzZSBDbGllbnROYW1lcy5GZXRjaDpcbiAgICAgIC8vICAgICByZXR1cm4gcmVxdWlyZSgnLi9jbGllbnRzL2ZldGNoJykuRmV0Y2hDbGllbnQ7XG4gICAgICAvLyBjYXNlIENsaWVudE5hbWVzLlhocjpcbiAgICAgIC8vICAgICByZXR1cm4gcmVxdWlyZSgnLi9jbGllbnRzL3hocicpLlhockNsaWVudDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBQbGF0Zm9ybUVycm9yKCdJbnZhbGlkIGNsaWVudCBuYW1lJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,23 +1,51 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BaseSDK } from '../common/base-sdk';
|
|
3
|
-
import { AuthObject, AudienceSegmentBody, AudienceSegmentData, CriteoConfig } from './types';
|
|
1
|
+
import { AuthObject, AudienceSegmentBody, AudienceSegmentData } from './types';
|
|
4
2
|
/**
|
|
5
3
|
* CriteoAudience SDK for managing audience segments in Criteo
|
|
6
4
|
* @class
|
|
7
5
|
*/
|
|
8
|
-
export default class CriteoAudience
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
export default class CriteoAudience {
|
|
7
|
+
private authObject;
|
|
8
|
+
private httpClient;
|
|
9
|
+
/**
|
|
10
|
+
* Creates an instance of CriteoAudience
|
|
11
|
+
* @param {AuthObject} authObject - Authentication object containing access token and refresh function
|
|
12
|
+
* @throws {Error} If authObject is invalid or missing required properties
|
|
13
|
+
*/
|
|
14
|
+
constructor(authObject: AuthObject);
|
|
15
|
+
/**
|
|
16
|
+
* Validates the authentication object
|
|
17
|
+
* @param {AuthObject} authObject - Authentication object to validate
|
|
18
|
+
* @throws {Error} If authObject is invalid or missing required properties
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
private static validateAuthObject;
|
|
22
|
+
/**
|
|
23
|
+
* Refreshes the access token using the provided refresh function
|
|
24
|
+
* @throws {Error} If token refresh fails
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private refreshToken;
|
|
28
|
+
/**
|
|
29
|
+
* Gets the request headers with authentication
|
|
30
|
+
* @returns {RequestConfig} Request configuration with headers
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
private getHeader;
|
|
34
|
+
/**
|
|
35
|
+
* Executes a POST request with token refresh handling
|
|
36
|
+
* @template T - Response type
|
|
37
|
+
* @param {string} url - API endpoint URL
|
|
38
|
+
* @param {object} data - Request payload
|
|
39
|
+
* @returns {Promise<ApiResponse<T>>} API response
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
private executePostRequest;
|
|
14
43
|
/**
|
|
15
44
|
* Creates a new audience segment in Criteo
|
|
16
45
|
* @param {AudienceSegmentBody} audienceSegmentBody - Audience segment data
|
|
17
|
-
* @param {StatTags} statTags - Optional stat tags for metrics and logging
|
|
18
46
|
* @returns {Promise<AudienceSegmentData>} Created audience segment data
|
|
19
47
|
* @throws {Error} If audience segment creation fails
|
|
20
48
|
*/
|
|
21
|
-
createAudienceSegment(audienceSegmentBody: AudienceSegmentBody
|
|
49
|
+
createAudienceSegment(audienceSegmentBody: AudienceSegmentBody): Promise<AudienceSegmentData>;
|
|
22
50
|
}
|
|
23
51
|
//# sourceMappingURL=criteoAudience.d.ts.map
|