@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,5 +1,27 @@
1
1
  import { EventType, ExtractorEventType } from '../../types/extraction';
2
2
  import { LoaderEventType } from '../../types/loading';
3
+ import { TaskStatus } from '../../types/workers';
4
+ /**
5
+ * Resolves the outgoing event type the SDK should emit for a given incoming
6
+ * event type and the {@link TaskResult} status a worker returned.
7
+ *
8
+ * The mapping follows the per-phase contract documented on `TaskResult`:
9
+ * resumable phases (data/attachment extraction, data/attachment loading) honor
10
+ * every status (success -> *_DONE, progress -> *_PROGRESS, delay -> *_DELAYED,
11
+ * error -> *_ERROR); non-resumable phases (external sync units, metadata, state
12
+ * deletion) only have a done and an error event, so a `progress`/`delay` status
13
+ * there is illegal and is mapped to the phase's error event.
14
+ *
15
+ * @param eventType - The incoming event type that started this worker.
16
+ * @param status - The status the worker's task/onTimeout returned.
17
+ * @returns The outgoing extractor/loader event type to emit, plus whether the
18
+ * status was illegal for the phase (so the caller can attach a descriptive
19
+ * error message).
20
+ */
21
+ export declare function getEventTypeForResult(eventType: EventType, status: TaskStatus): {
22
+ eventType: ExtractorEventType | LoaderEventType;
23
+ illegal: boolean;
24
+ };
3
25
  /**
4
26
  * Gets the event type for the timeout error.
5
27
  * @param {EventType} eventType - The event type to get the timeout error event type for
@@ -14,8 +36,6 @@ export declare function getTimeoutErrorEventType(eventType: EventType): {
14
36
  * @returns {ExtractorEventType | LoaderEventType} The event type for the no script error
15
37
  */
16
38
  export declare function getNoScriptEventType(eventType: EventType): {
17
- eventType: ExtractorEventType;
18
- } | {
19
- eventType: LoaderEventType;
39
+ eventType: ExtractorEventType | LoaderEventType;
20
40
  };
21
41
  //# sourceMappingURL=spawn.helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.helpers.d.ts","sourceRoot":"","sources":["../../../src/multithreading/spawn/spawn.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC9D,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;CACjD,CA2EA;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS;;;;EA2BxD"}
