@devrev/airsync-sdk 2.0.0-beta.2 → 2.0.0-beta.4
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 +5 -11
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +1 -8
- 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 +11 -39
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/helpers.d.ts +0 -14
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +0 -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/index.d.ts +25 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -30
- package/dist/logger/logger.d.ts +14 -0
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +55 -8
- package/dist/mappers/mappers.d.ts +9 -10
- package/dist/mappers/mappers.d.ts.map +1 -1
- package/dist/mappers/{mappers.interface.d.ts → mappers.interfaces.d.ts} +5 -5
- package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
- package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +3 -3
- package/dist/mappers/mappers.js +13 -9
- package/dist/multithreading/adapters/base-adapter.d.ts +71 -0
- package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/base-adapter.js +138 -0
- package/dist/multithreading/adapters/extraction-adapter.d.ts +57 -0
- package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/extraction-adapter.js +323 -0
- 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.js +431 -0
- package/dist/{common/control-protocol.d.ts → multithreading/emit.d.ts} +1 -1
- package/dist/multithreading/emit.d.ts.map +1 -0
- package/dist/{common/control-protocol.js → multithreading/emit.js} +3 -3
- 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 +115 -50
- package/dist/multithreading/spawn/spawn.helpers.d.ts +23 -3
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.js +152 -2
- package/dist/multithreading/spawn/spawn.js +7 -7
- package/dist/multithreading/worker.js +1 -2
- package/dist/repo/repo.js +2 -2
- 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/install-initial-domain-mapping.d.ts.map +1 -0
- package/dist/{common → state}/install-initial-domain-mapping.js +4 -4
- package/dist/state/loading-state.d.ts +18 -0
- package/dist/state/loading-state.d.ts.map +1 -0
- package/dist/state/loading-state.js +39 -0
- package/dist/state/state.d.ts +3 -35
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.interfaces.d.ts +20 -3
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +19 -1
- package/dist/state/state.js +9 -263
- package/dist/{common → state}/time-value-resolver.d.ts +4 -5
- package/dist/state/time-value-resolver.d.ts.map +1 -0
- package/dist/{common → state}/time-value-resolver.js +9 -8
- package/dist/{common/test-utils.d.ts → testing/mock-event.d.ts} +1 -2
- package/dist/testing/mock-event.d.ts.map +1 -0
- package/dist/{common/test-utils.js → testing/mock-event.js} +14 -3
- package/dist/{mock-server → testing}/mock-server.d.ts +5 -0
- package/dist/testing/mock-server.d.ts.map +1 -0
- package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
- package/dist/{mock-server → testing}/mock-server.js +6 -1
- package/dist/types/errors.d.ts +9 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/extraction.d.ts +73 -18
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +4 -6
- package/dist/types/loading.d.ts +1 -2
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +0 -1
- package/dist/types/workers.d.ts +64 -20
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/uploader/uploader.d.ts +5 -4
- package/dist/uploader/uploader.d.ts.map +1 -1
- package/dist/uploader/uploader.interfaces.d.ts +1 -1
- package/dist/uploader/uploader.js +10 -10
- package/package.json +3 -3
- package/dist/airsync-sdk.d.ts +0 -1802
- 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 -516
- package/dist/common/control-protocol.d.ts.map +0 -1
- package/dist/common/errors.d.ts +0 -6
- package/dist/common/errors.d.ts.map +0 -1
- 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 -211
- package/dist/common/test-utils.d.ts.map +0 -1
- package/dist/common/time-value-resolver.d.ts.map +0 -1
- package/dist/common/time-value-resolver.test.d.ts +0 -2
- package/dist/common/time-value-resolver.test.d.ts.map +0 -1
- package/dist/common/time-value-resolver.test.js +0 -268
- 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 -175
- 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 -60
- 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 -2
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js +0 -17
- 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 -537
- 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 -105
- package/dist/mock-server/mock-server.d.ts.map +0 -1
- package/dist/mock-server/mock-server.interfaces.d.ts.map +0 -1
- 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 -108
- package/dist/multithreading/process-task.test.d.ts +0 -2
- package/dist/multithreading/process-task.test.d.ts.map +0 -1
- package/dist/multithreading/process-task.test.js +0 -146
- 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/spawn/spawn.test.d.ts +0 -2
- package/dist/multithreading/spawn/spawn.test.d.ts.map +0 -1
- package/dist/multithreading/spawn/spawn.test.js +0 -232
- 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 -175
- 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.emit.test.js +0 -390
- 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.extraction.test.js +0 -799
- 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 -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.loading.test.js +0 -596
- 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/multithreading/worker-adapter/worker-adapter.serialization.test.js +0 -71
- 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 -184
- package/dist/state/state.extract-window.test.d.ts +0 -2
- package/dist/state/state.extract-window.test.d.ts.map +0 -1
- package/dist/state/state.extract-window.test.js +0 -163
- package/dist/state/state.pending-boundaries.test.d.ts +0 -2
- package/dist/state/state.pending-boundaries.test.d.ts.map +0 -1
- package/dist/state/state.pending-boundaries.test.js +0 -189
- package/dist/state/state.post-state.test.d.ts +0 -2
- package/dist/state/state.post-state.test.d.ts.map +0 -1
- package/dist/state/state.post-state.test.js +0 -77
- 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 -268
- package/dist/state/state.time-value-resolution.test.d.ts +0 -2
- package/dist/state/state.time-value-resolution.test.d.ts.map +0 -1
- package/dist/state/state.time-value-resolution.test.js +0 -175
- package/dist/tsdoc-metadata.json +0 -11
- 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 -96
- package/dist/types/index.d.ts +0 -11
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -21
- 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 -256
- 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 -601
- /package/dist/http/{axios-client-internal.js → client.js} +0 -0
- /package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +0 -0
- /package/dist/{common → state}/install-initial-domain-mapping.d.ts +0 -0
- /package/dist/{mock-server → testing}/mock-server.interfaces.d.ts +0 -0
- /package/dist/{mock-server → testing}/mock-server.interfaces.js +0 -0
- /package/dist/{common → types}/errors.js +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseState } from './base-state';
|
|
2
|
+
import { StateInterface } from './state.interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* ExtractionState is the per-mode state for extraction workers. It seeds the
|
|
5
|
+
* extraction SDK state (extraction boundaries + attachments bookkeeping) on top
|
|
6
|
+
* of the shared lifecycle provided by `BaseState` and adds extraction-window
|
|
7
|
+
* resolution.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ExtractionState<ConnectorState> extends BaseState<ConnectorState> {
|
|
10
|
+
constructor(params: StateInterface<ConnectorState>);
|
|
11
|
+
/**
|
|
12
|
+
* Resolves the extraction window onto the event context.
|
|
13
|
+
*
|
|
14
|
+
* On StartExtractingMetadata: resolve fresh from the TimeValue objects in the
|
|
15
|
+
* event context and cache them as pending boundaries (always overwrite).
|
|
16
|
+
* On all other events: reuse the pending boundaries cached during
|
|
17
|
+
* StartExtractingMetadata. Finally, validate that extract_from < extract_to.
|
|
18
|
+
*/
|
|
19
|
+
resolveExtractionWindow(): void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates and initializes an `ExtractionState` for an extraction worker.
|
|
23
|
+
*
|
|
24
|
+
* For non-stateless events this fetches persisted state, installs the initial
|
|
25
|
+
* domain mapping if the snap-in version changed, then resolves the extraction
|
|
26
|
+
* window (time-value resolution + pending boundary reuse) and validates it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createExtractionState<ConnectorState>({ event, initialState, initialDomainMapping, options, }: StateInterface<ConnectorState>): Promise<ExtractionState<ConnectorState>>;
|
|
29
|
+
//# sourceMappingURL=extraction-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-state.d.ts","sourceRoot":"","sources":["../../src/state/extraction-state.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,cAAc,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC;gBAChE,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC;IAIlD;;;;;;;OAOG;IACH,uBAAuB,IAAI,IAAI;CA+EhC;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,cAAc,EAAE,EAC1D,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,GACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAkB3E"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExtractionState = void 0;
|
|
4
|
+
exports.createExtractionState = createExtractionState;
|
|
5
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
6
|
+
const constants_1 = require("../common/constants");
|
|
7
|
+
const time_value_resolver_1 = require("./time-value-resolver");
|
|
8
|
+
const logger_1 = require("../logger/logger");
|
|
9
|
+
const extraction_1 = require("../types/extraction");
|
|
10
|
+
const workers_1 = require("../types/workers");
|
|
11
|
+
const base_state_1 = require("./base-state");
|
|
12
|
+
const state_interfaces_1 = require("./state.interfaces");
|
|
13
|
+
/**
|
|
14
|
+
* ExtractionState is the per-mode state for extraction workers. It seeds the
|
|
15
|
+
* extraction SDK state (extraction boundaries + attachments bookkeeping) on top
|
|
16
|
+
* of the shared lifecycle provided by `BaseState` and adds extraction-window
|
|
17
|
+
* resolution.
|
|
18
|
+
*/
|
|
19
|
+
class ExtractionState extends base_state_1.BaseState {
|
|
20
|
+
constructor(params) {
|
|
21
|
+
super(params, state_interfaces_1.extractionSdkState);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolves the extraction window onto the event context.
|
|
25
|
+
*
|
|
26
|
+
* On StartExtractingMetadata: resolve fresh from the TimeValue objects in the
|
|
27
|
+
* event context and cache them as pending boundaries (always overwrite).
|
|
28
|
+
* On all other events: reuse the pending boundaries cached during
|
|
29
|
+
* StartExtractingMetadata. Finally, validate that extract_from < extract_to.
|
|
30
|
+
*/
|
|
31
|
+
resolveExtractionWindow() {
|
|
32
|
+
const sdkState = this.sdkState;
|
|
33
|
+
const eventContext = this.event.payload.event_context;
|
|
34
|
+
if (this.event.payload.event_type === extraction_1.EventType.StartExtractingMetadata) {
|
|
35
|
+
const timeFields = [
|
|
36
|
+
{
|
|
37
|
+
source: 'extraction_start_time',
|
|
38
|
+
target: 'extract_from',
|
|
39
|
+
pending: 'pendingWorkersOldest',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
source: 'extraction_end_time',
|
|
43
|
+
target: 'extract_to',
|
|
44
|
+
pending: 'pendingWorkersNewest',
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
for (const { source, target, pending } of timeFields) {
|
|
48
|
+
const timeValue = eventContext[source];
|
|
49
|
+
if (timeValue && timeValue.type) {
|
|
50
|
+
try {
|
|
51
|
+
const resolved = (0, time_value_resolver_1.resolveTimeValue)(timeValue, sdkState);
|
|
52
|
+
eventContext[target] = resolved;
|
|
53
|
+
sdkState[pending] = resolved;
|
|
54
|
+
console.log(`Resolved ${target} to ${resolved}. Stored in ${pending}.`);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const errorMessage = `Failed to resolve ${source}: ${(0, logger_1.serializeError)(error)}`;
|
|
58
|
+
console.error(errorMessage);
|
|
59
|
+
node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
|
|
60
|
+
subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
|
|
61
|
+
payload: { message: errorMessage },
|
|
62
|
+
});
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Non-StartExtractingMetadata events: reuse pending values from state
|
|
70
|
+
if (sdkState.pendingWorkersOldest) {
|
|
71
|
+
eventContext.extract_from = sdkState.pendingWorkersOldest;
|
|
72
|
+
console.log(`Reusing pendingWorkersOldest as extract_from: ${sdkState.pendingWorkersOldest}.`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.log('pendingWorkersOldest is not set in state. extract_from will not be populated for this invocation.');
|
|
76
|
+
}
|
|
77
|
+
if (sdkState.pendingWorkersNewest) {
|
|
78
|
+
eventContext.extract_to = sdkState.pendingWorkersNewest;
|
|
79
|
+
console.log(`Reusing pendingWorkersNewest as extract_to: ${sdkState.pendingWorkersNewest}.`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log('pendingWorkersNewest is not set in state. extract_to will not be populated for this invocation.');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Validate that extract_from is before extract_to
|
|
86
|
+
if (eventContext.extract_from && eventContext.extract_to) {
|
|
87
|
+
if (eventContext.extract_from >= eventContext.extract_to) {
|
|
88
|
+
const errorMessage = `Invalid extraction window: extract_from (${eventContext.extract_from}) must be older than extract_to (${eventContext.extract_to}). This indicates an error in the platform.`;
|
|
89
|
+
console.error(errorMessage);
|
|
90
|
+
node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
|
|
91
|
+
subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
|
|
92
|
+
payload: { message: errorMessage },
|
|
93
|
+
});
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.ExtractionState = ExtractionState;
|
|
100
|
+
/**
|
|
101
|
+
* Creates and initializes an `ExtractionState` for an extraction worker.
|
|
102
|
+
*
|
|
103
|
+
* For non-stateless events this fetches persisted state, installs the initial
|
|
104
|
+
* domain mapping if the snap-in version changed, then resolves the extraction
|
|
105
|
+
* window (time-value resolution + pending boundary reuse) and validates it.
|
|
106
|
+
*/
|
|
107
|
+
async function createExtractionState({ event, initialState, initialDomainMapping, options, }) {
|
|
108
|
+
// Deep clone the initial state to avoid mutating the original state
|
|
109
|
+
const deepCloneInitialState = structuredClone(initialState);
|
|
110
|
+
const state = new ExtractionState({
|
|
111
|
+
event,
|
|
112
|
+
initialState: deepCloneInitialState,
|
|
113
|
+
initialDomainMapping,
|
|
114
|
+
options,
|
|
115
|
+
});
|
|
116
|
+
if (!constants_1.STATELESS_EVENT_TYPES.includes(event.payload.event_type)) {
|
|
117
|
+
await state.init(deepCloneInitialState);
|
|
118
|
+
await state.installInitialDomainMappingIfNeeded(initialDomainMapping);
|
|
119
|
+
state.resolveExtractionWindow();
|
|
120
|
+
}
|
|
121
|
+
return state;
|
|
122
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-initial-domain-mapping.d.ts","sourceRoot":"","sources":["../../src/state/install-initial-domain-mapping.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,oBAAoB,GAC7C,OAAO,CAAC,IAAI,CAAC,CA0Ff"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.installInitialDomainMapping = installInitialDomainMapping;
|
|
4
|
-
const
|
|
4
|
+
const client_1 = require("../http/client");
|
|
5
5
|
const logger_1 = require("../logger/logger");
|
|
6
6
|
async function installInitialDomainMapping(event, initialDomainMappingJson) {
|
|
7
7
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -13,7 +13,7 @@ async function installInitialDomainMapping(event, initialDomainMappingJson) {
|
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
// Get snap-in details
|
|
16
|
-
const snapInResponse = await
|
|
16
|
+
const snapInResponse = await client_1.axiosClient.get(devrevEndpoint + '/internal/snap-ins.get', {
|
|
17
17
|
headers: {
|
|
18
18
|
Authorization: devrevToken,
|
|
19
19
|
},
|
|
@@ -33,7 +33,7 @@ async function installInitialDomainMapping(event, initialDomainMappingJson) {
|
|
|
33
33
|
if (startingRecipeBlueprint &&
|
|
34
34
|
Object.keys(startingRecipeBlueprint).length !== 0) {
|
|
35
35
|
try {
|
|
36
|
-
const recipeBlueprintResponse = await
|
|
36
|
+
const recipeBlueprintResponse = await client_1.axiosClient.post(`${devrevEndpoint}/internal/airdrop.recipe.blueprints.create`, Object.assign({}, startingRecipeBlueprint), {
|
|
37
37
|
headers: {
|
|
38
38
|
Authorization: devrevToken,
|
|
39
39
|
},
|
|
@@ -47,7 +47,7 @@ async function installInitialDomainMapping(event, initialDomainMappingJson) {
|
|
|
47
47
|
}
|
|
48
48
|
// Install the initial domain mappings
|
|
49
49
|
const additionalMappings = initialDomainMappingJson.additional_mappings || {};
|
|
50
|
-
const initialDomainMappingInstallResponse = await
|
|
50
|
+
const initialDomainMappingInstallResponse = await client_1.axiosClient.post(`${devrevEndpoint}/internal/airdrop.recipe.initial-domain-mappings.install`, Object.assign(Object.assign({ external_system_type: 'ADaaS', import_slug: importSlug, snap_in_slug: snapInSlug }, (recipeBlueprintId && {
|
|
51
51
|
starting_recipe_blueprint: recipeBlueprintId,
|
|
52
52
|
})), additionalMappings), {
|
|
53
53
|
headers: {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseState } from './base-state';
|
|
2
|
+
import { StateInterface } from './state.interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* LoadingState is the per-mode state for loading workers. It seeds the loading
|
|
5
|
+
* SDK state (files-to-load bookkeeping) on top of the shared lifecycle provided
|
|
6
|
+
* by `BaseState`. Loading has no extraction-window resolution.
|
|
7
|
+
*/
|
|
8
|
+
export declare class LoadingState<ConnectorState> extends BaseState<ConnectorState> {
|
|
9
|
+
constructor(params: StateInterface<ConnectorState>);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates and initializes a `LoadingState` for a loading worker.
|
|
13
|
+
*
|
|
14
|
+
* For non-stateless events this fetches persisted state and installs the
|
|
15
|
+
* initial domain mapping if the snap-in version changed.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createLoadingState<ConnectorState>({ event, initialState, initialDomainMapping, options, }: StateInterface<ConnectorState>): Promise<LoadingState<ConnectorState>>;
|
|
18
|
+
//# sourceMappingURL=loading-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loading-state.d.ts","sourceRoot":"","sources":["../../src/state/loading-state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErE;;;;GAIG;AACH,qBAAa,YAAY,CAAC,cAAc,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC;gBAC7D,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC;CAGnD;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,EACvD,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,GACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAiBxE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoadingState = void 0;
|
|
4
|
+
exports.createLoadingState = createLoadingState;
|
|
5
|
+
const constants_1 = require("../common/constants");
|
|
6
|
+
const base_state_1 = require("./base-state");
|
|
7
|
+
const state_interfaces_1 = require("./state.interfaces");
|
|
8
|
+
/**
|
|
9
|
+
* LoadingState is the per-mode state for loading workers. It seeds the loading
|
|
10
|
+
* SDK state (files-to-load bookkeeping) on top of the shared lifecycle provided
|
|
11
|
+
* by `BaseState`. Loading has no extraction-window resolution.
|
|
12
|
+
*/
|
|
13
|
+
class LoadingState extends base_state_1.BaseState {
|
|
14
|
+
constructor(params) {
|
|
15
|
+
super(params, state_interfaces_1.loadingSdkState);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.LoadingState = LoadingState;
|
|
19
|
+
/**
|
|
20
|
+
* Creates and initializes a `LoadingState` for a loading worker.
|
|
21
|
+
*
|
|
22
|
+
* For non-stateless events this fetches persisted state and installs the
|
|
23
|
+
* initial domain mapping if the snap-in version changed.
|
|
24
|
+
*/
|
|
25
|
+
async function createLoadingState({ event, initialState, initialDomainMapping, options, }) {
|
|
26
|
+
// Deep clone the initial state to avoid mutating the original state
|
|
27
|
+
const deepCloneInitialState = structuredClone(initialState);
|
|
28
|
+
const state = new LoadingState({
|
|
29
|
+
event,
|
|
30
|
+
initialState: deepCloneInitialState,
|
|
31
|
+
initialDomainMapping,
|
|
32
|
+
options,
|
|
33
|
+
});
|
|
34
|
+
if (!constants_1.STATELESS_EVENT_TYPES.includes(event.payload.event_type)) {
|
|
35
|
+
await state.init(deepCloneInitialState);
|
|
36
|
+
await state.installInitialDomainMappingIfNeeded(initialDomainMapping);
|
|
37
|
+
}
|
|
38
|
+
return state;
|
|
39
|
+
}
|
package/dist/state/state.d.ts
CHANGED
|
@@ -1,36 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export declare class State<ConnectorState> {
|
|
5
|
-
private _state;
|
|
6
|
-
private _extractionScope;
|
|
7
|
-
private initialSdkState;
|
|
8
|
-
private workerUrl;
|
|
9
|
-
private devrevToken;
|
|
10
|
-
private syncUnitId;
|
|
11
|
-
private requestId;
|
|
12
|
-
constructor({ event, initialState }: StateInterface<ConnectorState>);
|
|
13
|
-
get state(): AdapterState<ConnectorState>;
|
|
14
|
-
set state(value: AdapterState<ConnectorState>);
|
|
15
|
-
get extractionScope(): ExtractionScope;
|
|
16
|
-
/**
|
|
17
|
-
* Initializes the state for this adapter instance by fetching from API
|
|
18
|
-
* or creating an initial state if none exists (404).
|
|
19
|
-
* @param initialState The initial connector state provided by the spawn function
|
|
20
|
-
*/
|
|
21
|
-
init(initialState: ConnectorState): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Updates the state of the adapter by posting to API.
|
|
24
|
-
* @param {object} state - The state to be updated
|
|
25
|
-
*/
|
|
26
|
-
postState(state?: AdapterState<ConnectorState>): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Fetches the state of the adapter from API.
|
|
29
|
-
* @return The raw state data from API
|
|
30
|
-
*/
|
|
31
|
-
fetchState(): Promise<{
|
|
32
|
-
state: string;
|
|
33
|
-
objects?: string;
|
|
34
|
-
}>;
|
|
35
|
-
}
|
|
1
|
+
export { BaseState } from './base-state';
|
|
2
|
+
export { ExtractionState, createExtractionState } from './extraction-state';
|
|
3
|
+
export { LoadingState, createLoadingState } from './loading-state';
|
|
36
4
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -18,10 +18,14 @@ export interface SdkState {
|
|
|
18
18
|
snapInVersionId?: string;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* AdapterStateEnvelope is the v2 on-disk state shape: connector state and SDK
|
|
22
|
+
* bookkeeping are stored as disjoint sub-objects so SDK internals stay
|
|
23
|
+
* encapsulated and never collide with connector keys.
|
|
23
24
|
*/
|
|
24
|
-
export
|
|
25
|
+
export interface AdapterStateEnvelope<ConnectorState> {
|
|
26
|
+
connectorState: ConnectorState;
|
|
27
|
+
sdkState: SdkState;
|
|
28
|
+
}
|
|
25
29
|
export interface ToDevRev {
|
|
26
30
|
attachmentsMetadata: {
|
|
27
31
|
artifactIds: string[];
|
|
@@ -65,4 +69,17 @@ export declare const loadingSdkState: {
|
|
|
65
69
|
filesToLoad: never[];
|
|
66
70
|
};
|
|
67
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* The set of top-level state keys owned by the SDK. Derived from the initial
|
|
74
|
+
* SDK state constants so it auto-updates whenever a new SDK field is added.
|
|
75
|
+
* Used by the migration shim to split a flat v1 state blob into the
|
|
76
|
+
* `{ connectorState, sdkState }` envelope: keys in this set go to `sdkState`,
|
|
77
|
+
* everything else is connector state.
|
|
78
|
+
*
|
|
79
|
+
* `lastSyncStarted` / `lastSuccessfulSyncStarted` are retained here even though
|
|
80
|
+
* they are no longer fields on `SdkState`: a flat v1 blob may still carry them,
|
|
81
|
+
* and they must be recognized as SDK-owned so they are stripped out rather than
|
|
82
|
+
* leaking into connector state during migration.
|
|
83
|
+
*/
|
|
84
|
+
export declare const V1_SDK_STATE_KEYS: ReadonlySet<string>;
|
|
68
85
|
//# sourceMappingURL=state.interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.interfaces.d.ts","sourceRoot":"","sources":["../../src/state/state.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB;gHAC4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;gHAC4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"state.interfaces.d.ts","sourceRoot":"","sources":["../../src/state/state.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB;gHAC4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;gHAC4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,cAAc;IAClD,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,mBAAmB,EAAE;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,+BAA+B,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACzD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAAC,cAAc;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,cAAc,CAAC;IAC7B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;CAa9B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAKhD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadingSdkState = exports.extractionSdkState = void 0;
|
|
3
|
+
exports.V1_SDK_STATE_KEYS = exports.loadingSdkState = exports.extractionSdkState = void 0;
|
|
4
4
|
exports.extractionSdkState = {
|
|
5
5
|
pendingWorkersOldest: '',
|
|
6
6
|
pendingWorkersNewest: '',
|
|
@@ -21,3 +21,21 @@ exports.loadingSdkState = {
|
|
|
21
21
|
filesToLoad: [],
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* The set of top-level state keys owned by the SDK. Derived from the initial
|
|
26
|
+
* SDK state constants so it auto-updates whenever a new SDK field is added.
|
|
27
|
+
* Used by the migration shim to split a flat v1 state blob into the
|
|
28
|
+
* `{ connectorState, sdkState }` envelope: keys in this set go to `sdkState`,
|
|
29
|
+
* everything else is connector state.
|
|
30
|
+
*
|
|
31
|
+
* `lastSyncStarted` / `lastSuccessfulSyncStarted` are retained here even though
|
|
32
|
+
* they are no longer fields on `SdkState`: a flat v1 blob may still carry them,
|
|
33
|
+
* and they must be recognized as SDK-owned so they are stripped out rather than
|
|
34
|
+
* leaking into connector state during migration.
|
|
35
|
+
*/
|
|
36
|
+
exports.V1_SDK_STATE_KEYS = new Set([
|
|
37
|
+
...Object.keys(exports.extractionSdkState),
|
|
38
|
+
...Object.keys(exports.loadingSdkState),
|
|
39
|
+
'lastSyncStarted',
|
|
40
|
+
'lastSuccessfulSyncStarted',
|
|
41
|
+
]);
|