@devrev/airsync-sdk 2.0.0-beta.1 → 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 +6 -7
  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 +69 -61
  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 +120 -82
  51. package/dist/multithreading/spawn/spawn.d.ts +10 -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 +59 -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 +31 -12
  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 +40 -162
  106. package/dist/types/external-domain-metadata.d.ts.map +1 -1
  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 +35 -22
  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 -321
  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 -208
  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/http/types.js +0 -2
  176. package/dist/logger/logger.constants.d.ts +0 -6
  177. package/dist/logger/logger.constants.d.ts.map +0 -1
  178. package/dist/logger/logger.constants.js +0 -13
  179. package/dist/logger/logger.context.d.ts +0 -58
  180. package/dist/logger/logger.context.d.ts.map +0 -1
  181. package/dist/logger/logger.context.js +0 -86
  182. package/dist/logger/logger.test.d.ts +0 -2
  183. package/dist/logger/logger.test.d.ts.map +0 -1
  184. package/dist/logger/logger.test.js +0 -490
  185. package/dist/mappers/mappers.interface.d.ts +0 -294
  186. package/dist/mappers/mappers.interface.d.ts.map +0 -1
  187. package/dist/mappers/mappers.test.d.ts +0 -2
  188. package/dist/mappers/mappers.test.d.ts.map +0 -1
  189. package/dist/mappers/mappers.test.js +0 -107
  190. package/dist/multithreading/create-worker.test.d.ts +0 -2
  191. package/dist/multithreading/create-worker.test.d.ts.map +0 -1
  192. package/dist/multithreading/create-worker.test.js +0 -89
  193. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
  194. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
  195. package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
  196. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
  197. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
  198. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -127
  199. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
  200. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
  201. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +0 -22
  202. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
  203. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
  204. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
  205. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
  206. package/dist/multithreading/worker-adapter/worker-adapter.js +0 -745
  207. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
  208. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
  209. package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
  210. package/dist/repo/repo.test.d.ts +0 -2
  211. package/dist/repo/repo.test.d.ts.map +0 -1
  212. package/dist/repo/repo.test.js +0 -131
  213. package/dist/state/state.test.d.ts +0 -2
  214. package/dist/state/state.test.d.ts.map +0 -1
  215. package/dist/state/state.test.js +0 -224
  216. package/dist/types/extraction.test.d.ts +0 -2
  217. package/dist/types/extraction.test.d.ts.map +0 -1
  218. package/dist/types/extraction.test.js +0 -70
  219. package/dist/types/index.d.ts +0 -10
  220. package/dist/types/index.d.ts.map +0 -1
  221. package/dist/types/index.js +0 -18
  222. package/dist/uploader/uploader.helpers.test.d.ts +0 -2
  223. package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
  224. package/dist/uploader/uploader.helpers.test.js +0 -267
  225. package/dist/uploader/uploader.test.d.ts +0 -2
  226. package/dist/uploader/uploader.test.d.ts.map +0 -1
  227. package/dist/uploader/uploader.test.js +0 -589
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoadingAdapter = void 0;
4
+ const logger_1 = require("../../logger/logger");
5
+ const mappers_interfaces_1 = require("../../mappers/mappers.interfaces");
6
+ const extraction_1 = require("../../types/extraction");
7
+ const loading_1 = require("../../types/loading");
8
+ const base_adapter_1 = require("./base-adapter");
9
+ const loading_adapter_helpers_1 = require("./loading-adapter.helpers");
10
+ /** Adapter passed to loading tasks (item/attachment loading, loader reports). @public */
11
+ class LoadingAdapter extends base_adapter_1.BaseAdapter {
12
+ /** @internal */
13
+ constructor(params) {
14
+ super(params);
15
+ this.loaderReports = [];
16
+ this._processedFiles = [];
17
+ }
18
+ get reports() {
19
+ return this.loaderReports;
20
+ }
21
+ get processedFiles() {
22
+ return this._processedFiles;
23
+ }
24
+ /** @internal */
25
+ async beforeEmit() {
26
+ // Loading has no pre-emit work.
27
+ }
28
+ /** @internal */
29
+ buildEmitPayload(newEventType) {
30
+ const isLoaderEvent = Object.values(loading_1.LoaderEventType).includes(newEventType);
31
+ return isLoaderEvent
32
+ ? {
33
+ reports: this.reports,
34
+ processed_files: this.processedFiles,
35
+ }
36
+ : {};
37
+ }
38
+ /** @internal */
39
+ afterEmit() {
40
+ // Loading keeps its accumulated reports/processed files across emits.
41
+ }
42
+ async loadItemTypes({ itemTypesToLoad, }) {
43
+ if (this.event.payload.event_type === extraction_1.EventType.StartLoadingData) {
44
+ const itemTypes = itemTypesToLoad.map((itemTypeToLoad) => itemTypeToLoad.itemType);
45
+ if (!itemTypes.length) {
46
+ console.warn('No item types to load, returning.');
47
+ return { status: 'success' };
48
+ }
49
+ this.adapterState.sdkState.fromDevRev = {
50
+ filesToLoad: await this.getLoaderBatches(itemTypes),
51
+ };
52
+ }
53
+ return this.loadFiles('data', (fileToLoad) => {
54
+ const itemTypeToLoad = itemTypesToLoad.find((itemTypeToLoad) => itemTypeToLoad.itemType === fileToLoad.itemType);
55
+ if (!itemTypeToLoad) {
56
+ return;
57
+ }
58
+ return async (item) => this.loadItem({ item, itemTypeToLoad });
59
+ });
60
+ }
61
+ async loadAttachments({ create, }) {
62
+ if (this.event.payload.event_type === extraction_1.EventType.StartLoadingAttachments) {
63
+ this.adapterState.sdkState.fromDevRev = {
64
+ filesToLoad: await this.getLoaderBatches(['attachment']),
65
+ };
66
+ }
67
+ return this.loadFiles('attachment', () => async (item) => this.loadAttachment({ item, create }));
68
+ }
69
+ /**
70
+ * Walks the transformer files in `fromDevRev.filesToLoad`, resuming from
71
+ * each file's `lineToProcess`. `getLoader` returns undefined when a file has
72
+ * an item type the connector can't load, which fails the phase.
73
+ */
74
+ async loadFiles(kind, getLoader) {
75
+ var _a;
76
+ const filesToLoad = (_a = this.adapterState.sdkState.fromDevRev) === null || _a === void 0 ? void 0 : _a.filesToLoad;
77
+ if (!(filesToLoad === null || filesToLoad === void 0 ? void 0 : filesToLoad.length)) {
78
+ console.log('No files to load, returning.');
79
+ return { status: 'success' };
80
+ }
81
+ console.log('Files to load in state', filesToLoad);
82
+ try {
83
+ for (const fileToLoad of filesToLoad) {
84
+ if (fileToLoad.completed) {
85
+ continue;
86
+ }
87
+ const load = getLoader(fileToLoad);
88
+ if (!load) {
89
+ const message = `Item type to load not found for item type: ${fileToLoad.itemType}.`;
90
+ console.error(message);
91
+ return { status: 'error', error: { message } };
92
+ }
93
+ const { response, error: transformerFileError } = await this.uploader.getJsonObjectByArtifactId({
94
+ artifactId: fileToLoad.id,
95
+ isGzipped: true,
96
+ });
97
+ if (transformerFileError) {
98
+ const message = `Transformer file not found for artifact ID: ${fileToLoad.id}.`;
99
+ console.error(message);
100
+ return { status: 'error', error: { message } };
101
+ }
102
+ const transformerFile = response;
103
+ for (let i = fileToLoad.lineToProcess; i < fileToLoad.count; i++) {
104
+ if (this.isTimeout) {
105
+ console.log(`Timeout detected during ${kind} loading. Returning progress to allow continuation.`);
106
+ return { status: 'progress' };
107
+ }
108
+ const { report, rateLimit } = await load(transformerFile[i]);
109
+ if (rateLimit === null || rateLimit === void 0 ? void 0 : rateLimit.delay) {
110
+ return { status: 'delay', delaySeconds: rateLimit.delay };
111
+ }
112
+ if (report) {
113
+ (0, loading_adapter_helpers_1.addReportToLoaderReport)({
114
+ loaderReports: this.loaderReports,
115
+ report,
116
+ });
117
+ fileToLoad.lineToProcess = fileToLoad.lineToProcess + 1;
118
+ }
119
+ }
120
+ fileToLoad.completed = true;
121
+ this._processedFiles.push(fileToLoad.id);
122
+ }
123
+ }
124
+ catch (error) {
125
+ console.error(`Error during ${kind} loading.`, (0, logger_1.serializeError)(error));
126
+ return {
127
+ status: 'error',
128
+ error: {
129
+ message: `Error during ${kind} loading. ${(0, logger_1.serializeError)(error)}`,
130
+ },
131
+ };
132
+ }
133
+ return { status: 'success' };
134
+ }
135
+ async getLoaderBatches(supportedItemTypes) {
136
+ var _a;
137
+ const statsFileArtifactId = (_a = this.event.payload.event_data) === null || _a === void 0 ? void 0 : _a.stats_file;
138
+ if (!statsFileArtifactId) {
139
+ return [];
140
+ }
141
+ const { response, error: statsFileError } = await this.uploader.getJsonObjectByArtifactId({
142
+ artifactId: statsFileArtifactId,
143
+ });
144
+ const statsFile = response;
145
+ if (statsFileError || statsFile.length === 0) {
146
+ return [];
147
+ }
148
+ return (0, loading_adapter_helpers_1.getFilesToLoad)({ supportedItemTypes, statsFile });
149
+ }
150
+ async loadItem({ item, itemTypeToLoad, }) {
151
+ const devrevId = item.id.devrev;
152
+ const syncUnit = this.event.payload.event_context.sync_unit;
153
+ let syncMapperRecord;
154
+ try {
155
+ syncMapperRecord = await this.mappers.getByTargetId({
156
+ sync_unit: syncUnit,
157
+ target: devrevId,
158
+ });
159
+ }
160
+ catch (error) {
161
+ console.warn('Failed to get sync mapper record.', (0, logger_1.serializeError)(error));
162
+ return {
163
+ error: {
164
+ message: 'Failed to get sync mapper record. ' + (0, logger_1.serializeError)(error),
165
+ },
166
+ };
167
+ }
168
+ const loadParams = { item, mappers: this.mappers, event: this.event };
169
+ if (syncMapperRecord) {
170
+ const response = await itemTypeToLoad.update(loadParams);
171
+ if (response.status !== 'success') {
172
+ return this.toFailedLoad(itemTypeToLoad.itemType, 'update', response);
173
+ }
174
+ try {
175
+ const syncMapperRecordUpdate = await this.mappers.update(Object.assign(Object.assign({ id: syncMapperRecord.sync_mapper_record.id, sync_unit: syncUnit, status: mappers_interfaces_1.SyncMapperRecordStatus.OPERATIONAL }, (response.modifiedDate && {
176
+ external_versions: {
177
+ add: [
178
+ {
179
+ modified_date: response.modifiedDate,
180
+ recipe_version: 0,
181
+ },
182
+ ],
183
+ },
184
+ })), { external_ids: {
185
+ add: [response.id],
186
+ }, targets: {
187
+ add: [devrevId],
188
+ } }));
189
+ console.log('Successfully updated sync mapper record.', syncMapperRecordUpdate);
190
+ }
191
+ catch (error) {
192
+ console.warn('Failed to update sync mapper record.', (0, logger_1.serializeError)(error));
193
+ return {
194
+ error: {
195
+ message: 'Failed to update sync mapper record' + (0, logger_1.serializeError)(error),
196
+ },
197
+ };
198
+ }
199
+ return {
200
+ report: {
201
+ item_type: itemTypeToLoad.itemType,
202
+ [loading_1.ActionType.UPDATED]: 1,
203
+ },
204
+ };
205
+ }
206
+ const response = await itemTypeToLoad.create(loadParams);
207
+ if (response.status !== 'success') {
208
+ return this.toFailedLoad(itemTypeToLoad.itemType, 'create', response);
209
+ }
210
+ try {
211
+ const syncMapperRecordCreate = await this.mappers.create(Object.assign({ sync_unit: syncUnit, status: mappers_interfaces_1.SyncMapperRecordStatus.OPERATIONAL, external_ids: [response.id], targets: [devrevId] }, (response.modifiedDate && {
212
+ external_versions: [
213
+ {
214
+ modified_date: response.modifiedDate,
215
+ recipe_version: 0,
216
+ },
217
+ ],
218
+ })));
219
+ console.log('Successfully created sync mapper record.', syncMapperRecordCreate);
220
+ }
221
+ catch (error) {
222
+ console.warn('Failed to create sync mapper record.', (0, logger_1.serializeError)(error));
223
+ return {
224
+ error: {
225
+ message: 'Failed to create sync mapper record. ' + (0, logger_1.serializeError)(error),
226
+ },
227
+ };
228
+ }
229
+ return {
230
+ report: {
231
+ item_type: itemTypeToLoad.itemType,
232
+ [loading_1.ActionType.CREATED]: 1,
233
+ },
234
+ };
235
+ }
236
+ /** Maps a non-success connector response to a delay or a failed report. */
237
+ toFailedLoad(itemType, action, response) {
238
+ if (response.status === 'delay') {
239
+ console.log(`Rate limited during ${action} in external system, delaying for ${response.delaySeconds} seconds.`);
240
+ return { rateLimit: { delay: response.delaySeconds } };
241
+ }
242
+ console.warn(`Failed to ${action} item in external system.`, response.error.message);
243
+ return {
244
+ report: {
245
+ item_type: itemType,
246
+ [loading_1.ActionType.FAILED]: 1,
247
+ },
248
+ };
249
+ }
250
+ async loadAttachment({ item, create, }) {
251
+ const response = await create({
252
+ item,
253
+ mappers: this.mappers,
254
+ event: this.event,
255
+ });
256
+ if (response.status !== 'success') {
257
+ return this.toFailedLoad('attachments', 'create', response);
258
+ }
259
+ try {
260
+ const syncMapperRecordCreate = await this.mappers.create({
261
+ sync_unit: this.event.payload.event_context.sync_unit,
262
+ external_ids: [response.id],
263
+ targets: [item.reference_id],
264
+ status: mappers_interfaces_1.SyncMapperRecordStatus.OPERATIONAL,
265
+ });
266
+ console.log('Successfully created sync mapper record.', syncMapperRecordCreate);
267
+ }
268
+ catch (error) {
269
+ console.warn('Failed to create sync mapper record.', (0, logger_1.serializeError)(error));
270
+ }
271
+ return {
272
+ report: {
273
+ item_type: 'attachments',
274
+ [loading_1.ActionType.CREATED]: 1,
275
+ },
276
+ };
277
+ }
278
+ }
279
+ exports.LoadingAdapter = LoadingAdapter;
@@ -0,0 +1,11 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { AirSyncEvent, EventData, ExtractorEventType, WorkerMetadata } from '../types/extraction';
3
+ import { LoaderEventType } from '../types/loading';
4
+ export interface EmitInterface {
5
+ event: AirSyncEvent;
6
+ eventType: ExtractorEventType | LoaderEventType;
7
+ data?: EventData;
8
+ worker_metadata?: WorkerMetadata;
9
+ }
10
+ export declare const emit: ({ event, eventType, data, worker_metadata, }: EmitInterface) => Promise<AxiosResponse>;
11
+ //# sourceMappingURL=emit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/multithreading/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC,OAAO,EACL,YAAY,EACZ,SAAS,EAET,kBAAkB,EAClB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;IAChD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,eAAe,CAAC,EAAE,cAAc,CAAC;CAClC;AAED,eAAO,MAAM,IAAI,GAAU,8CAKxB,aAAa,KAAG,OAAO,CAAC,aAAa,CA+BvC,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emit = void 0;
4
+ const constants_1 = require("../common/constants");
5
+ const client_1 = require("../http/client");
6
+ const emit = async ({ event, eventType, data, worker_metadata, }) => {
7
+ const newEvent = {
8
+ event_type: eventType,
9
+ event_context: event.payload.event_context,
10
+ event_data: Object.assign({}, data),
11
+ worker_metadata: Object.assign(Object.assign({}, worker_metadata), { newest_state_date: event.payload.event_context.extract_to, oldest_state_date: event.payload.event_context.extract_from, adaas_library_version: constants_1.LIBRARY_VERSION }),
12
+ };
13
+ console.info('Emitting event', newEvent);
14
+ return client_1.axiosClient.post(event.payload.event_context.callback_url, Object.assign({}, newEvent), {
15
+ headers: {
16
+ Accept: 'application/json, text/plain, */*',
17
+ Authorization: event.context.secrets.service_account_token,
18
+ 'Content-Type': 'application/json',
19
+ 'X-DevRev-Client-Platform': event.payload.event_context.snap_in_slug,
20
+ 'X-DevRev-Client-Id': event.payload.event_context.snap_in_version_id,
21
+ 'X-DevRev-Client-Version': constants_1.LIBRARY_VERSION,
22
+ },
23
+ });
24
+ };
25
+ exports.emit = emit;
@@ -1,3 +1,8 @@
1
1
  import { ProcessTaskInterface } from '../types/workers';
