@rudderstack/integrations-lib 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/build/constants.d.ts +96 -0
- package/build/constants.d.ts.map +1 -0
- package/build/constants.js +180 -0
- package/build/errors/aborted_error.d.ts +5 -0
- package/build/errors/aborted_error.d.ts.map +1 -0
- package/build/errors/aborted_error.js +16 -0
- package/build/errors/base.d.ts +8 -0
- package/build/errors/base.d.ts.map +1 -0
- package/build/errors/base.js +14 -0
- package/build/errors/configuration_error.d.ts +5 -0
- package/build/errors/configuration_error.d.ts.map +1 -0
- package/build/errors/configuration_error.js +17 -0
- package/build/errors/index.d.ts +17 -0
- package/build/errors/index.d.ts.map +1 -0
- package/build/errors/index.js +33 -0
- package/build/errors/instrumentation_error.d.ts +5 -0
- package/build/errors/instrumentation_error.d.ts.map +1 -0
- package/build/errors/instrumentation_error.js +16 -0
- package/build/errors/invalid_auth_token_error.d.ts +5 -0
- package/build/errors/invalid_auth_token_error.d.ts.map +1 -0
- package/build/errors/invalid_auth_token_error.js +17 -0
- package/build/errors/network_error.d.ts +7 -0
- package/build/errors/network_error.d.ts.map +1 -0
- package/build/errors/network_error.js +28 -0
- package/build/errors/network_instrumentation_error.d.ts +5 -0
- package/build/errors/network_instrumentation_error.d.ts.map +1 -0
- package/build/errors/network_instrumentation_error.js +17 -0
- package/build/errors/oauth_secret_error.d.ts +5 -0
- package/build/errors/oauth_secret_error.d.ts.map +1 -0
- package/build/errors/oauth_secret_error.js +16 -0
- package/build/errors/platform_error.d.ts +5 -0
- package/build/errors/platform_error.d.ts.map +1 -0
- package/build/errors/platform_error.js +15 -0
- package/build/errors/redis_error.d.ts +5 -0
- package/build/errors/redis_error.d.ts.map +1 -0
- package/build/errors/redis_error.js +16 -0
- package/build/errors/retryable_error.d.ts +5 -0
- package/build/errors/retryable_error.d.ts.map +1 -0
- package/build/errors/retryable_error.js +16 -0
- package/build/errors/throttled_error.d.ts +5 -0
- package/build/errors/throttled_error.d.ts.map +1 -0
- package/build/errors/throttled_error.js +16 -0
- package/build/errors/transformation_error.d.ts +5 -0
- package/build/errors/transformation_error.d.ts.map +1 -0
- package/build/errors/transformation_error.js +15 -0
- package/build/errors/unauthorized_error.d.ts +5 -0
- package/build/errors/unauthorized_error.d.ts.map +1 -0
- package/build/errors/unauthorized_error.js +17 -0
- package/build/errors/unhandled_status_code_error.d.ts +5 -0
- package/build/errors/unhandled_status_code_error.d.ts.map +1 -0
- package/build/errors/unhandled_status_code_error.js +17 -0
- package/build/errors/unsupported_event_error.d.ts +5 -0
- package/build/errors/unsupported_event_error.d.ts.map +1 -0
- package/build/errors/unsupported_event_error.js +16 -0
- package/build/index.d.ts +7 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +23 -0
- package/build/logger.d.ts +7 -0
- package/build/logger.d.ts.map +1 -0
- package/build/logger.js +39 -0
- package/build/network/clients/axios.d.ts +38 -0
- package/build/network/clients/axios.d.ts.map +1 -0
- package/build/network/clients/axios.js +197 -0
- package/build/network/clients/axios.test.d.ts +2 -0
- package/build/network/clients/axios.test.d.ts.map +1 -0
- package/build/network/clients/axios.test.js +231 -0
- package/build/network/clients/types.d.ts +32 -0
- package/build/network/clients/types.d.ts.map +1 -0
- package/build/network/clients/types.js +3 -0
- package/build/network/factory.d.ts +30 -0
- package/build/network/factory.d.ts.map +1 -0
- package/build/network/factory.js +46 -0
- package/build/network/factory.test.d.ts +2 -0
- package/build/network/factory.test.d.ts.map +1 -0
- package/build/network/factory.test.js +50 -0
- package/build/network/index.d.ts +2 -0
- package/build/network/index.d.ts.map +1 -0
- package/build/network/index.js +18 -0
- package/build/tags.d.ts +56 -0
- package/build/tags.d.ts.map +1 -0
- package/build/tags.js +59 -0
- package/build/types.d.ts +275 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +34 -0
- package/build/utils/index.d.ts +4 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +20 -0
- package/build/utils/json.d.ts +51 -0
- package/build/utils/json.d.ts.map +1 -0
- package/build/utils/json.js +507 -0
- package/build/utils/json.test.d.ts +2 -0
- package/build/utils/json.test.d.ts.map +1 -0
- package/build/utils/json.test.js +588 -0
- package/build/utils/misc.d.ts +129 -0
- package/build/utils/misc.d.ts.map +1 -0
- package/build/utils/misc.js +362 -0
- package/build/utils/misc.test.d.ts +2 -0
- package/build/utils/misc.test.d.ts.map +1 -0
- package/build/utils/misc.test.js +2059 -0
- package/build/utils/sem.d.ts +29 -0
- package/build/utils/sem.d.ts.map +1 -0
- package/build/utils/sem.js +196 -0
- package/build/utils/sem.test.d.ts +2 -0
- package/build/utils/sem.test.d.ts.map +1 -0
- package/build/utils/sem.test.js +237 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios.test.d.ts","sourceRoot":"","sources":["../../../src/network/clients/axios.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const axios_mock_adapter_1 = __importDefault(require("axios-mock-adapter"));
|
|
8
|
+
const axios_2 = require("./axios"); // Import the AxiosClient class
|
|
9
|
+
// Mock Axios for testing
|
|
10
|
+
jest.mock('axios', () => {
|
|
11
|
+
return {
|
|
12
|
+
...jest.requireActual('axios'),
|
|
13
|
+
create: jest.fn().mockReturnValue(jest.requireActual('axios')),
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
// Test cases
|
|
17
|
+
describe('AxiosClient', () => {
|
|
18
|
+
let axiosClient;
|
|
19
|
+
let mockAxios;
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
mockAxios = new axios_mock_adapter_1.default(axios_1.default); // Create a MockAdapter for Axios
|
|
22
|
+
axiosClient = new axios_2.AxiosClient(); // Create a new AxiosClient instance for each test
|
|
23
|
+
});
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
mockAxios.restore();
|
|
26
|
+
});
|
|
27
|
+
describe('happy flow tests', () => {
|
|
28
|
+
// Scenario 1: GET request and receive a response
|
|
29
|
+
it('should make a GET request and receive a response', async () => {
|
|
30
|
+
// Mock the GET request using axios-mock-adapter
|
|
31
|
+
mockAxios.onGet('https://example.com').reply(200, 'GET response');
|
|
32
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
33
|
+
expect(response.type).toBe('success');
|
|
34
|
+
expect(response.statusCode).toBe(200);
|
|
35
|
+
expect(response.responseBody).toBe('GET response');
|
|
36
|
+
});
|
|
37
|
+
// Scenario 2: POST request and receive a response
|
|
38
|
+
it('should make a POST request and receive a response', async () => {
|
|
39
|
+
// Mock the axios.post method to return a response
|
|
40
|
+
mockAxios.onPost('https://example.com').reply(201, 'POST response');
|
|
41
|
+
const response = (await axiosClient.post('https://example.com', {
|
|
42
|
+
foo: 'bar',
|
|
43
|
+
}));
|
|
44
|
+
expect(response.type).toBe('success');
|
|
45
|
+
expect(response.statusCode).toBe(201);
|
|
46
|
+
expect(response.responseBody).toBe('POST response');
|
|
47
|
+
});
|
|
48
|
+
// Scenario 3: PUT request and receive a response
|
|
49
|
+
it('should make a PUT request and receive a response', async () => {
|
|
50
|
+
// Mock the axios.put method to return a response
|
|
51
|
+
mockAxios.onPut('https://example.com').reply(204);
|
|
52
|
+
const response = (await axiosClient.put('https://example.com', {
|
|
53
|
+
foo: 'bar',
|
|
54
|
+
}));
|
|
55
|
+
expect(response.type).toBe('success');
|
|
56
|
+
expect(response.statusCode).toBe(204);
|
|
57
|
+
expect(response.responseBody).toBeUndefined(); // No response body for PUT
|
|
58
|
+
});
|
|
59
|
+
// Scenario 4: PATCH request and receive a response
|
|
60
|
+
it('should make a PATCH request and receive a response', async () => {
|
|
61
|
+
// Mock the axios.patch method to return a response
|
|
62
|
+
mockAxios.onPatch('https://example.com').reply(200, 'PATCH response');
|
|
63
|
+
const response = (await axiosClient.patch('https://example.com', {
|
|
64
|
+
foo: 'bar',
|
|
65
|
+
}));
|
|
66
|
+
expect(response.type).toBe('success');
|
|
67
|
+
expect(response.statusCode).toBe(200);
|
|
68
|
+
expect(response.responseBody).toBe('PATCH response');
|
|
69
|
+
});
|
|
70
|
+
// Scenario 5: DELETE request and receive a response
|
|
71
|
+
it('should make a DELETE request and receive a response', async () => {
|
|
72
|
+
// Mock the axios.delete method to return a response
|
|
73
|
+
mockAxios.onDelete('https://example.com').reply(204);
|
|
74
|
+
const response = (await axiosClient.delete('https://example.com'));
|
|
75
|
+
expect(response.type).toBe('success');
|
|
76
|
+
expect(response.statusCode).toBe(204);
|
|
77
|
+
expect(response.responseBody).toBeUndefined(); // No response body for DELETE
|
|
78
|
+
});
|
|
79
|
+
// Scenario 6: GET request with a response parser
|
|
80
|
+
it('should make a GET request with a response parser', async () => {
|
|
81
|
+
// Mock the GET request using axios-mock-adapter
|
|
82
|
+
mockAxios.onGet('https://example.com').reply(200, 'GET response');
|
|
83
|
+
const response = (await axiosClient.get('https://example.com', {}, (data) => {
|
|
84
|
+
return `Parsed ${data}`;
|
|
85
|
+
}));
|
|
86
|
+
expect(response.type).toBe('success');
|
|
87
|
+
expect(response.statusCode).toBe(200);
|
|
88
|
+
expect(response.responseBody).toBe('Parsed GET response');
|
|
89
|
+
});
|
|
90
|
+
// Scenario 7: POST request with a response parser
|
|
91
|
+
it('should make a POST request with a response parser', async () => {
|
|
92
|
+
// Mock the axios.post method to return a response
|
|
93
|
+
mockAxios.onPost('https://example.com').reply(201, 'POST response');
|
|
94
|
+
const response = (await axiosClient.post('https://example.com', {
|
|
95
|
+
foo: 'bar',
|
|
96
|
+
}, {}, (data) => {
|
|
97
|
+
return `Parsed ${data}`;
|
|
98
|
+
}));
|
|
99
|
+
expect(response.type).toBe('success');
|
|
100
|
+
expect(response.statusCode).toBe(201);
|
|
101
|
+
expect(response.responseBody).toBe('Parsed POST response');
|
|
102
|
+
});
|
|
103
|
+
// Scenario 8: PUT request with a response parser
|
|
104
|
+
it('should make a PUT request with a response parser', async () => {
|
|
105
|
+
// Mock the axios.put method to return a response
|
|
106
|
+
mockAxios.onPut('https://example.com').reply(204);
|
|
107
|
+
const response = (await axiosClient.put('https://example.com', {
|
|
108
|
+
foo: 'bar',
|
|
109
|
+
}, {}, (data) => {
|
|
110
|
+
return `Parsed ${data}`;
|
|
111
|
+
}));
|
|
112
|
+
expect(response.type).toBe('success');
|
|
113
|
+
expect(response.statusCode).toBe(204);
|
|
114
|
+
expect(response.responseBody).toBe('Parsed undefined'); // No response body for PUT
|
|
115
|
+
});
|
|
116
|
+
// Scenario 9: PATCH request with a response parser
|
|
117
|
+
it('should make a PATCH request with a response parser', async () => {
|
|
118
|
+
// Mock the axios.patch method to return a response
|
|
119
|
+
mockAxios.onPatch('https://example.com').reply(200, 'PATCH response');
|
|
120
|
+
const response = (await axiosClient.patch('https://example.com', {
|
|
121
|
+
foo: 'bar',
|
|
122
|
+
}, {}, (data) => {
|
|
123
|
+
return `Parsed ${data}`;
|
|
124
|
+
}));
|
|
125
|
+
expect(response.type).toBe('success');
|
|
126
|
+
expect(response.statusCode).toBe(200);
|
|
127
|
+
expect(response.responseBody).toBe('Parsed PATCH response');
|
|
128
|
+
});
|
|
129
|
+
// Scenario 10: DELETE request with a response parser
|
|
130
|
+
it('should make a DELETE request with a response parser', async () => {
|
|
131
|
+
// Mock the axios.delete method to return a response
|
|
132
|
+
mockAxios.onDelete('https://example.com').reply(204);
|
|
133
|
+
const response = (await axiosClient.delete('https://example.com', {}, (data) => {
|
|
134
|
+
return `Parsed ${data}`;
|
|
135
|
+
}));
|
|
136
|
+
expect(response.type).toBe('success');
|
|
137
|
+
expect(response.statusCode).toBe(204);
|
|
138
|
+
expect(response.responseBody).toBe('Parsed undefined'); // No response body for DELETE
|
|
139
|
+
});
|
|
140
|
+
// Scenario 11: GET request with headers
|
|
141
|
+
it('should make a GET request with headers', async () => {
|
|
142
|
+
// Mock the GET request using axios-mock-adapter
|
|
143
|
+
mockAxios.onGet('https://example.com').reply((config) => {
|
|
144
|
+
expect(config.headers['foo']).toEqual('bar');
|
|
145
|
+
return [
|
|
146
|
+
200,
|
|
147
|
+
'GET response',
|
|
148
|
+
{
|
|
149
|
+
Authorization: `Bearer Token`,
|
|
150
|
+
'Content-type': 'application/x-www-form-urlencoded',
|
|
151
|
+
},
|
|
152
|
+
];
|
|
153
|
+
});
|
|
154
|
+
const response = (await axiosClient.get('https://example.com', {
|
|
155
|
+
headers: { foo: 'bar' },
|
|
156
|
+
}));
|
|
157
|
+
expect(response.type).toBe('success');
|
|
158
|
+
expect(response.statusCode).toBe(200);
|
|
159
|
+
expect(response.responseBody).toBe('GET response');
|
|
160
|
+
});
|
|
161
|
+
// other happy flow tests
|
|
162
|
+
// Scenario 12:
|
|
163
|
+
});
|
|
164
|
+
describe('error flow tests', () => {
|
|
165
|
+
// Scenario 1: GET request and receive a network error
|
|
166
|
+
it('should make a GET request and receive a network error', async () => {
|
|
167
|
+
// Mock the GET request using axios-mock-adapter
|
|
168
|
+
mockAxios.onGet('https://example.com').abortRequest();
|
|
169
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
170
|
+
expect(response.type).toBe('client-error');
|
|
171
|
+
expect(response.statusCode).toBe(500);
|
|
172
|
+
expect(response.message).toBe('Unknown Error:Request aborted');
|
|
173
|
+
});
|
|
174
|
+
// should handle timeout errors
|
|
175
|
+
it('should make a GET request and receive a timeout error', async () => {
|
|
176
|
+
// Mock the GET request using axios-mock-adapter
|
|
177
|
+
mockAxios.onGet('https://example.com').timeout();
|
|
178
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
179
|
+
expect(response.type).toBe('client-error');
|
|
180
|
+
expect(response.statusCode).toBe(500);
|
|
181
|
+
expect(response.message).toBe('Unknown Error:timeout of 0ms exceeded');
|
|
182
|
+
});
|
|
183
|
+
it('should make a GET request and receive a network error', async () => {
|
|
184
|
+
// Mock the GET request using axios-mock-adapter
|
|
185
|
+
mockAxios.onGet('https://example.com').networkError();
|
|
186
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
187
|
+
expect(response.type).toBe('client-error');
|
|
188
|
+
expect(response.statusCode).toBe(500);
|
|
189
|
+
expect(response.message).toBe('Network Error');
|
|
190
|
+
});
|
|
191
|
+
// should handle application errors (4xx)
|
|
192
|
+
it('should make a GET request and receive a 400 error', async () => {
|
|
193
|
+
// Mock the GET request using axios-mock-adapter
|
|
194
|
+
mockAxios.onGet('https://example.com').reply(400, 'Bad Request Received');
|
|
195
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
196
|
+
expect(response.type).toBe('application-error');
|
|
197
|
+
expect(response.statusCode).toBe(400);
|
|
198
|
+
expect(response.responseBody).toBe('Bad Request Received');
|
|
199
|
+
});
|
|
200
|
+
// should handle application errors (5xx)
|
|
201
|
+
it('should make a GET request and receive a 500 error', async () => {
|
|
202
|
+
// Mock the GET request using axios-mock-adapter
|
|
203
|
+
mockAxios.onGet('https://example.com').reply(500, 'Internal Server Error');
|
|
204
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
205
|
+
expect(response.type).toBe('application-error');
|
|
206
|
+
expect(response.statusCode).toBe(500);
|
|
207
|
+
expect(response.responseBody).toBe('Internal Server Error');
|
|
208
|
+
});
|
|
209
|
+
// should handle unexpected errors
|
|
210
|
+
it('should make a GET request and receive an unexpected error', async () => {
|
|
211
|
+
// Mock the GET request using axios-mock-adapter
|
|
212
|
+
mockAxios.onGet('https://example.com').reply(200, 'GET response');
|
|
213
|
+
const response = (await axiosClient.get('https://example.com', {}, (data) => {
|
|
214
|
+
throw new Error('Unexpected Error');
|
|
215
|
+
}));
|
|
216
|
+
expect(response.type).toBe('client-error');
|
|
217
|
+
expect(response.statusCode).toBe(500);
|
|
218
|
+
expect(response.message).toBe('Failed to parse response data: Unexpected Error');
|
|
219
|
+
});
|
|
220
|
+
// should handle empty response body
|
|
221
|
+
it('should make a GET request and receive an empty response body', async () => {
|
|
222
|
+
// Mock the GET request using axios-mock-adapter
|
|
223
|
+
mockAxios.onGet('https://example.com').reply(200);
|
|
224
|
+
const response = (await axiosClient.get('https://example.com'));
|
|
225
|
+
expect(response.type).toBe('success');
|
|
226
|
+
expect(response.statusCode).toBe(200);
|
|
227
|
+
expect(response.responseBody).toBeUndefined();
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXR3b3JrL2NsaWVudHMvYXhpb3MudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUEwQjtBQUMxQiw0RUFBNkM7QUFDN0MsbUNBQXNDLENBQUMsK0JBQStCO0FBT3RFLHlCQUF5QjtBQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDdEIsT0FBTztRQUNMLEdBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQVk7UUFDMUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUMvRCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxhQUFhO0FBQ2IsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsSUFBSSxXQUF3QixDQUFDO0lBQzdCLElBQUksU0FBUyxDQUFDO0lBRWQsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLFNBQVMsR0FBRyxJQUFJLDRCQUFXLENBQUMsZUFBSyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7UUFDckUsV0FBVyxHQUFHLElBQUksbUJBQVcsRUFBRSxDQUFDLENBQUMsa0RBQWtEO0lBQ3JGLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7UUFDaEMsaURBQWlEO1FBQ2pELEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNoRSxnREFBZ0Q7WUFDaEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUs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SUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFFSCxvQ0FBb0M7UUFDcEMsRUFBRSxDQUFDLDhEQUE4RCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVFLGdEQUFnRDtZQUNoRCxTQUFTLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRWxELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxXQUFXLENBQUMsR0FBRyxDQUNyQyxxQkFBcUIsQ0FDdEIsQ0FBa0MsQ0FBQztZQUNwQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJztcbmltcG9ydCB7IEF4aW9zQ2xpZW50IH0gZnJvbSAnLi9heGlvcyc7IC8vIEltcG9ydCB0aGUgQXhpb3NDbGllbnQgY2xhc3NcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uRXJyb3JBcGlSZXNwb25zZSxcbiAgQ2xpZW50RXJyb3JBcGlSZXNwb25zZSxcbiAgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gTW9jayBBeGlvcyBmb3IgdGVzdGluZ1xuamVzdC5tb2NrKCdheGlvcycsICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi4oamVzdC5yZXF1aXJlQWN0dWFsKCdheGlvcycpIGFzIG9iamVjdCksXG4gICAgY3JlYXRlOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGplc3QucmVxdWlyZUFjdHVhbCgnYXhpb3MnKSksXG4gIH07XG59KTtcblxuLy8gVGVzdCBjYXNlc1xuZGVzY3JpYmUoJ0F4aW9zQ2xpZW50JywgKCkgPT4ge1xuICBsZXQgYXhpb3NDbGllbnQ6IEF4aW9zQ2xpZW50O1xuICBsZXQgbW9ja0F4aW9zO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG1vY2tBeGlvcyA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7IC8vIENyZWF0ZSBhIE1vY2tBZGFwdGVyIGZvciBBeGlvc1xuICAgIGF4aW9zQ2xpZW50ID0gbmV3IEF4aW9zQ2xpZW50KCk7IC8vIENyZWF0ZSBhIG5ldyBBeGlvc0NsaWVudCBpbnN0YW5jZSBmb3IgZWFjaCB0ZXN0XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgbW9ja0F4aW9zLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2hhcHB5IGZsb3cgdGVzdHMnLCAoKSA9PiB7XG4gICAgLy8gU2NlbmFyaW8gMTogR0VUIHJlcXVlc3QgYW5kIHJlY2VpdmUgYSByZXNwb25zZVxuICAgIGl0KCdzaG91bGQgbWFrZSBhIEdFVCByZXF1ZXN0IGFuZCByZWNlaXZlIGEgcmVzcG9uc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMCwgJ0dFVCByZXNwb25zZScpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYXhpb3NDbGllbnQuZ2V0KFxuICAgICAgICAnaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gICAgICApKSBhcyBTdWNjZXNzZnVsQXBpUmVzcG9uc2U8c3RyaW5nPjtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdzdWNjZXNzJyk7XG4gICAgICBleHBlY3QocmVzcG9uc2Uuc3RhdHVzQ29kZSkudG9CZSgyMDApO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnJlc3BvbnNlQm9keSkudG9CZSgnR0VUIHJlc3BvbnNlJyk7XG4gICAgfSk7XG5cbiAgICAvLyBTY2VuYXJpbyAyOiBQT1NUIHJlcXVlc3QgYW5kIHJlY2VpdmUgYSByZXNwb25zZVxuICAgIGl0KCdzaG91bGQgbWFrZSBhIFBPU1QgcmVxdWVzdCBhbmQgcmVjZWl2ZSBhIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTW9jayB0aGUgYXhpb3MucG9zdCBtZXRob2QgdG8gcmV0dXJuIGEgcmVzcG9uc2VcbiAgICAgIG1vY2tBeGlvcy5vblBvc3QoJ2h0dHBzOi8vZXhhbXBsZS5jb20nKS5yZXBseSgyMDEsICdQT1NUIHJlc3BvbnNlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LnBvc3QoJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB7XG4gICAgICAgIGZvbzogJ2JhcicsXG4gICAgICB9KSkgYXMgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlPHN0cmluZz47XG4gICAgICBleHBlY3QocmVzcG9uc2UudHlwZSkudG9CZSgnc3VjY2VzcycpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnN0YXR1c0NvZGUpLnRvQmUoMjAxKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5yZXNwb25zZUJvZHkpLnRvQmUoJ1BPU1QgcmVzcG9uc2UnKTtcbiAgICB9KTtcblxuICAgIC8vIFNjZW5hcmlvIDM6IFBVVCByZXF1ZXN0IGFuZCByZWNlaXZlIGEgcmVzcG9uc2VcbiAgICBpdCgnc2hvdWxkIG1ha2UgYSBQVVQgcmVxdWVzdCBhbmQgcmVjZWl2ZSBhIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTW9jayB0aGUgYXhpb3MucHV0IG1ldGhvZCB0byByZXR1cm4gYSByZXNwb25zZVxuICAgICAgbW9ja0F4aW9zLm9uUHV0KCdodHRwczovL2V4YW1wbGUuY29tJykucmVwbHkoMjA0KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYXhpb3NDbGllbnQucHV0KCdodHRwczovL2V4YW1wbGUuY29tJywge1xuICAgICAgICBmb286ICdiYXInLFxuICAgICAgfSkpIGFzIFN1Y2Nlc3NmdWxBcGlSZXNwb25zZTxzdHJpbmc+O1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ3N1Y2Nlc3MnKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDIwNCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UucmVzcG9uc2VCb2R5KS50b0JlVW5kZWZpbmVkKCk7IC8vIE5vIHJlc3BvbnNlIGJvZHkgZm9yIFBVVFxuICAgIH0pO1xuXG4gICAgLy8gU2NlbmFyaW8gNDogUEFUQ0ggcmVxdWVzdCBhbmQgcmVjZWl2ZSBhIHJlc3BvbnNlXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgUEFUQ0ggcmVxdWVzdCBhbmQgcmVjZWl2ZSBhIHJlc3BvbnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTW9jayB0aGUgYXhpb3MucGF0Y2ggbWV0aG9kIHRvIHJldHVybiBhIHJlc3BvbnNlXG4gICAgICBtb2NrQXhpb3Mub25QYXRjaCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMCwgJ1BBVENIIHJlc3BvbnNlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LnBhdGNoKCdodHRwczovL2V4YW1wbGUuY29tJywge1xuICAgICAgICBmb286ICdiYXInLFxuICAgICAgfSkpIGFzIFN1Y2Nlc3NmdWxBcGlSZXNwb25zZTxzdHJpbmc+O1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ3N1Y2Nlc3MnKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDIwMCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UucmVzcG9uc2VCb2R5KS50b0JlKCdQQVRDSCByZXNwb25zZScpO1xuICAgIH0pO1xuXG4gICAgLy8gU2NlbmFyaW8gNTogREVMRVRFIHJlcXVlc3QgYW5kIHJlY2VpdmUgYSByZXNwb25zZVxuICAgIGl0KCdzaG91bGQgbWFrZSBhIERFTEVURSByZXF1ZXN0IGFuZCByZWNlaXZlIGEgcmVzcG9uc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBheGlvcy5kZWxldGUgbWV0aG9kIHRvIHJldHVybiBhIHJlc3BvbnNlXG4gICAgICBtb2NrQXhpb3Mub25EZWxldGUoJ2h0dHBzOi8vZXhhbXBsZS5jb20nKS5yZXBseSgyMDQpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBheGlvc0NsaWVudC5kZWxldGUoXG4gICAgICAgICdodHRwczovL2V4YW1wbGUuY29tJyxcbiAgICAgICkpIGFzIFN1Y2Nlc3NmdWxBcGlSZXNwb25zZTxzdHJpbmc+O1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ3N1Y2Nlc3MnKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDIwNCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UucmVzcG9uc2VCb2R5KS50b0JlVW5kZWZpbmVkKCk7IC8vIE5vIHJlc3BvbnNlIGJvZHkgZm9yIERFTEVURVxuICAgIH0pO1xuXG4gICAgLy8gU2NlbmFyaW8gNjogR0VUIHJlcXVlc3Qgd2l0aCBhIHJlc3BvbnNlIHBhcnNlclxuICAgIGl0KCdzaG91bGQgbWFrZSBhIEdFVCByZXF1ZXN0IHdpdGggYSByZXNwb25zZSBwYXJzZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMCwgJ0dFVCByZXNwb25zZScpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBheGlvc0NsaWVudC5nZXQoJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB7fSwgKGRhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGBQYXJzZWQgJHtkYXRhfWA7XG4gICAgICB9KSkgYXMgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlPHN0cmluZz47XG4gICAgICBleHBlY3QocmVzcG9uc2UudHlwZSkudG9CZSgnc3VjY2VzcycpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnN0YXR1c0NvZGUpLnRvQmUoMjAwKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5yZXNwb25zZUJvZHkpLnRvQmUoJ1BhcnNlZCBHRVQgcmVzcG9uc2UnKTtcbiAgICB9KTtcblxuICAgIC8vIFNjZW5hcmlvIDc6IFBPU1QgcmVxdWVzdCB3aXRoIGEgcmVzcG9uc2UgcGFyc2VyXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgUE9TVCByZXF1ZXN0IHdpdGggYSByZXNwb25zZSBwYXJzZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBheGlvcy5wb3N0IG1ldGhvZCB0byByZXR1cm4gYSByZXNwb25zZVxuICAgICAgbW9ja0F4aW9zLm9uUG9zdCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMSwgJ1BPU1QgcmVzcG9uc2UnKTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYXhpb3NDbGllbnQucG9zdChcbiAgICAgICAgJ2h0dHBzOi8vZXhhbXBsZS5jb20nLFxuICAgICAgICB7XG4gICAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgfSxcbiAgICAgICAge30sXG4gICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGBQYXJzZWQgJHtkYXRhfWA7XG4gICAgICAgIH0sXG4gICAgICApKSBhcyBTdWNjZXNzZnVsQXBpUmVzcG9uc2U8c3RyaW5nPjtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdzdWNjZXNzJyk7XG4gICAgICBleHBlY3QocmVzcG9uc2Uuc3RhdHVzQ29kZSkudG9CZSgyMDEpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnJlc3BvbnNlQm9keSkudG9CZSgnUGFyc2VkIFBPU1QgcmVzcG9uc2UnKTtcbiAgICB9KTtcblxuICAgIC8vIFNjZW5hcmlvIDg6IFBVVCByZXF1ZXN0IHdpdGggYSByZXNwb25zZSBwYXJzZXJcbiAgICBpdCgnc2hvdWxkIG1ha2UgYSBQVVQgcmVxdWVzdCB3aXRoIGEgcmVzcG9uc2UgcGFyc2VyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTW9jayB0aGUgYXhpb3MucHV0IG1ldGhvZCB0byByZXR1cm4gYSByZXNwb25zZVxuICAgICAgbW9ja0F4aW9zLm9uUHV0KCdodHRwczovL2V4YW1wbGUuY29tJykucmVwbHkoMjA0KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYXhpb3NDbGllbnQucHV0KFxuICAgICAgICAnaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gICAgICAgIHtcbiAgICAgICAgICBmb286ICdiYXInLFxuICAgICAgICB9LFxuICAgICAgICB7fSxcbiAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gYFBhcnNlZCAke2RhdGF9YDtcbiAgICAgICAgfSxcbiAgICAgICkpIGFzIFN1Y2Nlc3NmdWxBcGlSZXNwb25zZTxzdHJpbmc+O1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ3N1Y2Nlc3MnKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDIwNCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UucmVzcG9uc2VCb2R5KS50b0JlKCdQYXJzZWQgdW5kZWZpbmVkJyk7IC8vIE5vIHJlc3BvbnNlIGJvZHkgZm9yIFBVVFxuICAgIH0pO1xuXG4gICAgLy8gU2NlbmFyaW8gOTogUEFUQ0ggcmVxdWVzdCB3aXRoIGEgcmVzcG9uc2UgcGFyc2VyXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgUEFUQ0ggcmVxdWVzdCB3aXRoIGEgcmVzcG9uc2UgcGFyc2VyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTW9jayB0aGUgYXhpb3MucGF0Y2ggbWV0aG9kIHRvIHJldHVybiBhIHJlc3BvbnNlXG4gICAgICBtb2NrQXhpb3Mub25QYXRjaCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMCwgJ1BBVENIIHJlc3BvbnNlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LnBhdGNoKFxuICAgICAgICAnaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gICAgICAgIHtcbiAgICAgICAgICBmb286ICdiYXInLFxuICAgICAgICB9LFxuICAgICAgICB7fSxcbiAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gYFBhcnNlZCAke2RhdGF9YDtcbiAgICAgICAgfSxcbiAgICAgICkpIGFzIFN1Y2Nlc3NmdWxBcGlSZXNwb25zZTxzdHJpbmc+O1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ3N1Y2Nlc3MnKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDIwMCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UucmVzcG9uc2VCb2R5KS50b0JlKCdQYXJzZWQgUEFUQ0ggcmVzcG9uc2UnKTtcbiAgICB9KTtcblxuICAgIC8vIFNjZW5hcmlvIDEwOiBERUxFVEUgcmVxdWVzdCB3aXRoIGEgcmVzcG9uc2UgcGFyc2VyXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgREVMRVRFIHJlcXVlc3Qgd2l0aCBhIHJlc3BvbnNlIHBhcnNlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIE1vY2sgdGhlIGF4aW9zLmRlbGV0ZSBtZXRob2QgdG8gcmV0dXJuIGEgcmVzcG9uc2VcbiAgICAgIG1vY2tBeGlvcy5vbkRlbGV0ZSgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwNCk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LmRlbGV0ZSgnaHR0cHM6Ly9leGFtcGxlLmNvbScsIHt9LCAoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gYFBhcnNlZCAke2RhdGF9YDtcbiAgICAgIH0pKSBhcyBTdWNjZXNzZnVsQXBpUmVzcG9uc2U8c3RyaW5nPjtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdzdWNjZXNzJyk7XG4gICAgICBleHBlY3QocmVzcG9uc2Uuc3RhdHVzQ29kZSkudG9CZSgyMDQpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnJlc3BvbnNlQm9keSkudG9CZSgnUGFyc2VkIHVuZGVmaW5lZCcpOyAvLyBObyByZXNwb25zZSBib2R5IGZvciBERUxFVEVcbiAgICB9KTtcblxuICAgIC8vIFNjZW5hcmlvIDExOiBHRVQgcmVxdWVzdCB3aXRoIGhlYWRlcnNcbiAgICBpdCgnc2hvdWxkIG1ha2UgYSBHRVQgcmVxdWVzdCB3aXRoIGhlYWRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KChjb25maWcpID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbmZpZy5oZWFkZXJzWydmb28nXSkudG9FcXVhbCgnYmFyJyk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgMjAwLFxuICAgICAgICAgICdHRVQgcmVzcG9uc2UnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgVG9rZW5gLFxuICAgICAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYXhpb3NDbGllbnQuZ2V0KCdodHRwczovL2V4YW1wbGUuY29tJywge1xuICAgICAgICBoZWFkZXJzOiB7IGZvbzogJ2JhcicgfSxcbiAgICAgIH0pKSBhcyBTdWNjZXNzZnVsQXBpUmVzcG9uc2U8c3RyaW5nPjtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdzdWNjZXNzJyk7XG4gICAgICBleHBlY3QocmVzcG9uc2Uuc3RhdHVzQ29kZSkudG9CZSgyMDApO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnJlc3BvbnNlQm9keSkudG9CZSgnR0VUIHJlc3BvbnNlJyk7XG4gICAgfSk7XG5cbiAgICAvLyBvdGhlciBoYXBweSBmbG93IHRlc3RzXG4gICAgLy8gU2NlbmFyaW8gMTI6XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlcnJvciBmbG93IHRlc3RzJywgKCkgPT4ge1xuICAgIC8vIFNjZW5hcmlvIDE6IEdFVCByZXF1ZXN0IGFuZCByZWNlaXZlIGEgbmV0d29yayBlcnJvclxuICAgIGl0KCdzaG91bGQgbWFrZSBhIEdFVCByZXF1ZXN0IGFuZCByZWNlaXZlIGEgbmV0d29yayBlcnJvcicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIE1vY2sgdGhlIEdFVCByZXF1ZXN0IHVzaW5nIGF4aW9zLW1vY2stYWRhcHRlclxuICAgICAgbW9ja0F4aW9zLm9uR2V0KCdodHRwczovL2V4YW1wbGUuY29tJykuYWJvcnRSZXF1ZXN0KCk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LmdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpKSBhcyBDbGllbnRFcnJvckFwaVJlc3BvbnNlO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ2NsaWVudC1lcnJvcicpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnN0YXR1c0NvZGUpLnRvQmUoNTAwKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5tZXNzYWdlKS50b0JlKCdVbmtub3duIEVycm9yOlJlcXVlc3QgYWJvcnRlZCcpO1xuICAgIH0pO1xuXG4gICAgLy8gc2hvdWxkIGhhbmRsZSB0aW1lb3V0IGVycm9yc1xuICAgIGl0KCdzaG91bGQgbWFrZSBhIEdFVCByZXF1ZXN0IGFuZCByZWNlaXZlIGEgdGltZW91dCBlcnJvcicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIE1vY2sgdGhlIEdFVCByZXF1ZXN0IHVzaW5nIGF4aW9zLW1vY2stYWRhcHRlclxuICAgICAgbW9ja0F4aW9zLm9uR2V0KCdodHRwczovL2V4YW1wbGUuY29tJykudGltZW91dCgpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBheGlvc0NsaWVudC5nZXQoJ2h0dHBzOi8vZXhhbXBsZS5jb20nKSkgYXMgQ2xpZW50RXJyb3JBcGlSZXNwb25zZTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdjbGllbnQtZXJyb3InKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDUwMCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UubWVzc2FnZSkudG9CZSgnVW5rbm93biBFcnJvcjp0aW1lb3V0IG9mIDBtcyBleGNlZWRlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgR0VUIHJlcXVlc3QgYW5kIHJlY2VpdmUgYSBuZXR3b3JrIGVycm9yJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gTW9jayB0aGUgR0VUIHJlcXVlc3QgdXNpbmcgYXhpb3MtbW9jay1hZGFwdGVyXG4gICAgICBtb2NrQXhpb3Mub25HZXQoJ2h0dHBzOi8vZXhhbXBsZS5jb20nKS5uZXR3b3JrRXJyb3IoKTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYXhpb3NDbGllbnQuZ2V0KCdodHRwczovL2V4YW1wbGUuY29tJykpIGFzIENsaWVudEVycm9yQXBpUmVzcG9uc2U7XG4gICAgICBleHBlY3QocmVzcG9uc2UudHlwZSkudG9CZSgnY2xpZW50LWVycm9yJyk7XG4gICAgICBleHBlY3QocmVzcG9uc2Uuc3RhdHVzQ29kZSkudG9CZSg1MDApO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLm1lc3NhZ2UpLnRvQmUoJ05ldHdvcmsgRXJyb3InKTtcbiAgICB9KTtcblxuICAgIC8vIHNob3VsZCBoYW5kbGUgYXBwbGljYXRpb24gZXJyb3JzICg0eHgpXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgR0VUIHJlcXVlc3QgYW5kIHJlY2VpdmUgYSA0MDAgZXJyb3InLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDQwMCwgJ0JhZCBSZXF1ZXN0IFJlY2VpdmVkJyk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LmdldChcbiAgICAgICAgJ2h0dHBzOi8vZXhhbXBsZS5jb20nLFxuICAgICAgKSkgYXMgQXBwbGljYXRpb25FcnJvckFwaVJlc3BvbnNlO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnR5cGUpLnRvQmUoJ2FwcGxpY2F0aW9uLWVycm9yJyk7XG4gICAgICBleHBlY3QocmVzcG9uc2Uuc3RhdHVzQ29kZSkudG9CZSg0MDApO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnJlc3BvbnNlQm9keSkudG9CZSgnQmFkIFJlcXVlc3QgUmVjZWl2ZWQnKTtcbiAgICB9KTtcblxuICAgIC8vIHNob3VsZCBoYW5kbGUgYXBwbGljYXRpb24gZXJyb3JzICg1eHgpXG4gICAgaXQoJ3Nob3VsZCBtYWtlIGEgR0VUIHJlcXVlc3QgYW5kIHJlY2VpdmUgYSA1MDAgZXJyb3InLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDUwMCwgJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBheGlvc0NsaWVudC5nZXQoXG4gICAgICAgICdodHRwczovL2V4YW1wbGUuY29tJyxcbiAgICAgICkpIGFzIEFwcGxpY2F0aW9uRXJyb3JBcGlSZXNwb25zZTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdhcHBsaWNhdGlvbi1lcnJvcicpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnN0YXR1c0NvZGUpLnRvQmUoNTAwKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5yZXNwb25zZUJvZHkpLnRvQmUoJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xuICAgIH0pO1xuXG4gICAgLy8gc2hvdWxkIGhhbmRsZSB1bmV4cGVjdGVkIGVycm9yc1xuICAgIGl0KCdzaG91bGQgbWFrZSBhIEdFVCByZXF1ZXN0IGFuZCByZWNlaXZlIGFuIHVuZXhwZWN0ZWQgZXJyb3InLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMCwgJ0dFVCByZXNwb25zZScpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBheGlvc0NsaWVudC5nZXQoJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB7fSwgKGRhdGEpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIEVycm9yJyk7XG4gICAgICB9KSkgYXMgQ2xpZW50RXJyb3JBcGlSZXNwb25zZTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS50eXBlKS50b0JlKCdjbGllbnQtZXJyb3InKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0JlKDUwMCk7XG4gICAgICBleHBlY3QocmVzcG9uc2UubWVzc2FnZSkudG9CZSgnRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGRhdGE6IFVuZXhwZWN0ZWQgRXJyb3InKTtcbiAgICB9KTtcblxuICAgIC8vIHNob3VsZCBoYW5kbGUgZW1wdHkgcmVzcG9uc2UgYm9keVxuICAgIGl0KCdzaG91bGQgbWFrZSBhIEdFVCByZXF1ZXN0IGFuZCByZWNlaXZlIGFuIGVtcHR5IHJlc3BvbnNlIGJvZHknLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBNb2NrIHRoZSBHRVQgcmVxdWVzdCB1c2luZyBheGlvcy1tb2NrLWFkYXB0ZXJcbiAgICAgIG1vY2tBeGlvcy5vbkdldCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpLnJlcGx5KDIwMCk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGF4aW9zQ2xpZW50LmdldChcbiAgICAgICAgJ2h0dHBzOi8vZXhhbXBsZS5jb20nLFxuICAgICAgKSkgYXMgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlPHN0cmluZz47XG4gICAgICBleHBlY3QocmVzcG9uc2UudHlwZSkudG9CZSgnc3VjY2VzcycpO1xuICAgICAgZXhwZWN0KHJlc3BvbnNlLnN0YXR1c0NvZGUpLnRvQmUoMjAwKTtcbiAgICAgIGV4cGVjdChyZXNwb25zZS5yZXNwb25zZUJvZHkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AxiosRequestConfig, AxiosResponseHeaders, RawAxiosResponseHeaders } from 'axios';
|
|
2
|
+
type ResponseHeaders = RawAxiosResponseHeaders | AxiosResponseHeaders | undefined;
|
|
3
|
+
export type ResponseParser<T> = (responseData: any) => T;
|
|
4
|
+
export type SuccessfulApiResponse<T> = {
|
|
5
|
+
type: 'success';
|
|
6
|
+
statusCode: number;
|
|
7
|
+
responseBody: T;
|
|
8
|
+
headers: ResponseHeaders;
|
|
9
|
+
};
|
|
10
|
+
export type ClientErrorApiResponse = {
|
|
11
|
+
type: 'client-error';
|
|
12
|
+
statusCode: number;
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
15
|
+
export type ApplicationErrorApiResponse = {
|
|
16
|
+
type: 'application-error';
|
|
17
|
+
statusCode: number;
|
|
18
|
+
message: string;
|
|
19
|
+
responseBody: any;
|
|
20
|
+
headers: ResponseHeaders;
|
|
21
|
+
};
|
|
22
|
+
export type ApiResponse<T> = SuccessfulApiResponse<T> | ClientErrorApiResponse | ApplicationErrorApiResponse;
|
|
23
|
+
export type RequestConfig = AxiosRequestConfig;
|
|
24
|
+
export interface HttpClient {
|
|
25
|
+
post: <T>(url: string, data: any, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
26
|
+
get: <T>(url: string, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
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>>;
|
|
29
|
+
delete: <T>(url: string, options?: RequestConfig, responseParser?: ResponseParser<T>) => Promise<ApiResponse<T>>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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,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,CAAE;AAEhD,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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29yay9jbGllbnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcsIEF4aW9zUmVzcG9uc2VIZWFkZXJzLCBSYXdBeGlvc1Jlc3BvbnNlSGVhZGVycyB9IGZyb20gJ2F4aW9zJztcblxudHlwZSBSZXNwb25zZUhlYWRlcnMgPSBSYXdBeGlvc1Jlc3BvbnNlSGVhZGVycyB8IEF4aW9zUmVzcG9uc2VIZWFkZXJzIHwgdW5kZWZpbmVkO1xuZXhwb3J0IHR5cGUgUmVzcG9uc2VQYXJzZXI8VD4gPSAocmVzcG9uc2VEYXRhOiBhbnkpID0+IFQ7XG5leHBvcnQgdHlwZSBTdWNjZXNzZnVsQXBpUmVzcG9uc2U8VD4gPSB7XG4gIHR5cGU6ICdzdWNjZXNzJztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICByZXNwb25zZUJvZHk6IFQ7XG4gIGhlYWRlcnM6IFJlc3BvbnNlSGVhZGVycztcbn07XG5leHBvcnQgdHlwZSBDbGllbnRFcnJvckFwaVJlc3BvbnNlID0ge1xuICB0eXBlOiAnY2xpZW50LWVycm9yJztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQXBwbGljYXRpb25FcnJvckFwaVJlc3BvbnNlID0ge1xuICB0eXBlOiAnYXBwbGljYXRpb24tZXJyb3InO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmVzcG9uc2VCb2R5OiBhbnk7XG4gIGhlYWRlcnM6IFJlc3BvbnNlSGVhZGVycztcbn07XG5leHBvcnQgdHlwZSBBcGlSZXNwb25zZTxUPiA9XG4gIHwgU3VjY2Vzc2Z1bEFwaVJlc3BvbnNlPFQ+XG4gIHwgQ2xpZW50RXJyb3JBcGlSZXNwb25zZVxuICB8IEFwcGxpY2F0aW9uRXJyb3JBcGlSZXNwb25zZTtcblxuLy8gT3RoZXIgY2xpZW50IFJlcXVzZXQgY29uZmlnIHR5cGVzIHRvIGJlIGFkZGVkIGhlcmVcbmV4cG9ydCB0eXBlIFJlcXVlc3RDb25maWcgPSBBeGlvc1JlcXVlc3RDb25maWcgO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDbGllbnQge1xuICBwb3N0OiA8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YTogYW55LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICkgPT4gUHJvbWlzZTxBcGlSZXNwb25zZTxUPj47XG4gIGdldDogPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICkgPT4gUHJvbWlzZTxBcGlSZXNwb25zZTxUPj47XG5cbiAgcHV0OiA8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YTogYW55LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICkgPT4gUHJvbWlzZTxBcGlSZXNwb25zZTxUPj47XG5cbiAgcGF0Y2g6IDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhOiBhbnksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKSA9PiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PjtcblxuICBkZWxldGU6IDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApID0+IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+O1xufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { HttpClient } from './clients/types';
|
|
2
|
+
import { AxiosRequestConfig } from 'axios';
|
|
3
|
+
export { ApiResponse, ApplicationErrorApiResponse, ClientErrorApiResponse, SuccessfulApiResponse, ResponseParser, } from './clients/types';
|
|
4
|
+
export declare enum ClientNames {
|
|
5
|
+
Axios = "axios"
|
|
6
|
+
}
|
|
7
|
+
export type clientOptions = AxiosRequestConfig;
|
|
8
|
+
/**
|
|
9
|
+
* @class HttpClientFactory
|
|
10
|
+
* @classdesc
|
|
11
|
+
* A factory class to generate http clients
|
|
12
|
+
* @example
|
|
13
|
+
* const httpClient = HttpClientFactory.getHttpClient('axios');
|
|
14
|
+
* const response = await httpClient.post("https://example.com", { foo: "bar" });
|
|
15
|
+
* if (response.type === "success") {
|
|
16
|
+
* console.log(response.statusCode);
|
|
17
|
+
* console.log(response.responseBody);
|
|
18
|
+
* } else if (response.type === "application-error") {
|
|
19
|
+
* console.log(response.statusCode);
|
|
20
|
+
* console.log(response.message);
|
|
21
|
+
* console.log(response.responseBody);
|
|
22
|
+
* } else if (response.type === "client-error") {
|
|
23
|
+
* console.log(response.statusCode);
|
|
24
|
+
* console.log(response.message);
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
export declare class HttpClientFactory {
|
|
28
|
+
static getHttpClient(name: ClientNames, options?: clientOptions): HttpClient;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/network/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpClientFactory = exports.ClientNames = void 0;
|
|
4
|
+
const platform_error_1 = require("../errors/platform_error");
|
|
5
|
+
const axios_1 = require("./clients/axios");
|
|
6
|
+
var ClientNames;
|
|
7
|
+
(function (ClientNames) {
|
|
8
|
+
ClientNames["Axios"] = "axios";
|
|
9
|
+
// Fetch = 'fetch',
|
|
10
|
+
// Xhr = 'xhr'
|
|
11
|
+
})(ClientNames || (exports.ClientNames = ClientNames = {}));
|
|
12
|
+
/**
|
|
13
|
+
* @class HttpClientFactory
|
|
14
|
+
* @classdesc
|
|
15
|
+
* A factory class to generate http clients
|
|
16
|
+
* @example
|
|
17
|
+
* const httpClient = HttpClientFactory.getHttpClient('axios');
|
|
18
|
+
* const response = await httpClient.post("https://example.com", { foo: "bar" });
|
|
19
|
+
* if (response.type === "success") {
|
|
20
|
+
* console.log(response.statusCode);
|
|
21
|
+
* console.log(response.responseBody);
|
|
22
|
+
* } else if (response.type === "application-error") {
|
|
23
|
+
* console.log(response.statusCode);
|
|
24
|
+
* console.log(response.message);
|
|
25
|
+
* console.log(response.responseBody);
|
|
26
|
+
* } else if (response.type === "client-error") {
|
|
27
|
+
* console.log(response.statusCode);
|
|
28
|
+
* console.log(response.message);
|
|
29
|
+
* }
|
|
30
|
+
*/
|
|
31
|
+
class HttpClientFactory {
|
|
32
|
+
static getHttpClient(name, options) {
|
|
33
|
+
switch (name) {
|
|
34
|
+
case ClientNames.Axios:
|
|
35
|
+
return new axios_1.AxiosClient(options);
|
|
36
|
+
// case ClientNames.Fetch:
|
|
37
|
+
// return require('./clients/fetch').FetchClient;
|
|
38
|
+
// case ClientNames.Xhr:
|
|
39
|
+
// return require('./clients/xhr').XhrClient;
|
|
40
|
+
default:
|
|
41
|
+
throw new platform_error_1.PlatformError('Invalid client name');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.HttpClientFactory = HttpClientFactory;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXR3b3JrL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBRXpELDJDQUE4QztBQVU5QyxJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixjQUFjO0FBQ2hCLENBQUMsRUFKVyxXQUFXLDJCQUFYLFdBQVcsUUFJdEI7QUFLRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFpQixFQUFFLE9BQXVCO1FBQzdELFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsT0FBTyxJQUFJLG1CQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsMEJBQTBCO1lBQzFCLHFEQUFxRDtZQUNyRCx3QkFBd0I7WUFDeEIsaURBQWlEO1lBQ2pEO2dCQUNFLE1BQU0sSUFBSSw4QkFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0NBQ0Y7QUFiRCw4Q0FhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYXRmb3JtRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcGxhdGZvcm1fZXJyb3InO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJy4vY2xpZW50cy90eXBlcyc7XG5pbXBvcnQgeyBBeGlvc0NsaWVudCB9IGZyb20gJy4vY2xpZW50cy9heGlvcyc7XG5pbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5leHBvcnQge1xuICBBcGlSZXNwb25zZSxcbiAgQXBwbGljYXRpb25FcnJvckFwaVJlc3BvbnNlLFxuICBDbGllbnRFcnJvckFwaVJlc3BvbnNlLFxuICBTdWNjZXNzZnVsQXBpUmVzcG9uc2UsXG4gIFJlc3BvbnNlUGFyc2VyLFxufSBmcm9tICcuL2NsaWVudHMvdHlwZXMnO1xuXG5leHBvcnQgZW51bSBDbGllbnROYW1lcyB7XG4gIEF4aW9zID0gJ2F4aW9zJyxcbiAgLy8gRmV0Y2ggPSAnZmV0Y2gnLFxuICAvLyBYaHIgPSAneGhyJ1xufVxuXG4vLyBBcyB3ZSBhZGQgbW9yZSBjbGllbnRzLCB3ZSB3aWxsIHVuaW9uIHRoZW0gaGVyZVxuZXhwb3J0IHR5cGUgY2xpZW50T3B0aW9ucyA9IEF4aW9zUmVxdWVzdENvbmZpZztcblxuLyoqXG4gKiBAY2xhc3MgSHR0cENsaWVudEZhY3RvcnlcbiAqIEBjbGFzc2Rlc2NcbiAqIEEgZmFjdG9yeSBjbGFzcyB0byBnZW5lcmF0ZSBodHRwIGNsaWVudHNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBodHRwQ2xpZW50ID0gSHR0cENsaWVudEZhY3RvcnkuZ2V0SHR0cENsaWVudCgnYXhpb3MnKTtcbiAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaHR0cENsaWVudC5wb3N0KFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiLCB7IGZvbzogXCJiYXJcIiB9KTtcbiAqIGlmIChyZXNwb25zZS50eXBlID09PSBcInN1Y2Nlc3NcIikge1xuICogY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5yZXNwb25zZUJvZHkpO1xuICogfSBlbHNlIGlmIChyZXNwb25zZS50eXBlID09PSBcImFwcGxpY2F0aW9uLWVycm9yXCIpIHtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogY29uc29sZS5sb2cocmVzcG9uc2UubWVzc2FnZSk7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5yZXNwb25zZUJvZHkpO1xuICogfSBlbHNlIGlmIChyZXNwb25zZS50eXBlID09PSBcImNsaWVudC1lcnJvclwiKSB7XG4gKiBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqIGNvbnNvbGUubG9nKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICogfVxuICovXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudEZhY3Rvcnkge1xuICBzdGF0aWMgZ2V0SHR0cENsaWVudChuYW1lOiBDbGllbnROYW1lcywgb3B0aW9ucz86IGNsaWVudE9wdGlvbnMpOiBIdHRwQ2xpZW50IHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgQ2xpZW50TmFtZXMuQXhpb3M6XG4gICAgICAgIHJldHVybiBuZXcgQXhpb3NDbGllbnQob3B0aW9ucyk7XG4gICAgICAvLyBjYXNlIENsaWVudE5hbWVzLkZldGNoOlxuICAgICAgLy8gICAgIHJldHVybiByZXF1aXJlKCcuL2NsaWVudHMvZmV0Y2gnKS5GZXRjaENsaWVudDtcbiAgICAgIC8vIGNhc2UgQ2xpZW50TmFtZXMuWGhyOlxuICAgICAgLy8gICAgIHJldHVybiByZXF1aXJlKCcuL2NsaWVudHMveGhyJykuWGhyQ2xpZW50O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFBsYXRmb3JtRXJyb3IoJ0ludmFsaWQgY2xpZW50IG5hbWUnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.test.d.ts","sourceRoot":"","sources":["../../src/network/factory.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Generated by CodiumAI
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const axios_1 = require("./clients/axios");
|
|
6
|
+
const factory_1 = require("./factory");
|
|
7
|
+
describe('getHttpClient', () => {
|
|
8
|
+
// Tests that getHttpClient returns an instance of AxiosClient when name is ClientNames.Axios and options are not provided
|
|
9
|
+
it('should return an instance of AxiosClient when name is ClientNames.Axios and options are not provided', () => {
|
|
10
|
+
const httpClient = factory_1.HttpClientFactory.getHttpClient(factory_1.ClientNames.Axios);
|
|
11
|
+
expect(httpClient).toBeInstanceOf(axios_1.AxiosClient);
|
|
12
|
+
});
|
|
13
|
+
// Tests that getHttpClient returns an instance of AxiosClient with provided options when name is ClientNames.Axios and options are provided
|
|
14
|
+
it('should return an instance of AxiosClient with provided options when name is ClientNames.Axios and options are provided', () => {
|
|
15
|
+
const options = { timeout: 5000 };
|
|
16
|
+
const httpClient = factory_1.HttpClientFactory.getHttpClient(factory_1.ClientNames.Axios, options);
|
|
17
|
+
expect(httpClient).toBeInstanceOf(axios_1.AxiosClient);
|
|
18
|
+
expect(httpClient['options'].timeout).toEqual(options.timeout);
|
|
19
|
+
});
|
|
20
|
+
// Tests that getHttpClient throws a PlatformError with message 'Invalid client name' when name is not a valid ClientNames enum value
|
|
21
|
+
it('should throw a PlatformError with message "Invalid client name" when name is not a valid ClientNames enum value', () => {
|
|
22
|
+
const invalidName = 'InvalidClient';
|
|
23
|
+
expect(() => {
|
|
24
|
+
factory_1.HttpClientFactory.getHttpClient(invalidName);
|
|
25
|
+
}).toThrowError(errors_1.PlatformError);
|
|
26
|
+
expect(() => {
|
|
27
|
+
factory_1.HttpClientFactory.getHttpClient(invalidName);
|
|
28
|
+
}).toThrowError('Invalid client name');
|
|
29
|
+
});
|
|
30
|
+
// Uncomment the following tests as we implement the FetchClient and XhrClient classes
|
|
31
|
+
// // Tests that getHttpClient returns a FetchClient instance when name is ClientNames.Fetch
|
|
32
|
+
// it('should return a FetchClient instance when name is ClientNames.Fetch', () => {
|
|
33
|
+
// jest.mock('./clients/fetch', () => ({
|
|
34
|
+
// FetchClient: jest.fn(),
|
|
35
|
+
// }));
|
|
36
|
+
// const { FetchClient } = require('./clients/fetch');
|
|
37
|
+
// const httpClient = HttpClientFactory.getHttpClient(ClientNames.Fetch);
|
|
38
|
+
// expect(httpClient).toBe(FetchClient);
|
|
39
|
+
// });
|
|
40
|
+
// // Tests that getHttpClient returns an XhrClient instance when name is ClientNames.Xhr
|
|
41
|
+
// it('should return an XhrClient instance when name is ClientNames.Xhr', () => {
|
|
42
|
+
// jest.mock('./clients/xhr', () => ({
|
|
43
|
+
// XhrClient: jest.fn(),
|
|
44
|
+
// }));
|
|
45
|
+
// const { XhrClient } = require('./clients/xhr');
|
|
46
|
+
// const httpClient = HttpClientFactory.getHttpClient(ClientNames.Xhr);
|
|
47
|
+
// expect(httpClient).toBe(XhrClient);
|
|
48
|
+
// });
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25ldHdvcmsvZmFjdG9yeS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3QkFBd0I7O0FBRXhCLHNDQUEwQztBQUMxQywyQ0FBOEM7QUFDOUMsdUNBQTJEO0FBRTNELFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLDBIQUEwSDtJQUMxSCxFQUFFLENBQUMsc0dBQXNHLEVBQUUsR0FBRyxFQUFFO1FBQzlHLE1BQU0sVUFBVSxHQUFHLDJCQUFpQixDQUFDLGFBQWEsQ0FBQyxxQkFBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsbUJBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0lBRUgsNElBQTRJO0lBQzVJLEVBQUUsQ0FBQyx3SEFBd0gsRUFBRSxHQUFHLEVBQUU7UUFDaEksTUFBTSxPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsMkJBQWlCLENBQUMsYUFBYSxDQUFDLHFCQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsbUJBQVcsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztJQUVILHFJQUFxSTtJQUNySSxFQUFFLENBQUMsaUhBQWlILEVBQUUsR0FBRyxFQUFFO1FBQ3pILE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsMkJBQWlCLENBQUMsYUFBYSxDQUFDLFdBQTBCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsc0JBQWEsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDViwyQkFBaUIsQ0FBQyxhQUFhLENBQUMsV0FBMEIsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBRUgsc0ZBQXNGO0lBQ3RGLDRGQUE0RjtJQUM1RixvRkFBb0Y7SUFDcEYsMENBQTBDO0lBQzFDLDhCQUE4QjtJQUM5QixTQUFTO0lBQ1Qsd0RBQXdEO0lBQ3hELDJFQUEyRTtJQUMzRSwwQ0FBMEM7SUFDMUMsTUFBTTtJQUVOLHlGQUF5RjtJQUN6RixpRkFBaUY7SUFDakYsd0NBQXdDO0lBQ3hDLDRCQUE0QjtJQUM1QixTQUFTO0lBQ1Qsb0RBQW9EO0lBQ3BELHlFQUF5RTtJQUN6RSx3Q0FBd0M7SUFDeEMsTUFBTTtBQUNSLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IENvZGl1bUFJXG5cbmltcG9ydCB7IFBsYXRmb3JtRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgQXhpb3NDbGllbnQgfSBmcm9tICcuL2NsaWVudHMvYXhpb3MnO1xuaW1wb3J0IHsgQ2xpZW50TmFtZXMsIEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi9mYWN0b3J5JztcblxuZGVzY3JpYmUoJ2dldEh0dHBDbGllbnQnLCAoKSA9PiB7XG4gIC8vIFRlc3RzIHRoYXQgZ2V0SHR0cENsaWVudCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIEF4aW9zQ2xpZW50IHdoZW4gbmFtZSBpcyBDbGllbnROYW1lcy5BeGlvcyBhbmQgb3B0aW9ucyBhcmUgbm90IHByb3ZpZGVkXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGluc3RhbmNlIG9mIEF4aW9zQ2xpZW50IHdoZW4gbmFtZSBpcyBDbGllbnROYW1lcy5BeGlvcyBhbmQgb3B0aW9ucyBhcmUgbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBIdHRwQ2xpZW50RmFjdG9yeS5nZXRIdHRwQ2xpZW50KENsaWVudE5hbWVzLkF4aW9zKTtcbiAgICBleHBlY3QoaHR0cENsaWVudCkudG9CZUluc3RhbmNlT2YoQXhpb3NDbGllbnQpO1xuICB9KTtcblxuICAvLyBUZXN0cyB0aGF0IGdldEh0dHBDbGllbnQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBBeGlvc0NsaWVudCB3aXRoIHByb3ZpZGVkIG9wdGlvbnMgd2hlbiBuYW1lIGlzIENsaWVudE5hbWVzLkF4aW9zIGFuZCBvcHRpb25zIGFyZSBwcm92aWRlZFxuICBpdCgnc2hvdWxkIHJldHVybiBhbiBpbnN0YW5jZSBvZiBBeGlvc0NsaWVudCB3aXRoIHByb3ZpZGVkIG9wdGlvbnMgd2hlbiBuYW1lIGlzIENsaWVudE5hbWVzLkF4aW9zIGFuZCBvcHRpb25zIGFyZSBwcm92aWRlZCcsICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0geyB0aW1lb3V0OiA1MDAwIH07XG4gICAgY29uc3QgaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoQ2xpZW50TmFtZXMuQXhpb3MsIG9wdGlvbnMpO1xuICAgIGV4cGVjdChodHRwQ2xpZW50KS50b0JlSW5zdGFuY2VPZihBeGlvc0NsaWVudCk7XG4gICAgZXhwZWN0KGh0dHBDbGllbnRbJ29wdGlvbnMnXS50aW1lb3V0KS50b0VxdWFsKG9wdGlvbnMudGltZW91dCk7XG4gIH0pO1xuXG4gIC8vIFRlc3RzIHRoYXQgZ2V0SHR0cENsaWVudCB0aHJvd3MgYSBQbGF0Zm9ybUVycm9yIHdpdGggbWVzc2FnZSAnSW52YWxpZCBjbGllbnQgbmFtZScgd2hlbiBuYW1lIGlzIG5vdCBhIHZhbGlkIENsaWVudE5hbWVzIGVudW0gdmFsdWVcbiAgaXQoJ3Nob3VsZCB0aHJvdyBhIFBsYXRmb3JtRXJyb3Igd2l0aCBtZXNzYWdlIFwiSW52YWxpZCBjbGllbnQgbmFtZVwiIHdoZW4gbmFtZSBpcyBub3QgYSB2YWxpZCBDbGllbnROYW1lcyBlbnVtIHZhbHVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGludmFsaWROYW1lID0gJ0ludmFsaWRDbGllbnQnO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBIdHRwQ2xpZW50RmFjdG9yeS5nZXRIdHRwQ2xpZW50KGludmFsaWROYW1lIGFzIENsaWVudE5hbWVzKTtcbiAgICB9KS50b1Rocm93RXJyb3IoUGxhdGZvcm1FcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoaW52YWxpZE5hbWUgYXMgQ2xpZW50TmFtZXMpO1xuICAgIH0pLnRvVGhyb3dFcnJvcignSW52YWxpZCBjbGllbnQgbmFtZScpO1xuICB9KTtcblxuICAvLyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcyB3ZSBpbXBsZW1lbnQgdGhlIEZldGNoQ2xpZW50IGFuZCBYaHJDbGllbnQgY2xhc3Nlc1xuICAvLyAvLyBUZXN0cyB0aGF0IGdldEh0dHBDbGllbnQgcmV0dXJucyBhIEZldGNoQ2xpZW50IGluc3RhbmNlIHdoZW4gbmFtZSBpcyBDbGllbnROYW1lcy5GZXRjaFxuICAvLyBpdCgnc2hvdWxkIHJldHVybiBhIEZldGNoQ2xpZW50IGluc3RhbmNlIHdoZW4gbmFtZSBpcyBDbGllbnROYW1lcy5GZXRjaCcsICgpID0+IHtcbiAgLy8gICBqZXN0Lm1vY2soJy4vY2xpZW50cy9mZXRjaCcsICgpID0+ICh7XG4gIC8vICAgICBGZXRjaENsaWVudDogamVzdC5mbigpLFxuICAvLyAgIH0pKTtcbiAgLy8gICBjb25zdCB7IEZldGNoQ2xpZW50IH0gPSByZXF1aXJlKCcuL2NsaWVudHMvZmV0Y2gnKTtcbiAgLy8gICBjb25zdCBodHRwQ2xpZW50ID0gSHR0cENsaWVudEZhY3RvcnkuZ2V0SHR0cENsaWVudChDbGllbnROYW1lcy5GZXRjaCk7XG4gIC8vICAgZXhwZWN0KGh0dHBDbGllbnQpLnRvQmUoRmV0Y2hDbGllbnQpO1xuICAvLyB9KTtcblxuICAvLyAvLyBUZXN0cyB0aGF0IGdldEh0dHBDbGllbnQgcmV0dXJucyBhbiBYaHJDbGllbnQgaW5zdGFuY2Ugd2hlbiBuYW1lIGlzIENsaWVudE5hbWVzLlhoclxuICAvLyBpdCgnc2hvdWxkIHJldHVybiBhbiBYaHJDbGllbnQgaW5zdGFuY2Ugd2hlbiBuYW1lIGlzIENsaWVudE5hbWVzLlhocicsICgpID0+IHtcbiAgLy8gICBqZXN0Lm1vY2soJy4vY2xpZW50cy94aHInLCAoKSA9PiAoe1xuICAvLyAgICAgWGhyQ2xpZW50OiBqZXN0LmZuKCksXG4gIC8vICAgfSkpO1xuICAvLyAgIGNvbnN0IHsgWGhyQ2xpZW50IH0gPSByZXF1aXJlKCcuL2NsaWVudHMveGhyJyk7XG4gIC8vICAgY29uc3QgaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmdldEh0dHBDbGllbnQoQ2xpZW50TmFtZXMuWGhyKTtcbiAgLy8gICBleHBlY3QoaHR0cENsaWVudCkudG9CZShYaHJDbGllbnQpO1xuICAvLyB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./factory"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29yay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mYWN0b3J5JyJdfQ==
|
package/build/tags.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare const TAG_NAMES: {
|
|
2
|
+
MODULE: string;
|
|
3
|
+
IMPLEMENTATION: string;
|
|
4
|
+
FEATURE: string;
|
|
5
|
+
ERROR_CATEGORY: string;
|
|
6
|
+
ERROR_TYPE: string;
|
|
7
|
+
META: string;
|
|
8
|
+
DEST_TYPE: string;
|
|
9
|
+
SRC_TYPE: string;
|
|
10
|
+
CLUSTER: string;
|
|
11
|
+
NAMESPACE: string;
|
|
12
|
+
CUSTOMER: string;
|
|
13
|
+
DESTINATION_ID: string;
|
|
14
|
+
WORKSPACE_ID: string;
|
|
15
|
+
SOURCE_ID: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const MODULES: {
|
|
18
|
+
SOURCE: string;
|
|
19
|
+
DESTINATION: string;
|
|
20
|
+
MISCELLANEOUS: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const IMPLEMENTATIONS: {
|
|
23
|
+
NATIVE: string;
|
|
24
|
+
CDK_V1: string;
|
|
25
|
+
CDK_V2: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const FEATURES: {
|
|
28
|
+
PROCESSOR: string;
|
|
29
|
+
ROUTER: string;
|
|
30
|
+
BATCH: string;
|
|
31
|
+
DATA_DELIVERY: string;
|
|
32
|
+
USER_DELETION: string;
|
|
33
|
+
};
|
|
34
|
+
export declare const ERROR_CATEGORIES: {
|
|
35
|
+
DATA_VALIDATION: string;
|
|
36
|
+
NETWORK: string;
|
|
37
|
+
PLATFORM: string;
|
|
38
|
+
TRANSFORMATION: string;
|
|
39
|
+
};
|
|
40
|
+
export declare const ERROR_TYPES: {
|
|
41
|
+
INSTRUMENTATION: string;
|
|
42
|
+
CONFIGURATION: string;
|
|
43
|
+
THROTTLED: string;
|
|
44
|
+
RETRYABLE: string;
|
|
45
|
+
ABORTED: string;
|
|
46
|
+
OAUTH_SECRET: string;
|
|
47
|
+
UNSUPPORTED: string;
|
|
48
|
+
REDIS: string;
|
|
49
|
+
};
|
|
50
|
+
export declare const METADATA: {
|
|
51
|
+
INVALID_AUTH_TOKEN: string;
|
|
52
|
+
UNHANDLED_STATUS_CODE: string;
|
|
53
|
+
INSTRUMENTATION: string;
|
|
54
|
+
UNAUTHORIZED: string;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;CAerB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;CASvB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC"}
|