@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.
Files changed (108) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/build/constants.d.ts +96 -0
  4. package/build/constants.d.ts.map +1 -0
  5. package/build/constants.js +180 -0
  6. package/build/errors/aborted_error.d.ts +5 -0
  7. package/build/errors/aborted_error.d.ts.map +1 -0
  8. package/build/errors/aborted_error.js +16 -0
  9. package/build/errors/base.d.ts +8 -0
  10. package/build/errors/base.d.ts.map +1 -0
  11. package/build/errors/base.js +14 -0
  12. package/build/errors/configuration_error.d.ts +5 -0
  13. package/build/errors/configuration_error.d.ts.map +1 -0
  14. package/build/errors/configuration_error.js +17 -0
  15. package/build/errors/index.d.ts +17 -0
  16. package/build/errors/index.d.ts.map +1 -0
  17. package/build/errors/index.js +33 -0
  18. package/build/errors/instrumentation_error.d.ts +5 -0
  19. package/build/errors/instrumentation_error.d.ts.map +1 -0
  20. package/build/errors/instrumentation_error.js +16 -0
  21. package/build/errors/invalid_auth_token_error.d.ts +5 -0
  22. package/build/errors/invalid_auth_token_error.d.ts.map +1 -0
  23. package/build/errors/invalid_auth_token_error.js +17 -0
  24. package/build/errors/network_error.d.ts +7 -0
  25. package/build/errors/network_error.d.ts.map +1 -0
  26. package/build/errors/network_error.js +28 -0
  27. package/build/errors/network_instrumentation_error.d.ts +5 -0
  28. package/build/errors/network_instrumentation_error.d.ts.map +1 -0
  29. package/build/errors/network_instrumentation_error.js +17 -0
  30. package/build/errors/oauth_secret_error.d.ts +5 -0
  31. package/build/errors/oauth_secret_error.d.ts.map +1 -0
  32. package/build/errors/oauth_secret_error.js +16 -0
  33. package/build/errors/platform_error.d.ts +5 -0
  34. package/build/errors/platform_error.d.ts.map +1 -0
  35. package/build/errors/platform_error.js +15 -0
  36. package/build/errors/redis_error.d.ts +5 -0
  37. package/build/errors/redis_error.d.ts.map +1 -0
  38. package/build/errors/redis_error.js +16 -0
  39. package/build/errors/retryable_error.d.ts +5 -0
  40. package/build/errors/retryable_error.d.ts.map +1 -0
  41. package/build/errors/retryable_error.js +16 -0
  42. package/build/errors/throttled_error.d.ts +5 -0
  43. package/build/errors/throttled_error.d.ts.map +1 -0
  44. package/build/errors/throttled_error.js +16 -0
  45. package/build/errors/transformation_error.d.ts +5 -0
  46. package/build/errors/transformation_error.d.ts.map +1 -0
  47. package/build/errors/transformation_error.js +15 -0
  48. package/build/errors/unauthorized_error.d.ts +5 -0
  49. package/build/errors/unauthorized_error.d.ts.map +1 -0
  50. package/build/errors/unauthorized_error.js +17 -0
  51. package/build/errors/unhandled_status_code_error.d.ts +5 -0
  52. package/build/errors/unhandled_status_code_error.d.ts.map +1 -0
  53. package/build/errors/unhandled_status_code_error.js +17 -0
  54. package/build/errors/unsupported_event_error.d.ts +5 -0
  55. package/build/errors/unsupported_event_error.d.ts.map +1 -0
  56. package/build/errors/unsupported_event_error.js +16 -0
  57. package/build/index.d.ts +7 -0
  58. package/build/index.d.ts.map +1 -0
  59. package/build/index.js +23 -0
  60. package/build/logger.d.ts +7 -0
  61. package/build/logger.d.ts.map +1 -0
  62. package/build/logger.js +39 -0
  63. package/build/network/clients/axios.d.ts +38 -0
  64. package/build/network/clients/axios.d.ts.map +1 -0
  65. package/build/network/clients/axios.js +197 -0
  66. package/build/network/clients/axios.test.d.ts +2 -0
  67. package/build/network/clients/axios.test.d.ts.map +1 -0
  68. package/build/network/clients/axios.test.js +231 -0
  69. package/build/network/clients/types.d.ts +32 -0
  70. package/build/network/clients/types.d.ts.map +1 -0
  71. package/build/network/clients/types.js +3 -0
  72. package/build/network/factory.d.ts +30 -0
  73. package/build/network/factory.d.ts.map +1 -0
  74. package/build/network/factory.js +46 -0
  75. package/build/network/factory.test.d.ts +2 -0
  76. package/build/network/factory.test.d.ts.map +1 -0
  77. package/build/network/factory.test.js +50 -0
  78. package/build/network/index.d.ts +2 -0
  79. package/build/network/index.d.ts.map +1 -0
  80. package/build/network/index.js +18 -0
  81. package/build/tags.d.ts +56 -0
  82. package/build/tags.d.ts.map +1 -0
  83. package/build/tags.js +59 -0
  84. package/build/types.d.ts +275 -0
  85. package/build/types.d.ts.map +1 -0
  86. package/build/types.js +34 -0
  87. package/build/utils/index.d.ts +4 -0
  88. package/build/utils/index.d.ts.map +1 -0
  89. package/build/utils/index.js +20 -0
  90. package/build/utils/json.d.ts +51 -0
  91. package/build/utils/json.d.ts.map +1 -0
  92. package/build/utils/json.js +507 -0
  93. package/build/utils/json.test.d.ts +2 -0
  94. package/build/utils/json.test.d.ts.map +1 -0
  95. package/build/utils/json.test.js +588 -0
  96. package/build/utils/misc.d.ts +129 -0
  97. package/build/utils/misc.d.ts.map +1 -0
  98. package/build/utils/misc.js +362 -0
  99. package/build/utils/misc.test.d.ts +2 -0
  100. package/build/utils/misc.test.d.ts.map +1 -0
  101. package/build/utils/misc.test.js +2059 -0
  102. package/build/utils/sem.d.ts +29 -0
  103. package/build/utils/sem.d.ts.map +1 -0
  104. package/build/utils/sem.js +196 -0
  105. package/build/utils/sem.test.d.ts +2 -0
  106. package/build/utils/sem.test.d.ts.map +1 -0
  107. package/build/utils/sem.test.js +237 -0
  108. package/package.json +69 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=axios.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=factory.test.d.ts.map
@@ -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,2 @@
1
+ export * from './factory';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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==
@@ -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"}