@devrev/airsync-sdk 2.0.0-beta.2 → 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.
Files changed (206) hide show
  1. package/README.md +5 -11
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +1 -8
  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 +11 -39
  7. package/dist/common/constants.d.ts +1 -0
  8. package/dist/common/constants.d.ts.map +1 -1
  9. package/dist/common/constants.js +2 -1
  10. package/dist/common/helpers.d.ts +0 -14
  11. package/dist/common/helpers.d.ts.map +1 -1
  12. package/dist/common/helpers.js +0 -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/index.d.ts +25 -13
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +51 -30
  18. package/dist/logger/logger.d.ts +14 -0
  19. package/dist/logger/logger.d.ts.map +1 -1
  20. package/dist/logger/logger.js +55 -8
  21. package/dist/mappers/mappers.d.ts +9 -10
  22. package/dist/mappers/mappers.d.ts.map +1 -1
  23. package/dist/mappers/{mappers.interface.d.ts → mappers.interfaces.d.ts} +5 -5
  24. package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
  25. package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +3 -3
  26. package/dist/mappers/mappers.js +13 -9
  27. package/dist/multithreading/adapters/base-adapter.d.ts +71 -0
  28. package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
  29. package/dist/multithreading/adapters/base-adapter.js +138 -0
  30. package/dist/multithreading/adapters/extraction-adapter.d.ts +57 -0
  31. package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
  32. package/dist/multithreading/adapters/extraction-adapter.js +323 -0
  33. package/dist/multithreading/adapters/loading-adapter.d.ts +44 -0
  34. package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
  35. package/dist/multithreading/{worker-adapter/worker-adapter.helpers.d.ts → adapters/loading-adapter.helpers.d.ts} +1 -1
  36. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
  37. package/dist/multithreading/adapters/loading-adapter.js +431 -0
  38. package/dist/{common/control-protocol.d.ts → multithreading/emit.d.ts} +1 -1
  39. package/dist/multithreading/emit.d.ts.map +1 -0
  40. package/dist/{common/control-protocol.js → multithreading/emit.js} +3 -3
  41. package/dist/multithreading/process-task.d.ts +16 -1
  42. package/dist/multithreading/process-task.d.ts.map +1 -1
  43. package/dist/multithreading/process-task.js +115 -50
  44. package/dist/multithreading/spawn/spawn.helpers.d.ts +23 -3
  45. package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
  46. package/dist/multithreading/spawn/spawn.helpers.js +152 -2
  47. package/dist/multithreading/spawn/spawn.js +7 -7
  48. package/dist/multithreading/worker.js +1 -2
  49. package/dist/repo/repo.js +2 -2
  50. package/dist/state/base-state.d.ts +75 -0
  51. package/dist/state/base-state.d.ts.map +1 -0
  52. package/dist/state/base-state.js +261 -0
  53. package/dist/state/extraction-state.d.ts +29 -0
  54. package/dist/state/extraction-state.d.ts.map +1 -0
  55. package/dist/state/extraction-state.js +122 -0
  56. package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
  57. package/dist/{common → state}/install-initial-domain-mapping.js +4 -4
  58. package/dist/state/loading-state.d.ts +18 -0
  59. package/dist/state/loading-state.d.ts.map +1 -0
  60. package/dist/state/loading-state.js +39 -0
  61. package/dist/state/state.d.ts +3 -35
  62. package/dist/state/state.d.ts.map +1 -1
  63. package/dist/state/state.interfaces.d.ts +20 -3
  64. package/dist/state/state.interfaces.d.ts.map +1 -1
  65. package/dist/state/state.interfaces.js +19 -1
  66. package/dist/state/state.js +9 -263
  67. package/dist/{common → state}/time-value-resolver.d.ts +4 -5
  68. package/dist/state/time-value-resolver.d.ts.map +1 -0
  69. package/dist/{common → state}/time-value-resolver.js +9 -8
  70. package/dist/{common/test-utils.d.ts → testing/mock-event.d.ts} +1 -2
  71. package/dist/testing/mock-event.d.ts.map +1 -0
  72. package/dist/{common/test-utils.js → testing/mock-event.js} +14 -3
  73. package/dist/{mock-server → testing}/mock-server.d.ts +5 -0
  74. package/dist/testing/mock-server.d.ts.map +1 -0
  75. package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
  76. package/dist/{mock-server → testing}/mock-server.js +6 -1
  77. package/dist/types/errors.d.ts +9 -0
  78. package/dist/types/errors.d.ts.map +1 -0
  79. package/dist/types/extraction.d.ts +73 -18
  80. package/dist/types/extraction.d.ts.map +1 -1
  81. package/dist/types/extraction.js +4 -6
  82. package/dist/types/loading.d.ts +1 -2
  83. package/dist/types/loading.d.ts.map +1 -1
  84. package/dist/types/loading.js +0 -1
  85. package/dist/types/workers.d.ts +64 -20
  86. package/dist/types/workers.d.ts.map +1 -1
  87. package/dist/uploader/uploader.d.ts +5 -4
  88. package/dist/uploader/uploader.d.ts.map +1 -1
  89. package/dist/uploader/uploader.interfaces.d.ts +1 -1
  90. package/dist/uploader/uploader.js +10 -10
  91. package/package.json +3 -3
  92. package/dist/airsync-sdk.d.ts +0 -1802
  93. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
  94. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
  95. package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -516
  96. package/dist/common/control-protocol.d.ts.map +0 -1
  97. package/dist/common/errors.d.ts +0 -6
  98. package/dist/common/errors.d.ts.map +0 -1
  99. package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
  100. package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
  101. package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
  102. package/dist/common/install-initial-domain-mapping.test.js +0 -211
  103. package/dist/common/test-utils.d.ts.map +0 -1
  104. package/dist/common/time-value-resolver.d.ts.map +0 -1
  105. package/dist/common/time-value-resolver.test.d.ts +0 -2
  106. package/dist/common/time-value-resolver.test.d.ts.map +0 -1
  107. package/dist/common/time-value-resolver.test.js +0 -268
  108. package/dist/http/axios-client-internal.d.ts.map +0 -1
  109. package/dist/http/axios-client-internal.test.d.ts +0 -2
  110. package/dist/http/axios-client-internal.test.d.ts.map +0 -1
  111. package/dist/http/axios-client-internal.test.js +0 -175
  112. package/dist/http/axios-client.d.ts +0 -27
  113. package/dist/http/axios-client.d.ts.map +0 -1
  114. package/dist/http/axios-client.js +0 -60
  115. package/dist/http/constants.d.ts +0 -4
  116. package/dist/http/constants.d.ts.map +0 -1
  117. package/dist/http/constants.js +0 -6
  118. package/dist/http/index.d.ts +0 -2
  119. package/dist/http/index.d.ts.map +0 -1
  120. package/dist/http/index.js +0 -17
  121. package/dist/logger/logger.constants.d.ts +0 -6
  122. package/dist/logger/logger.constants.d.ts.map +0 -1
  123. package/dist/logger/logger.constants.js +0 -13
  124. package/dist/logger/logger.context.d.ts +0 -58
  125. package/dist/logger/logger.context.d.ts.map +0 -1
  126. package/dist/logger/logger.context.js +0 -86
  127. package/dist/logger/logger.test.d.ts +0 -2
  128. package/dist/logger/logger.test.d.ts.map +0 -1
  129. package/dist/logger/logger.test.js +0 -537
  130. package/dist/mappers/mappers.interface.d.ts.map +0 -1
  131. package/dist/mappers/mappers.test.d.ts +0 -2
  132. package/dist/mappers/mappers.test.d.ts.map +0 -1
  133. package/dist/mappers/mappers.test.js +0 -105
  134. package/dist/mock-server/mock-server.d.ts.map +0 -1
  135. package/dist/mock-server/mock-server.interfaces.d.ts.map +0 -1
  136. package/dist/multithreading/create-worker.test.d.ts +0 -2
  137. package/dist/multithreading/create-worker.test.d.ts.map +0 -1
  138. package/dist/multithreading/create-worker.test.js +0 -108
  139. package/dist/multithreading/process-task.test.d.ts +0 -2
  140. package/dist/multithreading/process-task.test.d.ts.map +0 -1
  141. package/dist/multithreading/process-task.test.js +0 -146
  142. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
  143. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
  144. package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
  145. package/dist/multithreading/spawn/spawn.test.d.ts +0 -2
  146. package/dist/multithreading/spawn/spawn.test.d.ts.map +0 -1
  147. package/dist/multithreading/spawn/spawn.test.js +0 -232
  148. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
  149. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
  150. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -175
  151. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -97
  152. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
  153. package/dist/multithreading/worker-adapter/worker-adapter.emit.test.d.ts +0 -2
  154. package/dist/multithreading/worker-adapter/worker-adapter.emit.test.d.ts.map +0 -1
  155. package/dist/multithreading/worker-adapter/worker-adapter.emit.test.js +0 -390
  156. package/dist/multithreading/worker-adapter/worker-adapter.extraction.test.d.ts +0 -2
  157. package/dist/multithreading/worker-adapter/worker-adapter.extraction.test.d.ts.map +0 -1
  158. package/dist/multithreading/worker-adapter/worker-adapter.extraction.test.js +0 -799
  159. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
  160. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
  161. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
  162. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
  163. package/dist/multithreading/worker-adapter/worker-adapter.js +0 -846
  164. package/dist/multithreading/worker-adapter/worker-adapter.loading.test.d.ts +0 -2
  165. package/dist/multithreading/worker-adapter/worker-adapter.loading.test.d.ts.map +0 -1
  166. package/dist/multithreading/worker-adapter/worker-adapter.loading.test.js +0 -596
  167. package/dist/multithreading/worker-adapter/worker-adapter.serialization.test.d.ts +0 -2
  168. package/dist/multithreading/worker-adapter/worker-adapter.serialization.test.d.ts.map +0 -1
  169. package/dist/multithreading/worker-adapter/worker-adapter.serialization.test.js +0 -71
  170. package/dist/repo/repo.test.d.ts +0 -2
  171. package/dist/repo/repo.test.d.ts.map +0 -1
  172. package/dist/repo/repo.test.js +0 -184
  173. package/dist/state/state.extract-window.test.d.ts +0 -2
  174. package/dist/state/state.extract-window.test.d.ts.map +0 -1
  175. package/dist/state/state.extract-window.test.js +0 -163
  176. package/dist/state/state.pending-boundaries.test.d.ts +0 -2
  177. package/dist/state/state.pending-boundaries.test.d.ts.map +0 -1
  178. package/dist/state/state.pending-boundaries.test.js +0 -189
  179. package/dist/state/state.post-state.test.d.ts +0 -2
  180. package/dist/state/state.post-state.test.d.ts.map +0 -1
  181. package/dist/state/state.post-state.test.js +0 -77
  182. package/dist/state/state.test.d.ts +0 -2
  183. package/dist/state/state.test.d.ts.map +0 -1
  184. package/dist/state/state.test.js +0 -268
  185. package/dist/state/state.time-value-resolution.test.d.ts +0 -2
  186. package/dist/state/state.time-value-resolution.test.d.ts.map +0 -1
  187. package/dist/state/state.time-value-resolution.test.js +0 -175
  188. package/dist/tsdoc-metadata.json +0 -11
  189. package/dist/types/extraction.test.d.ts +0 -2
  190. package/dist/types/extraction.test.d.ts.map +0 -1
  191. package/dist/types/extraction.test.js +0 -96
  192. package/dist/types/index.d.ts +0 -11
  193. package/dist/types/index.d.ts.map +0 -1
  194. package/dist/types/index.js +0 -21
  195. package/dist/uploader/uploader.helpers.test.d.ts +0 -2
  196. package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
  197. package/dist/uploader/uploader.helpers.test.js +0 -256
  198. package/dist/uploader/uploader.test.d.ts +0 -2
  199. package/dist/uploader/uploader.test.d.ts.map +0 -1
  200. package/dist/uploader/uploader.test.js +0 -601
  201. /package/dist/http/{axios-client-internal.js → client.js} +0 -0
  202. /package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +0 -0
  203. /package/dist/{common → state}/install-initial-domain-mapping.d.ts +0 -0
  204. /package/dist/{mock-server → testing}/mock-server.interfaces.d.ts +0 -0
  205. /package/dist/{mock-server → testing}/mock-server.interfaces.js +0 -0
  206. /package/dist/{common → types}/errors.js +0 -0
