@devrev/airsync-sdk 2.0.0-beta.0 → 2.0.0-beta.10

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 (227) hide show
  1. package/README.md +7 -21
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +7 -1
  3. package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
  4. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +4 -3
  5. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
  6. package/dist/attachments-streaming/attachments-streaming-pool.js +70 -33
  7. package/dist/common/constants.d.ts +15 -12
  8. package/dist/common/constants.d.ts.map +1 -1
  9. package/dist/common/constants.js +20 -34
  10. package/dist/common/helpers.d.ts +3 -27
  11. package/dist/common/helpers.d.ts.map +1 -1
  12. package/dist/common/helpers.js +6 -36
  13. package/dist/http/{axios-client-internal.d.ts → client.d.ts} +1 -1
  14. package/dist/http/client.d.ts.map +1 -0
  15. package/dist/http/{axios-client-internal.js → client.js} +7 -4
  16. package/dist/http/errors.d.ts +8 -0
  17. package/dist/http/errors.d.ts.map +1 -0
  18. package/dist/http/errors.js +31 -0
  19. package/dist/index.d.ts +30 -12
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +47 -28
  22. package/dist/logger/logger.d.ts +13 -70
  23. package/dist/logger/logger.d.ts.map +1 -1
  24. package/dist/logger/logger.interfaces.d.ts +4 -7
  25. package/dist/logger/logger.interfaces.d.ts.map +1 -1
  26. package/dist/logger/logger.js +67 -92
  27. package/dist/mappers/mappers.d.ts +10 -43
  28. package/dist/mappers/mappers.d.ts.map +1 -1
  29. package/dist/mappers/mappers.interfaces.d.ts +173 -0
  30. package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
  31. package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +1 -10
  32. package/dist/mappers/mappers.js +32 -46
  33. package/dist/multithreading/adapters/base-adapter.d.ts +39 -0
  34. package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
  35. package/dist/multithreading/adapters/base-adapter.js +212 -0
  36. package/dist/multithreading/adapters/extraction-adapter.d.ts +49 -0
  37. package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
  38. package/dist/multithreading/adapters/extraction-adapter.js +375 -0
  39. package/dist/multithreading/adapters/loading-adapter.d.ts +26 -0
  40. package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
  41. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts +12 -0
  42. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
  43. package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +2 -12
  44. package/dist/multithreading/adapters/loading-adapter.js +279 -0
  45. package/dist/multithreading/emit.d.ts +11 -0
  46. package/dist/multithreading/emit.d.ts.map +1 -0
  47. package/dist/multithreading/emit.js +25 -0
  48. package/dist/multithreading/process-task.d.ts +6 -1
  49. package/dist/multithreading/process-task.d.ts.map +1 -1
  50. package/dist/multithreading/process-task.js +124 -51
  51. package/dist/multithreading/spawn/spawn.d.ts +11 -11
  52. package/dist/multithreading/spawn/spawn.d.ts.map +1 -1
  53. package/dist/multithreading/spawn/spawn.helpers.d.ts +12 -11
  54. package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
  55. package/dist/multithreading/spawn/spawn.helpers.js +142 -77
  56. package/dist/multithreading/spawn/spawn.js +74 -75
  57. package/dist/multithreading/worker.js +16 -5
  58. package/dist/repo/repo.d.ts +14 -5
  59. package/dist/repo/repo.d.ts.map +1 -1
  60. package/dist/repo/repo.helpers.d.ts +6 -0
  61. package/dist/repo/repo.helpers.d.ts.map +1 -0
  62. package/dist/repo/repo.helpers.js +16 -0
  63. package/dist/repo/repo.interfaces.d.ts +11 -20
  64. package/dist/repo/repo.interfaces.d.ts.map +1 -1
  65. package/dist/repo/repo.js +36 -22
  66. package/dist/state/base-state.d.ts +58 -0
  67. package/dist/state/base-state.d.ts.map +1 -0
  68. package/dist/state/base-state.js +242 -0
  69. package/dist/state/extraction-state.d.ts +14 -0
  70. package/dist/state/extraction-state.d.ts.map +1 -0
  71. package/dist/state/extraction-state.js +140 -0
  72. package/dist/state/install-initial-domain-mapping.d.ts +4 -0
  73. package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
  74. package/dist/{common → state}/install-initial-domain-mapping.js +5 -7
  75. package/dist/state/loading-state.d.ts +8 -0
  76. package/dist/state/loading-state.d.ts.map +1 -0
  77. package/dist/state/loading-state.js +29 -0
  78. package/dist/state/state.d.ts +3 -29
  79. package/dist/state/state.d.ts.map +1 -1
  80. package/dist/state/state.interfaces.d.ts +36 -10
  81. package/dist/state/state.interfaces.d.ts.map +1 -1
  82. package/dist/state/state.interfaces.js +17 -1
  83. package/dist/state/state.js +9 -164
  84. package/dist/state/time-value-resolver.d.ts +17 -0
  85. package/dist/state/time-value-resolver.d.ts.map +1 -0
  86. package/dist/state/time-value-resolver.js +110 -0
  87. package/dist/testing/mock-event.d.ts +10 -0
  88. package/dist/testing/mock-event.d.ts.map +1 -0
  89. package/dist/testing/mock-event.js +96 -0
  90. package/dist/testing/mock-server.d.ts +31 -0
  91. package/dist/testing/mock-server.d.ts.map +1 -0
  92. package/dist/testing/mock-server.interfaces.d.ts +54 -0
  93. package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
  94. package/dist/testing/mock-server.interfaces.js +4 -0
  95. package/dist/testing/mock-server.js +297 -0
  96. package/dist/testing/test-adapters.d.ts +22 -0
  97. package/dist/testing/test-adapters.d.ts.map +1 -0
  98. package/dist/testing/test-adapters.js +32 -0
  99. package/dist/types/common.d.ts +4 -37
  100. package/dist/types/common.d.ts.map +1 -1
  101. package/dist/types/common.js +2 -17
  102. package/dist/types/errors.d.ts +15 -0
  103. package/dist/types/errors.d.ts.map +1 -0
  104. package/dist/types/errors.js +28 -0
  105. package/dist/types/external-domain-metadata.d.ts +197 -0
  106. package/dist/types/external-domain-metadata.d.ts.map +1 -0
  107. package/dist/types/extraction.d.ts +135 -278
  108. package/dist/types/extraction.d.ts.map +1 -1
  109. package/dist/types/extraction.js +46 -133
  110. package/dist/types/loading.d.ts +15 -55
  111. package/dist/types/loading.d.ts.map +1 -1
  112. package/dist/types/loading.js +1 -23
  113. package/dist/types/workers.d.ts +70 -103
  114. package/dist/types/workers.d.ts.map +1 -1
  115. package/dist/types/workers.js +1 -6
  116. package/dist/uploader/uploader.d.ts +10 -61
  117. package/dist/uploader/uploader.d.ts.map +1 -1
  118. package/dist/uploader/uploader.helpers.d.ts +7 -27
  119. package/dist/uploader/uploader.helpers.d.ts.map +1 -1
  120. package/dist/uploader/uploader.helpers.js +80 -30
  121. package/dist/uploader/uploader.interfaces.d.ts +19 -54
  122. package/dist/uploader/uploader.interfaces.d.ts.map +1 -1
  123. package/dist/uploader/uploader.interfaces.js +8 -0
  124. package/dist/uploader/uploader.js +72 -124
  125. package/docs/MIGRATION.md +696 -0
  126. package/package.json +37 -20
  127. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
  128. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
  129. package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -267
  130. package/dist/common/control-protocol.d.ts +0 -10
  131. package/dist/common/control-protocol.d.ts.map +0 -1
  132. package/dist/common/control-protocol.js +0 -31
  133. package/dist/common/errors.d.ts +0 -6
  134. package/dist/common/errors.d.ts.map +0 -1
  135. package/dist/common/errors.js +0 -4
  136. package/dist/common/event-type-translation.d.ts +0 -24
  137. package/dist/common/event-type-translation.d.ts.map +0 -1
  138. package/dist/common/event-type-translation.js +0 -117
  139. package/dist/common/install-initial-domain-mapping.d.ts +0 -4
  140. package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
  141. package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
  142. package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
  143. package/dist/common/install-initial-domain-mapping.test.js +0 -207
  144. package/dist/deprecated/adapter/index.d.ts +0 -62
  145. package/dist/deprecated/adapter/index.d.ts.map +0 -1
  146. package/dist/deprecated/adapter/index.js +0 -151
  147. package/dist/deprecated/common/helpers.d.ts +0 -7
  148. package/dist/deprecated/common/helpers.d.ts.map +0 -1
  149. package/dist/deprecated/common/helpers.js +0 -47
  150. package/dist/deprecated/demo-extractor/external_domain_metadata.json +0 -38
  151. package/dist/deprecated/demo-extractor/index.d.ts +0 -18
  152. package/dist/deprecated/demo-extractor/index.d.ts.map +0 -1
  153. package/dist/deprecated/demo-extractor/index.js +0 -161
  154. package/dist/deprecated/http/client.d.ts +0 -22
  155. package/dist/deprecated/http/client.d.ts.map +0 -1
  156. package/dist/deprecated/http/client.js +0 -161
  157. package/dist/deprecated/uploader/index.d.ts +0 -35
  158. package/dist/deprecated/uploader/index.d.ts.map +0 -1
  159. package/dist/deprecated/uploader/index.js +0 -161
  160. package/dist/http/axios-client-internal.d.ts.map +0 -1
  161. package/dist/http/axios-client-internal.test.d.ts +0 -2
  162. package/dist/http/axios-client-internal.test.d.ts.map +0 -1
  163. package/dist/http/axios-client-internal.test.js +0 -154
  164. package/dist/http/axios-client.d.ts +0 -27
  165. package/dist/http/axios-client.d.ts.map +0 -1
  166. package/dist/http/axios-client.js +0 -57
  167. package/dist/http/constants.d.ts +0 -4
  168. package/dist/http/constants.d.ts.map +0 -1
  169. package/dist/http/constants.js +0 -6
  170. package/dist/http/index.d.ts +0 -3
  171. package/dist/http/index.d.ts.map +0 -1
  172. package/dist/http/index.js +0 -18
  173. package/dist/http/types.d.ts +0 -17
  174. package/dist/http/types.d.ts.map +0 -1
  175. package/dist/logger/logger.constants.d.ts +0 -6
  176. package/dist/logger/logger.constants.d.ts.map +0 -1
  177. package/dist/logger/logger.constants.js +0 -13
  178. package/dist/logger/logger.context.d.ts +0 -58
  179. package/dist/logger/logger.context.d.ts.map +0 -1
  180. package/dist/logger/logger.context.js +0 -86
  181. package/dist/logger/logger.test.d.ts +0 -2
  182. package/dist/logger/logger.test.d.ts.map +0 -1
  183. package/dist/logger/logger.test.js +0 -490
  184. package/dist/mappers/mappers.interface.d.ts +0 -294
  185. package/dist/mappers/mappers.interface.d.ts.map +0 -1
  186. package/dist/mappers/mappers.test.d.ts +0 -2
  187. package/dist/mappers/mappers.test.d.ts.map +0 -1
  188. package/dist/mappers/mappers.test.js +0 -107
  189. package/dist/multithreading/create-worker.test.d.ts +0 -2
  190. package/dist/multithreading/create-worker.test.d.ts.map +0 -1
  191. package/dist/multithreading/create-worker.test.js +0 -89
  192. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
  193. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
  194. package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
  195. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
  196. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
  197. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -127
  198. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
  199. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
  200. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +0 -22
  201. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
  202. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
  203. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
  204. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
  205. package/dist/multithreading/worker-adapter/worker-adapter.js +0 -747
  206. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
  207. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
  208. package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
  209. package/dist/repo/repo.test.d.ts +0 -2
  210. package/dist/repo/repo.test.d.ts.map +0 -1
  211. package/dist/repo/repo.test.js +0 -131
  212. package/dist/state/state.test.d.ts +0 -2
  213. package/dist/state/state.test.d.ts.map +0 -1
  214. package/dist/state/state.test.js +0 -224
  215. package/dist/types/extraction.test.d.ts +0 -2
  216. package/dist/types/extraction.test.d.ts.map +0 -1
  217. package/dist/types/extraction.test.js +0 -70
  218. package/dist/types/index.d.ts +0 -9
  219. package/dist/types/index.d.ts.map +0 -1
  220. package/dist/types/index.js +0 -18
  221. package/dist/uploader/uploader.helpers.test.d.ts +0 -2
  222. package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
  223. package/dist/uploader/uploader.helpers.test.js +0 -267
  224. package/dist/uploader/uploader.test.d.ts +0 -2
  225. package/dist/uploader/uploader.test.d.ts.map +0 -1
  226. package/dist/uploader/uploader.test.js +0 -589
  227. /package/dist/{http/types.js → types/external-domain-metadata.js} +0 -0