2
- export declare function processTask<ConnectorState>({ task, onTimeout, }: ProcessTaskInterface<ConnectorState>): void;
2
+ import { ExtractionAdapter } from './adapters/extraction-adapter';
3
+ import { LoadingAdapter } from './adapters/loading-adapter';
4
+ /** Entry point for an extraction worker. @public */
5
+ export declare function processExtractionTask<ConnectorState>({ task, onTimeout, }: ProcessTaskInterface<ExtractionAdapter<ConnectorState>>): void;
6
+ /** Entry point for a loading worker. @public */
7
+ export declare function processLoadingTask<ConnectorState>({ task, onTimeout, }: ProcessTaskInterface<LoadingAdapter<ConnectorState>>): void;
3
8
  //# sourceMappingURL=process-task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-task.d.ts","sourceRoot":"","sources":["../../src/multithreading/process-task.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,oBAAoB,EAGrB,MAAM,kBAAkB,CAAC;AAG1B,wBAAgB,WAAW,CAAC,cAAc,EAAE,EAC1C,IAAI,EACJ,SAAS,GACV,EAAE,oBAAoB,CAAC,cAAc,CAAC,QAqGtC"}
1
+ {"version":3,"file":"process-task.d.ts","sourceRoot":"","sources":["../../src/multithreading/process-task.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EAIrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAyF5D,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,EACpD,IAAI,EACJ,SAAS,GACV,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,QA6BzD;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,EACjD,IAAI,EACJ,SAAS,GACV,EAAE,oBAAoB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,QA6BtD"}
@@ -1,93 +1,131 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processTask = processTask;
3
+ exports.processExtractionTask = processExtractionTask;
4
+ exports.processLoadingTask = processLoadingTask;
4
5
  const node_worker_threads_1 = require("node:worker_threads");
5
- const event_type_translation_1 = require("../common/event-type-translation");
6
6
  const logger_1 = require("../logger/logger");
7
- const logger_context_1 = require("../logger/logger.context");
8
- const state_1 = require("../state/state");
7
+ const extraction_state_1 = require("../state/extraction-state");
8
+ const loading_state_1 = require("../state/loading-state");
9
9
  const workers_1 = require("../types/workers");
10
- const worker_adapter_1 = require("./worker-adapter/worker-adapter");
11
- function processTask({ task, onTimeout, }) {
12
- if (node_worker_threads_1.isMainThread) {
13
- return;
10
+ const extraction_adapter_1 = require("./adapters/extraction-adapter");
11
+ const loading_adapter_1 = require("./adapters/loading-adapter");
12
+ const spawn_helpers_1 = require("./spawn/spawn.helpers");
13
+ /**
14
+ * Shared worker-thread driver: builds the adapter, runs the task, maps the
15
+ * returned {@link TaskResult} to a platform event and emits it exactly once.
16
+ * On soft timeout a returned `progress` is replaced by the `onTimeout` result
17
+ * (or a phase-appropriate default), and so is a `success` in resumable phases.
18
+ * A returned `error` or `delay`, or a `success` in a non-resumable phase, is
19
+ * emitted as is.
20
+ */
21
+ async function runWorkerTask(buildAdapter, { task, onTimeout }) {
22
+ let adapter;
23
+ try {
24
+ adapter = await buildAdapter();
25
+ const workerAdapter = adapter;
26
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.on(workers_1.WorkerEvent.WorkerMessage, (message) => {
27
+ if (message.subject !== workers_1.WorkerMessageSubject.WorkerMessageExit) {
28
+ return;
29
+ }
30
+ console.log('Timeout received. Waiting for the task to finish.');
31
+ workerAdapter.isTimeout = true;
32
+ });
33
+ console.log('Event passed from SDK to the connector:', adapter.event);
34
+ let result = await task({ adapter });
35
+ if (adapter.isTimeout) {
36
+ // A returned error or delay is a real outcome and must reach the
37
+ // platform. A success is replaced only where the phase can hand off
38
+ // with progress; a non-resumable phase that finished late is still done.
39
+ const eventType = adapter.event.payload.event_type;
40
+ const isResumable = !(0, spawn_helpers_1.getEventTypeForResult)(eventType, 'progress').illegal;
41
+ const canBeReplaced = result.status === 'progress' ||
42
+ (result.status === 'success' && isResumable);
43
+ if (canBeReplaced && onTimeout) {
44
+ result = await onTimeout({ adapter });
45
+ }
46
+ else if (canBeReplaced) {
47
+ result = isResumable
48
+ ? { status: 'progress' }
49
+ : {
50
+ status: 'error',
51
+ error: {
52
+ message: `Worker timed out during a non-resumable phase (${eventType}), which cannot be continued.`,
53
+ },
54
+ };
55
+ }
56
+ }
57
+ await adapter.emitFromResult(result);
58
+ process.exit(0);
14
59
  }
15
- void (async () => {
16
- await (0, logger_context_1.runWithSdkLogContext)(async () => {
60
+ catch (error) {
61
+ if (adapter && !adapter.hasWorkerEmitted) {
17
62
  try {
18
- const event = node_worker_threads_1.workerData.event;
19
- // TODO: Remove when the old types are completely phased out
20
- event.payload.event_type = (0, event_type_translation_1.translateIncomingEventType)(event.payload.event_type);
21
- const initialState = node_worker_threads_1.workerData.initialState;
22
- const initialDomainMapping = node_worker_threads_1.workerData.initialDomainMapping;
23
- const options = node_worker_threads_1.workerData.options;
24
- // eslint-disable-next-line no-global-assign
25
- console = new logger_1.Logger({ event, options });
26
- const adapterState = await (0, state_1.createAdapterState)({
27
- event,
28
- initialState,
29
- initialDomainMapping,
30
- options,
31
- });
32
- const adapter = new worker_adapter_1.WorkerAdapter({
33
- event,
34
- adapterState,
35
- options,
36
- });
37
- // Timeout handling flow:
38
- // The task() runs in the main flow below. Meanwhile, the parent thread may send
39
- // a timeout message at any point. When that happens, the message handler signals
40
- // the adapter to stop (handleTimeout), waits for task() to finish, then runs onTimeout().
41
- // If task() completes before any timeout message arrives, the worker exits normally.
42
- // isTimeoutReceived prevents both flows from calling process.exit.
43
- let isTimeoutReceived = false;
44
- let taskExecution;
45
- node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.on(workers_1.WorkerEvent.WorkerMessage, (message) => {
46
- if (message.subject !== workers_1.WorkerMessageSubject.WorkerMessageExit) {
47
- return;
48
- }
49
- isTimeoutReceived = true;
50
- void (0, logger_context_1.runWithSdkLogContext)(async () => {
51
- try {
52
- console.log('Timeout received. Waiting for the task to finish.');
53
- adapter.handleTimeout();
54
- try {
55
- await taskExecution;
56
- }
57
- catch (taskError) {
58
- console.warn('Task error during timeout:', (0, logger_1.serializeError)(taskError));
59
- }
60
- console.log('Task finished. Running onTimeout handler.');
61
- await (0, logger_context_1.runWithUserLogContext)(async () => onTimeout({ adapter }));
62
- console.log('onTimeout handler complete. Exiting worker.');
63
- process.exit(0);
64
- }
65
- catch (onTimeoutError) {
66
- console.error('Error in onTimeout handler:', (0, logger_1.serializeError)(onTimeoutError));
67
- process.exit(1);
68
- }
69
- });
70
- });
71
- taskExecution = (0, logger_context_1.runWithUserLogContext)(async () => task({ adapter }));
72
- try {
73
- await taskExecution;
74
- }
75
- catch (taskError) {
76
- if (isTimeoutReceived) {
77
- console.log('Task threw during timeout. Letting timeout handler finish.');
78
- return;
79
- }
80
- throw taskError;
81
- }
82
- if (!isTimeoutReceived) {
83
- console.log('Task completed. Exiting worker.');
84
- process.exit(0);
85
- }
63
+ await adapter.emitError(error);
86
64
  }
87
- catch (error) {
88
- console.error('Error while processing task.', (0, logger_1.serializeError)(error));
89
- process.exit(1);
65
+ catch (emitError) {
66
+ console.error('Error while emitting task failure.', (0, logger_1.serializeError)(emitError));
90
67
  }
68
+ }
69
+ if (adapter === null || adapter === void 0 ? void 0 : adapter.hasWorkerEmitted) {
70
+ process.exit(1);
71
+ return;
72
+ }
73
+ const errorMessage = `Error while processing task. ${(0, logger_1.serializeError)(error)}`;
74
+ console.error(errorMessage);
75
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
76
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
77
+ payload: { message: errorMessage },
78
+ });
79
+ process.exit(1);
80
+ }
81
+ }
82
+ /** Entry point for an extraction worker. @public */
83
+ function processExtractionTask({ task, onTimeout, }) {
84
+ if (node_worker_threads_1.isMainThread) {
85
+ return;
86
+ }
87
+ void runWorkerTask(async () => {
88
+ const event = node_worker_threads_1.workerData.event;
89
+ const initialState = node_worker_threads_1.workerData.initialState;
90
+ const initialDomainMapping = node_worker_threads_1.workerData.initialDomainMapping;
91
+ const options = node_worker_threads_1.workerData.options;
92
+ // eslint-disable-next-line no-global-assign
93
+ console = new logger_1.Logger({ event, options });
94
+ const adapterState = await (0, extraction_state_1.createExtractionState)({
95
+ event,
96
+ initialState,
97
+ initialDomainMapping,
98
+ options,
99
+ });
100
+ return new extraction_adapter_1.ExtractionAdapter({
101
+ event,
102
+ adapterState,
103
+ options,
104
+ });
105
+ }, { task, onTimeout });
106
+ }
107
+ /** Entry point for a loading worker. @public */
108
+ function processLoadingTask({ task, onTimeout, }) {
109
+ if (node_worker_threads_1.isMainThread) {
110
+ return;
111
+ }
112
+ void runWorkerTask(async () => {
113
+ const event = node_worker_threads_1.workerData.event;
114
+ const initialState = node_worker_threads_1.workerData.initialState;
115
+ const initialDomainMapping = node_worker_threads_1.workerData.initialDomainMapping;
116
+ const options = node_worker_threads_1.workerData.options;
117
+ // eslint-disable-next-line no-global-assign
118
+ console = new logger_1.Logger({ event, options });
119
+ const adapterState = await (0, loading_state_1.createLoadingState)({
120
+ event,
121
+ initialState,
122
+ initialDomainMapping,
123
+ options,
124
+ });
125
+ return new loading_adapter_1.LoadingAdapter({
126
+ event,
127
+ adapterState,
128
+ options,
91
129
  });
92
- })();
130
+ }, { task, onTimeout });
93
131
  }
@@ -1,17 +1,15 @@
1
1
  import { SpawnFactoryInterface, SpawnInterface } from '../../types/workers';
2
2
  /**
3
- * Creates a new instance of Spawn class.
4
- * Spawn class is responsible for spawning a new worker thread and managing the lifecycle of the worker.
5
- * The class provides utilities to emit control events to the platform and exit the worker gracefully.
6
- * In case of lambda timeout, the class emits a lambda timeout event to the platform.
7
- * @param {SpawnFactoryInterface} options - The options to create a new instance of Spawn class
8
- * @param {AirdropEvent} options.event - The event object received from the platform
9
- * @param {object} options.initialState - The initial state of the adapter
10
- * @param {string} [options.workerPath] Remove getWorkerPath function and use baseWorkerPath: __dirname instead of workerPath
11
- * @param {string} [options.baseWorkerPath] - The base path for the worker files, usually `__dirname`
12
- * @returns {Promise<Spawn>} - A new instance of Spawn class
3
+ * Local mode is opt-in through AIRSYNC_LOCAL_DEVELOPMENT only, and refused on
4
+ * Lambda so a stray flag can never change production behavior.
13
5
  */
14
- export declare function spawn<ConnectorState>({ event, initialState, workerPath, initialDomainMapping, options, baseWorkerPath, }: SpawnFactoryInterface<ConnectorState>): Promise<void>;
6
+ export declare function isLocalDevelopment(env?: NodeJS.ProcessEnv): boolean;
7
+ /**
8
+ * Spawns a worker thread for the event and manages its lifecycle (control
9
+ * events, graceful exit, lambda timeout handling). Resolves when the worker
10
+ * run is fully finished.
11
+ */
12
+ export declare function spawn<ConnectorState>({ event, initialState, initialDomainMapping, options: spawnOptions, baseWorkerPath, workerPathOverrides, }: SpawnFactoryInterface<ConnectorState>): Promise<void>;
15
13
  export declare class Spawn {
16
14
  private event;
17
15
  private alreadyEmitted;
@@ -24,6 +22,7 @@ export declare class Spawn {
24
22
  private resolve;
25
23
  private originalConsole;
26
24
  private logger;
25
+ private workerFailedMessage;
27
26
  constructor({ event, worker, options, resolve, originalConsole, }: SpawnInterface);
28
27
  private clearTimeouts;
29
28
  private exitFromMainThread;
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/multithreading/spawn/spawn.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,qBAAqB,EACrB,cAAc,EAGf,MAAM,qBAAqB,CAAC;AA+C7B;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,cAAc,EAAE,EAC1C,KAAK,EACL,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,OAAO,EACP,cAAc,GACf,EAAE,qBAAqB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFvD;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,wBAAwB,CAA6C;IAC7E,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,MAAM,CAAS;gBACX,EACV,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,eAAe,GAChB,EAAE,cAAc;IA4GjB,OAAO,CAAC,aAAa;YAYP,kBAAkB;CAiCjC"}
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/multithreading/spawn/spawn.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,qBAAqB,EACrB,cAAc,EAGf,MAAM,qBAAqB,CAAC;AAe7B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,oBAAc,GAAG,OAAO,CAY7D;AAoCD;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,cAAc,EAAE,EAC1C,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,EAAE,YAAY,EACrB,cAAc,EACd,mBAAmB,GACpB,EAAE,qBAAqB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DvD;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,wBAAwB,CAA6C;IAC7E,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,mBAAmB,CAAqB;gBACpC,EACV,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,eAAe,GAChB,EAAE,cAAc;IA0GjB,OAAO,CAAC,aAAa;YAYP,kBAAkB;CAoCjC"}
@@ -1,21 +1,22 @@
1
1
  import { EventType, ExtractorEventType } from '../../types/extraction';
2
2
  import { LoaderEventType } from '../../types/loading';
3
+ import { TaskStatus } from '../../types/workers';
3
4
  /**
4
- * Gets the event type for the timeout error.
5
- * @param {EventType} eventType - The event type to get the timeout error event type for
6
- * @returns {ExtractorEventType | LoaderEventType} The event type for the timeout error
5
+ * Resolves the outgoing event type to emit for an incoming event type and a
6
+ * {@link TaskResult} status. Resumable phases honor every status
7
+ * (success/progress/delay/error -> *_DONE/*_PROGRESS/*_DELAYED/*_ERROR);
8
+ * non-resumable phases only have done/error, so `progress`/`delay` there is
9
+ * illegal and maps to the phase's error event.
7
10
  */
11
+ export declare function getEventTypeForResult(eventType: EventType, status: TaskStatus): {
12
+ eventType: ExtractorEventType | LoaderEventType;
13
+ illegal: boolean;
14
+ };
8
15
  export declare function getTimeoutErrorEventType(eventType: EventType): {
9
16
  eventType: ExtractorEventType | LoaderEventType;
10
17
  };
11
- /**
12
- * Gets the event type for the no script error.
13
- * @param {EventType} eventType - The event type to get the no script error event type for
14
- * @returns {ExtractorEventType | LoaderEventType} The event type for the no script error
15
- */
18
+ /** Event type to emit when no worker script exists for the incoming event. */
16
19
  export declare function getNoScriptEventType(eventType: EventType): {
17
- eventType: ExtractorEventType;
18
- } | {
19
- eventType: LoaderEventType;
20
+ eventType: ExtractorEventType | LoaderEventType;
20
21
  };
21
22
  //# 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,CAmFA;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;;;;;;GAMG;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;AAgHD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC9D,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;CACjD,CAEA;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS;eA+BhB,kBAAkB,GAAG,eAAe;EAG5E"}