@devrev/airsync-sdk 2.0.0-beta.3 → 2.0.0-beta.4
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/README.md +5 -11
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +2 -10
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +2 -7
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.js +15 -43
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/helpers.d.ts +0 -14
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +0 -36
- package/dist/http/{axios-client-internal.d.ts → client.d.ts} +1 -1
- package/dist/http/client.d.ts.map +1 -0
- package/dist/index.d.ts +22 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -28
- package/dist/logger/logger.d.ts +14 -0
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +55 -8
- package/dist/mappers/mappers.d.ts +9 -10
- package/dist/mappers/mappers.d.ts.map +1 -1
- package/dist/mappers/{mappers.interface.d.ts → mappers.interfaces.d.ts} +5 -5
- package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
- package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +3 -3
- package/dist/mappers/mappers.js +13 -9
- package/dist/multithreading/adapters/base-adapter.d.ts +23 -8
- package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -1
- package/dist/multithreading/adapters/base-adapter.js +41 -8
- package/dist/multithreading/adapters/extraction-adapter.d.ts +8 -9
- package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -1
- package/dist/multithreading/adapters/extraction-adapter.js +24 -26
- package/dist/multithreading/adapters/loading-adapter.d.ts +7 -7
- package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -1
- package/dist/multithreading/adapters/loading-adapter.js +53 -83
- package/dist/{common/control-protocol.d.ts → multithreading/emit.d.ts} +1 -1
- package/dist/multithreading/emit.d.ts.map +1 -0
- package/dist/{common/control-protocol.js → multithreading/emit.js} +3 -3
- package/dist/multithreading/process-task.d.ts.map +1 -1
- package/dist/multithreading/process-task.js +26 -9
- package/dist/multithreading/spawn/spawn.helpers.d.ts +23 -3
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.js +152 -2
- package/dist/multithreading/spawn/spawn.js +7 -7
- package/dist/multithreading/worker.js +1 -2
- package/dist/repo/repo.js +2 -2
- package/dist/state/base-state.d.ts +5 -5
- package/dist/state/base-state.d.ts.map +1 -1
- package/dist/state/base-state.js +7 -7
- package/dist/state/extraction-state.d.ts +9 -9
- package/dist/state/extraction-state.d.ts.map +1 -1
- package/dist/state/extraction-state.js +10 -10
- package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
- package/dist/{common → state}/install-initial-domain-mapping.js +4 -4
- package/dist/state/loading-state.d.ts +7 -8
- package/dist/state/loading-state.d.ts.map +1 -1
- package/dist/state/loading-state.js +6 -7
- package/dist/state/state.d.ts +4 -0
- package/dist/state/state.d.ts.map +1 -0
- package/dist/state/state.interfaces.d.ts +28 -18
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +13 -6
- package/dist/state/state.js +11 -0
- package/dist/{common → state}/time-value-resolver.d.ts +6 -7
- package/dist/state/time-value-resolver.d.ts.map +1 -0
- package/dist/{common → state}/time-value-resolver.js +9 -8
- package/dist/{common/test-utils.d.ts → testing/mock-event.d.ts} +1 -2
- package/dist/testing/mock-event.d.ts.map +1 -0
- package/dist/{common/test-utils.js → testing/mock-event.js} +14 -3
- package/dist/{mock-server → testing}/mock-server.d.ts +5 -0
- package/dist/testing/mock-server.d.ts.map +1 -0
- package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
- package/dist/{mock-server → testing}/mock-server.js +6 -1
- package/dist/types/errors.d.ts +9 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/extraction.d.ts +70 -15
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +4 -6
- package/dist/types/loading.d.ts +1 -2
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +0 -1
- package/dist/types/workers.d.ts +66 -23
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/uploader/uploader.d.ts +5 -4
- package/dist/uploader/uploader.d.ts.map +1 -1
- package/dist/uploader/uploader.interfaces.d.ts +1 -1
- package/dist/uploader/uploader.js +10 -10
- package/package.json +3 -3
- package/dist/airsync-sdk.d.ts +0 -2059
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -540
- package/dist/common/control-protocol.d.ts.map +0 -1
- package/dist/common/errors.d.ts +0 -6
- package/dist/common/errors.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
- package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.test.js +0 -211
- package/dist/common/test-utils.d.ts.map +0 -1
- package/dist/common/time-value-resolver.d.ts.map +0 -1
- package/dist/common/time-value-resolver.test.d.ts +0 -2
- package/dist/common/time-value-resolver.test.d.ts.map +0 -1
- package/dist/common/time-value-resolver.test.js +0 -268
- package/dist/http/axios-client-internal.d.ts.map +0 -1
- package/dist/http/axios-client-internal.test.d.ts +0 -2
- package/dist/http/axios-client-internal.test.d.ts.map +0 -1
- package/dist/http/axios-client-internal.test.js +0 -175
- package/dist/http/axios-client.d.ts +0 -27
- package/dist/http/axios-client.d.ts.map +0 -1
- package/dist/http/axios-client.js +0 -60
- package/dist/http/constants.d.ts +0 -4
- package/dist/http/constants.d.ts.map +0 -1
- package/dist/http/constants.js +0 -6
- package/dist/http/index.d.ts +0 -2
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js +0 -17
- package/dist/logger/logger.constants.d.ts +0 -6
- package/dist/logger/logger.constants.d.ts.map +0 -1
- package/dist/logger/logger.constants.js +0 -13
- package/dist/logger/logger.context.d.ts +0 -58
- package/dist/logger/logger.context.d.ts.map +0 -1
- package/dist/logger/logger.context.js +0 -86
- package/dist/logger/logger.test.d.ts +0 -2
- package/dist/logger/logger.test.d.ts.map +0 -1
- package/dist/logger/logger.test.js +0 -537
- package/dist/mappers/mappers.interface.d.ts.map +0 -1
- package/dist/mappers/mappers.test.d.ts +0 -2
- package/dist/mappers/mappers.test.d.ts.map +0 -1
- package/dist/mappers/mappers.test.js +0 -105
- package/dist/mock-server/mock-server.d.ts.map +0 -1
- package/dist/mock-server/mock-server.interfaces.d.ts.map +0 -1
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts +0 -2
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/base-adapter.emit.test.js +0 -403
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts +0 -2
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.js +0 -175
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts +0 -2
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/extraction-adapter.test.js +0 -789
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts +0 -2
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/loading-adapter.helpers.test.js +0 -514
- package/dist/multithreading/adapters/loading-adapter.test.d.ts +0 -2
- package/dist/multithreading/adapters/loading-adapter.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/loading-adapter.test.js +0 -589
- package/dist/multithreading/adapters/serialization.test.d.ts +0 -2
- package/dist/multithreading/adapters/serialization.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/serialization.test.js +0 -71
- package/dist/multithreading/create-worker.test.d.ts +0 -2
- package/dist/multithreading/create-worker.test.d.ts.map +0 -1
- package/dist/multithreading/create-worker.test.js +0 -108
- package/dist/multithreading/process-task.test.d.ts +0 -2
- package/dist/multithreading/process-task.test.d.ts.map +0 -1
- package/dist/multithreading/process-task.test.js +0 -146
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
- package/dist/multithreading/spawn/spawn.test.d.ts +0 -2
- package/dist/multithreading/spawn/spawn.test.d.ts.map +0 -1
- package/dist/multithreading/spawn/spawn.test.js +0 -232
- package/dist/repo/repo.test.d.ts +0 -2
- package/dist/repo/repo.test.d.ts.map +0 -1
- package/dist/repo/repo.test.js +0 -184
- package/dist/state/state.extract-window.test.d.ts +0 -2
- package/dist/state/state.extract-window.test.d.ts.map +0 -1
- package/dist/state/state.extract-window.test.js +0 -163
- package/dist/state/state.pending-boundaries.test.d.ts +0 -2
- package/dist/state/state.pending-boundaries.test.d.ts.map +0 -1
- package/dist/state/state.pending-boundaries.test.js +0 -189
- package/dist/state/state.post-state.test.d.ts +0 -2
- package/dist/state/state.post-state.test.d.ts.map +0 -1
- package/dist/state/state.post-state.test.js +0 -78
- package/dist/state/state.test.d.ts +0 -2
- package/dist/state/state.test.d.ts.map +0 -1
- package/dist/state/state.test.js +0 -271
- package/dist/state/state.time-value-resolution.test.d.ts +0 -2
- package/dist/state/state.time-value-resolution.test.d.ts.map +0 -1
- package/dist/state/state.time-value-resolution.test.js +0 -175
- package/dist/tsdoc-metadata.json +0 -11
- package/dist/types/extraction.test.d.ts +0 -2
- package/dist/types/extraction.test.d.ts.map +0 -1
- package/dist/types/extraction.test.js +0 -96
- package/dist/types/index.d.ts +0 -10
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -21
- package/dist/uploader/uploader.helpers.test.d.ts +0 -2
- package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
- package/dist/uploader/uploader.helpers.test.js +0 -256
- package/dist/uploader/uploader.test.d.ts +0 -2
- package/dist/uploader/uploader.test.d.ts.map +0 -1
- package/dist/uploader/uploader.test.js +0 -601
- /package/dist/http/{axios-client-internal.js → client.js} +0 -0
- /package/dist/{common → state}/install-initial-domain-mapping.d.ts +0 -0
- /package/dist/{mock-server → testing}/mock-server.interfaces.d.ts +0 -0
- /package/dist/{mock-server → testing}/mock-server.interfaces.js +0 -0
- /package/dist/{common → types}/errors.js +0 -0
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jest_setup_1 = require("../tests/jest.setup");
|
|
4
|
-
const axios_client_internal_1 = require("./axios-client-internal");
|
|
5
|
-
jest.setTimeout(60000);
|
|
6
|
-
describe('Internal Axios Client', () => {
|
|
7
|
-
it('should not retry on 200 response', async () => {
|
|
8
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint');
|
|
9
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(1);
|
|
10
|
-
});
|
|
11
|
-
it('should not retry on 400 response', async () => {
|
|
12
|
-
jest_setup_1.mockServer.setRoute({
|
|
13
|
-
path: '/test-endpoint',
|
|
14
|
-
method: 'GET',
|
|
15
|
-
status: 400,
|
|
16
|
-
});
|
|
17
|
-
await expect(axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint')).rejects.toThrow();
|
|
18
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(1);
|
|
19
|
-
});
|
|
20
|
-
// TODO: This test is working as expected, but it takes too long to run. Not
|
|
21
|
-
// sure if it is good idea to have it.
|
|
22
|
-
// it('should retry on 500 response', async () => {
|
|
23
|
-
// mockServer.setRoute({
|
|
24
|
-
// path: '/test-endpoint',
|
|
25
|
-
// method: 'GET',
|
|
26
|
-
// status: 200,
|
|
27
|
-
// retry: {
|
|
28
|
-
// failureCount: 4,
|
|
29
|
-
// errorStatus: 500,
|
|
30
|
-
// errorBody: { error: 'Internal Server Error' },
|
|
31
|
-
// },
|
|
32
|
-
// });
|
|
33
|
-
// await axiosClient.get(mockServer.baseUrl + '/test-endpoint');
|
|
34
|
-
// expect(mockServer.getRequestCount('GET', '/test-endpoint')).toBe(5);
|
|
35
|
-
// });
|
|
36
|
-
it('should retry 2 times on 500 response and then succeed third time when response is 200', async () => {
|
|
37
|
-
jest_setup_1.mockServer.setRoute({
|
|
38
|
-
path: '/test-endpoint',
|
|
39
|
-
method: 'GET',
|
|
40
|
-
status: 200,
|
|
41
|
-
retry: {
|
|
42
|
-
failureCount: 2,
|
|
43
|
-
errorStatus: 500,
|
|
44
|
-
errorBody: { error: 'Internal Server Error' },
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint');
|
|
48
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(3);
|
|
49
|
-
});
|
|
50
|
-
it('should retry once after delay when response is 429 and Retry-After header is valid value', async () => {
|
|
51
|
-
jest_setup_1.mockServer.setRoute({
|
|
52
|
-
path: '/test-endpoint',
|
|
53
|
-
method: 'GET',
|
|
54
|
-
status: 200,
|
|
55
|
-
retry: {
|
|
56
|
-
failureCount: 1,
|
|
57
|
-
errorStatus: 429,
|
|
58
|
-
headers: {
|
|
59
|
-
'Retry-After': '1',
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint');
|
|
64
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(2);
|
|
65
|
-
});
|
|
66
|
-
it('should retry once after delay and measure time between retries when response is 429 and Retry-After header is valid value', async () => {
|
|
67
|
-
jest_setup_1.mockServer.setRoute({
|
|
68
|
-
path: '/test-endpoint',
|
|
69
|
-
method: 'GET',
|
|
70
|
-
status: 200,
|
|
71
|
-
retry: {
|
|
72
|
-
failureCount: 1,
|
|
73
|
-
errorStatus: 429,
|
|
74
|
-
headers: { 'Retry-After': '1' },
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
const startTime = Date.now();
|
|
78
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint');
|
|
79
|
-
const endTime = Date.now();
|
|
80
|
-
const duration = endTime - startTime;
|
|
81
|
-
const expectedDuration = 1 * 1000;
|
|
82
|
-
expect(duration).toBeGreaterThanOrEqual(expectedDuration);
|
|
83
|
-
expect(duration).toBeLessThan(expectedDuration + 1000);
|
|
84
|
-
});
|
|
85
|
-
it('should retry when response is 429 and Retry-After header is lowercase', async () => {
|
|
86
|
-
jest_setup_1.mockServer.setRoute({
|
|
87
|
-
path: '/test-endpoint',
|
|
88
|
-
method: 'GET',
|
|
89
|
-
status: 200,
|
|
90
|
-
retry: {
|
|
91
|
-
failureCount: 1,
|
|
92
|
-
errorStatus: 429,
|
|
93
|
-
headers: { 'retry-after': '1' },
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint');
|
|
97
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(2);
|
|
98
|
-
});
|
|
99
|
-
it('[edge] should not retry when response is 429 and there is no Retry-After header', async () => {
|
|
100
|
-
jest_setup_1.mockServer.setRoute({
|
|
101
|
-
path: '/test-endpoint',
|
|
102
|
-
method: 'GET',
|
|
103
|
-
status: 200,
|
|
104
|
-
retry: {
|
|
105
|
-
failureCount: 1,
|
|
106
|
-
errorStatus: 429,
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
await expect(axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint')).rejects.toThrow();
|
|
110
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(1);
|
|
111
|
-
});
|
|
112
|
-
it('[edge] should retry when response is 429 and Retry-After header is 0', async () => {
|
|
113
|
-
jest_setup_1.mockServer.setRoute({
|
|
114
|
-
path: '/test-endpoint',
|
|
115
|
-
method: 'GET',
|
|
116
|
-
status: 200,
|
|
117
|
-
retry: {
|
|
118
|
-
failureCount: 1,
|
|
119
|
-
errorStatus: 429,
|
|
120
|
-
headers: { 'Retry-After': '0' },
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint');
|
|
124
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(2);
|
|
125
|
-
});
|
|
126
|
-
it('[edge] should not retry when response is 429 and Retry-After header is negative value', async () => {
|
|
127
|
-
jest_setup_1.mockServer.setRoute({
|
|
128
|
-
path: '/test-endpoint',
|
|
129
|
-
method: 'GET',
|
|
130
|
-
status: 200,
|
|
131
|
-
retry: {
|
|
132
|
-
failureCount: 1,
|
|
133
|
-
errorStatus: 429,
|
|
134
|
-
headers: { 'Retry-After': '-1' },
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
await expect(axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint')).rejects.toThrow();
|
|
138
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(1);
|
|
139
|
-
});
|
|
140
|
-
it('[edge] should not retry when response is 429 and Retry-After header is invalid value', async () => {
|
|
141
|
-
jest_setup_1.mockServer.setRoute({
|
|
142
|
-
path: '/test-endpoint',
|
|
143
|
-
method: 'GET',
|
|
144
|
-
status: 200,
|
|
145
|
-
retry: {
|
|
146
|
-
failureCount: 1,
|
|
147
|
-
errorStatus: 429,
|
|
148
|
-
headers: { 'Retry-After': 'invalid' },
|
|
149
|
-
},
|
|
150
|
-
});
|
|
151
|
-
await expect(axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint')).rejects.toThrow();
|
|
152
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(1);
|
|
153
|
-
});
|
|
154
|
-
it('should retry on request timeout (ECONNABORTED)', async () => {
|
|
155
|
-
// The mock server delays the first response by 500ms, but we set a per-request
|
|
156
|
-
// timeout of 150ms so the first request times out with ECONNABORTED.
|
|
157
|
-
// After the 1 timed-out failure, the server responds immediately (no delay),
|
|
158
|
-
// so the retry succeeds quickly without waiting for full exponential backoff.
|
|
159
|
-
jest_setup_1.mockServer.setRoute({
|
|
160
|
-
path: '/test-endpoint',
|
|
161
|
-
method: 'GET',
|
|
162
|
-
status: 200,
|
|
163
|
-
retry: {
|
|
164
|
-
failureCount: 1,
|
|
165
|
-
errorStatus: 200,
|
|
166
|
-
delay: 500,
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
await axios_client_internal_1.axiosClient.get(jest_setup_1.mockServer.baseUrl + '/test-endpoint', {
|
|
170
|
-
timeout: 150,
|
|
171
|
-
});
|
|
172
|
-
// Should have made 2 requests: 1 that timed out + 1 successful retry
|
|
173
|
-
expect(jest_setup_1.mockServer.getRequestCount('GET', '/test-endpoint')).toBe(2);
|
|
174
|
-
});
|
|
175
|
-
});
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Axios client setup with retry capabilities using axios-retry.
|
|
3
|
-
*
|
|
4
|
-
* This module exports an Axios client instance (`axiosClient`) that is configured to automatically retry
|
|
5
|
-
* failed requests under certain conditions.
|
|
6
|
-
*
|
|
7
|
-
* Retry Conditions:
|
|
8
|
-
* 1. Network errors (where no response is received).
|
|
9
|
-
* 2. Idempotent requests (defaults include GET, HEAD, OPTIONS, PUT).
|
|
10
|
-
* 3. All 5xx server errors.
|
|
11
|
-
*
|
|
12
|
-
* Retry Strategy:
|
|
13
|
-
* - A maximum of 5 retries are attempted.
|
|
14
|
-
* - Exponential backoff delay is applied between retries, increasing with each retry attempt.
|
|
15
|
-
*
|
|
16
|
-
* Additional Features:
|
|
17
|
-
* - When the maximum number of retry attempts is reached, sensitive headers (like authorization)
|
|
18
|
-
* are removed from error logs for security reasons.
|
|
19
|
-
*
|
|
20
|
-
* Exported:
|
|
21
|
-
* - `axios`: Original axios instance for additional customizations or direct use.
|
|
22
|
-
* - `axiosClient`: Configured axios instance with retry logic.
|
|
23
|
-
*/
|
|
24
|
-
import axios from 'axios';
|
|
25
|
-
declare const axiosClient: import("axios").AxiosInstance;
|
|
26
|
-
export { axios, axiosClient };
|
|
27
|
-
//# sourceMappingURL=axios-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"axios-client.d.ts","sourceRoot":"","sources":["../../src/http/axios-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAqB,MAAM,OAAO,CAAC;AAI1C,QAAA,MAAM,WAAW,+BAAiB,CAAC;AAuCnC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Axios client setup with retry capabilities using axios-retry.
|
|
4
|
-
*
|
|
5
|
-
* This module exports an Axios client instance (`axiosClient`) that is configured to automatically retry
|
|
6
|
-
* failed requests under certain conditions.
|
|
7
|
-
*
|
|
8
|
-
* Retry Conditions:
|
|
9
|
-
* 1. Network errors (where no response is received).
|
|
10
|
-
* 2. Idempotent requests (defaults include GET, HEAD, OPTIONS, PUT).
|
|
11
|
-
* 3. All 5xx server errors.
|
|
12
|
-
*
|
|
13
|
-
* Retry Strategy:
|
|
14
|
-
* - A maximum of 5 retries are attempted.
|
|
15
|
-
* - Exponential backoff delay is applied between retries, increasing with each retry attempt.
|
|
16
|
-
*
|
|
17
|
-
* Additional Features:
|
|
18
|
-
* - When the maximum number of retry attempts is reached, sensitive headers (like authorization)
|
|
19
|
-
* are removed from error logs for security reasons.
|
|
20
|
-
*
|
|
21
|
-
* Exported:
|
|
22
|
-
* - `axios`: Original axios instance for additional customizations or direct use.
|
|
23
|
-
* - `axiosClient`: Configured axios instance with retry logic.
|
|
24
|
-
*/
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.axiosClient = exports.axios = void 0;
|
|
30
|
-
const axios_1 = __importDefault(require("axios"));
|
|
31
|
-
exports.axios = axios_1.default;
|
|
32
|
-
const axios_retry_1 = __importDefault(require("axios-retry"));
|
|
33
|
-
const logger_context_1 = require("../logger/logger.context");
|
|
34
|
-
const axiosClient = axios_1.default.create();
|
|
35
|
-
exports.axiosClient = axiosClient;
|
|
36
|
-
(0, axios_retry_1.default)(axiosClient, {
|
|
37
|
-
retries: 5,
|
|
38
|
-
retryDelay: (retryCount, error) => {
|
|
39
|
-
// exponential backoff algorithm: 1 * 2 ^ retryCount * 1000ms
|
|
40
|
-
const delay = axios_retry_1.default.exponentialDelay(retryCount, error, 1000);
|
|
41
|
-
(0, logger_context_1.runWithUserLogContext)(() => {
|
|
42
|
-
var _a, _b, _c;
|
|
43
|
-
return console.warn(`Request to ${(_a = error.config) === null || _a === void 0 ? void 0 : _a.url} failed with response status code ${(_b = error.response) === null || _b === void 0 ? void 0 : _b.status}. Method ${(_c = error.config) === null || _c === void 0 ? void 0 : _c.method}. Retry count: ${retryCount}. Retrying in ${Math.round(delay / 1000)}s.`);
|
|
44
|
-
});
|
|
45
|
-
return delay;
|
|
46
|
-
},
|
|
47
|
-
retryCondition: (error) => {
|
|
48
|
-
var _a, _b, _c;
|
|
49
|
-
return ((axios_retry_1.default.isNetworkOrIdempotentRequestError(error) &&
|
|
50
|
-
((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) !== 429) ||
|
|
51
|
-
((_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.status) !== null && _c !== void 0 ? _c : 0) >= 500);
|
|
52
|
-
},
|
|
53
|
-
onMaxRetryTimesExceeded(error) {
|
|
54
|
-
var _a, _b, _c, _d;
|
|
55
|
-
(_b = (_a = error.config) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? true : delete _b.authorization;
|
|
56
|
-
(_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.headers) === null || _d === void 0 ? true : delete _d.Authorization;
|
|
57
|
-
delete error.request._header;
|
|
58
|
-
(0, logger_context_1.runWithUserLogContext)(() => console.warn('Max retry times exceeded. Error', error));
|
|
59
|
-
},
|
|
60
|
-
});
|
package/dist/http/constants.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/http/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,+BAA+B,MAAM,CAAC"}
|
package/dist/http/constants.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RATE_LIMIT_EXCEEDED_STATUS_CODE = exports.LAMBDA_LIMIT_EXCEEDED = exports.RATE_LIMIT_EXCEEDED = void 0;
|
|
4
|
-
exports.RATE_LIMIT_EXCEEDED = 'LIMIT_EXCEEDED';
|
|
5
|
-
exports.LAMBDA_LIMIT_EXCEEDED = 'LAMBDA_LIMIT_EXCEEDED';
|
|
6
|
-
exports.RATE_LIMIT_EXCEEDED_STATUS_CODE = 429;
|
package/dist/http/index.d.ts
DELETED
package/dist/http/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
package/dist/http/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
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("./axios-client"), exports);
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { InspectOptions } from 'node:util';
|
|
2
|
-
export declare const MAX_LOG_STRING_LENGTH = 10000;
|
|
3
|
-
export declare const MAX_LOG_DEPTH = 10;
|
|
4
|
-
export declare const MAX_LOG_ARRAY_LENGTH = 100;
|
|
5
|
-
export declare const INSPECT_OPTIONS: InspectOptions;
|
|
6
|
-
//# sourceMappingURL=logger.constants.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.constants.d.ts","sourceRoot":"","sources":["../../src/logger/logger.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,eAAe,EAAE,cAM7B,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INSPECT_OPTIONS = exports.MAX_LOG_ARRAY_LENGTH = exports.MAX_LOG_DEPTH = exports.MAX_LOG_STRING_LENGTH = void 0;
|
|
4
|
-
exports.MAX_LOG_STRING_LENGTH = 10000;
|
|
5
|
-
exports.MAX_LOG_DEPTH = 10;
|
|
6
|
-
exports.MAX_LOG_ARRAY_LENGTH = 100;
|
|
7
|
-
exports.INSPECT_OPTIONS = {
|
|
8
|
-
compact: false,
|
|
9
|
-
breakLength: Infinity,
|
|
10
|
-
depth: exports.MAX_LOG_DEPTH,
|
|
11
|
-
maxArrayLength: exports.MAX_LOG_ARRAY_LENGTH,
|
|
12
|
-
maxStringLength: exports.MAX_LOG_STRING_LENGTH,
|
|
13
|
-
};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Executes a function within user log context, marking all logs as user-originated.
|
|
3
|
-
*
|
|
4
|
-
* Use this to wrap user-provided callback functions (e.g., task handlers, event callbacks).
|
|
5
|
-
* The context automatically propagates through any async operations within the function,
|
|
6
|
-
* ensuring that all console.log calls inside are correctly tagged as user logs.
|
|
7
|
-
*
|
|
8
|
-
* @template T - The return type of the function
|
|
9
|
-
* @param fn - The function to execute within user context (can be sync or async)
|
|
10
|
-
* @returns The result of the function execution
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* await runWithUserLogContext(async () => {
|
|
15
|
-
* console.log('This is a user log'); // is_sdk_log: false
|
|
16
|
-
* await someAsyncOperation();
|
|
17
|
-
* console.log('Still a user log'); // is_sdk_log: false (context preserved)
|
|
18
|
-
* });
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export declare function runWithUserLogContext<T>(fn: () => T): T;
|
|
22
|
-
/**
|
|
23
|
-
* Executes a function within SDK log context, marking all logs as SDK-originated.
|
|
24
|
-
*
|
|
25
|
-
* Use this to wrap SDK internal operations (e.g., emit, postState, adapter methods).
|
|
26
|
-
* The context automatically propagates through any async operations within the function,
|
|
27
|
-
* ensuring that all console.log calls inside are correctly tagged as SDK logs.
|
|
28
|
-
*
|
|
29
|
-
* This allows proper nesting: SDK code can call user code via runWithUserLogContext,
|
|
30
|
-
* and when control returns to SDK code, logs are correctly attributed.
|
|
31
|
-
*
|
|
32
|
-
* @template T - The return type of the function
|
|
33
|
-
* @param fn - The function to execute within SDK context (can be sync or async)
|
|
34
|
-
* @returns The result of the function execution
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* await runWithSdkLogContext(async () => {
|
|
39
|
-
* console.log('SDK internal log'); // is_sdk_log: true
|
|
40
|
-
* runWithUserLogContext(() => {
|
|
41
|
-
* console.log('User handler log'); // is_sdk_log: false
|
|
42
|
-
* });
|
|
43
|
-
* console.log('Back to SDK log'); // is_sdk_log: true
|
|
44
|
-
* });
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export declare function runWithSdkLogContext<T>(fn: () => T): T;
|
|
48
|
-
/**
|
|
49
|
-
* Retrieves the current SDK log context value.
|
|
50
|
-
*
|
|
51
|
-
* Returns whether the current execution context is within SDK code (true) or user code (false).
|
|
52
|
-
* If no context has been set (e.g., during testing or edge cases), returns the provided default.
|
|
53
|
-
*
|
|
54
|
-
* @param defaultValue - The value to return if no context is currently set
|
|
55
|
-
* @returns `true` if in SDK context, `false` if in user context, or defaultValue if unset
|
|
56
|
-
*/
|
|
57
|
-
export declare function getSdkLogContextValue(defaultValue: boolean): boolean;
|
|
58
|
-
//# sourceMappingURL=logger.context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.context.d.ts","sourceRoot":"","sources":["../../src/logger/logger.context.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAMpE"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runWithUserLogContext = runWithUserLogContext;
|
|
4
|
-
exports.runWithSdkLogContext = runWithSdkLogContext;
|
|
5
|
-
exports.getSdkLogContextValue = getSdkLogContextValue;
|
|
6
|
-
const node_async_hooks_1 = require("node:async_hooks");
|
|
7
|
-
/**
|
|
8
|
-
* Async-aware context storage for tracking whether code is executing within SDK or user context.
|
|
9
|
-
*
|
|
10
|
-
* AsyncLocalStorage is used instead of a simple global variable because it automatically
|
|
11
|
-
* propagates the context across async boundaries (await, Promise.then, setTimeout, etc.).
|
|
12
|
-
* This ensures that even after multiple await calls in user code, the logging context
|
|
13
|
-
* remains correct without requiring explicit context passing through function parameters.
|
|
14
|
-
*
|
|
15
|
-
* The stored boolean value indicates:
|
|
16
|
-
* - `true`: Code is executing within SDK internals (logs tagged as is_sdk_log: true)
|
|
17
|
-
* - `false`: Code is executing within user-provided handlers (logs tagged as is_sdk_log: false)
|
|
18
|
-
*/
|
|
19
|
-
const sdkLogContext = new node_async_hooks_1.AsyncLocalStorage();
|
|
20
|
-
/**
|
|
21
|
-
* Executes a function within user log context, marking all logs as user-originated.
|
|
22
|
-
*
|
|
23
|
-
* Use this to wrap user-provided callback functions (e.g., task handlers, event callbacks).
|
|
24
|
-
* The context automatically propagates through any async operations within the function,
|
|
25
|
-
* ensuring that all console.log calls inside are correctly tagged as user logs.
|
|
26
|
-
*
|
|
27
|
-
* @template T - The return type of the function
|
|
28
|
-
* @param fn - The function to execute within user context (can be sync or async)
|
|
29
|
-
* @returns The result of the function execution
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* await runWithUserLogContext(async () => {
|
|
34
|
-
* console.log('This is a user log'); // is_sdk_log: false
|
|
35
|
-
* await someAsyncOperation();
|
|
36
|
-
* console.log('Still a user log'); // is_sdk_log: false (context preserved)
|
|
37
|
-
* });
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
function runWithUserLogContext(fn) {
|
|
41
|
-
return sdkLogContext.run(false, fn);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Executes a function within SDK log context, marking all logs as SDK-originated.
|
|
45
|
-
*
|
|
46
|
-
* Use this to wrap SDK internal operations (e.g., emit, postState, adapter methods).
|
|
47
|
-
* The context automatically propagates through any async operations within the function,
|
|
48
|
-
* ensuring that all console.log calls inside are correctly tagged as SDK logs.
|
|
49
|
-
*
|
|
50
|
-
* This allows proper nesting: SDK code can call user code via runWithUserLogContext,
|
|
51
|
-
* and when control returns to SDK code, logs are correctly attributed.
|
|
52
|
-
*
|
|
53
|
-
* @template T - The return type of the function
|
|
54
|
-
* @param fn - The function to execute within SDK context (can be sync or async)
|
|
55
|
-
* @returns The result of the function execution
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* ```typescript
|
|
59
|
-
* await runWithSdkLogContext(async () => {
|
|
60
|
-
* console.log('SDK internal log'); // is_sdk_log: true
|
|
61
|
-
* runWithUserLogContext(() => {
|
|
62
|
-
* console.log('User handler log'); // is_sdk_log: false
|
|
63
|
-
* });
|
|
64
|
-
* console.log('Back to SDK log'); // is_sdk_log: true
|
|
65
|
-
* });
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
function runWithSdkLogContext(fn) {
|
|
69
|
-
return sdkLogContext.run(true, fn);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Retrieves the current SDK log context value.
|
|
73
|
-
*
|
|
74
|
-
* Returns whether the current execution context is within SDK code (true) or user code (false).
|
|
75
|
-
* If no context has been set (e.g., during testing or edge cases), returns the provided default.
|
|
76
|
-
*
|
|
77
|
-
* @param defaultValue - The value to return if no context is currently set
|
|
78
|
-
* @returns `true` if in SDK context, `false` if in user context, or defaultValue if unset
|
|
79
|
-
*/
|
|
80
|
-
function getSdkLogContextValue(defaultValue) {
|
|
81
|
-
const storeValue = sdkLogContext.getStore();
|
|
82
|
-
if (typeof storeValue === 'boolean') {
|
|
83
|
-
return storeValue;
|
|
84
|
-
}
|
|
85
|
-
return defaultValue;
|
|
86
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../../src/logger/logger.test.ts"],"names":[],"mappings":""}
|