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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +7 -21
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +7 -1
  3. package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
  4. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +4 -3
  5. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
  6. package/dist/attachments-streaming/attachments-streaming-pool.js +70 -33
  7. package/dist/common/constants.d.ts +15 -12
  8. package/dist/common/constants.d.ts.map +1 -1
  9. package/dist/common/constants.js +20 -34
  10. package/dist/common/helpers.d.ts +3 -27
  11. package/dist/common/helpers.d.ts.map +1 -1
  12. package/dist/common/helpers.js +6 -36
  13. package/dist/http/{axios-client-internal.d.ts → client.d.ts} +1 -1
  14. package/dist/http/client.d.ts.map +1 -0
  15. package/dist/http/{axios-client-internal.js → client.js} +7 -4
  16. package/dist/http/errors.d.ts +8 -0
  17. package/dist/http/errors.d.ts.map +1 -0
  18. package/dist/http/errors.js +31 -0
  19. package/dist/index.d.ts +30 -12
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +47 -28
  22. package/dist/logger/logger.d.ts +13 -70
  23. package/dist/logger/logger.d.ts.map +1 -1
  24. package/dist/logger/logger.interfaces.d.ts +4 -7
  25. package/dist/logger/logger.interfaces.d.ts.map +1 -1
  26. package/dist/logger/logger.js +67 -92
  27. package/dist/mappers/mappers.d.ts +10 -43
  28. package/dist/mappers/mappers.d.ts.map +1 -1
  29. package/dist/mappers/mappers.interfaces.d.ts +173 -0
  30. package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
  31. package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +1 -10
  32. package/dist/mappers/mappers.js +32 -46
  33. package/dist/multithreading/adapters/base-adapter.d.ts +39 -0
  34. package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
  35. package/dist/multithreading/adapters/base-adapter.js +212 -0
  36. package/dist/multithreading/adapters/extraction-adapter.d.ts +49 -0
  37. package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
  38. package/dist/multithreading/adapters/extraction-adapter.js +375 -0
  39. package/dist/multithreading/adapters/loading-adapter.d.ts +26 -0
  40. package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
  41. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts +12 -0
  42. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
  43. package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +2 -12
  44. package/dist/multithreading/adapters/loading-adapter.js +279 -0
  45. package/dist/multithreading/emit.d.ts +11 -0
  46. package/dist/multithreading/emit.d.ts.map +1 -0
  47. package/dist/multithreading/emit.js +25 -0
  48. package/dist/multithreading/process-task.d.ts +6 -1
  49. package/dist/multithreading/process-task.d.ts.map +1 -1
  50. package/dist/multithreading/process-task.js +124 -51
  51. package/dist/multithreading/spawn/spawn.d.ts +11 -11
  52. package/dist/multithreading/spawn/spawn.d.ts.map +1 -1
  53. package/dist/multithreading/spawn/spawn.helpers.d.ts +12 -11
  54. package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
  55. package/dist/multithreading/spawn/spawn.helpers.js +142 -77
  56. package/dist/multithreading/spawn/spawn.js +74 -75
  57. package/dist/multithreading/worker.js +16 -5
  58. package/dist/repo/repo.d.ts +14 -5
  59. package/dist/repo/repo.d.ts.map +1 -1
  60. package/dist/repo/repo.helpers.d.ts +6 -0
  61. package/dist/repo/repo.helpers.d.ts.map +1 -0
  62. package/dist/repo/repo.helpers.js +16 -0
  63. package/dist/repo/repo.interfaces.d.ts +11 -20
  64. package/dist/repo/repo.interfaces.d.ts.map +1 -1
  65. package/dist/repo/repo.js +36 -22
  66. package/dist/state/base-state.d.ts +58 -0
  67. package/dist/state/base-state.d.ts.map +1 -0
  68. package/dist/state/base-state.js +242 -0
  69. package/dist/state/extraction-state.d.ts +14 -0
  70. package/dist/state/extraction-state.d.ts.map +1 -0
  71. package/dist/state/extraction-state.js +140 -0
  72. package/dist/state/install-initial-domain-mapping.d.ts +4 -0
  73. package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
  74. package/dist/{common → state}/install-initial-domain-mapping.js +5 -7
  75. package/dist/state/loading-state.d.ts +8 -0
  76. package/dist/state/loading-state.d.ts.map +1 -0
  77. package/dist/state/loading-state.js +29 -0
  78. package/dist/state/state.d.ts +3 -29
  79. package/dist/state/state.d.ts.map +1 -1
  80. package/dist/state/state.interfaces.d.ts +36 -10
  81. package/dist/state/state.interfaces.d.ts.map +1 -1
  82. package/dist/state/state.interfaces.js +17 -1
  83. package/dist/state/state.js +9 -164
  84. package/dist/state/time-value-resolver.d.ts +17 -0
  85. package/dist/state/time-value-resolver.d.ts.map +1 -0
  86. package/dist/state/time-value-resolver.js +110 -0
  87. package/dist/testing/mock-event.d.ts +10 -0
  88. package/dist/testing/mock-event.d.ts.map +1 -0
  89. package/dist/testing/mock-event.js +96 -0
  90. package/dist/testing/mock-server.d.ts +31 -0
  91. package/dist/testing/mock-server.d.ts.map +1 -0
  92. package/dist/testing/mock-server.interfaces.d.ts +54 -0
  93. package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
  94. package/dist/testing/mock-server.interfaces.js +4 -0
  95. package/dist/testing/mock-server.js +297 -0
  96. package/dist/testing/test-adapters.d.ts +22 -0
  97. package/dist/testing/test-adapters.d.ts.map +1 -0
  98. package/dist/testing/test-adapters.js +32 -0
  99. package/dist/types/common.d.ts +4 -37
  100. package/dist/types/common.d.ts.map +1 -1
  101. package/dist/types/common.js +2 -17
  102. package/dist/types/errors.d.ts +15 -0
  103. package/dist/types/errors.d.ts.map +1 -0
  104. package/dist/types/errors.js +28 -0
  105. package/dist/types/external-domain-metadata.d.ts +197 -0
  106. package/dist/types/external-domain-metadata.d.ts.map +1 -0
  107. package/dist/types/extraction.d.ts +135 -278
  108. package/dist/types/extraction.d.ts.map +1 -1
  109. package/dist/types/extraction.js +46 -133
  110. package/dist/types/loading.d.ts +15 -55
  111. package/dist/types/loading.d.ts.map +1 -1
  112. package/dist/types/loading.js +1 -23
  113. package/dist/types/workers.d.ts +70 -103
  114. package/dist/types/workers.d.ts.map +1 -1
  115. package/dist/types/workers.js +1 -6
  116. package/dist/uploader/uploader.d.ts +10 -61
  117. package/dist/uploader/uploader.d.ts.map +1 -1
  118. package/dist/uploader/uploader.helpers.d.ts +7 -27
  119. package/dist/uploader/uploader.helpers.d.ts.map +1 -1
  120. package/dist/uploader/uploader.helpers.js +80 -30
  121. package/dist/uploader/uploader.interfaces.d.ts +19 -54
  122. package/dist/uploader/uploader.interfaces.d.ts.map +1 -1
  123. package/dist/uploader/uploader.interfaces.js +8 -0
  124. package/dist/uploader/uploader.js +72 -124
  125. package/docs/MIGRATION.md +696 -0
  126. package/package.json +37 -20
  127. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
  128. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
  129. package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -267
  130. package/dist/common/control-protocol.d.ts +0 -10
  131. package/dist/common/control-protocol.d.ts.map +0 -1
  132. package/dist/common/control-protocol.js +0 -31
  133. package/dist/common/errors.d.ts +0 -6
  134. package/dist/common/errors.d.ts.map +0 -1
  135. package/dist/common/errors.js +0 -4
  136. package/dist/common/event-type-translation.d.ts +0 -24
  137. package/dist/common/event-type-translation.d.ts.map +0 -1
  138. package/dist/common/event-type-translation.js +0 -117
  139. package/dist/common/install-initial-domain-mapping.d.ts +0 -4
  140. package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
  141. package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
  142. package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
  143. package/dist/common/install-initial-domain-mapping.test.js +0 -207
  144. package/dist/deprecated/adapter/index.d.ts +0 -62
  145. package/dist/deprecated/adapter/index.d.ts.map +0 -1
  146. package/dist/deprecated/adapter/index.js +0 -151
  147. package/dist/deprecated/common/helpers.d.ts +0 -7
  148. package/dist/deprecated/common/helpers.d.ts.map +0 -1
  149. package/dist/deprecated/common/helpers.js +0 -47
  150. package/dist/deprecated/demo-extractor/external_domain_metadata.json +0 -38
  151. package/dist/deprecated/demo-extractor/index.d.ts +0 -18
  152. package/dist/deprecated/demo-extractor/index.d.ts.map +0 -1
  153. package/dist/deprecated/demo-extractor/index.js +0 -161
  154. package/dist/deprecated/http/client.d.ts +0 -22
  155. package/dist/deprecated/http/client.d.ts.map +0 -1
  156. package/dist/deprecated/http/client.js +0 -161
  157. package/dist/deprecated/uploader/index.d.ts +0 -35
  158. package/dist/deprecated/uploader/index.d.ts.map +0 -1
  159. package/dist/deprecated/uploader/index.js +0 -161
  160. package/dist/http/axios-client-internal.d.ts.map +0 -1
  161. package/dist/http/axios-client-internal.test.d.ts +0 -2
  162. package/dist/http/axios-client-internal.test.d.ts.map +0 -1
  163. package/dist/http/axios-client-internal.test.js +0 -154
  164. package/dist/http/axios-client.d.ts +0 -27
  165. package/dist/http/axios-client.d.ts.map +0 -1
  166. package/dist/http/axios-client.js +0 -57
  167. package/dist/http/constants.d.ts +0 -4
  168. package/dist/http/constants.d.ts.map +0 -1
  169. package/dist/http/constants.js +0 -6
  170. package/dist/http/index.d.ts +0 -3
  171. package/dist/http/index.d.ts.map +0 -1
  172. package/dist/http/index.js +0 -18
  173. package/dist/http/types.d.ts +0 -17
  174. package/dist/http/types.d.ts.map +0 -1
  175. package/dist/logger/logger.constants.d.ts +0 -6
  176. package/dist/logger/logger.constants.d.ts.map +0 -1
  177. package/dist/logger/logger.constants.js +0 -13
  178. package/dist/logger/logger.context.d.ts +0 -58
  179. package/dist/logger/logger.context.d.ts.map +0 -1
  180. package/dist/logger/logger.context.js +0 -86
  181. package/dist/logger/logger.test.d.ts +0 -2
  182. package/dist/logger/logger.test.d.ts.map +0 -1
  183. package/dist/logger/logger.test.js +0 -490
  184. package/dist/mappers/mappers.interface.d.ts +0 -294
  185. package/dist/mappers/mappers.interface.d.ts.map +0 -1
  186. package/dist/mappers/mappers.test.d.ts +0 -2
  187. package/dist/mappers/mappers.test.d.ts.map +0 -1
  188. package/dist/mappers/mappers.test.js +0 -107
  189. package/dist/multithreading/create-worker.test.d.ts +0 -2
  190. package/dist/multithreading/create-worker.test.d.ts.map +0 -1
  191. package/dist/multithreading/create-worker.test.js +0 -89
  192. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
  193. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
  194. package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
  195. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
  196. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
  197. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -127
  198. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
  199. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
  200. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +0 -22
  201. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
  202. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
  203. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
  204. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
  205. package/dist/multithreading/worker-adapter/worker-adapter.js +0 -747
  206. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
  207. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
  208. package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
  209. package/dist/repo/repo.test.d.ts +0 -2
  210. package/dist/repo/repo.test.d.ts.map +0 -1
  211. package/dist/repo/repo.test.js +0 -131
  212. package/dist/state/state.test.d.ts +0 -2
  213. package/dist/state/state.test.d.ts.map +0 -1
  214. package/dist/state/state.test.js +0 -224
  215. package/dist/types/extraction.test.d.ts +0 -2
  216. package/dist/types/extraction.test.d.ts.map +0 -1
  217. package/dist/types/extraction.test.js +0 -70
  218. package/dist/types/index.d.ts +0 -9
  219. package/dist/types/index.d.ts.map +0 -1
  220. package/dist/types/index.js +0 -18
  221. package/dist/uploader/uploader.helpers.test.d.ts +0 -2
  222. package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
  223. package/dist/uploader/uploader.helpers.test.js +0 -267
  224. package/dist/uploader/uploader.test.d.ts +0 -2
  225. package/dist/uploader/uploader.test.d.ts.map +0 -1
  226. package/dist/uploader/uploader.test.js +0 -589
  227. /package/dist/{http/types.js → types/external-domain-metadata.js} +0 -0