1
+ {"version":3,"file":"spawn.helpers.d.ts","sourceRoot":"","sources":["../../../src/multithreading/spawn/spawn.helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,GACjB;IACD,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;CAClB,CAiCA;AAoHD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC9D,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;CACjD,CA2EA;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS;eAwBhB,kBAAkB,GAAG,eAAe;EAG5E"}
@@ -1,9 +1,159 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEventTypeForResult = getEventTypeForResult;
3
4
  exports.getTimeoutErrorEventType = getTimeoutErrorEventType;
4
5
  exports.getNoScriptEventType = getNoScriptEventType;
6
+ const constants_1 = require("../../common/constants");
5
7
  const extraction_1 = require("../../types/extraction");
6
8
  const loading_1 = require("../../types/loading");
9
+ /**
10
+ * Resolves the outgoing event type the SDK should emit for a given incoming
11
+ * event type and the {@link TaskResult} status a worker returned.
12
+ *
13
+ * The mapping follows the per-phase contract documented on `TaskResult`:
14
+ * resumable phases (data/attachment extraction, data/attachment loading) honor
15
+ * every status (success -> *_DONE, progress -> *_PROGRESS, delay -> *_DELAYED,
16
+ * error -> *_ERROR); non-resumable phases (external sync units, metadata, state
17
+ * deletion) only have a done and an error event, so a `progress`/`delay` status
18
+ * there is illegal and is mapped to the phase's error event.
19
+ *
20
+ * @param eventType - The incoming event type that started this worker.
21
+ * @param status - The status the worker's task/onTimeout returned.
22
+ * @returns The outgoing extractor/loader event type to emit, plus whether the
23
+ * status was illegal for the phase (so the caller can attach a descriptive
24
+ * error message).
25
+ */
26
+ function getEventTypeForResult(eventType, status) {
27
+ const phase = EVENT_PHASE_MAP[eventType];
28
+ if (!phase) {
29
+ console.error('Event type not recognized in getEventTypeForResult function: ' +
30
+ eventType);
31
+ return {
32
+ eventType: constants_1.UNKNOWN_EVENT_TYPE,
33
+ illegal: true,
34
+ };
35
+ }
36
+ // Non-resumable phases only define done/error events.
37
+ if (!phase.resumable) {
38
+ if (status === 'success') {
39
+ return { eventType: phase.done, illegal: false };
40
+ }
41
+ // progress/delay are illegal here; collapse them (and error) to the error event.
42
+ return { eventType: phase.error, illegal: status !== 'error' };
43
+ }
44
+ switch (status) {
45
+ case 'success':
46
+ return { eventType: phase.done, illegal: false };
47
+ case 'progress':
48
+ return { eventType: phase.progress, illegal: false };
49
+ case 'delay':
50
+ return { eventType: phase.delayed, illegal: false };
51
+ case 'error':
52
+ return { eventType: phase.error, illegal: false };
53
+ }
54
+ }
55
+ /**
56
+ * Per-phase outgoing event types, keyed by the incoming {@link EventType}.
57
+ * `resumable` phases define progress/delayed events; non-resumable ones do not.
58
+ */
59
+ const EVENT_PHASE_MAP = {
60
+ // External sync units (non-resumable)
61
+ [extraction_1.EventType.StartExtractingExternalSyncUnits]: {
62
+ resumable: false,
63
+ done: extraction_1.ExtractorEventType.ExternalSyncUnitExtractionDone,
64
+ error: extraction_1.ExtractorEventType.ExternalSyncUnitExtractionError,
65
+ },
66
+ // Metadata (non-resumable)
67
+ [extraction_1.EventType.StartExtractingMetadata]: {
68
+ resumable: false,
69
+ done: extraction_1.ExtractorEventType.MetadataExtractionDone,
70
+ error: extraction_1.ExtractorEventType.MetadataExtractionError,
71
+ },
72
+ // Data extraction (resumable)
73
+ [extraction_1.EventType.StartExtractingData]: {
74
+ resumable: true,
75
+ done: extraction_1.ExtractorEventType.DataExtractionDone,
76
+ error: extraction_1.ExtractorEventType.DataExtractionError,
77
+ progress: extraction_1.ExtractorEventType.DataExtractionProgress,
78
+ delayed: extraction_1.ExtractorEventType.DataExtractionDelayed,
79
+ },
80
+ [extraction_1.EventType.ContinueExtractingData]: {
81
+ resumable: true,
82
+ done: extraction_1.ExtractorEventType.DataExtractionDone,
83
+ error: extraction_1.ExtractorEventType.DataExtractionError,
84
+ progress: extraction_1.ExtractorEventType.DataExtractionProgress,
85
+ delayed: extraction_1.ExtractorEventType.DataExtractionDelayed,
86
+ },
87
+ // Extractor state deletion (non-resumable)
88
+ [extraction_1.EventType.StartDeletingExtractorState]: {
89
+ resumable: false,
90
+ done: extraction_1.ExtractorEventType.ExtractorStateDeletionDone,
91
+ error: extraction_1.ExtractorEventType.ExtractorStateDeletionError,
92
+ },
93
+ // Attachment extraction (resumable)
94
+ [extraction_1.EventType.StartExtractingAttachments]: {
95
+ resumable: true,
96
+ done: extraction_1.ExtractorEventType.AttachmentExtractionDone,
97
+ error: extraction_1.ExtractorEventType.AttachmentExtractionError,
98
+ progress: extraction_1.ExtractorEventType.AttachmentExtractionProgress,
99
+ delayed: extraction_1.ExtractorEventType.AttachmentExtractionDelayed,
100
+ },
101
+ [extraction_1.EventType.ContinueExtractingAttachments]: {
102
+ resumable: true,
103
+ done: extraction_1.ExtractorEventType.AttachmentExtractionDone,
104
+ error: extraction_1.ExtractorEventType.AttachmentExtractionError,
105
+ progress: extraction_1.ExtractorEventType.AttachmentExtractionProgress,
106
+ delayed: extraction_1.ExtractorEventType.AttachmentExtractionDelayed,
107
+ },
108
+ // Extractor attachments state deletion (non-resumable)
109
+ [extraction_1.EventType.StartDeletingExtractorAttachmentsState]: {
110
+ resumable: false,
111
+ done: extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionDone,
112
+ error: extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionError,
113
+ },
114
+ // Data loading (resumable)
115
+ [extraction_1.EventType.StartLoadingData]: {
116
+ resumable: true,
117
+ done: loading_1.LoaderEventType.DataLoadingDone,
118
+ error: loading_1.LoaderEventType.DataLoadingError,
119
+ progress: loading_1.LoaderEventType.DataLoadingProgress,
120
+ delayed: loading_1.LoaderEventType.DataLoadingDelayed,
121
+ },
122
+ [extraction_1.EventType.ContinueLoadingData]: {
123
+ resumable: true,
124
+ done: loading_1.LoaderEventType.DataLoadingDone,
125
+ error: loading_1.LoaderEventType.DataLoadingError,
126
+ progress: loading_1.LoaderEventType.DataLoadingProgress,
127
+ delayed: loading_1.LoaderEventType.DataLoadingDelayed,
128
+ },
129
+ // Attachment loading (resumable)
130
+ [extraction_1.EventType.StartLoadingAttachments]: {
131
+ resumable: true,
132
+ done: loading_1.LoaderEventType.AttachmentLoadingDone,
133
+ error: loading_1.LoaderEventType.AttachmentLoadingError,
134
+ progress: loading_1.LoaderEventType.AttachmentLoadingProgress,
135
+ delayed: loading_1.LoaderEventType.AttachmentLoadingDelayed,
136
+ },
137
+ [extraction_1.EventType.ContinueLoadingAttachments]: {
138
+ resumable: true,
139
+ done: loading_1.LoaderEventType.AttachmentLoadingDone,
140
+ error: loading_1.LoaderEventType.AttachmentLoadingError,
141
+ progress: loading_1.LoaderEventType.AttachmentLoadingProgress,
142
+ delayed: loading_1.LoaderEventType.AttachmentLoadingDelayed,
143
+ },
144
+ // Loader state deletion (non-resumable)
145
+ [extraction_1.EventType.StartDeletingLoaderState]: {
146
+ resumable: false,
147
+ done: loading_1.LoaderEventType.LoaderStateDeletionDone,
148
+ error: loading_1.LoaderEventType.LoaderStateDeletionError,
149
+ },
150
+ // Loader attachment state deletion (non-resumable)
151
+ [extraction_1.EventType.StartDeletingLoaderAttachmentState]: {
152
+ resumable: false,
153
+ done: loading_1.LoaderEventType.LoaderAttachmentStateDeletionDone,
154
+ error: loading_1.LoaderEventType.LoaderAttachmentStateDeletionError,
155
+ },
156
+ };
7
157
  /**
8
158
  * Gets the event type for the timeout error.
9
159
  * @param {EventType} eventType - The event type to get the timeout error event type for
@@ -69,7 +219,7 @@ function getTimeoutErrorEventType(eventType) {
69
219
  console.error('Event type not recognized in getTimeoutErrorEventType function: ' +
70
220
  eventType);
71
221
  return {
72
- eventType: loading_1.LoaderEventType.UnknownEventType,
222
+ eventType: constants_1.UNKNOWN_EVENT_TYPE,
73
223
  };
74
224
  }
75
225
  }
@@ -100,7 +250,7 @@ function getNoScriptEventType(eventType) {
100
250
  console.error('Event type not recognized in getNoScriptEventType function: ' +
101
251
  eventType);
102
252
  return {
103
- eventType: loading_1.LoaderEventType.UnknownEventType,
253
+ eventType: constants_1.UNKNOWN_EVENT_TYPE,
104
254
  };
105
255
  }
106
256
  }
@@ -7,7 +7,7 @@ exports.Spawn = void 0;
7
7
  exports.spawn = spawn;
8
8
  const yargs_1 = __importDefault(require("yargs"));
9
9
  const helpers_1 = require("yargs/helpers");
10
- const control_protocol_1 = require("../../common/control-protocol");
10
+ const emit_1 = require("../emit");
11
11
  const helpers_2 = require("../../common/helpers");
12
12
  const logger_1 = require("../../logger/logger");
13
13
  const extraction_1 = require("../../types/extraction");
@@ -66,13 +66,13 @@ async function spawn({ event, initialState, initialDomainMapping, options, baseW
66
66
  if (options === null || options === void 0 ? void 0 : options.isLocalDevelopment) {
67
67
  console.log('Snap-in is running in local development mode.');
68
68
  }
69
- const eventType = event.payload.event_type;
70
69
  let script = null;
71
70
  if (baseWorkerPath != null &&
72
71
  (options === null || options === void 0 ? void 0 : options.workerPathOverrides) != null &&
73
- options.workerPathOverrides[eventType] != null) {
72
+ options.workerPathOverrides[event.payload.event_type] != null) {
74
73
  script =
75
- baseWorkerPath + options.workerPathOverrides[eventType];
74
+ baseWorkerPath +
75
+ options.workerPathOverrides[event.payload.event_type];
76
76
  }
77
77
  else {
78
78
  script = getWorkerPath({
@@ -109,7 +109,7 @@ async function spawn({ event, initialState, initialDomainMapping, options, baseW
109
109
  }
110
110
  else {
111
111
  const { eventType } = (0, spawn_helpers_1.getNoScriptEventType)(event.payload.event_type);
112
- await (0, control_protocol_1.emit)({
112
+ await (0, emit_1.emit)({
113
113
  event,
114
114
  eventType,
115
115
  });
@@ -188,7 +188,7 @@ class Spawn {
188
188
  }
189
189
  // If worker sends a message that it has emitted an event, then set alreadyEmitted to true.
190
190
  if ((message === null || message === void 0 ? void 0 : message.subject) === workers_1.WorkerMessageSubject.WorkerMessageEmitted) {
191
- console.info('Worker has emitted message to the AirSync platform.');
191
+ console.info('Worker has emitted message to AirSync.');
192
192
  this.alreadyEmitted = true;
193
193
  }
194
194
  // If worker sends a failure message before exiting, capture it for use in the error event.
@@ -236,7 +236,7 @@ class Spawn {
236
236
  this.alreadyEmitted = true;
237
237
  const { eventType } = (0, spawn_helpers_1.getTimeoutErrorEventType)(this.event.payload.event_type);
238
238
  try {
239
- await (0, control_protocol_1.emit)({
239
+ await (0, emit_1.emit)({
240
240
  eventType,
241
241
  event: this.event,
242
242
  data: {
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  const { workerData } = require('node:worker_threads');
3
3
  require('ts-node').register();
4
- const { Logger } = require('../logger/logger');
5
- const { runWithUserLogContext } = require('../logger/logger.context');
4
+ const { Logger, runWithUserLogContext } = require('../logger/logger');
6
5
  console = new Logger({ event: workerData.event, options: workerData.options });
7
6
  runWithUserLogContext(() => {
8
7
  require(workerData.workerPath);
package/dist/repo/repo.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Repo = void 0;
4
4
  const constants_1 = require("../common/constants");
5
5
  const uploader_1 = require("../uploader/uploader");
6
- const logger_context_1 = require("../logger/logger.context");
6
+ const logger_1 = require("../logger/logger");
7
7
  class Repo {
8
8
  constructor({ event, itemType, normalize, onUpload, options, }) {
9
9
  this.items = [];
@@ -49,7 +49,7 @@ class Repo {
49
49
  if (this.normalize &&
50
50
  this.itemType != constants_1.AirSyncDefaultItemTypes.EXTERNAL_DOMAIN_METADATA &&
51
51
  this.itemType != constants_1.SSOR_ATTACHMENT) {
52
- recordsToPush = (0, logger_context_1.runWithUserLogContext)(() => items.map((item) => this.normalize(item)));
52
+ recordsToPush = (0, logger_1.runWithUserLogContext)(() => items.map((item) => this.normalize(item)));
53
53
  }
54
54
  else {
55
55
  recordsToPush = items;
@@ -0,0 +1,75 @@
1
+ import { InitialDomainMapping } from '../types/common';
2
+ import { AirSyncEvent } from '../types/extraction';
3
+ import { ExtractionScope } from '../types/workers';
4
+ import { SdkState, StateInterface } from './state.interfaces';
5
+ /**
6
+ * BaseState owns the state lifecycle shared by every sync mode: connector vs.
7
+ * SDK state separation, fetch/init/post against the platform, the v1->v2
8
+ * migration shim, and the snap-in-version-gated initial domain mapping install.
9
+ *
10
+ * Mode-specific subclasses (`ExtractionState`, `LoadingState`) seed the
11
+ * SDK-owned portion of the state and add mode-specific setup in their factories.
12
+ *
13
+ * @typeParam ConnectorState - the connector-owned state shape
14
+ */
15
+ export declare abstract class BaseState<ConnectorState> {
16
+ protected _connectorState: ConnectorState;
17
+ protected _sdkState: SdkState;
18
+ protected _extractionScope: ExtractionScope;
19
+ protected readonly initialSdkState: SdkState;
20
+ protected readonly event: AirSyncEvent;
21
+ private workerUrl;
22
+ private devrevToken;
23
+ private syncUnitId;
24
+ private requestId;
25
+ constructor({ event, initialState }: StateInterface<ConnectorState>, initialSdkState: SdkState);
26
+ /** Connector-owned state. This is what `adapter.state` exposes to snap-in code. */
27
+ get state(): ConnectorState;
28
+ set state(value: ConnectorState);
29
+ /** SDK-internal bookkeeping state. Never exposed to connector code. */
30
+ get sdkState(): SdkState;
31
+ set sdkState(value: SdkState);
32
+ get extractionScope(): ExtractionScope;
33
+ /**
34
+ * Installs the initial domain mapping when the snap-in version in state does
35
+ * not match the version in the event context. Shared by all modes so that a
36
+ * loading run still installs the mapping if extraction has not done so.
37
+ * @param initialDomainMapping The initial domain mapping passed to spawn
38
+ */
39
+ installInitialDomainMappingIfNeeded(initialDomainMapping?: InitialDomainMapping): Promise<void>;
40
+ /**
41
+ * Initializes the state for this adapter instance by fetching from API
42
+ * or creating an initial state if none exists (404).
43
+ *
44
+ * Reads both the v2 `{ connectorState, sdkState }` envelope and a legacy flat
45
+ * v1 blob (connector keys merged with SDK keys), migrating the latter on read.
46
+ * Always persists the v2 envelope going forward.
47
+ * @param initialState The initial connector state provided by the spawn function
48
+ */
49
+ init(initialState: ConnectorState): Promise<void>;
50
+ /**
51
+ * Normalizes a parsed on-disk state into the `{ connectorState, sdkState }`
52
+ * envelope, migrating a legacy flat v1 blob if needed.
53
+ *
54
+ * - v2 envelope (`{ connectorState, sdkState }`): used as-is.
55
+ * - v1 flat blob: SDK-owned keys (`V1_SDK_STATE_KEYS`) split into `sdkState`,
56
+ * everything else becomes connector state.
57
+ * - Malformed envelope (one side present, the other missing) fails loud.
58
+ */
59
+ private normalizeFetchedState;
60
+ /**
61
+ * Updates the state of the adapter by posting to API.
62
+ * Persists the v2 `{ connectorState, sdkState }` envelope.
63
+ * @param {object} state - The connector state to be updated
64
+ */
65
+ postState(state?: ConnectorState): Promise<void>;
66
+ /**
67
+ * Fetches the state of the adapter from API.
68
+ * @return The raw state data from API
69
+ */
70
+ fetchState(): Promise<{
71
+ state: string;
72
+ objects?: string;
73
+ }>;
74
+ }
75
+ //# sourceMappingURL=base-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-state.d.ts","sourceRoot":"","sources":["../../src/state/base-state.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAEL,QAAQ,EACR,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;GASG;AACH,8BAAsB,SAAS,CAAC,cAAc;IAC5C,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,gBAAgB,EAAE,eAAe,CAAM;IACjD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAGxB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,EACvD,eAAe,EAAE,QAAQ;IAY3B,mFAAmF;IACnF,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,cAAc,EAE9B;IAED,uEAAuE;IACvE,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAE3B;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;;;;OAKG;IACG,mCAAmC,CACvC,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;;;;;OAQG;IACG,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDvD;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAyC7B;;;;OAIG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,cAAc;IA4DtC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAqBjE"}
@@ -0,0 +1,261 @@
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.BaseState = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const node_worker_threads_1 = require("node:worker_threads");
9
+ const install_initial_domain_mapping_1 = require("./install-initial-domain-mapping");
10
+ const client_1 = require("../http/client");
11
+ const logger_1 = require("../logger/logger");
12
+ const workers_1 = require("../types/workers");
13
+ const state_interfaces_1 = require("./state.interfaces");
14
+ /**
15
+ * BaseState owns the state lifecycle shared by every sync mode: connector vs.
16
+ * SDK state separation, fetch/init/post against the platform, the v1->v2
17
+ * migration shim, and the snap-in-version-gated initial domain mapping install.
18
+ *
19
+ * Mode-specific subclasses (`ExtractionState`, `LoadingState`) seed the
20
+ * SDK-owned portion of the state and add mode-specific setup in their factories.
21
+ *
22
+ * @typeParam ConnectorState - the connector-owned state shape
23
+ */
24
+ class BaseState {
25
+ constructor({ event, initialState }, initialSdkState) {
26
+ this._extractionScope = {};
27
+ this.event = event;
28
+ this.initialSdkState = initialSdkState;
29
+ this._connectorState = initialState;
30
+ this._sdkState = Object.assign({}, initialSdkState);
31
+ this.workerUrl = event.payload.event_context.worker_data_url;
32
+ this.devrevToken = event.context.secrets.service_account_token;
33
+ this.syncUnitId = event.payload.event_context.sync_unit_id;
34
+ this.requestId = event.payload.event_context.request_id_adaas;
35
+ }
36
+ /** Connector-owned state. This is what `adapter.state` exposes to snap-in code. */
37
+ get state() {
38
+ return this._connectorState;
39
+ }
40
+ set state(value) {
41
+ this._connectorState = value;
42
+ }
43
+ /** SDK-internal bookkeeping state. Never exposed to connector code. */
44
+ get sdkState() {
45
+ return this._sdkState;
46
+ }
47
+ set sdkState(value) {
48
+ this._sdkState = value;
49
+ }
50
+ get extractionScope() {
51
+ return this._extractionScope;
52
+ }
53
+ /**
54
+ * Installs the initial domain mapping when the snap-in version in state does
55
+ * not match the version in the event context. Shared by all modes so that a
56
+ * loading run still installs the mapping if extraction has not done so.
57
+ * @param initialDomainMapping The initial domain mapping passed to spawn
58
+ */
59
+ async installInitialDomainMappingIfNeeded(initialDomainMapping) {
60
+ const snapInVersionId = this.event.context.snap_in_version_id;
61
+ const hasSnapInVersionInState = 'snapInVersionId' in this.sdkState;
62
+ const shouldUpdateIDM = !hasSnapInVersionInState ||
63
+ this.sdkState.snapInVersionId !== snapInVersionId;
64
+ if (!shouldUpdateIDM) {
65
+ console.log(`Snap-in version in state matches the version in event context "${snapInVersionId}". Skipping initial domain mapping installation.`);
66
+ return;
67
+ }
68
+ try {
69
+ console.log(`Snap-in version in state "${this.sdkState.snapInVersionId}" does not match the version in event context "${snapInVersionId}". Installing initial domain mapping.`);
70
+ if (initialDomainMapping) {
71
+ await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(this.event, initialDomainMapping);
72
+ this.sdkState.snapInVersionId = snapInVersionId;
73
+ }
74
+ else {
75
+ throw new Error('No initial domain mapping was passed to spawn function. Skipping initial domain mapping installation.');
76
+ }
77
+ }
78
+ catch (error) {
79
+ const errorMessage = `Error while installing initial domain mapping. ${(0, logger_1.serializeError)(error)}`;
80
+ console.error(errorMessage);
81
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
82
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
83
+ payload: { message: errorMessage },
84
+ });
85
+ process.exit(1);
86
+ }
87
+ }
88
+ /**
89
+ * Initializes the state for this adapter instance by fetching from API
90
+ * or creating an initial state if none exists (404).
91
+ *
92
+ * Reads both the v2 `{ connectorState, sdkState }` envelope and a legacy flat
93
+ * v1 blob (connector keys merged with SDK keys), migrating the latter on read.
94
+ * Always persists the v2 envelope going forward.
95
+ * @param initialState The initial connector state provided by the spawn function
96
+ */
97
+ async init(initialState) {
98
+ var _a;
99
+ try {
100
+ const { state: stringifiedState, objects } = await this.fetchState();
101
+ if (!stringifiedState) {
102
+ throw new Error('No state found in response.');
103
+ }
104
+ let parsed;
105
+ try {
106
+ parsed = JSON.parse(stringifiedState);
107
+ }
108
+ catch (error) {
109
+ throw new Error(`Failed to parse state. ${error}`);
110
+ }
111
+ const { connectorState, sdkState } = this.normalizeFetchedState(parsed);
112
+ this.state = connectorState;
113
+ this.sdkState = sdkState;
114
+ console.log('State fetched successfully. Current state', {
115
+ connectorState: (0, logger_1.getPrintableState)(this.state),
116
+ sdkState: (0, logger_1.getPrintableState)(this.sdkState),
117
+ });
118
+ if (objects) {
119
+ try {
120
+ this._extractionScope = JSON.parse(objects);
121
+ }
122
+ catch (error) {
123
+ console.warn(`Failed to parse extractionScope. ${error}`);
124
+ }
125
+ }
126
+ }
127
+ catch (error) {
128
+ if (axios_1.default.isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
129
+ console.log('State not found. Initializing state with initial state.');
130
+ this.state = initialState;
131
+ this.sdkState = Object.assign({}, this.initialSdkState);
132
+ await this.postState();
133
+ }
134
+ else {
135
+ const errorMessage = `Failed to init state. ${(0, logger_1.serializeError)(error)}`;
136
+ console.error(errorMessage);
137
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
138
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
139
+ payload: { message: errorMessage },
140
+ });
141
+ process.exit(1);
142
+ }
143
+ }
144
+ }
145
+ /**
146
+ * Normalizes a parsed on-disk state into the `{ connectorState, sdkState }`
147
+ * envelope, migrating a legacy flat v1 blob if needed.
148
+ *
149
+ * - v2 envelope (`{ connectorState, sdkState }`): used as-is.
150
+ * - v1 flat blob: SDK-owned keys (`V1_SDK_STATE_KEYS`) split into `sdkState`,
151
+ * everything else becomes connector state.
152
+ * - Malformed envelope (one side present, the other missing) fails loud.
153
+ */
154
+ normalizeFetchedState(parsed) {
155
+ if (parsed === null || typeof parsed !== 'object') {
156
+ throw new Error('Fetched state is not a JSON object.');
157
+ }
158
+ const record = parsed;
159
+ const hasConnector = 'connectorState' in record;
160
+ const hasSdk = 'sdkState' in record;
161
+ if (hasConnector || hasSdk) {
162
+ if (!hasConnector || !hasSdk) {
163
+ throw new Error('Malformed state envelope: expected both "connectorState" and "sdkState".');
164
+ }
165
+ return {
166
+ connectorState: record.connectorState,
167
+ sdkState: Object.assign(Object.assign({}, this.initialSdkState), record.sdkState),
168
+ };
169
+ }
170
+ // Legacy flat v1 blob: split known SDK keys out of the connector state.
171
+ const connectorState = {};
172
+ const sdkState = {};
173
+ for (const [key, value] of Object.entries(record)) {
174
+ if (state_interfaces_1.V1_SDK_STATE_KEYS.has(key)) {
175
+ sdkState[key] = value;
176
+ }
177
+ else {
178
+ connectorState[key] = value;
179
+ }
180
+ }
181
+ return {
182
+ connectorState: connectorState,
183
+ sdkState: Object.assign(Object.assign({}, this.initialSdkState), sdkState),
184
+ };
185
+ }
186
+ /**
187
+ * Updates the state of the adapter by posting to API.
188
+ * Persists the v2 `{ connectorState, sdkState }` envelope.
189
+ * @param {object} state - The connector state to be updated
190
+ */
191
+ async postState(state) {
192
+ const url = this.workerUrl + '.update';
193
+ this.state = state || this.state;
194
+ const envelope = {
195
+ connectorState: this.state,
196
+ sdkState: this.sdkState,
197
+ };
198
+ let stringifiedState;
199
+ try {
200
+ stringifiedState = JSON.stringify(envelope);
201
+ }
202
+ catch (error) {
203
+ const errorMessage = `Failed to stringify state. ${(0, logger_1.serializeError)(error)}`;
204
+ console.error(errorMessage);
205
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
206
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
207
+ payload: { message: errorMessage },
208
+ });
209
+ process.exit(1);
210
+ }
211
+ try {
212
+ await client_1.axiosClient.post(url, {
213
+ state: stringifiedState,
214
+ }, {
215
+ headers: {
216
+ Authorization: this.devrevToken,
217
+ },
218
+ params: {
219
+ sync_unit: this.syncUnitId,
220
+ request_id: this.requestId,
221
+ },
222
+ });
223
+ console.log('State updated successfully to', {
224
+ connectorState: (0, logger_1.getPrintableState)(this.state),
225
+ sdkState: (0, logger_1.getPrintableState)(this.sdkState),
226
+ });
227
+ }
228
+ catch (error) {
229
+ const errorMessage = `Failed to update the state. ${(0, logger_1.serializeError)(error)}`;
230
+ console.error(errorMessage);
231
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
232
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
233
+ payload: { message: errorMessage },
234
+ });
235
+ process.exit(1);
236
+ }
237
+ }
238
+ /**
239
+ * Fetches the state of the adapter from API.
240
+ * @return The raw state data from API
241
+ */
242
+ async fetchState() {
243
+ var _a, _b;
244
+ console.log(`Fetching state with sync unit id ${this.syncUnitId} and request id ${this.requestId}.`);
245
+ const url = this.workerUrl + '.get';
246
+ const response = await client_1.axiosClient.get(url, {
247
+ headers: {
248
+ Authorization: this.devrevToken,
249
+ },
250
+ params: {
251
+ sync_unit: this.syncUnitId,
252
+ request_id: this.requestId,
253
+ },
254
+ });
255
+ return {
256
+ state: (_a = response.data) === null || _a === void 0 ? void 0 : _a.state,
257
+ objects: (_b = response.data) === null || _b === void 0 ? void 0 : _b.objects,
258
+ };
259
+ }
260
+ }
261
+ exports.BaseState = BaseState;