@@ -1,268 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const constants_1 = require("../common/constants");
4
- const jest_setup_1 = require("../tests/jest.setup");
5
- const test_utils_1 = require("../common/test-utils");
6
- const extraction_1 = require("../types/extraction");
7
- const state_1 = require("./state");
8
- const state_interfaces_1 = require("./state.interfaces");
9
- /* eslint-disable @typescript-eslint/no-require-imports */
10
- describe(state_1.State.name, () => {
11
- let initSpy;
12
- let postStateSpy;
13
- let fetchStateSpy;
14
- let installInitialDomainMappingSpy;
15
- let processExitSpy;
16
- beforeEach(() => {
17
- jest.clearAllMocks();
18
- jest.restoreAllMocks();
19
- initSpy = jest.spyOn(state_1.State.prototype, 'init');
20
- postStateSpy = jest.spyOn(state_1.State.prototype, 'postState');
21
- fetchStateSpy = jest.spyOn(state_1.State.prototype, 'fetchState');
22
- installInitialDomainMappingSpy = jest.spyOn(require('../common/install-initial-domain-mapping'), 'installInitialDomainMapping');
23
- processExitSpy = jest.spyOn(process, 'exit').mockImplementation(() => {
24
- throw new Error('process.exit called');
25
- });
26
- });
27
- it.each(constants_1.STATELESS_EVENT_TYPES)('should not init, fetch, post or install IDM for stateless event type %s', async (eventType) => {
28
- // Arrange
29
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
30
- payload: { event_type: eventType },
31
- });
32
- // Act
33
- await (0, state_1.createAdapterState)({
34
- event,
35
- initialState: {},
36
- initialDomainMapping: {},
37
- });
38
- // Assert
39
- expect(initSpy).not.toHaveBeenCalled();
40
- expect(fetchStateSpy).not.toHaveBeenCalled();
41
- expect(postStateSpy).not.toHaveBeenCalled();
42
- expect(installInitialDomainMappingSpy).not.toHaveBeenCalled();
43
- });
44
- it.each(constants_1.STATEFUL_EVENT_TYPES)('should exit the process if fetching the state fails for event type %s', async (eventType) => {
45
- // Arrange
46
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
47
- payload: { event_type: eventType },
48
- });
49
- fetchStateSpy.mockRejectedValue({
50
- isAxiosError: true,
51
- response: { status: 500 },
52
- });
53
- // Act & Assert
54
- await expect((0, state_1.createAdapterState)({
55
- event,
56
- initialState: {},
57
- initialDomainMapping: {},
58
- })).rejects.toThrow('process.exit called');
59
- expect(processExitSpy).toHaveBeenCalledWith(1);
60
- });
61
- it.each(constants_1.STATEFUL_EVENT_TYPES)('should exit the process if parsing the state fails for event type %s', async (eventType) => {
62
- // Arrange
63
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
64
- payload: { event_type: eventType },
65
- });
66
- fetchStateSpy.mockResolvedValue({ state: 'invalid-json' });
67
- // Act & Assert
68
- await expect((0, state_1.createAdapterState)({
69
- event,
70
- initialState: {},
71
- initialDomainMapping: {},
72
- })).rejects.toThrow('process.exit called');
73
- expect(processExitSpy).toHaveBeenCalledWith(1);
74
- });
75
- it.each(constants_1.STATEFUL_EVENT_TYPES)('should exit the process if fetching is successful but there is no state in the response for event type %s', async (eventType) => {
76
- // Arrange
77
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
78
- payload: { event_type: eventType },
79
- });
80
- fetchStateSpy.mockResolvedValue({ state: null });
81
- // Act & Assert
82
- await expect((0, state_1.createAdapterState)({
83
- event,
84
- initialState: {},
85
- initialDomainMapping: {},
86
- })).rejects.toThrow('process.exit called');
87
- expect(processExitSpy).toHaveBeenCalledWith(1);
88
- });
89
- it.each(constants_1.STATEFUL_EVENT_TYPES.filter((eventType) => eventType !== extraction_1.EventType.StartExtractingData))('should call post state with full adapter state if fetching returns 404 for event type %s', async (eventType) => {
90
- // Arrange
91
- const initialState = {
92
- test: 'test',
93
- };
94
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
95
- context: {
96
- snap_in_version_id: '',
97
- },
98
- payload: { event_type: eventType },
99
- });
100
- fetchStateSpy.mockRejectedValue({
101
- isAxiosError: true,
102
- response: { status: 404 },
103
- });
104
- installInitialDomainMappingSpy.mockResolvedValue({
105
- success: true,
106
- });
107
- postStateSpy.mockResolvedValue({
108
- success: true,
109
- });
110
- // Act
111
- await (0, state_1.createAdapterState)({
112
- event,
113
- initialState,
114
- initialDomainMapping: {},
115
- });
116
- const expectedState = Object.assign(Object.assign({}, initialState), state_interfaces_1.extractionSdkState);
117
- expect(postStateSpy).toHaveBeenCalledWith(expectedState);
118
- });
119
- it.each(constants_1.STATEFUL_EVENT_TYPES)('should exit the process if initialDomainMapping is not provided for event type %s', async (eventType) => {
120
- // Arrange
121
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
122
- payload: { event_type: eventType },
123
- });
124
- fetchStateSpy.mockResolvedValue({
125
- state: JSON.stringify({
126
- test: 'test',
127
- }),
128
- });
129
- // Act & Assert
130
- await expect((0, state_1.createAdapterState)({
131
- event,
132
- initialState: {},
133
- initialDomainMapping: undefined,
134
- })).rejects.toThrow('process.exit called');
135
- expect(processExitSpy).toHaveBeenCalledWith(1);
136
- });
137
- it.each(constants_1.STATEFUL_EVENT_TYPES)('should not install IDM if version matches for event type %s', async (eventType) => {
138
- // Arrange
139
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
140
- context: {
141
- snap_in_version_id: '1.0.0',
142
- },
143
- payload: { event_type: eventType },
144
- });
145
- const stringifiedState = JSON.stringify({
146
- test: 'test',
147
- snapInVersionId: '1.0.0',
148
- });
149
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
150
- // Act & Assert
151
- await (0, state_1.createAdapterState)({
152
- event,
153
- initialState: {},
154
- initialDomainMapping: {},
155
- });
156
- // Assert
157
- expect(installInitialDomainMappingSpy).not.toHaveBeenCalled();
158
- });
159
- it.each(constants_1.STATEFUL_EVENT_TYPES)('should install IDM if version does not match for event type %s', async (eventType) => {
160
- // Arrange
161
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
162
- context: {
163
- snap_in_version_id: '2.0.0',
164
- },
165
- payload: { event_type: eventType },
166
- });
167
- const stringifiedState = JSON.stringify({
168
- test: 'test',
169
- snapInVersionId: '1.0.0',
170
- });
171
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
172
- installInitialDomainMappingSpy.mockResolvedValue({
173
- success: true,
174
- });
175
- // Act
176
- await (0, state_1.createAdapterState)({
177
- event,
178
- initialState: {},
179
- initialDomainMapping: {},
180
- });
181
- // Assert
182
- expect(installInitialDomainMappingSpy).toHaveBeenCalled();
183
- });
184
- it('should populate extractionScope from API response', async () => {
185
- // Arrange
186
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
187
- context: {
188
- snap_in_version_id: '1.0.0',
189
- },
190
- payload: { event_type: extraction_1.EventType.StartExtractingData },
191
- });
192
- fetchStateSpy.mockResolvedValue({
193
- state: JSON.stringify({ snapInVersionId: '1.0.0' }),
194
- objects: JSON.stringify({
195
- tasks: { extract: true },
196
- users: { extract: true },
197
- }),
198
- });
199
- // Act
200
- const result = await (0, state_1.createAdapterState)({
201
- event,
202
- initialState: {},
203
- initialDomainMapping: {},
204
- });
205
- // Assert
206
- expect(result.extractionScope).toEqual({
207
- tasks: { extract: true },
208
- users: { extract: true },
209
- });
210
- });
211
- it('should have empty extractionScope on 404', async () => {
212
- // Arrange
213
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
214
- context: {
215
- snap_in_version_id: '',
216
- },
217
- payload: { event_type: extraction_1.EventType.StartExtractingMetadata },
218
- });
219
- fetchStateSpy.mockRejectedValue({
220
- isAxiosError: true,
221
- response: { status: 404 },
222
- });
223
- installInitialDomainMappingSpy.mockResolvedValue({ success: true });
224
- postStateSpy.mockResolvedValue({ success: true });
225
- // Act
226
- const result = await (0, state_1.createAdapterState)({
227
- event,
228
- initialState: {},
229
- initialDomainMapping: {},
230
- });
231
- // Assert
232
- expect(result.extractionScope).toEqual({});
233
- });
234
- it('should have empty extractionScope for stateless events', async () => {
235
- // Arrange
236
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
237
- payload: { event_type: extraction_1.EventType.StartExtractingExternalSyncUnits },
238
- });
239
- // Act
240
- const result = await (0, state_1.createAdapterState)({
241
- event,
242
- initialState: {},
243
- initialDomainMapping: {},
244
- });
245
- // Assert
246
- expect(result.extractionScope).toEqual({});
247
- });
248
- it('should continue with empty extractionScope when objects field contains invalid JSON', async () => {
249
- // Arrange
250
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
251
- context: { snap_in_version_id: '1.0.0' },
252
- payload: { event_type: extraction_1.EventType.StartExtractingData },
253
- });
254
- fetchStateSpy.mockResolvedValue({
255
- state: JSON.stringify({ snapInVersionId: '1.0.0' }),
256
- objects: 'NOT_VALID_JSON',
257
- });
258
- // Act
259
- const result = await (0, state_1.createAdapterState)({
260
- event,
261
- initialState: {},
262
- initialDomainMapping: {},
263
- });
264
- // Assert: should not crash, extractionScope is empty (default)
265
- expect(result.extractionScope).toEqual({});
266
- expect(processExitSpy).not.toHaveBeenCalled();
267
- });
268
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=state.time-value-resolution.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.time-value-resolution.test.d.ts","sourceRoot":"","sources":["../../src/state/state.time-value-resolution.test.ts"],"names":[],"mappings":""}
@@ -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 test_utils_1 = require("../common/test-utils");
5
- const extraction_1 = require("../types/extraction");
6
- const state_1 = require("./state");
7
- describe('State — TimeValue resolution', () => {
8
- let fetchStateSpy;
9
- let processExitSpy;
10
- beforeEach(() => {
11
- jest.clearAllMocks();
12
- jest.restoreAllMocks();
13
- fetchStateSpy = jest.spyOn(state_1.State.prototype, 'fetchState');
14
- processExitSpy = jest.spyOn(process, 'exit').mockImplementation(() => {
15
- throw new Error('process.exit called');
16
- });
17
- });
18
- describe('Enhanced Control Protocol - TimeValue resolution failures', () => {
19
- it('should exit the process if extraction_start_time resolution fails', async () => {
20
- // Arrange: WORKERS_NEWEST type but state has no workersNewest
21
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
22
- payload: {
23
- event_type: extraction_1.EventType.StartExtractingMetadata,
24
- event_context: {
25
- extraction_start_time: {
26
- type: extraction_1.TimeValueType.WORKERS_NEWEST,
27
- },
28
- },
29
- },
30
- });
31
- const stringifiedState = JSON.stringify({
32
- snapInVersionId: 'test_snap_in_version_id',
33
- workers_oldest: '',
34
- workers_newest: '',
35
- });
36
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
37
- // Act & Assert
38
- await expect((0, state_1.createAdapterState)({
39
- event,
40
- initialState: {},
41
- initialDomainMapping: {},
42
- })).rejects.toThrow('process.exit called');
43
- expect(processExitSpy).toHaveBeenCalledWith(1);
44
- });
45
- it('should exit the process if extraction_end_time resolution fails', async () => {
46
- // Arrange: WORKERS_NEWEST type but state has no workersNewest
47
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
48
- payload: {
49
- event_type: extraction_1.EventType.StartExtractingMetadata,
50
- event_context: {
51
- extraction_start_time: {
52
- type: extraction_1.TimeValueType.UNBOUNDED,
53
- },
54
- extraction_end_time: {
55
- type: extraction_1.TimeValueType.WORKERS_NEWEST,
56
- },
57
- },
58
- },
59
- });
60
- const stringifiedState = JSON.stringify({
61
- snapInVersionId: 'test_snap_in_version_id',
62
- workers_oldest: '',
63
- workers_newest: '',
64
- });
65
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
66
- // Act & Assert
67
- await expect((0, state_1.createAdapterState)({
68
- event,
69
- initialState: {},
70
- initialDomainMapping: {},
71
- })).rejects.toThrow('process.exit called');
72
- expect(processExitSpy).toHaveBeenCalledWith(1);
73
- });
74
- });
75
- describe('Backwards compatibility - missing TimeValue type', () => {
76
- it('should skip resolution when extraction_start_time has no type', async () => {
77
- // Arrange: platform sends extraction_start_time without a type field (old platform version)
78
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
79
- context: {
80
- snap_in_version_id: 'test_snap_in_version_id',
81
- },
82
- payload: {
83
- event_type: extraction_1.EventType.StartExtractingMetadata,
84
- event_context: {
85
- extraction_start_time: {},
86
- extraction_end_time: {
87
- type: extraction_1.TimeValueType.ABSOLUTE_TIME,
88
- value: '2025-06-01T00:00:00Z',
89
- },
90
- },
91
- },
92
- });
93
- const stringifiedState = JSON.stringify({
94
- snapInVersionId: 'test_snap_in_version_id',
95
- });
96
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
97
- // Act
98
- const state = await (0, state_1.createAdapterState)({
99
- event,
100
- initialState: {},
101
- initialDomainMapping: {},
102
- });
103
- // Assert: should not crash, extract_from is not set, extract_to is resolved
104
- expect(processExitSpy).not.toHaveBeenCalled();
105
- expect(event.payload.event_context.extract_from).toBeUndefined();
106
- expect(event.payload.event_context.extract_to).toBe('2025-06-01T00:00:00.000Z');
107
- expect(state.state.pendingWorkersNewest).toBe('2025-06-01T00:00:00.000Z');
108
- });
109
- it('should skip resolution when extraction_end_time has no type', async () => {
110
- // Arrange: platform sends extraction_end_time without a type field
111
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
112
- context: {
113
- snap_in_version_id: 'test_snap_in_version_id',
114
- },
115
- payload: {
116
- event_type: extraction_1.EventType.StartExtractingMetadata,
117
- event_context: {
118
- extraction_start_time: {
119
- type: extraction_1.TimeValueType.ABSOLUTE_TIME,
120
- value: '2024-01-01T00:00:00Z',
121
- },
122
- extraction_end_time: {},
123
- },
124
- },
125
- });
126
- const stringifiedState = JSON.stringify({
127
- snapInVersionId: 'test_snap_in_version_id',
128
- });
129
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
130
- // Act
131
- await (0, state_1.createAdapterState)({
132
- event,
133
- initialState: {},
134
- initialDomainMapping: {},
135
- });
136
- // Assert: should not crash, extract_to is not set, extract_from is resolved
137
- expect(processExitSpy).not.toHaveBeenCalled();
138
- expect(event.payload.event_context.extract_from).toBe('2024-01-01T00:00:00.000Z');
139
- expect(event.payload.event_context.extract_to).toBeUndefined();
140
- });
141
- it('should skip resolution when both extraction times have no type', async () => {
142
- // Arrange: platform sends both time values without type fields
143
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
144
- context: {
145
- snap_in_version_id: 'test_snap_in_version_id',
146
- },
147
- payload: {
148
- event_type: extraction_1.EventType.StartExtractingMetadata,
149
- event_context: {
150
- extraction_start_time: {
151
- value: 'some-value',
152
- },
153
- extraction_end_time: {
154
- value: 'some-value',
155
- },
156
- },
157
- },
158
- });
159
- const stringifiedState = JSON.stringify({
160
- snapInVersionId: 'test_snap_in_version_id',
161
- });
162
- fetchStateSpy.mockResolvedValue({ state: stringifiedState });
163
- // Act
164
- await (0, state_1.createAdapterState)({
165
- event,
166
- initialState: {},
167
- initialDomainMapping: {},
168
- });
169
- // Assert: should not crash, neither extraction time is resolved
170
- expect(processExitSpy).not.toHaveBeenCalled();
171
- expect(event.payload.event_context.extract_from).toBeUndefined();
172
- expect(event.payload.event_context.extract_to).toBeUndefined();
173
- });
174
- });
175
- });
@@ -1,11 +0,0 @@
1
- // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
- // It should be published with your NPM package. It should not be tracked by Git.
3
- {
4
- "tsdocVersion": "0.12",
5
- "toolPackages": [
6
- {
7
- "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.58.7"
9
- }
10
- ]
11
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=extraction.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extraction.test.d.ts","sourceRoot":"","sources":["../../src/types/extraction.test.ts"],"names":[],"mappings":""}
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const test_utils_1 = require("../common/test-utils");
4
- const jest_setup_1 = require("../tests/jest.setup");
5
- const extraction_1 = require("./extraction");
6
- describe('ExtractionTypes', () => {
7
- it('should create event context with all optional fields', () => {
8
- // Arrange & Act
9
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
10
- payload: {
11
- event_type: extraction_1.EventType.StartExtractingData,
12
- event_context: {
13
- extract_from: '2024-01-01T00:00:00Z',
14
- extract_to: '2024-06-01T00:00:00Z',
15
- initial_sync_scope: extraction_1.InitialSyncScope.TIME_SCOPED,
16
- },
17
- },
18
- });
19
- // Assert
20
- expect(event.payload.event_context.extract_from).toBe('2024-01-01T00:00:00Z');
21
- expect(event.payload.event_context.extract_to).toBe('2024-06-01T00:00:00Z');
22
- expect(event.payload.event_context.initial_sync_scope).toBe(extraction_1.InitialSyncScope.TIME_SCOPED);
23
- });
24
- it('should create event context with partial optional fields', () => {
25
- // Arrange & Act
26
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
27
- payload: {
28
- event_type: extraction_1.EventType.StartExtractingData,
29
- event_context: {
30
- extract_from: '2024-01-01T00:00:00Z',
31
- },
32
- },
33
- });
34
- // Assert
35
- expect(event.payload.event_context.extract_from).toBe('2024-01-01T00:00:00Z');
36
- });
37
- it('should handle different InitialSyncScope values', () => {
38
- // Arrange & Act
39
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
40
- payload: {
41
- event_type: extraction_1.EventType.StartExtractingData,
42
- event_context: {
43
- initial_sync_scope: extraction_1.InitialSyncScope.FULL_HISTORY,
44
- },
45
- },
46
- });
47
- // Assert
48
- expect(event.payload.event_context.initial_sync_scope).toBe(extraction_1.InitialSyncScope.FULL_HISTORY);
49
- });
50
- it('[edge] should handle null event context gracefully', () => {
51
- // Arrange
52
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
53
- payload: { event_type: extraction_1.EventType.StartExtractingData },
54
- });
55
- // Act
56
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
- event.payload.event_context = null;
58
- // Assert
59
- expect(event.payload.event_context).toBeNull();
60
- });
61
- it('[edge] should handle undefined optional fields', () => {
62
- // Arrange & Act
63
- const event = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
64
- payload: {
65
- event_type: extraction_1.EventType.StartExtractingData,
66
- event_context: {
67
- extract_from: undefined,
68
- extract_to: undefined,
69
- initial_sync_scope: undefined,
70
- },
71
- },
72
- });
73
- // Assert
74
- expect(event.payload.event_context.extract_from).toBeUndefined();
75
- expect(event.payload.event_context.extract_to).toBeUndefined();
76
- expect(event.payload.event_context.initial_sync_scope).toBeUndefined();
77
- });
78
- describe('TimeValueType enum', () => {
79
- it('should have all expected values', () => {
80
- // Assert
81
- expect(extraction_1.TimeValueType.WORKERS_OLDEST).toBe('workers_oldest');
82
- expect(extraction_1.TimeValueType.WORKERS_OLDEST_MINUS_WINDOW).toBe('workers_oldest_minus_window');
83
- expect(extraction_1.TimeValueType.WORKERS_NEWEST).toBe('workers_newest');
84
- expect(extraction_1.TimeValueType.WORKERS_NEWEST_PLUS_WINDOW).toBe('workers_newest_plus_window');
85
- expect(extraction_1.TimeValueType.CURRENT_TIME).toBe('current_time');
86
- expect(extraction_1.TimeValueType.ABSOLUTE_TIME).toBe('absolute_time');
87
- expect(extraction_1.TimeValueType.UNBOUNDED).toBe('unbounded');
88
- });
89
- it('should have exactly seven values', () => {
90
- // Act
91
- const values = Object.values(extraction_1.TimeValueType);
92
- // Assert
93
- expect(values.length).toBe(7);
94
- });
95
- });
96
- });
@@ -1,11 +0,0 @@
1
- export { ErrorRecord, InitialDomainMapping, SyncMode } from './common';
2
- export { AirSyncEvent, AirSyncMessage, ConnectionData, EventContext, EventData, EventType, ExternalProcessAttachmentFunction, ExternalSyncUnit, ExternalSystemAttachmentIteratorFunction, ExternalSystemAttachmentReducerFunction, ExternalSystemAttachmentStreamingFunction, ExternalSystemAttachmentStreamingParams, ExternalSystemAttachmentStreamingResponse, ExtractorEvent, ExtractorEventType, InitialSyncScope, ProcessAttachmentReturnType, TimeUnit, TimeValue, TimeValueType, } from './extraction';
3
- export { ExternalSystemAttachment, ExternalSystemItem, ExternalSystemItemLoadingParams, ExternalSystemItemLoadingResponse, LoaderEventType, } from './loading';
4
- export { NormalizedAttachment, NormalizedItem, RepoInterface, } from '../repo/repo.interfaces';
5
- export { AdapterState } from '../state/state.interfaces';
6
- export { UNBOUNDED_DATE_TIME_VALUE } from '../common/constants';
7
- export { Artifact, ArtifactsPrepareResponse, SsorAttachment, StreamAttachmentsResponse, StreamResponse, UploadResponse, } from '../uploader/uploader.interfaces';
8
- export type { MappersCreateParams, MappersGetByExternalIdParams, MappersGetByTargetIdParams, MappersUpdateParams, } from '../mappers/mappers.interface';
9
- export { SyncMapperRecordStatus, SyncMapperRecordTargetType, } from '../mappers/mappers.interface';
10
- export type { CollectionData, ConditionalPrivilegeData, CustomLinkData, CustomLinkNames, CustomStage, CustomState, EnumData, EnumValue, EnumValueKey, ExternalDomainMetadata, Field, FieldCondition, FieldConditionComparator, FieldConditionEffect, FieldConditions, FieldKey, FieldPrivilegeData, FieldReferenceData, FieldType, FloatData, IntData, PermissionData, RecordType, RecordTypeCategory, RecordTypeCategoryKey, RecordTypeKey, RecordTypePrivilegeData, RecordTypeScope, ReferenceData, ReferenceDetail, ReferenceType, SchemaVersion, StageKey, StageDiagram, StateKey, StructData, StructTypeKey, StructType, TargetTypeKeyData, TextData, TypedReferenceData, } from './external-domain-metadata';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGvE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,SAAS,EACT,iCAAiC,EACjC,gBAAgB,EAChB,wCAAwC,EACxC,uCAAuC,EACvC,yCAAyC,EACzC,uCAAuC,EACvC,yCAAyC,EACzC,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,QAAQ,EACR,SAAS,EACT,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,+BAA+B,EAC/B,iCAAiC,EACjC,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,cAAc,GACf,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,KAAK,EACL,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,OAAO,EACP,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,GACnB,MAAM,4BAA4B,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SyncMapperRecordTargetType = exports.SyncMapperRecordStatus = exports.UNBOUNDED_DATE_TIME_VALUE = exports.LoaderEventType = exports.TimeValueType = exports.TimeUnit = exports.InitialSyncScope = exports.ExtractorEventType = exports.EventType = exports.SyncMode = void 0;
4
- // Common
5
- var common_1 = require("./common");
6
- Object.defineProperty(exports, "SyncMode", { enumerable: true, get: function () { return common_1.SyncMode; } });
7
- // Extraction
8
- var extraction_1 = require("./extraction");
9
- Object.defineProperty(exports, "EventType", { enumerable: true, get: function () { return extraction_1.EventType; } });
10
- Object.defineProperty(exports, "ExtractorEventType", { enumerable: true, get: function () { return extraction_1.ExtractorEventType; } });
11
- Object.defineProperty(exports, "InitialSyncScope", { enumerable: true, get: function () { return extraction_1.InitialSyncScope; } });
12
- Object.defineProperty(exports, "TimeUnit", { enumerable: true, get: function () { return extraction_1.TimeUnit; } });
13
- Object.defineProperty(exports, "TimeValueType", { enumerable: true, get: function () { return extraction_1.TimeValueType; } });
14
- // Loading
15
- var loading_1 = require("./loading");
16
- Object.defineProperty(exports, "LoaderEventType", { enumerable: true, get: function () { return loading_1.LoaderEventType; } });
17
- var constants_1 = require("../common/constants");
18
- Object.defineProperty(exports, "UNBOUNDED_DATE_TIME_VALUE", { enumerable: true, get: function () { return constants_1.UNBOUNDED_DATE_TIME_VALUE; } });
19
- var mappers_interface_1 = require("../mappers/mappers.interface");
20
- Object.defineProperty(exports, "SyncMapperRecordStatus", { enumerable: true, get: function () { return mappers_interface_1.SyncMapperRecordStatus; } });
21
- Object.defineProperty(exports, "SyncMapperRecordTargetType", { enumerable: true, get: function () { return mappers_interface_1.SyncMapperRecordTargetType; } });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=uploader.helpers.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploader.helpers.test.d.ts","sourceRoot":"","sources":["../../src/uploader/uploader.helpers.test.ts"],"names":[],"mappings":""}