@@ -1,207 +0,0 @@
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_client_internal_1 = require("../http/axios-client-internal");
8
- const test_helpers_1 = require("../tests/test-helpers");
9
- const extraction_1 = require("../types/extraction");
10
- const install_initial_domain_mapping_1 = require("./install-initial-domain-mapping");
11
- // Mock dependencies
12
- jest.mock('axios', () => (Object.assign(Object.assign({}, jest.requireActual('axios')), { isAxiosError: jest.fn() })));
13
- jest.mock('../http/axios-client-internal', () => {
14
- const originalModule = jest.requireActual('../http/axios-client-internal');
15
- return Object.assign(Object.assign({}, originalModule), { axiosClient: {
16
- get: jest.fn(),
17
- post: jest.fn(),
18
- } });
19
- });
20
- jest.mock('../logger/logger');
21
- const mockAxiosClient = axios_client_internal_1.axiosClient;
22
- const mockIsAxiosError = axios_1.default.isAxiosError;
23
- describe(install_initial_domain_mapping_1.installInitialDomainMapping.name, () => {
24
- // Create mock objects
25
- const mockEvent = (0, test_helpers_1.createEvent)({ eventType: extraction_1.EventType.ExtractionDataStart });
26
- const mockInitialDomainMapping = {
27
- starting_recipe_blueprint: {
28
- name: 'Test Recipe Blueprint',
29
- description: 'Test description',
30
- },
31
- additional_mappings: {
32
- custom_field: 'custom_value',
33
- },
34
- };
35
- const mockSnapInResponse = {
36
- data: {
37
- snap_in: {
38
- imports: [{ name: 'import-slug-123' }],
39
- snap_in_version: { slug: 'snap-in-slug-123' },
40
- },
41
- },
42
- };
43
- const mockEndpoint = 'http://localhost:3001';
44
- const mockToken = 'test_token';
45
- // After each test, clear all mocks to prevent state from leaking.
46
- afterEach(() => {
47
- jest.clearAllMocks();
48
- });
49
- it('should successfully install initial domain mapping with recipe blueprint', async () => {
50
- // Mock successful snap-in response
51
- mockAxiosClient.get.mockResolvedValueOnce(mockSnapInResponse);
52
- // Mock successful recipe blueprint creation
53
- const mockRecipeBlueprintResponse = {
54
- data: {
55
- recipe_blueprint: {
56
- id: 'recipe-blueprint-123',
57
- },
58
- },
59
- };
60
- mockAxiosClient.post.mockResolvedValueOnce(mockRecipeBlueprintResponse);
61
- // Mock successful domain mapping installation
62
- const mockDomainMappingResponse = {
63
- data: {
64
- success: true,
65
- mapping_id: 'mapping-123',
66
- },
67
- };
68
- mockAxiosClient.post.mockResolvedValueOnce(mockDomainMappingResponse);
69
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mockInitialDomainMapping);
70
- // Verify snap-in details request
71
- expect(mockAxiosClient.get).toHaveBeenCalledWith(`${mockEndpoint}/internal/snap-ins.get`, {
72
- headers: {
73
- Authorization: mockToken,
74
- },
75
- params: {
76
- id: 'test_snap_in_id',
77
- },
78
- });
79
- // Verify recipe blueprint creation
80
- expect(mockAxiosClient.post).toHaveBeenCalledWith(`${mockEndpoint}/internal/airdrop.recipe.blueprints.create`, {
81
- name: 'Test Recipe Blueprint',
82
- description: 'Test description',
83
- }, {
84
- headers: {
85
- Authorization: mockToken,
86
- },
87
- });
88
- // Verify domain mapping installation
89
- expect(mockAxiosClient.post).toHaveBeenCalledWith(`${mockEndpoint}/internal/airdrop.recipe.initial-domain-mappings.install`, {
90
- external_system_type: 'ADaaS',
91
- import_slug: 'import-slug-123',
92
- snap_in_slug: 'snap-in-slug-123',
93
- starting_recipe_blueprint: 'recipe-blueprint-123',
94
- custom_field: 'custom_value',
95
- }, {
96
- headers: {
97
- Authorization: mockToken,
98
- },
99
- });
100
- });
101
- it('should successfully install without recipe blueprint when not provided', async () => {
102
- const mappingWithoutBlueprint = {
103
- additional_mappings: {
104
- custom_field: 'custom_value',
105
- },
106
- };
107
- mockAxiosClient.get.mockResolvedValueOnce(mockSnapInResponse);
108
- const mockDomainMappingResponse = {
109
- data: { success: true },
110
- };
111
- mockAxiosClient.post.mockResolvedValueOnce(mockDomainMappingResponse);
112
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mappingWithoutBlueprint);
113
- // Should only make one POST request (no recipe blueprint creation)
114
- expect(mockAxiosClient.post).toHaveBeenCalledTimes(1);
115
- expect(mockAxiosClient.post).toHaveBeenCalledWith(`${mockEndpoint}/internal/airdrop.recipe.initial-domain-mappings.install`, {
116
- external_system_type: 'ADaaS',
117
- import_slug: 'import-slug-123',
118
- snap_in_slug: 'snap-in-slug-123',
119
- custom_field: 'custom_value',
120
- }, {
121
- headers: {
122
- Authorization: mockToken,
123
- },
124
- });
125
- });
126
- it('should handle empty starting_recipe_blueprint object', async () => {
127
- const mappingWithEmptyBlueprint = {
128
- starting_recipe_blueprint: {},
129
- additional_mappings: {
130
- custom_field: 'custom_value',
131
- },
132
- };
133
- mockAxiosClient.get.mockResolvedValueOnce(mockSnapInResponse);
134
- const mockDomainMappingResponse = {
135
- data: { success: true },
136
- };
137
- mockAxiosClient.post.mockResolvedValueOnce(mockDomainMappingResponse);
138
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mappingWithEmptyBlueprint);
139
- // Should only make one POST request (no recipe blueprint creation for empty object)
140
- expect(mockAxiosClient.post).toHaveBeenCalledTimes(1);
141
- });
142
- it('[edge] should return early with warning when initial domain mapping is null', async () => {
143
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
144
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, null);
145
- expect(mockAxiosClient.get).not.toHaveBeenCalled();
146
- expect(mockAxiosClient.post).not.toHaveBeenCalled();
147
- });
148
- it('[edge] should return early with warning when initial domain mapping is undefined', async () => {
149
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
150
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, undefined);
151
- expect(mockAxiosClient.get).not.toHaveBeenCalled();
152
- expect(mockAxiosClient.post).not.toHaveBeenCalled();
153
- });
154
- it('[edge] should throw error when import slug is missing', async () => {
155
- const snapInResponseWithoutImport = {
156
- data: {
157
- snap_in: {
158
- imports: [],
159
- snap_in_version: { slug: 'snap-in-slug-123' },
160
- },
161
- },
162
- };
163
- mockAxiosClient.get.mockResolvedValueOnce(snapInResponseWithoutImport);
164
- await expect((0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mockInitialDomainMapping)).rejects.toThrow();
165
- });
166
- it('[edge] should throw error when snap-in slug is missing', async () => {
167
- const snapInResponseWithoutSlug = {
168
- data: {
169
- snap_in: {
170
- imports: [{ name: 'import-slug-123' }],
171
- snap_in_version: {},
172
- },
173
- },
174
- };
175
- mockAxiosClient.get.mockResolvedValueOnce(snapInResponseWithoutSlug);
176
- await expect((0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mockInitialDomainMapping)).rejects.toThrow();
177
- });
178
- it('should handle the error during recipe blueprint creation', async () => {
179
- mockAxiosClient.get.mockResolvedValueOnce(mockSnapInResponse);
180
- const genericError = new Error('Generic error during blueprint creation');
181
- // Mock axios.isAxiosError to return false
182
- mockIsAxiosError.mockReturnValue(false);
183
- mockAxiosClient.post.mockRejectedValueOnce(genericError);
184
- const mockDomainMappingResponse = {
185
- data: { success: true },
186
- };
187
- mockAxiosClient.post.mockResolvedValueOnce(mockDomainMappingResponse);
188
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mockInitialDomainMapping);
189
- // Should still proceed with domain mapping installation
190
- expect(mockAxiosClient.post).toHaveBeenCalledTimes(2);
191
- });
192
- it('should propagate error from domain mapping installation', async () => {
193
- mockAxiosClient.get.mockResolvedValueOnce(mockSnapInResponse);
194
- // Mock successful recipe blueprint creation
195
- const mockRecipeBlueprintResponse = {
196
- data: {
197
- recipe_blueprint: {
198
- id: 'recipe-blueprint-123',
199
- },
200
- },
201
- };
202
- mockAxiosClient.post.mockResolvedValueOnce(mockRecipeBlueprintResponse);
203
- const domainMappingError = new Error('Domain mapping installation failed');
204
- mockAxiosClient.post.mockRejectedValueOnce(domainMappingError);
205
- await expect((0, install_initial_domain_mapping_1.installInitialDomainMapping)(mockEvent, mockInitialDomainMapping)).rejects.toThrow();
206
- });
207
- });
@@ -1,62 +0,0 @@
1
- import { AirdropEvent, EventData, ExtractorEventType } from '../../types/extraction';
2
- import { Artifact } from '../../uploader/uploader.interfaces';
3
- import { AdapterState } from '../../state/state.interfaces';
4
- import { State } from '../../state/state';
5
- /**
6
- * Adapter class is used to interact with Airdrop platform. The class provides
7
- * utilities to
8
- * - emit control events to the platform
9
- * - update the state of the extractor
10
- * - set the last saved state in case of a timeout
11
- *
12
- * @class Adapter
13
- * @constructor
14
- * @deprecated
15
- * @param {AirdropEvent} event - The event object received from the platform
16
- * @param {object=} initialState - The initial state of the adapter
17
- * @param {boolean=} isLocalDevelopment - A flag to indicate if the adapter is being used in local development
18
- */
19
- /**
20
- * Creates an adapter instance.
21
- *
22
- * @param {AirdropEvent} event - The event object received from the platform
23
- * @param initialState
24
- * @param {boolean=} isLocalDevelopment - A flag to indicate if the adapter is being used in local development
25
- * @return The adapter instance
26
- */
27
- export declare function createAdapter<ConnectorState>(event: AirdropEvent, initialState: ConnectorState, isLocalDevelopment?: boolean): Promise<Adapter<ConnectorState>>;
28
- export declare class Adapter<ConnectorState> {
29
- private adapterState;
30
- private _artifacts;
31
- private event;
32
- private callbackUrl;
33
- private devrevToken;
34
- private startTime;
35
- private heartBeatFn;
36
- private exit;
37
- private lambdaTimeout;
38
- private heartBeatInterval;
39
- constructor(event: AirdropEvent, adapterState: State<ConnectorState>, isLocalDevelopment?: boolean);
40
- get state(): AdapterState<ConnectorState>;
41
- set state(value: AdapterState<ConnectorState>);
42
- get artifacts(): Artifact[];
43
- set artifacts(value: Artifact[]);
44
- /**
45
- * Emits an event to the platform.
46
- *
47
- * @param {ExtractorEventType} newEventType - The event type to be emitted
48
- * @param {EventData=} data - The data to be sent with the event
49
- */
50
- emit(newEventType: ExtractorEventType, data?: EventData): Promise<void>;
51
- /**
52
- * Exit the adapter. This will stop the heartbeat and no
53
- * further events will be emitted.
54
- */
55
- private exitAdapter;
56
- /**
57
- * Heartbeat function to check if the lambda is about to timeout.
58
- * @returns true if 10 minutes have passed since the start of the lambda.
59
- */
60
- private heartbeat;
61
- }
62
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deprecated/adapter/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,SAAS,EAET,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D,OAAO,EAAE,KAAK,EAAsB,MAAM,mBAAmB,CAAC;AAI9D;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AAEH,wBAAsB,aAAa,CAAC,cAAc,EAChD,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,cAAc,EAC5B,kBAAkB,GAAE,OAAe,oCAiBpC;AAED,qBAAa,OAAO,CAAC,cAAc;IACjC,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,iBAAiB,CAAqB;gBAG5C,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,EACnC,kBAAkB,GAAE,OAAe;IAwBrC,IAAI,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,CAExC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,EAE5C;IAED,IAAI,SAAS,IAAI,QAAQ,EAAE,CAE1B;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAE9B;IAED;;;;;OAKG;IACG,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,SAAS;IAoD7D;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;;OAGG;YACW,SAAS;CAiBxB"}
@@ -1,151 +0,0 @@
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
- exports.Adapter = void 0;
7
- exports.createAdapter = createAdapter;
8
- const axios_1 = __importDefault(require("axios"));
9
- const constants_1 = require("../../common/constants");
10
- const helpers_1 = require("../common/helpers");
11
- // import { Logger } from '../../logger/logger';
12
- const state_1 = require("../../state/state");
13
- const event_type_translation_1 = require("../../common/event-type-translation");
14
- const logger_context_1 = require("../../logger/logger.context");
15
- /**
16
- * Adapter class is used to interact with Airdrop platform. The class provides
17
- * utilities to
18
- * - emit control events to the platform
19
- * - update the state of the extractor
20
- * - set the last saved state in case of a timeout
21
- *
22
- * @class Adapter
23
- * @constructor
24
- * @deprecated
25
- * @param {AirdropEvent} event - The event object received from the platform
26
- * @param {object=} initialState - The initial state of the adapter
27
- * @param {boolean=} isLocalDevelopment - A flag to indicate if the adapter is being used in local development
28
- */
29
- /**
30
- * Creates an adapter instance.
31
- *
32
- * @param {AirdropEvent} event - The event object received from the platform
33
- * @param initialState
34
- * @param {boolean=} isLocalDevelopment - A flag to indicate if the adapter is being used in local development
35
- * @return The adapter instance
36
- */
37
- async function createAdapter(event, initialState, isLocalDevelopment = false) {
38
- event.payload.event_type = (0, event_type_translation_1.translateIncomingEventType)(event.payload.event_type);
39
- const newInitialState = structuredClone(initialState);
40
- const adapterState = await (0, state_1.createAdapterState)({
41
- event,
42
- initialState: newInitialState,
43
- });
44
- const a = new Adapter(event, adapterState, isLocalDevelopment);
45
- return a;
46
- }
47
- class Adapter {
48
- constructor(event, adapterState, isLocalDevelopment = false) {
49
- this.exit = false;
50
- this.lambdaTimeout = 10 * 60 * 1000; // 10 minutes in milliseconds
51
- this.heartBeatInterval = 30 * 1000; // 30 seconds in milliseconds
52
- if (!isLocalDevelopment) {
53
- // Logger.init(event);
54
- }
55
- this.adapterState = adapterState;
56
- this._artifacts = [];
57
- this.event = event;
58
- this.callbackUrl = event.payload.event_context.callback_url;
59
- this.devrevToken = event.context.secrets.service_account_token;
60
- this.startTime = Date.now();
61
- // Run heartbeat every 30 seconds
62
- this.heartBeatFn = setInterval(async () => {
63
- const b = await this.heartbeat();
64
- if (b) {
65
- this.exitAdapter();
66
- }
67
- }, this.heartBeatInterval);
68
- }
69
- get state() {
70
- return this.adapterState.state;
71
- }
72
- set state(value) {
73
- this.adapterState.state = value;
74
- }
75
- get artifacts() {
76
- return this._artifacts;
77
- }
78
- set artifacts(value) {
79
- this._artifacts = value;
80
- }
81
- /**
82
- * Emits an event to the platform.
83
- *
84
- * @param {ExtractorEventType} newEventType - The event type to be emitted
85
- * @param {EventData=} data - The data to be sent with the event
86
- */
87
- async emit(newEventType, data) {
88
- if (this.exit) {
89
- console.warn('Adapter is already in exit state. No more events can be emitted.');
90
- return;
91
- }
92
- // We want to save the state every time we emit an event, except for the start and delete events
93
- if (!constants_1.STATELESS_EVENT_TYPES.includes(this.event.payload.event_type)) {
94
- (0, logger_context_1.runWithSdkLogContext)(() => console.log(`Saving state before emitting event`));
95
- await this.adapterState.postState(this.state);
96
- }
97
- const newEvent = {
98
- event_type: newEventType,
99
- event_context: this.event.payload.event_context,
100
- event_data: Object.assign({}, data),
101
- };
102
- try {
103
- await axios_1.default.post(this.callbackUrl, Object.assign({}, newEvent), {
104
- headers: {
105
- Accept: 'application/json, text/plain, */*',
106
- Authorization: this.devrevToken,
107
- 'Content-Type': 'application/json',
108
- },
109
- });
110
- console.log('Successfully emitted event: ' + JSON.stringify(newEvent));
111
- }
112
- catch (error) {
113
- // If this request fails the extraction will be stuck in loop and
114
- // we need to stop it through UI or think about retrying this request
115
- console.log('Failed to emit event: ' +
116
- JSON.stringify(newEvent) +
117
- ', error: ' +
118
- error);
119
- }
120
- finally {
121
- this.exitAdapter();
122
- }
123
- }
124
- /**
125
- * Exit the adapter. This will stop the heartbeat and no
126
- * further events will be emitted.
127
- */
128
- exitAdapter() {
129
- this.exit = true;
130
- }
131
- /**
132
- * Heartbeat function to check if the lambda is about to timeout.
133
- * @returns true if 10 minutes have passed since the start of the lambda.
134
- */
135
- async heartbeat() {
136
- if (this.exit) {
137
- return true;
138
- }
139
- if (Date.now() - this.startTime > this.lambdaTimeout) {
140
- const timeoutEventType = (0, helpers_1.getTimeoutExtractorEventType)(this.event.payload.event_type);
141
- if (timeoutEventType !== null) {
142
- const { eventType, isError } = timeoutEventType;
143
- const err = isError ? { message: 'Lambda Timeout' } : undefined;
144
- await this.emit(eventType, { error: err, artifacts: this._artifacts });
145
- return true;
146
- }
147
- }
148
- return false;
149
- }
150
- }
151
- exports.Adapter = Adapter;
@@ -1,7 +0,0 @@
1
- import { EventType, ExtractorEventType } from '../../types/extraction';
2
- export declare function createFormData(preparedArtifact: any, fetchedObjects: object[] | object): FormData;
3
- export declare function getTimeoutExtractorEventType(eventType: EventType): {
4
- eventType: ExtractorEventType;
5
- isError: boolean;
6
- } | null;
7
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/deprecated/common/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,wBAAgB,cAAc,CAE5B,gBAAgB,EAAE,GAAG,EACrB,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,GAChC,QAAQ,CAUV;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,GAAG;IAClE,SAAS,EAAE,kBAAkB,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,IAAI,CA+BP"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createFormData = createFormData;
4
- exports.getTimeoutExtractorEventType = getTimeoutExtractorEventType;
5
- const js_jsonl_1 = require("js-jsonl");
6
- const extraction_1 = require("../../types/extraction");
7
- function createFormData(
8
- //eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- preparedArtifact, fetchedObjects) {
10
- const formData = new FormData();
11
- for (const item of preparedArtifact.form_data) {
12
- formData.append(item.key, item.value);
13
- }
14
- const output = js_jsonl_1.jsonl.stringify(fetchedObjects);
15
- formData.append('file', output);
16
- return formData;
17
- }
18
- function getTimeoutExtractorEventType(eventType) {
19
- switch (eventType) {
20
- case extraction_1.EventType.ExtractionMetadataStart:
21
- return {
22
- eventType: extraction_1.ExtractorEventType.ExtractionMetadataError,
23
- isError: true,
24
- };
25
- case extraction_1.EventType.ExtractionDataStart:
26
- case extraction_1.EventType.ExtractionDataContinue:
27
- return {
28
- eventType: extraction_1.ExtractorEventType.ExtractionDataProgress,
29
- isError: false,
30
- };
31
- case extraction_1.EventType.ExtractionAttachmentsStart:
32
- case extraction_1.EventType.ExtractionAttachmentsContinue:
33
- return {
34
- eventType: extraction_1.ExtractorEventType.ExtractionAttachmentsProgress,
35
- isError: false,
36
- };
37
- case extraction_1.EventType.ExtractionExternalSyncUnitsStart:
38
- return {
39
- eventType: extraction_1.ExtractorEventType.ExtractionExternalSyncUnitsError,
40
- isError: true,
41
- };
42
- default:
43
- console.log('Event type not recognized in getTimeoutExtractorEventType function: ' +
44
- eventType);
45
- return null;
46
- }
47
- }
@@ -1,38 +0,0 @@
1
- {
2
- "record_types": {
3
- "users": {
4
- "fields": {
5
- "name": {
6
- "is_required": true,
7
- "type": "text",
8
- "name": "Name",
9
- "text": {
10
- "min_length": 1
11
- }
12
- },
13
- "email": {
14
- "type": "text",
15
- "name": "Email",
16
- "is_required": true
17
- }
18
- }
19
- },
20
- "contacts": {
21
- "fields": {
22
- "name": {
23
- "is_required": true,
24
- "type": "text",
25
- "name": "Name",
26
- "text": {
27
- "min_length": 1
28
- }
29
- },
30
- "email": {
31
- "type": "text",
32
- "name": "Email",
33
- "is_required": true
34
- }
35
- }
36
- }
37
- }
38
- }
@@ -1,18 +0,0 @@
1
- import { AirdropEvent } from '../../types/extraction';
2
- import { Adapter } from '../adapter';
3
- type ConnectorState = object;
4
- /**
5
- * Demo extractor is a reference implementation of an ADaaS connector to facilitate rapid immersion into ADaaS.
6
- *
7
- * @class DemoExtractor
8
- * @deprecated
9
- **/
10
- export declare class DemoExtractor {
11
- private event;
12
- private adapter;
13
- private uploader;
14
- constructor(event: AirdropEvent, adapter: Adapter<ConnectorState>);
15
- run(): Promise<void>;
16
- }
17
- export {};
18
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deprecated/demo-extractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B;;;;;IAKI;AACJ,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAAW;gBAEf,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC;IAS3D,GAAG;CA0MV"}