@devrev/airsync-sdk 2.0.0-beta.0

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 (180) hide show
  1. package/README.md +31 -0
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +16 -0
  3. package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -0
  4. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +9 -0
  5. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -0
  6. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.js +2 -0
  7. package/dist/attachments-streaming/attachments-streaming-pool.js +97 -0
  8. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +2 -0
  9. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +1 -0
  10. package/dist/attachments-streaming/attachments-streaming-pool.test.js +267 -0
  11. package/dist/common/constants.d.ts +25 -0
  12. package/dist/common/constants.d.ts.map +1 -0
  13. package/dist/common/constants.js +58 -0
  14. package/dist/common/control-protocol.d.ts +10 -0
  15. package/dist/common/control-protocol.d.ts.map +1 -0
  16. package/dist/common/control-protocol.js +31 -0
  17. package/dist/common/errors.d.ts +6 -0
  18. package/dist/common/errors.d.ts.map +1 -0
  19. package/dist/common/errors.js +4 -0
  20. package/dist/common/event-type-translation.d.ts +24 -0
  21. package/dist/common/event-type-translation.d.ts.map +1 -0
  22. package/dist/common/event-type-translation.js +117 -0
  23. package/dist/common/helpers.d.ts +41 -0
  24. package/dist/common/helpers.d.ts.map +1 -0
  25. package/dist/common/helpers.js +124 -0
  26. package/dist/common/install-initial-domain-mapping.d.ts +4 -0
  27. package/dist/common/install-initial-domain-mapping.d.ts.map +1 -0
  28. package/dist/common/install-initial-domain-mapping.js +58 -0
  29. package/dist/common/install-initial-domain-mapping.test.d.ts +2 -0
  30. package/dist/common/install-initial-domain-mapping.test.d.ts.map +1 -0
  31. package/dist/common/install-initial-domain-mapping.test.js +207 -0
  32. package/dist/deprecated/adapter/index.d.ts +62 -0
  33. package/dist/deprecated/adapter/index.d.ts.map +1 -0
  34. package/dist/deprecated/adapter/index.js +151 -0
  35. package/dist/deprecated/common/helpers.d.ts +7 -0
  36. package/dist/deprecated/common/helpers.d.ts.map +1 -0
  37. package/dist/deprecated/common/helpers.js +47 -0
  38. package/dist/deprecated/demo-extractor/external_domain_metadata.json +38 -0
  39. package/dist/deprecated/demo-extractor/index.d.ts +18 -0
  40. package/dist/deprecated/demo-extractor/index.d.ts.map +1 -0
  41. package/dist/deprecated/demo-extractor/index.js +161 -0
  42. package/dist/deprecated/http/client.d.ts +22 -0
  43. package/dist/deprecated/http/client.d.ts.map +1 -0
  44. package/dist/deprecated/http/client.js +161 -0
  45. package/dist/deprecated/uploader/index.d.ts +35 -0
  46. package/dist/deprecated/uploader/index.d.ts.map +1 -0
  47. package/dist/deprecated/uploader/index.js +161 -0
  48. package/dist/http/axios-client-internal.d.ts +3 -0
  49. package/dist/http/axios-client-internal.d.ts.map +1 -0
  50. package/dist/http/axios-client-internal.js +66 -0
  51. package/dist/http/axios-client-internal.test.d.ts +2 -0
  52. package/dist/http/axios-client-internal.test.d.ts.map +1 -0
  53. package/dist/http/axios-client-internal.test.js +154 -0
  54. package/dist/http/axios-client.d.ts +27 -0
  55. package/dist/http/axios-client.d.ts.map +1 -0
  56. package/dist/http/axios-client.js +57 -0
  57. package/dist/http/constants.d.ts +4 -0
  58. package/dist/http/constants.d.ts.map +1 -0
  59. package/dist/http/constants.js +6 -0
  60. package/dist/http/index.d.ts +3 -0
  61. package/dist/http/index.d.ts.map +1 -0
  62. package/dist/http/index.js +18 -0
  63. package/dist/http/types.d.ts +17 -0
  64. package/dist/http/types.d.ts.map +1 -0
  65. package/dist/http/types.js +2 -0
  66. package/dist/index.d.ts +14 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +34 -0
  69. package/dist/logger/logger.constants.d.ts +6 -0
  70. package/dist/logger/logger.constants.d.ts.map +1 -0
  71. package/dist/logger/logger.constants.js +13 -0
  72. package/dist/logger/logger.context.d.ts +58 -0
  73. package/dist/logger/logger.context.d.ts.map +1 -0
  74. package/dist/logger/logger.context.js +86 -0
  75. package/dist/logger/logger.d.ts +89 -0
  76. package/dist/logger/logger.d.ts.map +1 -0
  77. package/dist/logger/logger.interfaces.d.ts +43 -0
  78. package/dist/logger/logger.interfaces.d.ts.map +1 -0
  79. package/dist/logger/logger.interfaces.js +9 -0
  80. package/dist/logger/logger.js +196 -0
  81. package/dist/logger/logger.test.d.ts +2 -0
  82. package/dist/logger/logger.test.d.ts.map +1 -0
  83. package/dist/logger/logger.test.js +490 -0
  84. package/dist/mappers/mappers.d.ts +52 -0
  85. package/dist/mappers/mappers.d.ts.map +1 -0
  86. package/dist/mappers/mappers.interface.d.ts +294 -0
  87. package/dist/mappers/mappers.interface.d.ts.map +1 -0
  88. package/dist/mappers/mappers.interface.js +48 -0
  89. package/dist/mappers/mappers.js +83 -0
  90. package/dist/mappers/mappers.test.d.ts +2 -0
  91. package/dist/mappers/mappers.test.d.ts.map +1 -0
  92. package/dist/mappers/mappers.test.js +107 -0
  93. package/dist/multithreading/create-worker.d.ts +5 -0
  94. package/dist/multithreading/create-worker.d.ts.map +1 -0
  95. package/dist/multithreading/create-worker.js +28 -0
  96. package/dist/multithreading/create-worker.test.d.ts +2 -0
  97. package/dist/multithreading/create-worker.test.d.ts.map +1 -0
  98. package/dist/multithreading/create-worker.test.js +89 -0
  99. package/dist/multithreading/process-task.d.ts +3 -0
  100. package/dist/multithreading/process-task.d.ts.map +1 -0
  101. package/dist/multithreading/process-task.js +58 -0
  102. package/dist/multithreading/spawn/spawn.d.ts +30 -0
  103. package/dist/multithreading/spawn/spawn.d.ts.map +1 -0
  104. package/dist/multithreading/spawn/spawn.helpers.d.ts +21 -0
  105. package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -0
  106. package/dist/multithreading/spawn/spawn.helpers.js +114 -0
  107. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +2 -0
  108. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +1 -0
  109. package/dist/multithreading/spawn/spawn.helpers.test.js +293 -0
  110. package/dist/multithreading/spawn/spawn.js +249 -0
  111. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +2 -0
  112. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +1 -0
  113. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +127 -0
  114. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +91 -0
  115. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +1 -0
  116. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +22 -0
  117. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +1 -0
  118. package/dist/multithreading/worker-adapter/worker-adapter.helpers.js +64 -0
  119. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +2 -0
  120. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +1 -0
  121. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +514 -0
  122. package/dist/multithreading/worker-adapter/worker-adapter.js +747 -0
  123. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +2 -0
  124. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +1 -0
  125. package/dist/multithreading/worker-adapter/worker-adapter.test.js +483 -0
  126. package/dist/multithreading/worker.d.ts +2 -0
  127. package/dist/multithreading/worker.d.ts.map +1 -0
  128. package/dist/multithreading/worker.js +9 -0
  129. package/dist/repo/repo.d.ts +18 -0
  130. package/dist/repo/repo.d.ts.map +1 -0
  131. package/dist/repo/repo.interfaces.d.ts +46 -0
  132. package/dist/repo/repo.interfaces.d.ts.map +1 -0
  133. package/dist/repo/repo.interfaces.js +2 -0
  134. package/dist/repo/repo.js +75 -0
  135. package/dist/repo/repo.test.d.ts +2 -0
  136. package/dist/repo/repo.test.d.ts.map +1 -0
  137. package/dist/repo/repo.test.js +131 -0
  138. package/dist/state/state.d.ts +30 -0
  139. package/dist/state/state.d.ts.map +1 -0
  140. package/dist/state/state.interfaces.d.ts +51 -0
  141. package/dist/state/state.interfaces.d.ts.map +1 -0
  142. package/dist/state/state.interfaces.js +21 -0
  143. package/dist/state/state.js +166 -0
  144. package/dist/state/state.test.d.ts +2 -0
  145. package/dist/state/state.test.d.ts.map +1 -0
  146. package/dist/state/state.test.js +224 -0
  147. package/dist/types/common.d.ts +50 -0
  148. package/dist/types/common.d.ts.map +1 -0
  149. package/dist/types/common.js +25 -0
  150. package/dist/types/extraction.d.ts +417 -0
  151. package/dist/types/extraction.d.ts.map +1 -0
  152. package/dist/types/extraction.js +170 -0
  153. package/dist/types/extraction.test.d.ts +2 -0
  154. package/dist/types/extraction.test.d.ts.map +1 -0
  155. package/dist/types/extraction.test.js +70 -0
  156. package/dist/types/index.d.ts +9 -0
  157. package/dist/types/index.d.ts.map +1 -0
  158. package/dist/types/index.js +18 -0
  159. package/dist/types/loading.d.ts +147 -0
  160. package/dist/types/loading.d.ts.map +1 -0
  161. package/dist/types/loading.js +48 -0
  162. package/dist/types/workers.d.ts +161 -0
  163. package/dist/types/workers.d.ts.map +1 -0
  164. package/dist/types/workers.js +22 -0
  165. package/dist/uploader/uploader.d.ts +92 -0
  166. package/dist/uploader/uploader.d.ts.map +1 -0
  167. package/dist/uploader/uploader.helpers.d.ts +33 -0
  168. package/dist/uploader/uploader.helpers.d.ts.map +1 -0
  169. package/dist/uploader/uploader.helpers.js +139 -0
  170. package/dist/uploader/uploader.helpers.test.d.ts +2 -0
  171. package/dist/uploader/uploader.helpers.test.d.ts.map +1 -0
  172. package/dist/uploader/uploader.helpers.test.js +267 -0
  173. package/dist/uploader/uploader.interfaces.d.ts +95 -0
  174. package/dist/uploader/uploader.interfaces.d.ts.map +1 -0
  175. package/dist/uploader/uploader.interfaces.js +2 -0
  176. package/dist/uploader/uploader.js +305 -0
  177. package/dist/uploader/uploader.test.d.ts +2 -0
  178. package/dist/uploader/uploader.test.d.ts.map +1 -0
  179. package/dist/uploader/uploader.test.js +589 -0
  180. package/package.json +60 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const worker_threads_1 = require("worker_threads");
