@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,265 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.State = void 0;
7
- exports.createAdapterState = createAdapterState;
8
- const axios_1 = __importDefault(require("axios"));
9
- const node_worker_threads_1 = require("node:worker_threads");
10
- const constants_1 = require("../common/constants");
11
- const install_initial_domain_mapping_1 = require("../common/install-initial-domain-mapping");
12
- const time_value_resolver_1 = require("../common/time-value-resolver");
13
- const axios_client_internal_1 = require("../http/axios-client-internal");
14
- const logger_1 = require("../logger/logger");
15
- const common_1 = require("../types/common");
16
- const extraction_1 = require("../types/extraction");
17
- const workers_1 = require("../types/workers");
18
- const state_interfaces_1 = require("./state.interfaces");
19
- async function createAdapterState({ event, initialState, initialDomainMapping, options, }) {
20
- // Deep clone the initial state to avoid mutating the original state
21
- const deepCloneInitialState = structuredClone(initialState);
22
- const as = new State({
23
- event,
24
- initialState: deepCloneInitialState,
25
- initialDomainMapping,
26
- options,
27
- });
28
- if (!constants_1.STATELESS_EVENT_TYPES.includes(event.payload.event_type)) {
29
- await as.init(deepCloneInitialState);
30
- // Check if IDM needs to be updated
31
- const snapInVersionId = event.context.snap_in_version_id;
32
- const hasSnapInVersionInState = 'snapInVersionId' in as.state;
33
- const shouldUpdateIDM = !hasSnapInVersionInState || as.state.snapInVersionId !== snapInVersionId;
34
- if (!shouldUpdateIDM) {
35
- console.log(`Snap-in version in state matches the version in event context "${snapInVersionId}". Skipping initial domain mapping installation.`);
36
- }
37
- else {
38
- try {
39
- console.log(`Snap-in version in state "${as.state.snapInVersionId}" does not match the version in event context "${snapInVersionId}". Installing initial domain mapping.`);
40
- if (initialDomainMapping) {
41
- await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(event, initialDomainMapping);
42
- as.state.snapInVersionId = snapInVersionId;
43
- }
44
- else {
45
- throw new Error('No initial domain mapping was passed to spawn function. Skipping initial domain mapping installation.');
46
- }
47
- }
48
- catch (error) {
49
- const errorMessage = `Error while installing initial domain mapping. ${(0, logger_1.serializeError)(error)}`;
50
- console.error(errorMessage);
51
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
52
- subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
53
- payload: { message: errorMessage },
54
- });
55
- process.exit(1);
56
- }
57
- }
58
- // Resolve extraction timestamps from TimeValue objects, or reuse pending values from a prior invocation.
59
- // On StartExtractingMetadata: resolve fresh from TimeValue objects and store in pending state (always overwrite).
60
- // On all other events: reuse the pending values cached during StartExtractingMetadata.
61
- const eventContext = event.payload.event_context;
62
- if (event.payload.event_type === extraction_1.EventType.StartExtractingMetadata) {
63
- const timeFields = [
64
- {
65
- source: 'extraction_start_time',
66
- target: 'extract_from',
67
- pending: 'pendingWorkersOldest',
68
- },
69
- {
70
- source: 'extraction_end_time',
71
- target: 'extract_to',
72
- pending: 'pendingWorkersNewest',
73
- },
74
- ];
75
- for (const { source, target, pending } of timeFields) {
76
- const timeValue = eventContext[source];
77
- if (timeValue && timeValue.type) {
78
- try {
79
- const resolved = (0, time_value_resolver_1.resolveTimeValue)(timeValue, as.state);
80
- eventContext[target] = resolved;
81
- as.state[pending] = resolved;
82
- console.log(`Resolved ${target} to ${resolved}. Stored in ${pending}.`);
83
- }
84
- catch (error) {
85
- const errorMessage = `Failed to resolve ${source}: ${(0, logger_1.serializeError)(error)}`;
86
- console.error(errorMessage);
87
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
88
- subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
89
- payload: { message: errorMessage },
90
- });
91
- process.exit(1);
92
- }
93
- }
94
- }
95
- }
96
- else {
97
- // Non-StartExtractingMetadata events: reuse pending values from state
98
- if (as.state.pendingWorkersOldest) {
99
- eventContext.extract_from = as.state.pendingWorkersOldest;
100
- console.log(`Reusing pendingWorkersOldest as extract_from: ${as.state.pendingWorkersOldest}.`);
101
- }
102
- else {
103
- console.log('pendingWorkersOldest is not set in state. extract_from will not be populated for this invocation.');
104
- }
105
- if (as.state.pendingWorkersNewest) {
106
- eventContext.extract_to = as.state.pendingWorkersNewest;
107
- console.log(`Reusing pendingWorkersNewest as extract_to: ${as.state.pendingWorkersNewest}.`);
108
- }
109
- else {
110
- console.log('pendingWorkersNewest is not set in state. extract_to will not be populated for this invocation.');
111
- }
112
- }
113
- // Validate that extract_from is before extract_to
114
- if (eventContext.extract_from && eventContext.extract_to) {
115
- if (eventContext.extract_from >= eventContext.extract_to) {
116
- const errorMessage = `Invalid extraction window: extract_from (${eventContext.extract_from}) must be older than extract_to (${eventContext.extract_to}). This indicates an error in the platform.`;
117
- console.error(errorMessage);
118
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
119
- subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
120
- payload: { message: errorMessage },
121
- });
122
- process.exit(1);
123
- }
124
- }
125
- }
126
- return as;
127
- }
128
- class State {
129
- constructor({ event, initialState }) {
130
- this._extractionScope = {};
131
- this.initialSdkState =
132
- event.payload.event_context.mode === common_1.SyncMode.LOADING
133
- ? state_interfaces_1.loadingSdkState
134
- : state_interfaces_1.extractionSdkState;
135
- this._state = Object.assign(Object.assign({}, initialState), this.initialSdkState);
136
- this.workerUrl = event.payload.event_context.worker_data_url;
137
- this.devrevToken = event.context.secrets.service_account_token;
138
- this.syncUnitId = event.payload.event_context.sync_unit_id;
139
- this.requestId = event.payload.event_context.request_id_adaas;
140
- }
141
- get state() {
142
- return this._state;
143
- }
144
- set state(value) {
145
- this._state = value;
146
- }
147
- get extractionScope() {
148
- return this._extractionScope;
149
- }
150
- /**
151
- * Initializes the state for this adapter instance by fetching from API
152
- * or creating an initial state if none exists (404).
153
- * @param initialState The initial connector state provided by the spawn function
154
- */
155
- async init(initialState) {
156
- var _a;
157
- try {
158
- const { state: stringifiedState, objects } = await this.fetchState();
159
- if (!stringifiedState) {
160
- throw new Error('No state found in response.');
161
- }
162
- let parsedState;
163
- try {
164
- parsedState = JSON.parse(stringifiedState);
165
- }
166
- catch (error) {
167
- throw new Error(`Failed to parse state. ${error}`);
168
- }
169
- this.state = parsedState;
170
- console.log('State fetched successfully. Current state', (0, logger_1.getPrintableState)(this.state));
171
- if (objects) {
172
- try {
173
- this._extractionScope = JSON.parse(objects);
174
- }
175
- catch (error) {
176
- console.warn(`Failed to parse extractionScope. ${error}`);
177
- }
178
- }
179
- }
180
- catch (error) {
181
- if (axios_1.default.isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
182
- console.log('State not found. Initializing state with initial state.');
183
- const initialAdapterState = Object.assign(Object.assign({}, initialState), this.initialSdkState);
184
- this.state = initialAdapterState;
185
- await this.postState(initialAdapterState);
186
- }
187
- else {
188
- const errorMessage = `Failed to init state. ${(0, logger_1.serializeError)(error)}`;
189
- console.error(errorMessage);
190
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
191
- subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
192
- payload: { message: errorMessage },
193
- });
194
- process.exit(1);
195
- }
196
- }
197
- }
198
- /**
199
- * Updates the state of the adapter by posting to API.
200
- * @param {object} state - The state to be updated
201
- */
202
- async postState(state) {
203
- const url = this.workerUrl + '.update';
204
- this.state = state || this.state;
205
- let stringifiedState;
206
- try {
207
- stringifiedState = JSON.stringify(this.state);
208
- }
209
- catch (error) {
210
- const errorMessage = `Failed to stringify state. ${(0, logger_1.serializeError)(error)}`;
211
- console.error(errorMessage);
212
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
213
- subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
214
- payload: { message: errorMessage },
215
- });
216
- process.exit(1);
217
- }
218
- try {
219
- await axios_client_internal_1.axiosClient.post(url, {
220
- state: stringifiedState,
221
- }, {
222
- headers: {
223
- Authorization: this.devrevToken,
224
- },
225
- params: {
226
- sync_unit: this.syncUnitId,
227
- request_id: this.requestId,
228
- },
229
- });
230
- console.log('State updated successfully to', (0, logger_1.getPrintableState)(this.state));
231
- }
232
- catch (error) {
233
- const errorMessage = `Failed to update the state. ${(0, logger_1.serializeError)(error)}`;
234
- console.error(errorMessage);
235
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
236
- subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
237
- payload: { message: errorMessage },
238
- });
239
- process.exit(1);
240
- }
241
- }
242
- /**
243
- * Fetches the state of the adapter from API.
244
- * @return The raw state data from API
245
- */
246
- async fetchState() {
247
- var _a, _b;
248
- console.log(`Fetching state with sync unit id ${this.syncUnitId} and request id ${this.requestId}.`);
249
- const url = this.workerUrl + '.get';
250
- const response = await axios_client_internal_1.axiosClient.get(url, {
251
- headers: {
252
- Authorization: this.devrevToken,
253
- },
254
- params: {
255
- sync_unit: this.syncUnitId,
256
- request_id: this.requestId,
257
- },
258
- });
259
- return {
260
- state: (_a = response.data) === null || _a === void 0 ? void 0 : _a.state,
261
- objects: (_b = response.data) === null || _b === void 0 ? void 0 : _b.objects,
262
- };
263
- }
264
- }
265
- exports.State = State;
3
+ exports.createLoadingState = exports.LoadingState = exports.createExtractionState = exports.ExtractionState = exports.BaseState = void 0;
4
+ var base_state_1 = require("./base-state");
5
+ Object.defineProperty(exports, "BaseState", { enumerable: true, get: function () { return base_state_1.BaseState; } });
6
+ var extraction_state_1 = require("./extraction-state");
7
+ Object.defineProperty(exports, "ExtractionState", { enumerable: true, get: function () { return extraction_state_1.ExtractionState; } });
8
+ Object.defineProperty(exports, "createExtractionState", { enumerable: true, get: function () { return extraction_state_1.createExtractionState; } });
9
+ var loading_state_1 = require("./loading-state");
10
+ Object.defineProperty(exports, "LoadingState", { enumerable: true, get: function () { return loading_state_1.LoadingState; } });
11
+ Object.defineProperty(exports, "createLoadingState", { enumerable: true, get: function () { return loading_state_1.createLoadingState; } });
@@ -32,16 +32,15 @@ export declare function applyDuration(baseTimestamp: string, duration: string, o
32
32
  * - ABSOLUTE: Returns the value directly (must be an ISO 8601 timestamp)
33
33
  * - NOW: Returns the current time as ISO 8601
34
34
  * - UNBOUNDED: Returns UNBOUNDED_DATE_TIME_VALUE ('1970-01-01T00:00:00.000Z')
35
- * - WORKERS_OLDEST: Returns workersOldest from state, or throws if not set
36
- * - WORKERS_NEWEST: Returns workersNewest from state, or throws if not set
37
- * - WORKERS_OLDEST_MINUS_WINDOW: Subtracts duration from workersOldest, or throws if not set
38
- * - WORKERS_NEWEST_PLUS_WINDOW: Adds duration to workersNewest, or throws if not set
35
+ * - WORKERS_OLDEST: Returns workersOldest from state, or UNBOUNDED if not set
36
+ * - WORKERS_NEWEST: Returns workersNewest from state, or UNBOUNDED if not set
37
+ * - WORKERS_OLDEST_MINUS_WINDOW: Subtracts duration from workersOldest, or UNBOUNDED if not set
38
+ * - WORKERS_NEWEST_PLUS_WINDOW: Adds duration to workersNewest, or UNBOUNDED if not set
39
39
  *
40
40
  * @param timeValue - The TimeValue to resolve
41
41
  * @param state - The current SDK state containing workersOldest and workersNewest
42
42
  * @returns Resolved ISO 8601 timestamp string
43
43
  * @throws Error if required TimeValue.value is missing for ABSOLUTE or *_WINDOW types
44
- * @throws Error if workersOldest/workersNewest is not set in state for WORKERS_* types
45
44
  */
46
45
  export declare function resolveTimeValue(timeValue: TimeValue, state: SdkState): string;
47
46
  //# sourceMappingURL=time-value-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-value-resolver.d.ts","sourceRoot":"","sources":["../../src/state/time-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;CAChB,CAcA;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,GAAG,UAAU,GAC5B,MAAM,CA6BR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,QAAQ,GACd,MAAM,CAyER"}
@@ -4,7 +4,7 @@ exports.parseDuration = parseDuration;
4
4
  exports.applyDuration = applyDuration;
5
5
  exports.resolveTimeValue = resolveTimeValue;
6
6
  const extraction_1 = require("../types/extraction");
7
- const constants_1 = require("./constants");
7
+ const constants_1 = require("../common/constants");
8
8
  /**
9
9
  * Parses a shorthand duration string into its numeric value and unit.
10
10
  * Supported units:
@@ -71,16 +71,15 @@ function applyDuration(baseTimestamp, duration, operation) {
71
71
  * - ABSOLUTE: Returns the value directly (must be an ISO 8601 timestamp)
72
72
  * - NOW: Returns the current time as ISO 8601
73
73
  * - UNBOUNDED: Returns UNBOUNDED_DATE_TIME_VALUE ('1970-01-01T00:00:00.000Z')
74
- * - WORKERS_OLDEST: Returns workersOldest from state, or throws if not set
75
- * - WORKERS_NEWEST: Returns workersNewest from state, or throws if not set
76
- * - WORKERS_OLDEST_MINUS_WINDOW: Subtracts duration from workersOldest, or throws if not set
77
- * - WORKERS_NEWEST_PLUS_WINDOW: Adds duration to workersNewest, or throws if not set
74
+ * - WORKERS_OLDEST: Returns workersOldest from state, or UNBOUNDED if not set
75
+ * - WORKERS_NEWEST: Returns workersNewest from state, or UNBOUNDED if not set
76
+ * - WORKERS_OLDEST_MINUS_WINDOW: Subtracts duration from workersOldest, or UNBOUNDED if not set
77
+ * - WORKERS_NEWEST_PLUS_WINDOW: Adds duration to workersNewest, or UNBOUNDED if not set
78
78
  *
79
79
  * @param timeValue - The TimeValue to resolve
80
80
  * @param state - The current SDK state containing workersOldest and workersNewest
81
81
  * @returns Resolved ISO 8601 timestamp string
82
82
  * @throws Error if required TimeValue.value is missing for ABSOLUTE or *_WINDOW types
83
- * @throws Error if workersOldest/workersNewest is not set in state for WORKERS_* types
84
83
  */
85
84
  function resolveTimeValue(timeValue, state) {
86
85
  switch (timeValue.type) {
@@ -111,7 +110,8 @@ function resolveTimeValue(timeValue, state) {
111
110
  }
112
111
  case extraction_1.TimeValueType.WORKERS_NEWEST: {
113
112
  if (!state.workersNewest) {
114
- throw new Error('Field workersNewest is not set in state. Cannot resolve TimeValue of type WORKERS_NEWEST without a prior extraction boundary.');
113
+ // To support backwards-compatibility for the old state
114
+ return constants_1.UNBOUNDED_DATE_TIME_VALUE;
115
115
  }
116
116
  return state.workersNewest;
117
117
  }
@@ -130,7 +130,8 @@ function resolveTimeValue(timeValue, state) {
130
130
  throw new Error("TimeValue of type WORKERS_NEWEST_PLUS_WINDOW must have a value (duration, e.g. '30s', '5m', '2h').");
131
131
  }
132
132
  if (!state.workersNewest) {
133
- throw new Error('Field workersNewest is not set in state. Cannot resolve TimeValue of type WORKERS_NEWEST_PLUS_WINDOW without a prior extraction boundary.');
133
+ // To support backwards-compatibility for the old state
134
+ return constants_1.UNBOUNDED_DATE_TIME_VALUE;
134
135
  }
135
136
  return applyDuration(state.workersNewest, timeValue.value, 'add');
136
137
  }
@@ -1,5 +1,4 @@
1
1
  import { AirSyncEvent } from '../types/extraction';
2
- export declare const MOCK_SERVER_DEFAULT_URL = "http://localhost:0";
3
2
  /**
4
3
  * Recursively makes all properties of T optional.
5
4
  */
@@ -16,4 +15,4 @@ export type DeepPartial<T> = {
16
15
  * deep-merged on top of the defaults.
17
16
  */
18
17
  export declare function createMockEvent(mockServerUrl?: string, overrides?: DeepPartial<AirSyncEvent>): AirSyncEvent;
19
- //# sourceMappingURL=test-utils.d.ts.map
18
+ //# sourceMappingURL=mock-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-event.d.ts","sourceRoot":"","sources":["../../src/testing/mock-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,qBAAqB,CAAC;AAI9D;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAoCF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,aAAa,GAAE,MAAgC,EAC/C,SAAS,GAAE,WAAW,CAAC,YAAY,CAAM,GACxC,YAAY,CA+Ed"}
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MOCK_SERVER_DEFAULT_URL = void 0;
4
3
  exports.createMockEvent = createMockEvent;
5
4
  const extraction_1 = require("../types/extraction");
6
- exports.MOCK_SERVER_DEFAULT_URL = 'http://localhost:0';
5
+ const mock_server_1 = require("./mock-server");
7
6
  /**
8
7
  * Deep merges source into target. Arrays and primitives from source replace
9
8
  * those in target; plain objects are merged recursively.
@@ -36,7 +35,7 @@ function deepMerge(target, source) {
36
35
  * @param overrides - Deep partial of AirSyncEvent. Any provided fields are
37
36
  * deep-merged on top of the defaults.
38
37
  */
39
- function createMockEvent(mockServerUrl = exports.MOCK_SERVER_DEFAULT_URL, overrides = {}) {
38
+ function createMockEvent(mockServerUrl = mock_server_1.MOCK_SERVER_DEFAULT_URL, overrides = {}) {
40
39
  var _a, _b, _c, _d;
41
40
  const base = {
42
41
  context: {
@@ -45,6 +44,10 @@ function createMockEvent(mockServerUrl = exports.MOCK_SERVER_DEFAULT_URL, overri
45
44
  },
46
45
  snap_in_version_id: 'test_snap_in_version_id',
47
46
  snap_in_id: 'test_snap_in_id',
47
+ user_id: 'test_user_id',
48
+ dev_oid: 'test_dev_oid',
49
+ source_id: 'test_source_id',
50
+ service_account_id: 'test_service_account_id',
48
51
  },
49
52
  payload: {
50
53
  connection_data: {
@@ -55,12 +58,17 @@ function createMockEvent(mockServerUrl = exports.MOCK_SERVER_DEFAULT_URL, overri
55
58
  },
56
59
  event_context: {
57
60
  callback_url: `${mockServerUrl}/callback_url`,
61
+ dev_org: 'test_dev_org',
58
62
  dev_oid: 'test_dev_oid',
59
63
  dev_org_id: 'test_dev_org_id',
64
+ dev_user: 'test_dev_user',
65
+ dev_user_id: 'test_dev_user_id',
60
66
  dev_uid: 'test_dev_uid',
61
67
  event_type_adaas: 'test_event_type_adaas',
68
+ external_sync_unit: 'test_external_sync_unit',
62
69
  external_sync_unit_id: 'test_external_sync_unit_id',
63
70
  external_sync_unit_name: 'test_external_sync_unit_name',
71
+ external_system: 'test_external_system',
64
72
  external_system_id: 'test_external_system_id',
65
73
  external_system_name: 'test_external_system_name',
66
74
  external_system_type: 'test_external_system_type',
@@ -72,9 +80,12 @@ function createMockEvent(mockServerUrl = exports.MOCK_SERVER_DEFAULT_URL, overri
72
80
  sequence_version: 'test_sequence_version',
73
81
  snap_in_slug: 'test_snap_in_slug',
74
82
  snap_in_version_id: 'test_snap_in_version_id',
83
+ sync_run: 'test_sync_run',
84
+ sync_run_id: 'test_sync_run_id',
75
85
  sync_tier: 'test_sync_tier',
76
86
  sync_unit: 'test_sync_unit',
77
87
  sync_unit_id: 'test_sync_unit_id',
88
+ uuid: 'test_uuid',
78
89
  worker_data_url: `${mockServerUrl}/worker_data_url`,
79
90
  },
80
91
  event_type: extraction_1.EventType.StartExtractingData,
@@ -1,4 +1,9 @@
1
1
  import { RequestInfo, RouteConfig } from './mock-server.interfaces';
2
+ /**
3
+ * Default base URL for the mock server. The port `0` lets the OS assign a free
4
+ * port at listen time; tests read the resolved URL from `mockServer.baseUrl`.
5
+ */
6
+ export declare const MOCK_SERVER_DEFAULT_URL = "http://localhost:0";
2
7
  /**
3
8
  * MockServer used in tests to mock internal AirSync endpoints.
4
9
  * This is a simple mock server that listens on a port and responds to requests.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-server.d.ts","sourceRoot":"","sources":["../../src/testing/mock-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,WAAW,EACX,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAuE5D;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAA4B;gBAErC,IAAI,GAAE,MAAiC;IAMtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBpB,aAAa;IA+B3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,WAAW;IAInB;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAyE1C;;;OAGG;IACI,WAAW,IAAI,IAAI;IAM1B;;OAEG;IACI,cAAc,IAAI,WAAW,GAAG,SAAS;IAOhD;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI5D;;OAEG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;CAQhE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-server.interfaces.d.ts","sourceRoot":"","sources":["../../src/testing/mock-server.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEvD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,yCAAyC;IACzC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC;IACnD,+BAA+B;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,2BAA2B;IAC3B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
@@ -1,8 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MockServer = void 0;
3
+ exports.MockServer = exports.MOCK_SERVER_DEFAULT_URL = void 0;
4
4
  const http_1 = require("http");
5
5
  const mock_server_interfaces_1 = require("./mock-server.interfaces");
6
+ /**
7
+ * Default base URL for the mock server. The port `0` lets the OS assign a free
8
+ * port at listen time; tests read the resolved URL from `mockServer.baseUrl`.
9
+ */
10
+ exports.MOCK_SERVER_DEFAULT_URL = 'http://localhost:0';
6
11
  const MAX_BODY_SIZE = 10 * 1024 * 1024; // 10mb
7
12
  /**
8
13
  * Parses the JSON body from an incoming request.
@@ -0,0 +1,9 @@
1
+ export declare const enum ExtractionCommonError {
2
+ EXTERNAL_SYNC_UNIT_DELETED = "ERROR_CODE=EXTERNAL_SYNC_UNIT_DELETED",
3
+ EXTERNAL_SYNC_UNIT_DEACTIVATED = "ERROR_CODE=EXTERNAL_SYNC_UNIT_DEACTIVATED",
4
+ USER_DELETED = "ERROR_CODE=USER_DELETED",
5
+ EXTERNAL_SYSTEM_NO_ACCESS = "ERROR_CODE=EXTERNAL_SYSTEM_NO_ACCESS",
6
+ EXTERNAL_SYSTEM_NO_PERMISSION = "ERROR_CODE=EXTERNAL_SYSTEM_NO_PERMISSION",
7
+ HISTORICAL_DATA_EXTRACTION_DONE = "ERROR_CODE=HISTORICAL_DATA_EXTRACTION_DONE"
8
+ }
9
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAGA,0BAAkB,qBAAqB;IAIrC,0BAA0B,0CAAgE;IAC1F,8BAA8B,8CAAoE;IAClG,YAAY,4BAAkD;IAG9D,yBAAyB,yCAA+D;IAExF,6BAA6B,6CAAmE;IAEhG,+BAA+B,+CAAqE;CACrG"}