@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
@@ -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,QAmEtC"}
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,58 +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
- void (async () => {
14
- await (0, logger_context_1.runWithSdkLogContext)(async () => {
15
- try {
16
- const event = node_worker_threads_1.workerData.event;
17
- // TODO: Remove when the old types are completely phased out
18
- event.payload.event_type = (0, event_type_translation_1.translateIncomingEventType)(event.payload.event_type);
19
- const initialState = node_worker_threads_1.workerData.initialState;
20
- const initialDomainMapping = node_worker_threads_1.workerData.initialDomainMapping;
21
- const options = node_worker_threads_1.workerData.options;
22
- // eslint-disable-next-line no-global-assign
23
- console = new logger_1.Logger({ event, options });
24
- const adapterState = await (0, state_1.createAdapterState)({
25
- event,
26
- initialState,
27
- initialDomainMapping,
28
- options,
29
- });
30
- if (node_worker_threads_1.parentPort && node_worker_threads_1.workerData.event) {
31
- const adapter = new worker_adapter_1.WorkerAdapter({
32
- event,
33
- adapterState,
34
- options,
35
- });
36
- node_worker_threads_1.parentPort.on(workers_1.WorkerEvent.WorkerMessage, (message) => void (async () => {
37
- await (0, logger_context_1.runWithSdkLogContext)(async () => {
38
- if (message.subject === workers_1.WorkerMessageSubject.WorkerMessageExit) {
39
- console.log('Worker received message to gracefully exit. Setting isTimeout flag and executing onTimeout function.');
40
- adapter.handleTimeout();
41
- await (0, logger_context_1.runWithUserLogContext)(async () => onTimeout({ adapter }));
42
- console.log('Finished executing onTimeout function. Exiting worker.');
43
- process.exit(0);
44
- }
45
- });
46
- })());
47
- await (0, logger_context_1.runWithUserLogContext)(async () => task({ adapter }));
48
- process.exit(0);
49
- }
50
- }
51
- catch (error) {
52
- console.error('Error while processing task.', (0, logger_1.serializeError)(error));
53
- process.exit(1);
54
- }
55
- });
56
- })();
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);
57
59
  }
60
+ catch (error) {
61
+ if (adapter && !adapter.hasWorkerEmitted) {
62
+ try {
63
+ await adapter.emitError(error);
64
+ }
65
+ catch (emitError) {
66
+ console.error('Error while emitting task failure.', (0, logger_1.serializeError)(emitError));
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,
129
+ });
130
+ }, { task, onTimeout });
58
131
  }
@@ -1,20 +1,19 @@
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;
16
+ private softTimeoutSent;
18
17
  private defaultLambdaTimeout;
19
18
  private lambdaTimeout;
20
19
  private softTimeoutTimer;
@@ -23,6 +22,7 @@ export declare class Spawn {
23
22
  private resolve;
24
23
  private originalConsole;
25
24
  private logger;
25
+ private workerFailedMessage;
26
26
  constructor({ event, worker, options, resolve, originalConsole, }: SpawnInterface);
27
27
  private clearTimeouts;
28
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,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;IAiGjB,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"}