4
+ const test_helpers_1 = require("../tests/test-helpers");
5
+ const extraction_1 = require("../types/extraction");
6
+ const create_worker_1 = require("./create-worker");
7
+ describe(create_worker_1.createWorker.name, () => {
8
+ it('should create a Worker instance when valid parameters are provided', async () => {
9
+ const workerPath = __dirname + '../tests/dummy-worker.ts';
10
+ const worker = worker_threads_1.isMainThread
11
+ ? await (0, create_worker_1.createWorker)({
12
+ event: (0, test_helpers_1.createEvent)({
13
+ eventType: extraction_1.EventType.ExtractionExternalSyncUnitsStart,
14
+ }),
15
+ initialState: {},
16
+ workerPath,
17
+ })
18
+ : null;
19
+ expect(worker).not.toBeNull();
20
+ expect(worker).toBeInstanceOf(worker_threads_1.Worker);
21
+ if (worker) {
22
+ await worker.terminate();
23
+ }
24
+ });
25
+ it('should throw error when not in main thread', async () => {
26
+ const originalIsMainThread = worker_threads_1.isMainThread;
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ worker_threads_1.isMainThread = false;
29
+ const workerPath = __dirname + '../tests/dummy-worker.ts';
30
+ await expect((0, create_worker_1.createWorker)({
31
+ event: (0, test_helpers_1.createEvent)({
32
+ eventType: extraction_1.EventType.ExtractionExternalSyncUnitsStart,
33
+ }),
34
+ initialState: {},
35
+ workerPath,
36
+ })).rejects.toThrow('Worker threads can not start more worker threads.');
37
+ // Restore original value
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ worker_threads_1.isMainThread = originalIsMainThread;
40
+ });
41
+ it('[edge] should handle worker creation with minimal valid data', async () => {
42
+ const workerPath = __dirname + '../tests/dummy-worker.ts';
43
+ if (worker_threads_1.isMainThread) {
44
+ const worker = await (0, create_worker_1.createWorker)({
45
+ event: (0, test_helpers_1.createEvent)({
46
+ eventType: extraction_1.EventType.ExtractionExternalSyncUnitsStart,
47
+ }),
48
+ initialState: {},
49
+ workerPath,
50
+ });
51
+ expect(worker).toBeInstanceOf(worker_threads_1.Worker);
52
+ await worker.terminate();
53
+ }
54
+ });
55
+ it('[edge] should handle worker creation with complex initial state', async () => {
56
+ const workerPath = __dirname + '../tests/dummy-worker.ts';
57
+ const complexState = {
58
+ nested: {
59
+ data: [1, 2, 3],
60
+ config: { enabled: true },
61
+ },
62
+ };
63
+ if (worker_threads_1.isMainThread) {
64
+ const worker = await (0, create_worker_1.createWorker)({
65
+ event: (0, test_helpers_1.createEvent)({
66
+ eventType: extraction_1.EventType.ExtractionDataStart,
67
+ }),
68
+ initialState: complexState,
69
+ workerPath,
70
+ });
71
+ expect(worker).toBeInstanceOf(worker_threads_1.Worker);
72
+ await worker.terminate();
73
+ }
74
+ });
75
+ it('[edge] should handle different event types', async () => {
76
+ const workerPath = __dirname + '../tests/dummy-worker.ts';
77
+ if (worker_threads_1.isMainThread) {
78
+ const worker = await (0, create_worker_1.createWorker)({
79
+ event: (0, test_helpers_1.createEvent)({
80
+ eventType: extraction_1.EventType.ExtractionMetadataStart,
81
+ }),
82
+ initialState: {},
83
+ workerPath,
84
+ });
85
+ expect(worker).toBeInstanceOf(worker_threads_1.Worker);
86
+ await worker.terminate();
87
+ }
88
+ });
89
+ });
@@ -0,0 +1,3 @@
1
+ import { ProcessTaskInterface } from '../types/workers';
2
+ export declare function processTask<ConnectorState>({ task, onTimeout, }: ProcessTaskInterface<ConnectorState>): void;
3
+ //# sourceMappingURL=process-task.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processTask = processTask;
4
+ const node_worker_threads_1 = require("node:worker_threads");
5
+ const event_type_translation_1 = require("../common/event-type-translation");
6
+ const logger_1 = require("../logger/logger");
7
+ const logger_context_1 = require("../logger/logger.context");
8
+ const state_1 = require("../state/state");
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
+ })();
57
+ }
58
+ }
@@ -0,0 +1,30 @@
1
+ import { SpawnFactoryInterface, SpawnInterface } from '../../types/workers';
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
13
+ */
14
+ export declare function spawn<ConnectorState>({ event, initialState, workerPath, initialDomainMapping, options, baseWorkerPath, }: SpawnFactoryInterface<ConnectorState>): Promise<void>;
15
+ export declare class Spawn {
16
+ private event;
17
+ private alreadyEmitted;
18
+ private defaultLambdaTimeout;
19
+ private lambdaTimeout;
20
+ private softTimeoutTimer;
21
+ private hardTimeoutTimer;
22
+ private memoryMonitoringInterval;
23
+ private resolve;
24
+ private originalConsole;
25
+ private logger;
26
+ constructor({ event, worker, options, resolve, originalConsole, }: SpawnInterface);
27
+ private clearTimeouts;
28
+ private exitFromMainThread;
29
+ }
30
+ //# sourceMappingURL=spawn.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,21 @@
1
+ import { EventType, ExtractorEventType } from '../../types/extraction';
2
+ import { LoaderEventType } from '../../types/loading';
3
+ /**
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
7
+ */
8
+ export declare function getTimeoutErrorEventType(eventType: EventType): {
9
+ eventType: ExtractorEventType | LoaderEventType;
10
+ };
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
+ */
16
+ export declare function getNoScriptEventType(eventType: EventType): {
17
+ eventType: ExtractorEventType;
18
+ } | {
19
+ eventType: LoaderEventType;
20
+ };
21
+ //# sourceMappingURL=spawn.helpers.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTimeoutErrorEventType = getTimeoutErrorEventType;
4
+ exports.getNoScriptEventType = getNoScriptEventType;
5
+ const extraction_1 = require("../../types/extraction");
6
+ const loading_1 = require("../../types/loading");
7
+ /**
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
11
+ */
12
+ function getTimeoutErrorEventType(eventType) {
13
+ switch (eventType) {
14
+ // Metadata extraction (handles both old and new enum members)
15
+ case extraction_1.EventType.StartExtractingMetadata:
16
+ case extraction_1.EventType.ExtractionMetadataStart:
17
+ return {
18
+ eventType: extraction_1.ExtractorEventType.MetadataExtractionError,
19
+ };
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
+ case extraction_1.EventType.StartDeletingExtractorState:
92
+ return {
93
+ eventType: extraction_1.ExtractorEventType.ExtractorStateDeletionDone,
94
+ };
95
+ case extraction_1.EventType.StartDeletingExtractorAttachmentsState:
96
+ return {
97
+ eventType: extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionDone,
98
+ };
99
+ case extraction_1.EventType.StartDeletingLoaderState:
100
+ return {
101
+ eventType: loading_1.LoaderEventType.LoaderStateDeletionDone,
102
+ };
103
+ case extraction_1.EventType.StartDeletingLoaderAttachmentState:
104
+ return {
105
+ eventType: loading_1.LoaderEventType.LoaderAttachmentStateDeletionDone,
106
+ };
107
+ default:
108
+ console.error('Event type not recognized in getNoScriptEventType function: ' +
109
+ eventType);
110
+ return {
111
+ eventType: loading_1.LoaderEventType.UnknownEventType,
112
+ };
113
+ }
114
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=spawn.helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.helpers.test.d.ts","sourceRoot":"","sources":["../../../src/multithreading/spawn/spawn.helpers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const extraction_1 = require("../../types/extraction");
4
+ const loading_1 = require("../../types/loading");
5
+ const spawn_helpers_1 = require("./spawn.helpers");
6
+ describe(spawn_helpers_1.getTimeoutErrorEventType.name, () => {
7
+ describe('metadata extraction', () => {
8
+ it('should return MetadataExtractionError for StartExtractingMetadata', () => {
9
+ // Arrange
10
+ const eventType = extraction_1.EventType.StartExtractingMetadata;
11
+ // Act
12
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
13
+ // Assert
14
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.MetadataExtractionError);
15
+ });
16
+ it('should return MetadataExtractionError for deprecated ExtractionMetadataStart', () => {
17
+ // Arrange
18
+ const eventType = extraction_1.EventType.ExtractionMetadataStart;
19
+ // Act
20
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
21
+ // Assert
22
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.MetadataExtractionError);
23
+ });
24
+ });
25
+ describe('data extraction', () => {
26
+ it('should return DataExtractionError for StartExtractingData', () => {
27
+ // Arrange
28
+ const eventType = extraction_1.EventType.StartExtractingData;
29
+ // Act
30
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
31
+ // Assert
32
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.DataExtractionError);
33
+ });
34
+ it('should return DataExtractionError for ContinueExtractingData', () => {
35
+ // Arrange
36
+ const eventType = extraction_1.EventType.ContinueExtractingData;
37
+ // Act
38
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
39
+ // Assert
40
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.DataExtractionError);
41
+ });
42
+ it('should return DataExtractionError for deprecated ExtractionDataStart', () => {
43
+ // Arrange
44
+ const eventType = extraction_1.EventType.ExtractionDataStart;
45
+ // Act
46
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
47
+ // Assert
48
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.DataExtractionError);
49
+ });
50
+ it('should return DataExtractionError for deprecated ExtractionDataContinue', () => {
51
+ // Arrange
52
+ const eventType = extraction_1.EventType.ExtractionDataContinue;
53
+ // Act
54
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
55
+ // Assert
56
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.DataExtractionError);
57
+ });
58
+ });
59
+ describe('extractor state deletion', () => {
60
+ it('should return ExtractorStateDeletionError for StartDeletingExtractorState', () => {
61
+ // Arrange
62
+ const eventType = extraction_1.EventType.StartDeletingExtractorState;
63
+ // Act
64
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
65
+ // Assert
66
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExtractorStateDeletionError);
67
+ });
68
+ it('should return ExtractorStateDeletionError for deprecated ExtractionDataDelete', () => {
69
+ // Arrange
70
+ const eventType = extraction_1.EventType.ExtractionDataDelete;
71
+ // Act
72
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
73
+ // Assert
74
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExtractorStateDeletionError);
75
+ });
76
+ });
77
+ describe('attachments extraction', () => {
78
+ it('should return AttachmentExtractionError for StartExtractingAttachments', () => {
79
+ // Arrange
80
+ const eventType = extraction_1.EventType.StartExtractingAttachments;
81
+ // Act
82
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
83
+ // Assert
84
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.AttachmentExtractionError);
85
+ });
86
+ it('should return AttachmentExtractionError for ContinueExtractingAttachments', () => {
87
+ // Arrange
88
+ const eventType = extraction_1.EventType.ContinueExtractingAttachments;
89
+ // Act
90
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
91
+ // Assert
92
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.AttachmentExtractionError);
93
+ });
94
+ it('should return AttachmentExtractionError for deprecated ExtractionAttachmentsStart', () => {
95
+ // Arrange
96
+ const eventType = extraction_1.EventType.ExtractionAttachmentsStart;
97
+ // Act
98
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
99
+ // Assert
100
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.AttachmentExtractionError);
101
+ });
102
+ it('should return AttachmentExtractionError for deprecated ExtractionAttachmentsContinue', () => {
103
+ // Arrange
104
+ const eventType = extraction_1.EventType.ExtractionAttachmentsContinue;
105
+ // Act
106
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
107
+ // Assert
108
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.AttachmentExtractionError);
109
+ });
110
+ });
111
+ describe('extractor attachments state deletion', () => {
112
+ it('should return ExtractorAttachmentsStateDeletionError for StartDeletingExtractorAttachmentsState', () => {
113
+ // Arrange
114
+ const eventType = extraction_1.EventType.StartDeletingExtractorAttachmentsState;
115
+ // Act
116
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
117
+ // Assert
118
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionError);
119
+ });
120
+ it('should return ExtractorAttachmentsStateDeletionError for deprecated ExtractionAttachmentsDelete', () => {
121
+ // Arrange
122
+ const eventType = extraction_1.EventType.ExtractionAttachmentsDelete;
123
+ // Act
124
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
125
+ // Assert
126
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionError);
127
+ });
128
+ });
129
+ describe('external sync units extraction', () => {
130
+ it('should return ExternalSyncUnitExtractionError for StartExtractingExternalSyncUnits', () => {
131
+ // Arrange
132
+ const eventType = extraction_1.EventType.StartExtractingExternalSyncUnits;
133
+ // Act
134
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
135
+ // Assert
136
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExternalSyncUnitExtractionError);
137
+ });
138
+ it('should return ExternalSyncUnitExtractionError for deprecated ExtractionExternalSyncUnitsStart', () => {
139
+ // Arrange
140
+ const eventType = extraction_1.EventType.ExtractionExternalSyncUnitsStart;
141
+ // Act
142
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
143
+ // Assert
144
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExternalSyncUnitExtractionError);
145
+ });
146
+ });
147
+ describe('data loading', () => {
148
+ it('should return DataLoadingError for StartLoadingData', () => {
149
+ // Arrange
150
+ const eventType = extraction_1.EventType.StartLoadingData;
151
+ // Act
152
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
153
+ // Assert
154
+ expect(result.eventType).toBe(loading_1.LoaderEventType.DataLoadingError);
155
+ });
156
+ it('should return DataLoadingError for ContinueLoadingData', () => {
157
+ // Arrange
158
+ const eventType = extraction_1.EventType.ContinueLoadingData;
159
+ // Act
160
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
161
+ // Assert
162
+ expect(result.eventType).toBe(loading_1.LoaderEventType.DataLoadingError);
163
+ });
164
+ });
165
+ describe('loader state deletion', () => {
166
+ it('should return LoaderStateDeletionError for StartDeletingLoaderState', () => {
167
+ // Arrange
168
+ const eventType = extraction_1.EventType.StartDeletingLoaderState;
169
+ // Act
170
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
171
+ // Assert
172
+ expect(result.eventType).toBe(loading_1.LoaderEventType.LoaderStateDeletionError);
173
+ });
174
+ });
175
+ describe('attachment loading', () => {
176
+ it('should return AttachmentLoadingError for StartLoadingAttachments', () => {
177
+ // Arrange
178
+ const eventType = extraction_1.EventType.StartLoadingAttachments;
179
+ // Act
180
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
181
+ // Assert
182
+ expect(result.eventType).toBe(loading_1.LoaderEventType.AttachmentLoadingError);
183
+ });
184
+ it('should return AttachmentLoadingError for ContinueLoadingAttachments', () => {
185
+ // Arrange
186
+ const eventType = extraction_1.EventType.ContinueLoadingAttachments;
187
+ // Act
188
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
189
+ // Assert
190
+ expect(result.eventType).toBe(loading_1.LoaderEventType.AttachmentLoadingError);
191
+ });
192
+ });
193
+ describe('loader attachment state deletion', () => {
194
+ it('should return LoaderAttachmentStateDeletionError for StartDeletingLoaderAttachmentState', () => {
195
+ // Arrange
196
+ const eventType = extraction_1.EventType.StartDeletingLoaderAttachmentState;
197
+ // Act
198
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
199
+ // Assert
200
+ expect(result.eventType).toBe(loading_1.LoaderEventType.LoaderAttachmentStateDeletionError);
201
+ });
202
+ });
203
+ describe('unknown event types', () => {
204
+ it('[edge] should return UnknownEventType and log error for unrecognized event type', () => {
205
+ // Arrange
206
+ const eventType = extraction_1.EventType.UnknownEventType;
207
+ const consoleErrorSpy = jest
208
+ .spyOn(console, 'error')
209
+ .mockImplementation(() => { });
210
+ // Act
211
+ const result = (0, spawn_helpers_1.getTimeoutErrorEventType)(eventType);
212
+ // Assert
213
+ expect(result.eventType).toBe(loading_1.LoaderEventType.UnknownEventType);
214
+ expect(consoleErrorSpy).toHaveBeenCalledWith('Event type not recognized in getTimeoutErrorEventType function: ' +
215
+ eventType);
216
+ // Cleanup
217
+ consoleErrorSpy.mockRestore();
218
+ });
219
+ });
220
+ });
221
+ describe(spawn_helpers_1.getNoScriptEventType.name, () => {
222
+ describe('extractor state deletion', () => {
223
+ it('should return ExtractorStateDeletionDone for StartDeletingExtractorState', () => {
224
+ // Arrange
225
+ const eventType = extraction_1.EventType.StartDeletingExtractorState;
226
+ // Act
227
+ const result = (0, spawn_helpers_1.getNoScriptEventType)(eventType);
228
+ // Assert
229
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExtractorStateDeletionDone);
230
+ });
231
+ });
232
+ describe('extractor attachments state deletion', () => {
233
+ it('should return ExtractorAttachmentsStateDeletionDone for StartDeletingExtractorAttachmentsState', () => {
234
+ // Arrange
235
+ const eventType = extraction_1.EventType.StartDeletingExtractorAttachmentsState;
236
+ // Act
237
+ const result = (0, spawn_helpers_1.getNoScriptEventType)(eventType);
238
+ // Assert
239
+ expect(result.eventType).toBe(extraction_1.ExtractorEventType.ExtractorAttachmentsStateDeletionDone);
240
+ });
241
+ });
242
+ describe('loader state deletion', () => {
243
+ it('should return LoaderStateDeletionDone for StartDeletingLoaderState', () => {
244
+ // Arrange
245
+ const eventType = extraction_1.EventType.StartDeletingLoaderState;
246
+ // Act
247
+ const result = (0, spawn_helpers_1.getNoScriptEventType)(eventType);
248
+ // Assert
249
+ expect(result.eventType).toBe(loading_1.LoaderEventType.LoaderStateDeletionDone);
250
+ });
251
+ });
252
+ describe('loader attachment state deletion', () => {
253
+ it('should return LoaderAttachmentStateDeletionDone for StartDeletingLoaderAttachmentState', () => {
254
+ // Arrange
255
+ const eventType = extraction_1.EventType.StartDeletingLoaderAttachmentState;
256
+ // Act
257
+ const result = (0, spawn_helpers_1.getNoScriptEventType)(eventType);
258
+ // Assert
259
+ expect(result.eventType).toBe(loading_1.LoaderEventType.LoaderAttachmentStateDeletionDone);
260
+ });
261
+ });
262
+ describe('unknown event types', () => {
263
+ it('[edge] should return UnknownEventType and log error for unrecognized event type', () => {
264
+ // Arrange
265
+ const eventType = extraction_1.EventType.StartExtractingData;
266
+ const consoleErrorSpy = jest
267
+ .spyOn(console, 'error')
268
+ .mockImplementation(() => { });
269
+ // Act
270
+ const result = (0, spawn_helpers_1.getNoScriptEventType)(eventType);
271
+ // Assert
272
+ expect(result.eventType).toBe(loading_1.LoaderEventType.UnknownEventType);
273
+ expect(consoleErrorSpy).toHaveBeenCalledWith('Event type not recognized in getNoScriptEventType function: ' +
274
+ eventType);
275
+ // Cleanup
276
+ consoleErrorSpy.mockRestore();
277
+ });
278
+ it('[edge] should return UnknownEventType for StartLoadingData', () => {
279
+ // Arrange
280
+ const eventType = extraction_1.EventType.StartLoadingData;
281
+ const consoleErrorSpy = jest
282
+ .spyOn(console, 'error')
283
+ .mockImplementation(() => { });
284
+ // Act
285
+ const result = (0, spawn_helpers_1.getNoScriptEventType)(eventType);
286
+ // Assert
287
+ expect(result.eventType).toBe(loading_1.LoaderEventType.UnknownEventType);
288
+ expect(consoleErrorSpy).toHaveBeenCalled();
289
+ // Cleanup
290
+ consoleErrorSpy.mockRestore();
291
+ });
292
+ });
293
+ });