@@ -1,93 +1,158 @@
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");
7
9
  /**
8
- * Gets the event type for the timeout error.
9
- * @param {EventType} eventType - The event type to get the timeout error event type for
10
- * @returns {ExtractorEventType | LoaderEventType} The event type for the timeout error
10
+ * Resolves the outgoing event type to emit for an incoming event type and a
11
+ * {@link TaskResult} status. Resumable phases honor every status
12
+ * (success/progress/delay/error -> *_DONE/*_PROGRESS/*_DELAYED/*_ERROR);
13
+ * non-resumable phases only have done/error, so `progress`/`delay` there is
14
+ * illegal and maps to the phase's error event.
11
15
  */
16
+ function getEventTypeForResult(eventType, status) {
17
+ const phase = EVENT_PHASE_MAP[eventType];
18
+ if (!phase) {
19
+ console.error('Event type not recognized in getEventTypeForResult function: ' +
20
+ eventType);
21
+ return {
22
+ eventType: constants_1.UNKNOWN_EVENT_TYPE,
23
+ illegal: true,
24
+ };
25
+ }
26
+ // Non-resumable phases only define done/error events.
27
+ if (!phase.resumable) {
28
+ if (status === 'success') {
29
+ return { eventType: phase.done, illegal: false };
30
+ }
31
+ // progress/delay are illegal here; collapse them (and error) to the error event.
32
+ return { eventType: phase.error, illegal: status !== 'error' };
33
+ }
34
+ switch (status) {
35
+ case 'success':
36
+ return { eventType: phase.done, illegal: false };
37
+ case 'progress':
38
+ return { eventType: phase.progress, illegal: false };
39
+ case 'delay':
40
+ return { eventType: phase.delayed, illegal: false };
41
+ case 'error':
42
+ return { eventType: phase.error, illegal: false };
43
+ }
44
+ }
45
+ /** Per-phase outgoing event types, keyed by the incoming {@link EventType}. */
46
+ const EVENT_PHASE_MAP = {
47
+ [extraction_1.EventType.StartExtractingExternalSyncUnits]: {
48
+ resumable: false,
49
+ done: extraction_1.ExtractorEventType.ExternalSyncUnitExtractionDone,
50
+ error: extraction_1.ExtractorEventType.ExternalSyncUnitExtractionError,
51
+ },
52
+ [extraction_1.EventType.StartExtractingMetadata]: {
53
+ resumable: true,
54
+ done: extraction_1.ExtractorEventType.MetadataExtractionDone,
55
+ error: extraction_1.ExtractorEventType.MetadataExtractionError,
56
+ progress: extraction_1.ExtractorEventType.MetadataExtractionProgress,
57
+ delayed: extraction_1.ExtractorEventType.MetadataExtractionDelayed,
58
+ },
59
+ [extraction_1.EventType.ContinueExtractingMetadata]: {
60
+ resumable: true,
61
+ done: extraction_1.ExtractorEventType.MetadataExtractionDone,
62
+ error: extraction_1.ExtractorEventType.MetadataExtractionError,
63
+ progress: extraction_1.ExtractorEventType.MetadataExtractionProgress,
64
+ delayed: extraction_1.ExtractorEventType.MetadataExtractionDelayed,
65
+ },
66
+ [extraction_1.EventType.StartExtractingData]: {
67
+ resumable: true,
68
+ done: extraction_1.ExtractorEventType.DataExtractionDone,
69
+ error: extraction_1.ExtractorEventType.DataExtractionError,
70
+ progress: extraction_1.ExtractorEventType.DataExtractionProgress,
71
+ delayed: extraction_1.ExtractorEventType.DataExtractionDelayed,
72
+ },
73
+ [extraction_1.EventType.ContinueExtractingData]: {
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.StartDeletingExtractorState]: {
81
+ resumable: false,
82
+ done: extraction_1.ExtractorEventType.ExtractorStateDeletionDone,
83
+ error: extraction_1.ExtractorEventType.ExtractorStateDeletionError,
84
+ },
85
+ [extraction_1.EventType.StartExtractingAttachments]: {
86
+ resumable: true,
87
+ done: extraction_1.ExtractorEventType.AttachmentExtractionDone,
88
+ error: extraction_1.ExtractorEventType.AttachmentExtractionError,
89
+ progress: extraction_1.ExtractorEventType.AttachmentExtractionProgress,
90
+ delayed: extraction_1.ExtractorEventType.AttachmentExtractionDelayed,
91
+ },
92
+ [extraction_1.EventType.ContinueExtractingAttachments]: {
93
+ resumable: true,
94
+ done: extraction_1.ExtractorEventType.AttachmentExtractionDone,
95
+ error: extraction_1.ExtractorEventType.AttachmentExtractionError,
96
+ progress: extraction_1.ExtractorEventType.AttachmentExtractionProgress,
97
+ delayed: extraction_1.ExtractorEventType.AttachmentExtractionDelayed,
98
+ },
99
+ [extraction_1.EventType.StartDeletingExtractorAttachmentsState]: {
100
+ resumable: false,
101
+ done: extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionDone,
102
+ error: extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionError,
103
+ },
104
+ [extraction_1.EventType.StartLoadingData]: {
105
+ resumable: true,
106
+ done: loading_1.LoaderEventType.DataLoadingDone,
107
+ error: loading_1.LoaderEventType.DataLoadingError,
108
+ progress: loading_1.LoaderEventType.DataLoadingProgress,
109
+ delayed: loading_1.LoaderEventType.DataLoadingDelayed,
110
+ },
111
+ [extraction_1.EventType.ContinueLoadingData]: {
112
+ resumable: true,
113
+ done: loading_1.LoaderEventType.DataLoadingDone,
114
+ error: loading_1.LoaderEventType.DataLoadingError,
115
+ progress: loading_1.LoaderEventType.DataLoadingProgress,
116
+ delayed: loading_1.LoaderEventType.DataLoadingDelayed,
117
+ },
118
+ [extraction_1.EventType.StartLoadingAttachments]: {
119
+ resumable: true,
120
+ done: loading_1.LoaderEventType.AttachmentLoadingDone,
121
+ error: loading_1.LoaderEventType.AttachmentLoadingError,
122
+ progress: loading_1.LoaderEventType.AttachmentLoadingProgress,
123
+ delayed: loading_1.LoaderEventType.AttachmentLoadingDelayed,
124
+ },
125
+ [extraction_1.EventType.ContinueLoadingAttachments]: {
126
+ resumable: true,
127
+ done: loading_1.LoaderEventType.AttachmentLoadingDone,
128
+ error: loading_1.LoaderEventType.AttachmentLoadingError,
129
+ progress: loading_1.LoaderEventType.AttachmentLoadingProgress,
130
+ delayed: loading_1.LoaderEventType.AttachmentLoadingDelayed,
131
+ },
132
+ [extraction_1.EventType.StartDeletingLoaderState]: {
133
+ resumable: false,
134
+ done: loading_1.LoaderEventType.LoaderStateDeletionDone,
135
+ error: loading_1.LoaderEventType.LoaderStateDeletionError,
136
+ },
137
+ [extraction_1.EventType.StartDeletingLoaderAttachmentState]: {
138
+ resumable: false,
139
+ done: loading_1.LoaderEventType.LoaderAttachmentStateDeletionDone,
140
+ error: loading_1.LoaderEventType.LoaderAttachmentStateDeletionError,
141
+ },
142
+ };
12
143
  function getTimeoutErrorEventType(eventType) {
144
+ return { eventType: getEventTypeForResult(eventType, 'error').eventType };
145
+ }
146
+ /** Event type to emit when no worker script exists for the incoming event. */
147
+ function getNoScriptEventType(eventType) {
13
148
  switch (eventType) {
14
- // Metadata extraction (handles both old and new enum members)
149
+ // A missing metadata worker is a misconfigured connector, so report it as a
150
+ // phase error rather than an unknown event type.
15
151
  case extraction_1.EventType.StartExtractingMetadata:
16
- case extraction_1.EventType.ExtractionMetadataStart:
152
+ case extraction_1.EventType.ContinueExtractingMetadata:
17
153
  return {
18
154
  eventType: extraction_1.ExtractorEventType.MetadataExtractionError,
19
155
  };
20
- // Data extraction (handles both old and new enum members)
21
- case extraction_1.EventType.StartExtractingData:
22
- case extraction_1.EventType.ContinueExtractingData:
23
- case extraction_1.EventType.ExtractionDataStart:
24
- case extraction_1.EventType.ExtractionDataContinue:
25
- return {
26
- eventType: extraction_1.ExtractorEventType.DataExtractionError,
27
- };
28
- // Data deletion (handles both old and new enum members)
29
- case extraction_1.EventType.StartDeletingExtractorState:
30
- case extraction_1.EventType.ExtractionDataDelete:
31
- return {
32
- eventType: extraction_1.ExtractorEventType.ExtractorStateDeletionError,
33
- };
34
- // Attachments extraction (handles both old and new enum members)
35
- case extraction_1.EventType.StartExtractingAttachments:
36
- case extraction_1.EventType.ContinueExtractingAttachments:
37
- case extraction_1.EventType.ExtractionAttachmentsStart:
38
- case extraction_1.EventType.ExtractionAttachmentsContinue:
39
- return {
40
- eventType: extraction_1.ExtractorEventType.AttachmentExtractionError,
41
- };
42
- // Attachments deletion (handles both old and new enum members)
43
- case extraction_1.EventType.StartDeletingExtractorAttachmentsState:
44
- case extraction_1.EventType.ExtractionAttachmentsDelete:
45
- return {
46
- eventType: extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionError,
47
- };
48
- // External sync units (handles both old and new enum members)
49
- case extraction_1.EventType.StartExtractingExternalSyncUnits:
50
- case extraction_1.EventType.ExtractionExternalSyncUnitsStart:
51
- return {
52
- eventType: extraction_1.ExtractorEventType.ExternalSyncUnitExtractionError,
53
- };
54
- // Loading data
55
- case extraction_1.EventType.StartLoadingData:
56
- case extraction_1.EventType.ContinueLoadingData:
57
- return {
58
- eventType: loading_1.LoaderEventType.DataLoadingError,
59
- };
60
- // Deleting loader state
61
- case extraction_1.EventType.StartDeletingLoaderState:
62
- return {
63
- eventType: loading_1.LoaderEventType.LoaderStateDeletionError,
64
- };
65
- // Loading attachments
66
- case extraction_1.EventType.StartLoadingAttachments:
67
- case extraction_1.EventType.ContinueLoadingAttachments:
68
- return {
69
- eventType: loading_1.LoaderEventType.AttachmentLoadingError,
70
- };
71
- // Deleting loader attachment state
72
- case extraction_1.EventType.StartDeletingLoaderAttachmentState:
73
- return {
74
- eventType: loading_1.LoaderEventType.LoaderAttachmentStateDeletionError,
75
- };
76
- default:
77
- console.error('Event type not recognized in getTimeoutErrorEventType function: ' +
78
- eventType);
79
- return {
80
- eventType: loading_1.LoaderEventType.UnknownEventType,
81
- };
82
- }
83
- }
84
- /**
85
- * Gets the event type for the no script error.
86
- * @param {EventType} eventType - The event type to get the no script error event type for
87
- * @returns {ExtractorEventType | LoaderEventType} The event type for the no script error
88
- */
89
- function getNoScriptEventType(eventType) {
90
- switch (eventType) {
91
156
  case extraction_1.EventType.StartDeletingExtractorState:
92
157
  return {
93
158
  eventType: extraction_1.ExtractorEventType.ExtractorStateDeletionDone,
@@ -108,7 +173,7 @@ function getNoScriptEventType(eventType) {
108
173
  console.error('Event type not recognized in getNoScriptEventType function: ' +
109
174
  eventType);
110
175
  return {
111
- eventType: loading_1.LoaderEventType.UnknownEventType,
176
+ eventType: constants_1.UNKNOWN_EVENT_TYPE,
112
177
  };
113
178
  }
114
179
  }
@@ -1,21 +1,36 @@
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
3
  exports.Spawn = void 0;
4
+ exports.isLocalDevelopment = isLocalDevelopment;
7
5
  exports.spawn = spawn;
8
- const yargs_1 = __importDefault(require("yargs"));
9
- const helpers_1 = require("yargs/helpers");
10
- const control_protocol_1 = require("../../common/control-protocol");
11
- const event_type_translation_1 = require("../../common/event-type-translation");
12
- const helpers_2 = require("../../common/helpers");
6
+ const constants_1 = require("../../common/constants");
7
+ const helpers_1 = require("../../common/helpers");
13
8
  const logger_1 = require("../../logger/logger");
14
9
  const extraction_1 = require("../../types/extraction");
15
10
  const workers_1 = require("../../types/workers");
16
- const constants_1 = require("../../common/constants");
17
11
  const create_worker_1 = require("../create-worker");
12
+ const emit_1 = require("../emit");
18
13
  const spawn_helpers_1 = require("./spawn.helpers");
14
+ const LAMBDA_ENV_MARKERS = [
15
+ 'AWS_LAMBDA_FUNCTION_NAME',
16
+ 'AWS_EXECUTION_ENV',
17
+ 'LAMBDA_TASK_ROOT',
18
+ ];
19
+ /**
20
+ * Local mode is opt-in through AIRSYNC_LOCAL_DEVELOPMENT only, and refused on
21
+ * Lambda so a stray flag can never change production behavior.
22
+ */
23
+ function isLocalDevelopment(env = process.env) {
24
+ if (env.AIRSYNC_LOCAL_DEVELOPMENT !== '1') {
25
+ return false;
26
+ }
27
+ const marker = LAMBDA_ENV_MARKERS.find((name) => env[name]);
28
+ if (marker) {
29
+ console.warn(`Ignoring AIRSYNC_LOCAL_DEVELOPMENT because ${marker} is set (running on Lambda).`);
30
+ return false;
31
+ }
32
+ return true;
33
+ }
19
34
  function getWorkerPath({ event, workerBasePath, }) {
20
35
  let path = null;
21
36
  switch (event.payload.event_type) {
@@ -23,6 +38,7 @@ function getWorkerPath({ event, workerBasePath, }) {
23
38
  path = '/workers/external-sync-units-extraction';
24
39
  break;
25
40
  case extraction_1.EventType.StartExtractingMetadata:
41
+ case extraction_1.EventType.ContinueExtractingMetadata:
26
42
  path = '/workers/metadata-extraction';
27
43
  break;
28
44
  case extraction_1.EventType.StartExtractingData:
@@ -45,55 +61,22 @@ function getWorkerPath({ event, workerBasePath, }) {
45
61
  return path ? workerBasePath + path : null;
46
62
  }
47
63
  /**
48
- * Creates a new instance of Spawn class.
49
- * Spawn class is responsible for spawning a new worker thread and managing the lifecycle of the worker.
50
- * The class provides utilities to emit control events to the platform and exit the worker gracefully.
51
- * In case of lambda timeout, the class emits a lambda timeout event to the platform.
52
- * @param {SpawnFactoryInterface} options - The options to create a new instance of Spawn class
53
- * @param {AirdropEvent} options.event - The event object received from the platform
54
- * @param {object} options.initialState - The initial state of the adapter
55
- * @param {string} [options.workerPath] Remove getWorkerPath function and use baseWorkerPath: __dirname instead of workerPath
56
- * @param {string} [options.baseWorkerPath] - The base path for the worker files, usually `__dirname`
57
- * @returns {Promise<Spawn>} - A new instance of Spawn class
64
+ * Spawns a worker thread for the event and manages its lifecycle (control
65
+ * events, graceful exit, lambda timeout handling). Resolves when the worker
66
+ * run is fully finished.
58
67
  */
59
- async function spawn({ event, initialState, workerPath, initialDomainMapping, options, baseWorkerPath, }) {
60
- // Translate incoming event type for backwards compatibility. This allows the
61
- // SDK to accept both old and new event type formats. Then update the event with the translated event type.
62
- const originalEventType = event.payload.event_type;
63
- const translatedEventType = (0, event_type_translation_1.translateIncomingEventType)(event.payload.event_type);
64
- event.payload.event_type = translatedEventType;
65
- // Read the command line arguments to check if the local flag is passed.
66
- const argv = await (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)).argv;
67
- if (argv._.includes('local')) {
68
- options = Object.assign(Object.assign({}, (options || {})), { isLocalDevelopment: true });
69
- }
68
+ async function spawn({ event, initialState, initialDomainMapping, options: spawnOptions, baseWorkerPath, workerPathOverrides, }) {
69
+ const options = Object.assign(Object.assign({}, spawnOptions), { isLocalDevelopment: isLocalDevelopment() });
70
70
  const originalConsole = console;
71
71
  // eslint-disable-next-line no-global-assign
72
72
  console = new logger_1.Logger({ event, options });
73
- if (translatedEventType !== originalEventType) {
74
- console.log(`Event type translated from ${originalEventType} to ${translatedEventType}.`);
75
- }
76
73
  if (options === null || options === void 0 ? void 0 : options.isLocalDevelopment) {
77
74
  console.log('Snap-in is running in local development mode.');
78
75
  }
79
- let script = null;
80
- if (workerPath != null) {
81
- script = workerPath;
82
- }
83
- else if (baseWorkerPath != null &&
84
- (options === null || options === void 0 ? void 0 : options.workerPathOverrides) != null &&
85
- options.workerPathOverrides[translatedEventType] != null) {
86
- script =
87
- baseWorkerPath +
88
- options.workerPathOverrides[translatedEventType];
89
- }
90
- else {
91
- script = getWorkerPath({
92
- event,
93
- workerBasePath: baseWorkerPath !== null && baseWorkerPath !== void 0 ? baseWorkerPath : __dirname,
94
- });
95
- }
96
- // If a script is found for the event type, spawn a new worker.
76
+ const override = workerPathOverrides === null || workerPathOverrides === void 0 ? void 0 : workerPathOverrides[event.payload.event_type];
77
+ const script = override != null
78
+ ? baseWorkerPath + override
79
+ : getWorkerPath({ event, workerBasePath: baseWorkerPath });
97
80
  if (script) {
98
81
  try {
99
82
  const worker = await (0, create_worker_1.createWorker)({
@@ -122,7 +105,7 @@ async function spawn({ event, initialState, workerPath, initialDomainMapping, op
122
105
  }
123
106
  else {
124
107
  const { eventType } = (0, spawn_helpers_1.getNoScriptEventType)(event.payload.event_type);
125
- await (0, control_protocol_1.emit)({
108
+ await (0, emit_1.emit)({
126
109
  event,
127
110
  eventType,
128
111
  });
@@ -137,14 +120,16 @@ class Spawn {
137
120
  this.originalConsole = originalConsole || console;
138
121
  this.logger = console;
139
122
  this.alreadyEmitted = false;
123
+ this.softTimeoutSent = false;
140
124
  this.event = event;
141
125
  this.lambdaTimeout = (options === null || options === void 0 ? void 0 : options.timeout)
142
126
  ? Math.min(options.timeout, this.defaultLambdaTimeout)
143
127
  : this.defaultLambdaTimeout;
144
128
  this.resolve = resolve;
145
- // If soft timeout is reached, send a message to the worker to gracefully exit.
129
+ // Soft timeout: ask the worker to gracefully exit.
146
130
  this.softTimeoutTimer = setTimeout(() => void (async () => {
147
131
  console.log('SOFT TIMEOUT: Sending a message to the worker to gracefully exit.');
132
+ this.softTimeoutSent = true;
148
133
  if (worker) {
149
134
  worker.postMessage({
150
135
  subject: workers_1.WorkerMessageSubject.WorkerMessageExit,
@@ -155,7 +140,7 @@ class Spawn {
155
140
  await this.exitFromMainThread();
156
141
  }
157
142
  })(), this.lambdaTimeout);
158
- // If hard timeout is reached, that means the worker did not exit in time. Terminate the worker.
143
+ // Hard timeout: the worker did not exit in time, terminate it.
159
144
  this.hardTimeoutTimer = setTimeout(() => void (async () => {
160
145
  console.error('HARD TIMEOUT: Worker did not exit in time. Terminating the worker.');
161
146
  if (worker) {
@@ -166,40 +151,50 @@ class Spawn {
166
151
  await this.exitFromMainThread();
167
152
  }
168
153
  })(), this.lambdaTimeout * constants_1.HARD_TIMEOUT_MULTIPLIER);
169
- // If worker exits with process.exit(code), clear the timeouts and exit from
170
- // main thread.
171
- worker.on(workers_1.WorkerEvent.WorkerExit, (code) => void (async () => {
172
- console.info('Worker exited with exit code: ' + code + '.');
173
- this.clearTimeouts();
174
- await this.exitFromMainThread();
175
- })());
154
+ // After a soft timeout, defer exit handling via setImmediate so pending
155
+ // WorkerMessage events (e.g. WorkerMessageEmitted from onTimeout) are
156
+ // handled first; otherwise exitFromMainThread could see
157
+ // alreadyEmitted=false and emit a spurious error.
158
+ worker.on(workers_1.WorkerEvent.WorkerExit, (code) => {
159
+ const handler = async () => {
160
+ console.info('Worker exited with exit code: ' + code + '.');
161
+ this.clearTimeouts();
162
+ await this.exitFromMainThread();
163
+ };
164
+ if (this.softTimeoutSent) {
165
+ void setImmediate(() => void handler());
166
+ }
167
+ else {
168
+ void handler();
169
+ }
170
+ });
176
171
  worker.on(workers_1.WorkerEvent.WorkerMessage, (message) => {
177
- var _a, _b, _c, _d;
178
- // Since logs from the worker thread are handled differently in snap-in
179
- // platform, we need to catch the log messages from worker thread and log
180
- // them in main thread.
172
+ var _a, _b, _c;
173
+ // The snap-in platform handles worker-thread logs differently, so worker
174
+ // log messages are re-logged in the main thread.
181
175
  if ((message === null || message === void 0 ? void 0 : message.subject) === workers_1.WorkerMessageSubject.WorkerMessageLog) {
182
176
  const stringifiedArgs = (_a = message.payload) === null || _a === void 0 ? void 0 : _a.stringifiedArgs;
183
177
  const level = (_b = message.payload) === null || _b === void 0 ? void 0 : _b.level;
184
- const isSdkLog = (_d = (_c = message.payload) === null || _c === void 0 ? void 0 : _c.isSdkLog) !== null && _d !== void 0 ? _d : false;
185
- this.logger.logFn(stringifiedArgs, level, isSdkLog);
178
+ this.logger.logFn(stringifiedArgs, level);
186
179
  }
187
- // If worker sends a message that it has emitted an event, then set alreadyEmitted to true.
188
180
  if ((message === null || message === void 0 ? void 0 : message.subject) === workers_1.WorkerMessageSubject.WorkerMessageEmitted) {
189
- console.info('Worker has emitted message to ADaaS.');
181
+ console.info('Worker has emitted message to AirSync.');
190
182
  this.alreadyEmitted = true;
191
183
  }
184
+ // Capture the worker's failure reason for use in the error event.
185
+ if ((message === null || message === void 0 ? void 0 : message.subject) === workers_1.WorkerMessageSubject.WorkerMessageFailed) {
186
+ this.workerFailedMessage = (_c = message.payload) === null || _c === void 0 ? void 0 : _c.message;
187
+ }
192
188
  });
193
- // Log memory usage every 30 seconds
194
189
  this.memoryMonitoringInterval = setInterval(() => {
195
190
  try {
196
- const memoryInfo = (0, helpers_2.getMemoryUsage)();
191
+ const memoryInfo = (0, helpers_1.getMemoryUsage)();
197
192
  if (memoryInfo) {
198
193
  console.info(memoryInfo.formattedMessage);
199
194
  }
200
195
  }
201
196
  catch (error) {
202
- // If memory monitoring fails, log the warning and clear the interval to prevent further issues
197
+ // Stop monitoring on failure to prevent repeated crashes
203
198
  console.warn('Memory monitoring failed, stopping logging of memory usage interval', error);
204
199
  if (this.memoryMonitoringInterval) {
205
200
  clearInterval(this.memoryMonitoringInterval);
@@ -230,20 +225,24 @@ class Spawn {
230
225
  this.alreadyEmitted = true;
231
226
  const { eventType } = (0, spawn_helpers_1.getTimeoutErrorEventType)(this.event.payload.event_type);
232
227
  try {
233
- await (0, control_protocol_1.emit)({
228
+ await (0, emit_1.emit)({
234
229
  eventType,
235
230
  event: this.event,
236
231
  data: {
237
232
  error: {
238
- message: 'Worker exited the process without emitting an event. Check other logs for more information.',
233
+ message: `Worker exited without emitting event. ${this.workerFailedMessage
234
+ ? `Error: ${this.workerFailedMessage}`
235
+ : 'Check the logs for more information.'}`,
239
236
  },
240
237
  },
241
238
  });
242
- this.resolve();
243
239
  }
244
240
  catch (error) {
245
241
  console.error('Error while emitting event.', (0, logger_1.serializeError)(error));
246
242
  }
243
+ finally {
244
+ this.resolve();
245
+ }
247
246
  }
248
247
  }
249
248
  exports.Spawn = Spawn;
@@ -1,9 +1,20 @@
1
1
  "use strict";
2
2
  const { workerData } = require('node:worker_threads');
3
- require('ts-node').register();
3
+ let resolvedWorkerPath;
4
+ try {
5
+ resolvedWorkerPath = require.resolve(workerData.workerPath);
6
+ }
7
+ catch (_a) {
8
+ // Unresolvable without a TypeScript loader, so the worker is a .ts file.
9
+ }
10
+ if (!resolvedWorkerPath || resolvedWorkerPath.endsWith('.ts')) {
11
+ try {
12
+ require('ts-node').register();
13
+ }
14
+ catch (error) {
15
+ throw new Error(`Worker ${workerData.workerPath} needs ts-node to run TypeScript. Install ts-node or point the worker at compiled JavaScript. ${error.message}`);
16
+ }
17
+ }
4
18
  const { Logger } = require('../logger/logger');
5
- const { runWithUserLogContext } = require('../logger/logger.context');
6
19
  console = new Logger({ event: workerData.event, options: workerData.options });
7
- runWithUserLogContext(() => {
8
- require(workerData.workerPath);
9
- });
20
+ require(workerData.workerPath);
@@ -1,7 +1,6 @@
1
1
  import { Item } from '../repo/repo.interfaces';
2
- import { ErrorRecord } from '../types/common';
3
2
  import { Artifact } from '../uploader/uploader.interfaces';
4
- import { NormalizedAttachment, NormalizedItem, RepoFactoryInterface } from './repo.interfaces';
3
+ import { NormalizedAttachment, NormalizedItem } from './repo.interfaces';
5
4
  export declare class Repo {
6
5
  readonly itemType: string;
7
6
  private items;
@@ -10,9 +9,19 @@ export declare class Repo {
10
9
  private onUpload;
11
10
  private options?;
12
11
  uploadedArtifacts: Artifact[];
13
- constructor({ event, itemType, normalize, onUpload, options, }: RepoFactoryInterface);
12
+ dateRanges: {
13
+ creationDate: {
14
+ oldest?: number;
15
+ newest?: number;
16
+ };
17
+ modifiedDate: {
18
+ oldest?: number;
19
+ newest?: number;
20
+ };
21
+ };
14
22
  getItems(): (NormalizedItem | NormalizedAttachment | Item)[];
15
- upload(batch?: (NormalizedItem | NormalizedAttachment | Item)[]): Promise<void | ErrorRecord>;
16
- push(items: Item[]): Promise<boolean>;
23
+ upload(batch?: (NormalizedItem | NormalizedAttachment | Item)[]): Promise<void>;
24
+ /** Buffers items and uploads every full batch. Throws if an upload fails. */
25
+ push(items: Item[]): Promise<void>;
17
26
  }
18
27
  //# sourceMappingURL=repo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/repo/repo.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,IAAI;IACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,SAAS,CAAC,CAAwD;IAC1E,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAuB;IAChC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;gBAEzB,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,GACR,EAAE,oBAAoB;IAUvB,QAAQ,IAAI,CAAC,cAAc,GAAG,oBAAoB,GAAG,IAAI,CAAC,EAAE;IAItD,MAAM,CACV,KAAK,CAAC,EAAE,CAAC,cAAc,GAAG,oBAAoB,GAAG,IAAI,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;IAqCxB,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAuC5C"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/repo/repo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EACL,oBAAoB,EACpB,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,IAAI;IACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,SAAS,CAAC,CAAwD;IAC1E,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAiB;IAC1B,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,UAAU,EAAE;QACjB,YAAY,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACnD,YAAY,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACpD,CAGC;IAoBF,QAAQ,IAAI,CAAC,cAAc,GAAG,oBAAoB,GAAG,IAAI,CAAC,EAAE;IAItD,MAAM,CACV,KAAK,CAAC,EAAE,CAAC,cAAc,GAAG,oBAAoB,GAAG,IAAI,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC;IA2DhB,6EAA6E;IACvE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BzC"}
@@ -0,0 +1,6 @@
1
+ export declare function updateRange(range: {
2
+ oldest?: number;
3
+ newest?: number;
4
+ }, ms: number): void;
5
+ export declare function toValidTimestamp(value: string): number | undefined;
6
+ //# sourceMappingURL=repo.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.helpers.d.ts","sourceRoot":"","sources":["../../src/repo/repo.helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CACzB,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3C,EAAE,EAAE,MAAM,GACT,IAAI,CAON;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateRange = updateRange;
4
+ exports.toValidTimestamp = toValidTimestamp;
5
+ function updateRange(range, ms) {
6
+ if (range.oldest === undefined || ms < range.oldest) {
7
+ range.oldest = ms;
8
+ }
9
+ if (range.newest === undefined || ms > range.newest) {
10
+ range.newest = ms;
11
+ }
12
+ }
13
+ function toValidTimestamp(value) {
14
+ const ms = new Date(value).getTime();
15
+ return Number.isFinite(ms) ? ms : undefined;
16
+ }
@@ -1,35 +1,26 @@
1
+ import { AirSyncEvent } from '../types/extraction';
2
+ import { RepoOptions, RuntimeOptions } from '../types/workers';
1
3
  import { Artifact } from '../uploader/uploader.interfaces';
2
- import { AirdropEvent } from '../types/extraction';
3
- import { WorkerAdapterOptions } from '../types/workers';
4
- /**
5
- * RepoInterface is an interface that defines the structure of a repo which is used to store and upload extracted data.
6
- */
4
+ /** Stores and uploads extracted data. */
7
5
  export interface RepoInterface {
8
6
  itemType: string;
9
7
  normalize?: (record: object) => NormalizedItem | NormalizedAttachment;
8
+ overriddenOptions?: RepoOptions;
10
9
  }
11
- /**
12
- * RepoFactoryInterface is an interface that defines the structure of a repo factory which is used to create a repo.
13
- */
14
10
  export interface RepoFactoryInterface {
15
- event: AirdropEvent;
11
+ event: AirSyncEvent;
16
12
  itemType: string;
17
13
  normalize?: (record: object) => NormalizedItem | NormalizedAttachment;
18
14
  onUpload: (artifact: Artifact) => void;
19
- options?: WorkerAdapterOptions;
15
+ options?: RuntimeOptions;
16
+ skipConfirmation?: boolean;
20
17
  }
21
- /**
22
- * NormalizedItem is an interface of item after normalization.
23
- */
24
18
  export interface NormalizedItem {
25
19
  id: string;
26
20
  created_date: string;
27
21
  modified_date: string;
28
22
  data: object;
29
23
  }
30
- /**
31
- * NormalizedAttachment is an interface of attachment after normalization.
32
- */
33
24
  export interface NormalizedAttachment {
34
25
  url: string;
35
26
  id: string;
@@ -37,10 +28,10 @@ export interface NormalizedAttachment {
37
28
  parent_id: string;
38
29
  author_id?: string;
39
30
  inline?: boolean;
40
- grand_parent_id?: number | string;
31
+ content_type?: string;
32
+ created_date?: string;
33
+ modified_date?: string;
34
+ grand_parent_id?: string;
41
35
  }
42
- /**
43
- * Item is an interface that defines the structure of an item.
44
- */
45
36
  export type Item = Record<string, any>;
46
37
  //# sourceMappingURL=repo.interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo.interfaces.d.ts","sourceRoot":"","sources":["../../src/repo/repo.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,oBAAoB,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,oBAAoB,CAAC;IACtE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IAIjB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED;;GAEG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"repo.interfaces.d.ts","sourceRoot":"","sources":["../../src/repo/repo.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,oBAAoB,CAAC;IACtE,iBAAiB,CAAC,EAAE,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,oBAAoB,CAAC;IACtE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAGD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC"}