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