@devrev/airsync-sdk 2.0.0-beta.2 → 2.0.0-beta.3
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/dist/airsync-sdk.d.ts +414 -157
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +2 -1
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +8 -2
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.js +14 -14
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +47 -23
- package/dist/common/time-value-resolver.d.ts +2 -2
- package/dist/common/time-value-resolver.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/multithreading/adapters/base-adapter.d.ts +56 -0
- package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts +2 -0
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.emit.test.js → adapters/base-adapter.emit.test.js} +66 -53
- package/dist/multithreading/adapters/base-adapter.js +105 -0
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts +2 -0
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.artifacts.test.js → adapters/extraction-adapter.artifacts.test.js} +6 -6
- package/dist/multithreading/adapters/extraction-adapter.d.ts +58 -0
- package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/extraction-adapter.js +325 -0
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts +2 -0
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.extraction.test.js → adapters/extraction-adapter.test.js} +41 -51
- package/dist/multithreading/adapters/loading-adapter.d.ts +44 -0
- package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.helpers.d.ts → adapters/loading-adapter.helpers.d.ts} +1 -1
- package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts +2 -0
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.helpers.test.js → adapters/loading-adapter.helpers.test.js} +26 -26
- package/dist/multithreading/adapters/loading-adapter.js +461 -0
- package/dist/multithreading/adapters/loading-adapter.test.d.ts +2 -0
- package/dist/multithreading/adapters/loading-adapter.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.loading.test.js → adapters/loading-adapter.test.js} +19 -26
- package/dist/multithreading/adapters/serialization.test.d.ts +2 -0
- package/dist/multithreading/adapters/serialization.test.d.ts.map +1 -0
- package/dist/multithreading/process-task.d.ts +16 -1
- package/dist/multithreading/process-task.d.ts.map +1 -1
- package/dist/multithreading/process-task.js +97 -49
- package/dist/multithreading/process-task.test.js +15 -15
- package/dist/state/base-state.d.ts +75 -0
- package/dist/state/base-state.d.ts.map +1 -0
- package/dist/state/base-state.js +261 -0
- package/dist/state/extraction-state.d.ts +29 -0
- package/dist/state/extraction-state.d.ts.map +1 -0
- package/dist/state/extraction-state.js +122 -0
- package/dist/state/loading-state.d.ts +19 -0
- package/dist/state/loading-state.d.ts.map +1 -0
- package/dist/state/loading-state.js +40 -0
- package/dist/state/state.extract-window.test.js +7 -7
- package/dist/state/state.interfaces.d.ts +32 -25
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +15 -4
- package/dist/state/state.pending-boundaries.test.js +15 -15
- package/dist/state/state.post-state.test.js +9 -8
- package/dist/state/state.test.js +22 -19
- package/dist/state/state.time-value-resolution.test.js +8 -8
- package/dist/types/extraction.d.ts +3 -3
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/workers.d.ts +16 -15
- package/dist/types/workers.d.ts.map +1 -1
- package/package.json +1 -1
- 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.d.ts +0 -97
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.emit.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.emit.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.extraction.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.extraction.test.d.ts.map +0 -1
- 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.js +0 -846
- package/dist/multithreading/worker-adapter/worker-adapter.loading.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.loading.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.serialization.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.serialization.test.d.ts.map +0 -1
- package/dist/state/state.d.ts +0 -36
- package/dist/state/state.d.ts.map +0 -1
- package/dist/state/state.js +0 -265
- /package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +0 -0
- /package/dist/multithreading/{worker-adapter/worker-adapter.serialization.test.js → adapters/serialization.test.js} +0 -0
|
@@ -3,12 +3,13 @@ import { AttachmentsStreamingPoolParams } from './attachments-streaming-pool.int
|
|
|
3
3
|
export declare class AttachmentsStreamingPool<ConnectorState> {
|
|
4
4
|
private adapter;
|
|
5
5
|
private attachments;
|
|
6
|
+
private attachmentsMetadata;
|
|
6
7
|
private batchSize;
|
|
7
8
|
private delay;
|
|
8
9
|
private stream;
|
|
9
10
|
private totalProcessedCount;
|
|
10
11
|
private readonly PROGRESS_REPORT_INTERVAL;
|
|
11
|
-
constructor({ adapter, attachments, batchSize, stream, }: AttachmentsStreamingPoolParams<ConnectorState>);
|
|
12
|
+
constructor({ adapter, attachments, attachmentsMetadata, batchSize, stream, }: AttachmentsStreamingPoolParams<ConnectorState>);
|
|
12
13
|
private updateProgress;
|
|
13
14
|
/**
|
|
14
15
|
* Migrates processed attachments from the legacy string[] format to the new ProcessedAttachment[] format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments-streaming-pool.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,qBAAa,wBAAwB,CAAC,cAAc;IAClD,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"attachments-streaming-pool.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,qBAAa,wBAAwB,CAAC,cAAc;IAClD,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,mBAAmB,CAA8C;IACzE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAA4C;IAE1D,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAM;gBAEnC,EACV,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,SAAc,EACd,MAAM,GACP,EAAE,8BAA8B,CAAC,cAAc,CAAC;YASnC,cAAc;IAS5B;;;;;OAKG;IAEH,OAAO,CAAC,2BAA2B;IAsB7B,SAAS,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAyCjD,kBAAkB;CAuFzB"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { ExternalSystemAttachmentStreamingFunction, NormalizedAttachment } from '../types';
|
|
2
|
-
import {
|
|
2
|
+
import { ExtractionAdapter } from '../multithreading/adapters/extraction-adapter';
|
|
3
|
+
import { ToDevRev } from '../state/state.interfaces';
|
|
3
4
|
export interface AttachmentsStreamingPoolParams<ConnectorState> {
|
|
4
|
-
adapter:
|
|
5
|
+
adapter: ExtractionAdapter<ConnectorState>;
|
|
5
6
|
attachments: NormalizedAttachment[];
|
|
7
|
+
/**
|
|
8
|
+
* SDK-owned attachments bookkeeping. Passed in directly so the pool does not
|
|
9
|
+
* reach into the (now-encapsulated) adapter state.
|
|
10
|
+
*/
|
|
11
|
+
attachmentsMetadata: ToDevRev['attachmentsMetadata'] | undefined;
|
|
6
12
|
batchSize?: number;
|
|
7
13
|
stream: ExternalSystemAttachmentStreamingFunction;
|
|
8
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments-streaming-pool.interfaces.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"attachments-streaming-pool.interfaces.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,WAAW,8BAA8B,CAAC,cAAc;IAC5D,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC3C,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC;;;OAGG;IACH,mBAAmB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,yCAAyC,CAAC;CACnD"}
|
|
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AttachmentsStreamingPool = void 0;
|
|
4
4
|
const helpers_1 = require("../common/helpers");
|
|
5
5
|
class AttachmentsStreamingPool {
|
|
6
|
-
constructor({ adapter, attachments, batchSize = 10, stream, }) {
|
|
6
|
+
constructor({ adapter, attachments, attachmentsMetadata, batchSize = 10, stream, }) {
|
|
7
7
|
this.totalProcessedCount = 0;
|
|
8
8
|
this.PROGRESS_REPORT_INTERVAL = 50;
|
|
9
9
|
this.adapter = adapter;
|
|
10
10
|
this.attachments = [...attachments]; // Create a copy we can mutate
|
|
11
|
+
this.attachmentsMetadata = attachmentsMetadata;
|
|
11
12
|
this.batchSize = batchSize;
|
|
12
13
|
this.delay = undefined;
|
|
13
14
|
this.stream = stream;
|
|
@@ -47,22 +48,19 @@ class AttachmentsStreamingPool {
|
|
|
47
48
|
}
|
|
48
49
|
async streamAll() {
|
|
49
50
|
console.log(`Starting download of ${this.attachments.length} attachments, streaming ${this.batchSize} at once.`);
|
|
50
|
-
if (!this.
|
|
51
|
+
if (!this.attachmentsMetadata) {
|
|
51
52
|
const error = new Error('toDevRev state is not initialized');
|
|
52
53
|
console.error(error);
|
|
53
54
|
return { error };
|
|
54
55
|
}
|
|
55
56
|
// Get the list of successfully processed attachments in previous (possibly incomplete) batch extraction.
|
|
56
57
|
// If no such list exists, create an empty one.
|
|
57
|
-
if (!this.
|
|
58
|
-
.lastProcessedAttachmentsIdsList
|
|
59
|
-
this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
|
|
60
|
-
[];
|
|
58
|
+
if (!this.attachmentsMetadata.lastProcessedAttachmentsIdsList) {
|
|
59
|
+
this.attachmentsMetadata.lastProcessedAttachmentsIdsList = [];
|
|
61
60
|
}
|
|
62
61
|
// Migrate old processed attachments to the new format.
|
|
63
|
-
this.
|
|
64
|
-
this.migrateProcessedAttachments(this.
|
|
65
|
-
.lastProcessedAttachmentsIdsList);
|
|
62
|
+
this.attachmentsMetadata.lastProcessedAttachmentsIdsList =
|
|
63
|
+
this.migrateProcessedAttachments(this.attachmentsMetadata.lastProcessedAttachmentsIdsList);
|
|
66
64
|
// Start initial batch of promises up to batchSize limit
|
|
67
65
|
const initialBatchSize = Math.min(this.batchSize, this.attachments.length);
|
|
68
66
|
const initialPromises = [];
|
|
@@ -77,7 +75,7 @@ class AttachmentsStreamingPool {
|
|
|
77
75
|
return {};
|
|
78
76
|
}
|
|
79
77
|
async startPoolStreaming() {
|
|
80
|
-
var _a, _b, _c
|
|
78
|
+
var _a, _b, _c;
|
|
81
79
|
// Process attachments until the attachments array is empty
|
|
82
80
|
while (this.attachments.length > 0) {
|
|
83
81
|
// If delay is set, stop streaming
|
|
@@ -94,8 +92,7 @@ class AttachmentsStreamingPool {
|
|
|
94
92
|
if (!attachment) {
|
|
95
93
|
break; // Exit if no more attachments
|
|
96
94
|
}
|
|
97
|
-
if (this.
|
|
98
|
-
((_a = this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList) === null || _a === void 0 ? void 0 : _a.some((it) => it.id == attachment.id && it.parent_id == attachment.parent_id))) {
|
|
95
|
+
if ((_b = (_a = this.attachmentsMetadata) === null || _a === void 0 ? void 0 : _a.lastProcessedAttachmentsIdsList) === null || _b === void 0 ? void 0 : _b.some((it) => it.id == attachment.id && it.parent_id == attachment.parent_id)) {
|
|
99
96
|
continue; // Skip if the attachment ID is already processed
|
|
100
97
|
}
|
|
101
98
|
try {
|
|
@@ -118,8 +115,11 @@ class AttachmentsStreamingPool {
|
|
|
118
115
|
continue;
|
|
119
116
|
}
|
|
120
117
|
// No rate limiting, process normally
|
|
121
|
-
if ((_c =
|
|
122
|
-
|
|
118
|
+
if ((_c = this.attachmentsMetadata) === null || _c === void 0 ? void 0 : _c.lastProcessedAttachmentsIdsList) {
|
|
119
|
+
this.attachmentsMetadata.lastProcessedAttachmentsIdsList.push({
|
|
120
|
+
id: attachment.id,
|
|
121
|
+
parent_id: attachment.parent_id,
|
|
122
|
+
});
|
|
123
123
|
}
|
|
124
124
|
await this.updateProgress();
|
|
125
125
|
}
|
|
@@ -6,16 +6,18 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
6
6
|
let mockAdapter;
|
|
7
7
|
let mockStream;
|
|
8
8
|
let mockAttachments;
|
|
9
|
+
let attachmentsMetadata;
|
|
9
10
|
beforeEach(() => {
|
|
11
|
+
// SDK-owned attachments bookkeeping, passed into the pool directly.
|
|
12
|
+
attachmentsMetadata = {
|
|
13
|
+
artifactIds: [],
|
|
14
|
+
lastProcessed: 0,
|
|
15
|
+
lastProcessedAttachmentsIdsList: [],
|
|
16
|
+
};
|
|
10
17
|
// Create mock adapter
|
|
11
18
|
mockAdapter = {
|
|
12
19
|
state: {
|
|
13
20
|
attachments: { completed: false },
|
|
14
|
-
toDevRev: {
|
|
15
|
-
attachmentsMetadata: {
|
|
16
|
-
lastProcessedAttachmentsIdsList: [],
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
21
|
},
|
|
20
22
|
processAttachment: jest
|
|
21
23
|
.fn()
|
|
@@ -53,6 +55,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
53
55
|
it('should initialize with default values', () => {
|
|
54
56
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
55
57
|
adapter: mockAdapter,
|
|
58
|
+
attachmentsMetadata,
|
|
56
59
|
attachments: mockAttachments,
|
|
57
60
|
stream: mockStream,
|
|
58
61
|
});
|
|
@@ -64,6 +67,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
64
67
|
it('should initialize with custom batch size', () => {
|
|
65
68
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
66
69
|
adapter: mockAdapter,
|
|
70
|
+
attachmentsMetadata,
|
|
67
71
|
attachments: mockAttachments,
|
|
68
72
|
batchSize: 5,
|
|
69
73
|
stream: mockStream,
|
|
@@ -73,6 +77,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
73
77
|
it('should create a copy of attachments array', () => {
|
|
74
78
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
75
79
|
adapter: mockAdapter,
|
|
80
|
+
attachmentsMetadata,
|
|
76
81
|
attachments: mockAttachments,
|
|
77
82
|
stream: mockStream,
|
|
78
83
|
});
|
|
@@ -82,11 +87,11 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
82
87
|
});
|
|
83
88
|
describe(attachments_streaming_pool_1.AttachmentsStreamingPool.prototype.streamAll.name, () => {
|
|
84
89
|
it('should initialize lastProcessedAttachmentsIdsList if it does not exist', async () => {
|
|
85
|
-
|
|
86
|
-
undefined;
|
|
90
|
+
attachmentsMetadata.lastProcessedAttachmentsIdsList = undefined;
|
|
87
91
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
88
92
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
89
93
|
adapter: mockAdapter,
|
|
94
|
+
attachmentsMetadata,
|
|
90
95
|
attachments: mockAttachments,
|
|
91
96
|
stream: mockStream,
|
|
92
97
|
});
|
|
@@ -95,13 +100,13 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
95
100
|
.spyOn(pool, 'startPoolStreaming')
|
|
96
101
|
.mockResolvedValue(undefined);
|
|
97
102
|
await pool.streamAll();
|
|
98
|
-
expect(
|
|
99
|
-
.lastProcessedAttachmentsIdsList).toEqual([]);
|
|
103
|
+
expect(attachmentsMetadata.lastProcessedAttachmentsIdsList).toEqual([]);
|
|
100
104
|
});
|
|
101
105
|
it('should process all attachments successfully', async () => {
|
|
102
106
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
103
107
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
104
108
|
adapter: mockAdapter,
|
|
109
|
+
attachmentsMetadata,
|
|
105
110
|
attachments: mockAttachments,
|
|
106
111
|
stream: mockStream,
|
|
107
112
|
});
|
|
@@ -112,6 +117,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
112
117
|
it('should handle empty attachments array', async () => {
|
|
113
118
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
114
119
|
adapter: mockAdapter,
|
|
120
|
+
attachmentsMetadata,
|
|
115
121
|
attachments: [],
|
|
116
122
|
stream: mockStream,
|
|
117
123
|
});
|
|
@@ -124,6 +130,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
124
130
|
mockAdapter.processAttachment.mockResolvedValue(delayResponse);
|
|
125
131
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
126
132
|
adapter: mockAdapter,
|
|
133
|
+
attachmentsMetadata,
|
|
127
134
|
attachments: mockAttachments,
|
|
128
135
|
stream: mockStream,
|
|
129
136
|
});
|
|
@@ -131,18 +138,20 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
131
138
|
expect(result).toEqual({ delay: 5000 });
|
|
132
139
|
});
|
|
133
140
|
it('should resume attachment extraction if it encounters old ids', async () => {
|
|
134
|
-
var _a;
|
|
135
141
|
// Test migration from old string[] format to new ProcessedAttachment[] format
|
|
136
142
|
// Using 'as any' because we're intentionally testing legacy data format
|
|
137
|
-
|
|
138
|
-
|
|
143
|
+
attachmentsMetadata.lastProcessedAttachmentsIdsList = [
|
|
144
|
+
'attachment-1',
|
|
145
|
+
'attachment-2',
|
|
146
|
+
];
|
|
139
147
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
140
148
|
adapter: mockAdapter,
|
|
149
|
+
attachmentsMetadata,
|
|
141
150
|
attachments: mockAttachments,
|
|
142
151
|
stream: mockStream,
|
|
143
152
|
});
|
|
144
153
|
const result = await pool.streamAll();
|
|
145
|
-
expect(
|
|
154
|
+
expect(attachmentsMetadata.lastProcessedAttachmentsIdsList).toEqual([
|
|
146
155
|
{ id: 'attachment-1', parent_id: '' },
|
|
147
156
|
{ id: 'attachment-2', parent_id: '' },
|
|
148
157
|
{ id: 'attachment-1', parent_id: 'parent-1' },
|
|
@@ -182,6 +191,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
182
191
|
const warnSpy = jest.spyOn(console, 'warn');
|
|
183
192
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
184
193
|
adapter: mockAdapter,
|
|
194
|
+
attachmentsMetadata,
|
|
185
195
|
attachments: largeAttachments,
|
|
186
196
|
stream: mockStream,
|
|
187
197
|
});
|
|
@@ -189,17 +199,18 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
189
199
|
expect(mockAdapter.processAttachment).toHaveBeenCalledTimes(3);
|
|
190
200
|
// Since there are 3 parallel workers (one per attachment), each logs its own failed attachment
|
|
191
201
|
expect(warnSpy).toHaveBeenCalledTimes(3);
|
|
192
|
-
expect(
|
|
193
|
-
.lastProcessedAttachmentsIdsList).toEqual([]);
|
|
202
|
+
expect(attachmentsMetadata.lastProcessedAttachmentsIdsList).toEqual([]);
|
|
194
203
|
});
|
|
195
204
|
});
|
|
196
205
|
describe(attachments_streaming_pool_1.AttachmentsStreamingPool.prototype.startPoolStreaming.name, () => {
|
|
197
206
|
it('should skip already processed attachments', async () => {
|
|
198
|
-
|
|
199
|
-
|
|
207
|
+
attachmentsMetadata.lastProcessedAttachmentsIdsList = [
|
|
208
|
+
{ id: 'attachment-1', parent_id: 'parent-1' },
|
|
209
|
+
];
|
|
200
210
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
201
211
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
202
212
|
adapter: mockAdapter,
|
|
213
|
+
attachmentsMetadata,
|
|
203
214
|
attachments: mockAttachments,
|
|
204
215
|
stream: mockStream,
|
|
205
216
|
});
|
|
@@ -210,12 +221,12 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
210
221
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
211
222
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
212
223
|
adapter: mockAdapter,
|
|
224
|
+
attachmentsMetadata,
|
|
213
225
|
attachments: mockAttachments,
|
|
214
226
|
stream: mockStream,
|
|
215
227
|
});
|
|
216
228
|
await pool.streamAll();
|
|
217
|
-
expect(
|
|
218
|
-
.lastProcessedAttachmentsIdsList).toEqual([
|
|
229
|
+
expect(attachmentsMetadata.lastProcessedAttachmentsIdsList).toEqual([
|
|
219
230
|
{ id: 'attachment-1', parent_id: 'parent-1' },
|
|
220
231
|
{ id: 'attachment-2', parent_id: 'parent-2' },
|
|
221
232
|
{ id: 'attachment-3', parent_id: 'parent-3' },
|
|
@@ -230,13 +241,13 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
230
241
|
.mockResolvedValueOnce({}); // Third attachment succeeds
|
|
231
242
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
232
243
|
adapter: mockAdapter,
|
|
244
|
+
attachmentsMetadata,
|
|
233
245
|
attachments: mockAttachments,
|
|
234
246
|
stream: mockStream,
|
|
235
247
|
});
|
|
236
248
|
await pool.streamAll();
|
|
237
249
|
expect(warnSpy).toHaveBeenCalledWith('Skipping attachment with ID attachment-2 with extension jpg due to error in processAttachment function', error);
|
|
238
|
-
expect(
|
|
239
|
-
.lastProcessedAttachmentsIdsList).toEqual([
|
|
250
|
+
expect(attachmentsMetadata.lastProcessedAttachmentsIdsList).toEqual([
|
|
240
251
|
{
|
|
241
252
|
id: 'attachment-1',
|
|
242
253
|
parent_id: 'parent-1',
|
|
@@ -254,13 +265,13 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
254
265
|
.mockResolvedValueOnce({}); // Third attachment succeeds
|
|
255
266
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
256
267
|
adapter: mockAdapter,
|
|
268
|
+
attachmentsMetadata,
|
|
257
269
|
attachments: mockAttachments,
|
|
258
270
|
stream: mockStream,
|
|
259
271
|
});
|
|
260
272
|
await pool.streamAll();
|
|
261
273
|
expect(mockAdapter.processAttachment).toHaveBeenCalledTimes(3);
|
|
262
|
-
expect(
|
|
263
|
-
.lastProcessedAttachmentsIdsList).toEqual([
|
|
274
|
+
expect(attachmentsMetadata.lastProcessedAttachmentsIdsList).toEqual([
|
|
264
275
|
{ id: 'attachment-1', parent_id: 'parent-1' },
|
|
265
276
|
{ id: 'attachment-3', parent_id: 'parent-3' },
|
|
266
277
|
]);
|
|
@@ -269,6 +280,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
269
280
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
270
281
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
271
282
|
adapter: mockAdapter,
|
|
283
|
+
attachmentsMetadata,
|
|
272
284
|
attachments: [mockAttachments[0]],
|
|
273
285
|
stream: mockStream,
|
|
274
286
|
});
|
|
@@ -280,6 +292,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
280
292
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
281
293
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
282
294
|
adapter: mockAdapter,
|
|
295
|
+
attachmentsMetadata,
|
|
283
296
|
attachments: [mockAttachments[0]],
|
|
284
297
|
stream: mockStream,
|
|
285
298
|
});
|
|
@@ -291,6 +304,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
291
304
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
292
305
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
293
306
|
adapter: mockAdapter,
|
|
307
|
+
attachmentsMetadata,
|
|
294
308
|
attachments: mockAttachments,
|
|
295
309
|
batchSize: 100,
|
|
296
310
|
stream: mockStream,
|
|
@@ -308,6 +322,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
308
322
|
});
|
|
309
323
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
310
324
|
adapter: mockAdapter,
|
|
325
|
+
attachmentsMetadata,
|
|
311
326
|
attachments: mockAttachments,
|
|
312
327
|
batchSize: 1,
|
|
313
328
|
stream: mockStream,
|
|
@@ -319,6 +334,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
319
334
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
320
335
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
321
336
|
adapter: mockAdapter,
|
|
337
|
+
attachmentsMetadata,
|
|
322
338
|
attachments: mockAttachments,
|
|
323
339
|
batchSize: 1,
|
|
324
340
|
stream: mockStream,
|
|
@@ -338,6 +354,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
338
354
|
};
|
|
339
355
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
340
356
|
adapter: mockAdapter,
|
|
357
|
+
attachmentsMetadata,
|
|
341
358
|
attachments: [attachmentWithContentType],
|
|
342
359
|
stream: mockStream,
|
|
343
360
|
});
|
|
@@ -371,6 +388,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
371
388
|
];
|
|
372
389
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
373
390
|
adapter: mockAdapter,
|
|
391
|
+
attachmentsMetadata,
|
|
374
392
|
attachments: mixedAttachments,
|
|
375
393
|
batchSize: 1,
|
|
376
394
|
stream: mockStream,
|
|
@@ -395,6 +413,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
395
413
|
};
|
|
396
414
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
397
415
|
adapter: mockAdapter,
|
|
416
|
+
attachmentsMetadata,
|
|
398
417
|
attachments: [attachmentWithContentType],
|
|
399
418
|
batchSize: 1,
|
|
400
419
|
stream: mockStream,
|
|
@@ -415,6 +434,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
415
434
|
};
|
|
416
435
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
417
436
|
adapter: mockAdapter,
|
|
437
|
+
attachmentsMetadata,
|
|
418
438
|
attachments: [attachmentWithContentType],
|
|
419
439
|
batchSize: 1,
|
|
420
440
|
stream: mockStream,
|
|
@@ -429,6 +449,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
429
449
|
const warnSpy = jest.spyOn(console, 'warn');
|
|
430
450
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
431
451
|
adapter: mockAdapter,
|
|
452
|
+
attachmentsMetadata,
|
|
432
453
|
attachments: [mockAttachments[0]],
|
|
433
454
|
batchSize: 1,
|
|
434
455
|
stream: mockStream,
|
|
@@ -453,6 +474,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
453
474
|
});
|
|
454
475
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
455
476
|
adapter: mockAdapter,
|
|
477
|
+
attachmentsMetadata,
|
|
456
478
|
attachments: mockAttachments,
|
|
457
479
|
batchSize: 2,
|
|
458
480
|
stream: mockStream,
|
|
@@ -472,6 +494,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
472
494
|
mockAdapter.processAttachment.mockResolvedValue({});
|
|
473
495
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
474
496
|
adapter: mockAdapter,
|
|
497
|
+
attachmentsMetadata,
|
|
475
498
|
attachments: mockAttachments.slice(0, 1),
|
|
476
499
|
stream: mockStream,
|
|
477
500
|
});
|
|
@@ -504,6 +527,7 @@ describe(attachments_streaming_pool_1.AttachmentsStreamingPool.name, () => {
|
|
|
504
527
|
});
|
|
505
528
|
const pool = new attachments_streaming_pool_1.AttachmentsStreamingPool({
|
|
506
529
|
adapter: mockAdapter,
|
|
530
|
+
attachmentsMetadata,
|
|
507
531
|
attachments: mockAttachments.slice(0, 1),
|
|
508
532
|
stream: mockStreamFn,
|
|
509
533
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeUnit, TimeValue } from '../types/extraction';
|
|
2
|
-
import {
|
|
2
|
+
import { ExtractionSdkState } from '../state/state.interfaces';
|
|
3
3
|
/**
|
|
4
4
|
* Parses a shorthand duration string into its numeric value and unit.
|
|
5
5
|
* Supported units:
|
|
@@ -43,5 +43,5 @@ export declare function applyDuration(baseTimestamp: string, duration: string, o
|
|
|
43
43
|
* @throws Error if required TimeValue.value is missing for ABSOLUTE or *_WINDOW types
|
|
44
44
|
* @throws Error if workersOldest/workersNewest is not set in state for WORKERS_* types
|
|
45
45
|
*/
|
|
46
|
-
export declare function resolveTimeValue(timeValue: TimeValue, state:
|
|
46
|
+
export declare function resolveTimeValue(timeValue: TimeValue, state: ExtractionSdkState): string;
|
|
47
47
|
//# sourceMappingURL=time-value-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-value-resolver.d.ts","sourceRoot":"","sources":["../../src/common/time-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"time-value-resolver.d.ts","sourceRoot":"","sources":["../../src/common/time-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;CAChB,CAcA;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,GAAG,UAAU,GAC5B,MAAM,CA6BR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,kBAAkB,GACxB,MAAM,CA2ER"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,10 @@ export * from './http';
|
|
|
5
5
|
export { serializeAxiosError } from './logger/logger';
|
|
6
6
|
export { MockServer } from './mock-server/mock-server';
|
|
7
7
|
export type { RequestInfo, RetryConfig, RouteConfig, } from './mock-server/mock-server.interfaces';
|
|
8
|
-
export {
|
|
8
|
+
export { processExtractionTask, processLoadingTask, } from './multithreading/process-task';
|
|
9
9
|
export { spawn } from './multithreading/spawn/spawn';
|
|
10
|
-
export {
|
|
10
|
+
export { ExtractionAdapter } from './multithreading/adapters/extraction-adapter';
|
|
11
|
+
export { LoadingAdapter } from './multithreading/adapters/loading-adapter';
|
|
11
12
|
export { createMockEvent, MOCK_SERVER_DEFAULT_URL } from './common/test-utils';
|
|
12
13
|
export type { DeepPartial } from './common/test-utils';
|
|
13
14
|
export * from './types';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.MOCK_SERVER_DEFAULT_URL = exports.createMockEvent = exports.
|
|
17
|
+
exports.MOCK_SERVER_DEFAULT_URL = exports.createMockEvent = exports.LoadingAdapter = exports.ExtractionAdapter = exports.spawn = exports.processLoadingTask = exports.processExtractionTask = exports.MockServer = exports.serializeAxiosError = exports.AirSyncDefaultItemTypes = void 0;
|
|
18
18
|
var constants_1 = require("./common/constants");
|
|
19
19
|
Object.defineProperty(exports, "AirSyncDefaultItemTypes", { enumerable: true, get: function () { return constants_1.AirSyncDefaultItemTypes; } });
|
|
20
20
|
__exportStar(require("./common/install-initial-domain-mapping"), exports);
|
|
@@ -24,11 +24,14 @@ Object.defineProperty(exports, "serializeAxiosError", { enumerable: true, get: f
|
|
|
24
24
|
var mock_server_1 = require("./mock-server/mock-server");
|
|
25
25
|
Object.defineProperty(exports, "MockServer", { enumerable: true, get: function () { return mock_server_1.MockServer; } });
|
|
26
26
|
var process_task_1 = require("./multithreading/process-task");
|
|
27
|
-
Object.defineProperty(exports, "
|
|
27
|
+
Object.defineProperty(exports, "processExtractionTask", { enumerable: true, get: function () { return process_task_1.processExtractionTask; } });
|
|
28
|
+
Object.defineProperty(exports, "processLoadingTask", { enumerable: true, get: function () { return process_task_1.processLoadingTask; } });
|
|
28
29
|
var spawn_1 = require("./multithreading/spawn/spawn");
|
|
29
30
|
Object.defineProperty(exports, "spawn", { enumerable: true, get: function () { return spawn_1.spawn; } });
|
|
30
|
-
var
|
|
31
|
-
Object.defineProperty(exports, "
|
|
31
|
+
var extraction_adapter_1 = require("./multithreading/adapters/extraction-adapter");
|
|
32
|
+
Object.defineProperty(exports, "ExtractionAdapter", { enumerable: true, get: function () { return extraction_adapter_1.ExtractionAdapter; } });
|
|
33
|
+
var loading_adapter_1 = require("./multithreading/adapters/loading-adapter");
|
|
34
|
+
Object.defineProperty(exports, "LoadingAdapter", { enumerable: true, get: function () { return loading_adapter_1.LoadingAdapter; } });
|
|
32
35
|
var test_utils_1 = require("./common/test-utils");
|
|
33
36
|
Object.defineProperty(exports, "createMockEvent", { enumerable: true, get: function () { return test_utils_1.createMockEvent; } });
|
|
34
37
|
Object.defineProperty(exports, "MOCK_SERVER_DEFAULT_URL", { enumerable: true, get: function () { return test_utils_1.MOCK_SERVER_DEFAULT_URL; } });
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BaseState } from '../../state/base-state';
|
|
2
|
+
import { BaseSdkState } from '../../state/state.interfaces';
|
|
3
|
+
import { AirSyncEvent, EventData, ExtractorEventType } from '../../types/extraction';
|
|
4
|
+
import { LoaderEventType } from '../../types/loading';
|
|
5
|
+
import { WorkerAdapterOptions } from '../../types/workers';
|
|
6
|
+
import { Uploader } from '../../uploader/uploader';
|
|
7
|
+
/**
|
|
8
|
+
* BaseAdapter holds the state and behavior shared by both sync modes and owns
|
|
9
|
+
* the `emit` control-protocol flow as a template method. Mode-specific adapters
|
|
10
|
+
* (`ExtractionAdapter`, `LoadingAdapter`) implement the abstract hooks to inject
|
|
11
|
+
* their own pre-emit work and event payload shaping.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam ConnectorState - the connector-owned state shape
|
|
14
|
+
* @typeParam StateClass - the mode's `BaseState` subclass
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class BaseAdapter<ConnectorState, StateClass extends BaseState<ConnectorState, BaseSdkState>> {
|
|
17
|
+
readonly event: AirSyncEvent;
|
|
18
|
+
readonly options?: WorkerAdapterOptions;
|
|
19
|
+
isTimeout: boolean;
|
|
20
|
+
hasWorkerEmitted: boolean;
|
|
21
|
+
protected adapterState: StateClass;
|
|
22
|
+
protected uploader: Uploader;
|
|
23
|
+
constructor({ event, adapterState, options, }: {
|
|
24
|
+
event: AirSyncEvent;
|
|
25
|
+
adapterState: StateClass;
|
|
26
|
+
options?: WorkerAdapterOptions;
|
|
27
|
+
});
|
|
28
|
+
get state(): ConnectorState;
|
|
29
|
+
set state(value: ConnectorState);
|
|
30
|
+
postState(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Pre-emit hook run before any state is persisted or the event is sent.
|
|
33
|
+
* Extraction uploads pending repos and updates extraction boundaries here;
|
|
34
|
+
* loading has nothing to do. Throwing aborts the emit (the caller signals
|
|
35
|
+
* worker exit).
|
|
36
|
+
*/
|
|
37
|
+
protected abstract beforeEmit(newEventType: ExtractorEventType | LoaderEventType): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Builds the mode-specific extras merged into the emitted event payload
|
|
40
|
+
* (extraction: artifacts; loading: reports + processed files).
|
|
41
|
+
*/
|
|
42
|
+
protected abstract buildEmitPayload(newEventType: ExtractorEventType | LoaderEventType): EventData;
|
|
43
|
+
/**
|
|
44
|
+
* Post-emit hook run after the event has been sent successfully. Extraction
|
|
45
|
+
* clears its accumulated artifacts here; loading has nothing to do.
|
|
46
|
+
*/
|
|
47
|
+
protected abstract afterEmit(newEventType: ExtractorEventType | LoaderEventType): void;
|
|
48
|
+
/**
|
|
49
|
+
* Emits an event to the platform.
|
|
50
|
+
*
|
|
51
|
+
* @param newEventType - The event type to be emitted
|
|
52
|
+
* @param data - The data to be sent with the event
|
|
53
|
+
*/
|
|
54
|
+
emit(newEventType: ExtractorEventType | LoaderEventType, data?: EventData): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=base-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../../src/multithreading/adapters/base-adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,SAAS,EACT,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,oBAAoB,EAGrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD;;;;;;;;GAQG;AACH,8BAAsB,WAAW,CAC/B,cAAc,EACd,UAAU,SAAS,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC;IAE1D,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAEjB,EACV,KAAK,EACL,YAAY,EACZ,OAAO,GACR,EAAE;QACD,KAAK,EAAE,YAAY,CAAC;QACpB,YAAY,EAAE,UAAU,CAAC;QACzB,OAAO,CAAC,EAAE,oBAAoB,CAAC;KAChC;IAYD,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,cAAc,EAE9B;IAEK,SAAS;IAMf;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,CAC3B,YAAY,EAAE,kBAAkB,GAAG,eAAe,GACjD,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CACjC,YAAY,EAAE,kBAAkB,GAAG,eAAe,GACjD,SAAS;IAEZ;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAC1B,YAAY,EAAE,kBAAkB,GAAG,eAAe,GACjD,IAAI;IAEP;;;;;OAKG;IACG,IAAI,CACR,YAAY,EAAE,kBAAkB,GAAG,eAAe,EAClD,IAAI,CAAC,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;CAkEjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.emit.test.d.ts","sourceRoot":"","sources":["../../../src/multithreading/adapters/base-adapter.emit.test.ts"],"names":[],"mappings":""}
|