@devrev/airsync-sdk 2.0.0-beta.1 → 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/README.md +0 -4
- package/dist/airsync-sdk.d.ts +2059 -0
- 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 +27 -16
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +246 -27
- package/dist/common/constants.d.ts +16 -5
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +20 -6
- package/dist/common/control-protocol.d.ts +2 -2
- package/dist/common/control-protocol.d.ts.map +1 -1
- package/dist/common/control-protocol.js +1 -5
- package/dist/common/helpers.d.ts +8 -0
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +15 -0
- package/dist/common/install-initial-domain-mapping.d.ts +2 -2
- package/dist/common/install-initial-domain-mapping.test.js +5 -2
- package/dist/common/test-utils.d.ts +19 -0
- package/dist/common/test-utils.d.ts.map +1 -0
- package/dist/common/test-utils.js +101 -0
- package/dist/common/time-value-resolver.d.ts +47 -0
- package/dist/common/time-value-resolver.d.ts.map +1 -0
- package/dist/common/time-value-resolver.js +141 -0
- package/dist/common/time-value-resolver.test.d.ts +2 -0
- package/dist/common/time-value-resolver.test.d.ts.map +1 -0
- package/dist/common/time-value-resolver.test.js +268 -0
- package/dist/http/axios-client-internal.d.ts.map +1 -1
- package/dist/http/axios-client-internal.js +7 -0
- package/dist/http/axios-client-internal.test.js +21 -0
- package/dist/http/axios-client.d.ts.map +1 -1
- package/dist/http/axios-client.js +6 -3
- package/dist/http/index.d.ts +0 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +0 -1
- package/dist/index.d.ts +12 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -13
- package/dist/logger/logger.d.ts +1 -17
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.interfaces.d.ts +2 -2
- package/dist/logger/logger.js +35 -27
- package/dist/logger/logger.test.js +66 -19
- package/dist/mappers/mappers.interface.d.ts +5 -5
- package/dist/mappers/mappers.interface.js +3 -3
- package/dist/mappers/mappers.test.js +8 -10
- package/dist/mock-server/mock-server.d.ts +47 -0
- package/dist/mock-server/mock-server.d.ts.map +1 -0
- package/dist/mock-server/mock-server.interfaces.d.ts +73 -0
- package/dist/mock-server/mock-server.interfaces.d.ts.map +1 -0
- package/dist/mock-server/mock-server.interfaces.js +4 -0
- package/dist/mock-server/mock-server.js +278 -0
- 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/adapters/base-adapter.emit.test.js +403 -0
- 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} +53 -5
- 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/adapters/extraction-adapter.test.js +789 -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.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/adapters/loading-adapter.test.js +589 -0
- package/dist/multithreading/adapters/serialization.test.d.ts +2 -0
- package/dist/multithreading/adapters/serialization.test.d.ts.map +1 -0
- package/dist/multithreading/adapters/serialization.test.js +71 -0
- package/dist/multithreading/create-worker.test.js +36 -17
- 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 -82
- package/dist/multithreading/process-task.test.d.ts +2 -0
- package/dist/multithreading/process-task.test.d.ts.map +1 -0
- package/dist/multithreading/process-task.test.js +146 -0
- package/dist/multithreading/spawn/spawn.d.ts +3 -3
- package/dist/multithreading/spawn/spawn.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.js +6 -14
- package/dist/multithreading/spawn/spawn.helpers.test.js +8 -8
- package/dist/multithreading/spawn/spawn.js +20 -25
- package/dist/multithreading/spawn/spawn.test.d.ts +2 -0
- package/dist/multithreading/spawn/spawn.test.d.ts.map +1 -0
- package/dist/multithreading/spawn/spawn.test.js +232 -0
- package/dist/repo/repo.d.ts.map +1 -1
- package/dist/repo/repo.interfaces.d.ts +4 -2
- package/dist/repo/repo.interfaces.d.ts.map +1 -1
- package/dist/repo/repo.js +4 -3
- package/dist/repo/repo.test.js +60 -7
- 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.d.ts +2 -0
- package/dist/state/state.extract-window.test.d.ts.map +1 -0
- package/dist/state/state.extract-window.test.js +163 -0
- package/dist/state/state.interfaces.d.ts +44 -27
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +18 -5
- package/dist/state/state.pending-boundaries.test.d.ts +2 -0
- package/dist/state/state.pending-boundaries.test.d.ts.map +1 -0
- package/dist/state/state.pending-boundaries.test.js +189 -0
- package/dist/state/state.post-state.test.d.ts +2 -0
- package/dist/state/state.post-state.test.d.ts.map +1 -0
- package/dist/state/state.post-state.test.js +78 -0
- package/dist/state/state.test.js +135 -88
- package/dist/state/state.time-value-resolution.test.d.ts +2 -0
- package/dist/state/state.time-value-resolution.test.d.ts.map +1 -0
- package/dist/state/state.time-value-resolution.test.js +175 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/types/common.d.ts +0 -25
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +1 -11
- package/dist/types/external-domain-metadata.d.ts +20 -1
- package/dist/types/external-domain-metadata.d.ts.map +1 -1
- package/dist/types/extraction.d.ts +92 -221
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +56 -124
- package/dist/types/extraction.test.js +69 -43
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -3
- package/dist/types/loading.d.ts +4 -24
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +1 -22
- package/dist/types/workers.d.ts +47 -29
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/types/workers.js +1 -0
- package/dist/uploader/uploader.d.ts +1 -0
- package/dist/uploader/uploader.d.ts.map +1 -1
- package/dist/uploader/uploader.helpers.test.js +0 -11
- package/dist/uploader/uploader.interfaces.d.ts +3 -3
- package/dist/uploader/uploader.js +53 -20
- package/dist/uploader/uploader.test.js +22 -10
- package/package.json +10 -13
- 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/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/types.d.ts +0 -17
- package/dist/http/types.d.ts.map +0 -1
- package/dist/http/types.js +0 -2
- 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 -91
- package/dist/multithreading/worker-adapter/worker-adapter.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 -745
- 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/state/state.d.ts +0 -30
- package/dist/state/state.d.ts.map +0 -1
- package/dist/state/state.js +0 -166
- /package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +0 -0
package/dist/types/workers.d.ts
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
import { Worker } from 'worker_threads';
|
|
2
2
|
import type { LogLevel } from '../logger/logger.interfaces';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { BaseState } from '../state/base-state';
|
|
4
|
+
import { BaseSdkState } from '../state/state.interfaces';
|
|
5
|
+
import { BaseAdapter } from '../multithreading/adapters/base-adapter';
|
|
6
|
+
import { AirSyncEvent, EventType, ExtractorEventType } from './extraction';
|
|
6
7
|
import { LoaderEventType } from './loading';
|
|
7
8
|
import { InitialDomainMapping } from './common';
|
|
8
9
|
/**
|
|
9
|
-
* WorkerAdapterInterface is
|
|
10
|
+
* WorkerAdapterInterface is the constructor parameter shape for an adapter.
|
|
10
11
|
* @interface WorkerAdapterInterface
|
|
11
12
|
* @constructor
|
|
12
|
-
* @param {
|
|
13
|
-
* @param {
|
|
14
|
-
* @param {
|
|
13
|
+
* @param {AirSyncEvent} event - The event object received from the platform
|
|
14
|
+
* @param {BaseState} adapterState - The state instance for the adapter
|
|
15
|
+
* @param {WorkerAdapterOptions} options - The options to create a new adapter
|
|
15
16
|
*/
|
|
16
|
-
export interface WorkerAdapterInterface<ConnectorState
|
|
17
|
-
event:
|
|
18
|
-
adapterState:
|
|
17
|
+
export interface WorkerAdapterInterface<ConnectorState, StateClass extends BaseState<ConnectorState, BaseSdkState>> {
|
|
18
|
+
event: AirSyncEvent;
|
|
19
|
+
adapterState: StateClass;
|
|
19
20
|
options?: WorkerAdapterOptions;
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* ExtractionScope represents the parsed extraction scope from the platform.
|
|
24
|
+
* Each key is an item type name, and the value indicates whether it should be extracted.
|
|
25
|
+
*/
|
|
26
|
+
export type ExtractionScope = Record<string, {
|
|
27
|
+
extract: boolean;
|
|
28
|
+
}>;
|
|
21
29
|
/**
|
|
22
30
|
* WorkerAdapterOptions represents the options for WorkerAdapter class.
|
|
23
31
|
* @interface WorkerAdapterOptions
|
|
@@ -32,16 +40,17 @@ export interface WorkerAdapterOptions {
|
|
|
32
40
|
timeout?: number;
|
|
33
41
|
batchSize?: number;
|
|
34
42
|
workerPathOverrides?: WorkerPathOverrides;
|
|
43
|
+
skipConfirmation?: boolean;
|
|
35
44
|
}
|
|
36
45
|
/**
|
|
37
46
|
* SpawnInterface is an interface for Spawn class.
|
|
38
47
|
* @interface SpawnInterface
|
|
39
48
|
* @constructor
|
|
40
|
-
* @param {
|
|
49
|
+
* @param {AirSyncEvent} event - The event object received from the platform
|
|
41
50
|
* @param {Worker} worker - The worker thread
|
|
42
51
|
*/
|
|
43
52
|
export interface SpawnInterface {
|
|
44
|
-
event:
|
|
53
|
+
event: AirSyncEvent;
|
|
45
54
|
worker: Worker;
|
|
46
55
|
options?: WorkerAdapterOptions;
|
|
47
56
|
resolve: (value: void | PromiseLike<void>) => void;
|
|
@@ -54,41 +63,38 @@ export interface SpawnInterface {
|
|
|
54
63
|
* In case of lambda timeout, the class emits a lambda timeout event to the platform.
|
|
55
64
|
* @interface SpawnFactoryInterface
|
|
56
65
|
* @constructor
|
|
57
|
-
* @param {
|
|
66
|
+
* @param {AirSyncEvent} event - The event object received from the platform
|
|
58
67
|
* @param {object=} initialState - The initial state of the adapter
|
|
59
|
-
* @param {string} workerPath - The path to the worker file
|
|
60
68
|
* @param {string} initialDomainMapping - The initial domain mapping
|
|
61
69
|
* @param {WorkerAdapterOptions} options - The options to create a new instance of Spawn class
|
|
62
70
|
* @param {string=} baseWorkerPath - The base path for the worker files, usually `__dirname`
|
|
63
71
|
*/
|
|
64
72
|
export interface SpawnFactoryInterface<ConnectorState> {
|
|
65
|
-
event:
|
|
73
|
+
event: AirSyncEvent;
|
|
66
74
|
initialState: ConnectorState;
|
|
67
|
-
/** @deprecated Remove getWorkerPath function and use baseWorkerPath: __dirname instead of workerPath */
|
|
68
|
-
workerPath?: string;
|
|
69
75
|
options?: WorkerAdapterOptions;
|
|
70
76
|
initialDomainMapping?: InitialDomainMapping;
|
|
71
77
|
baseWorkerPath?: string;
|
|
72
78
|
}
|
|
73
79
|
/**
|
|
74
|
-
* TaskAdapterInterface is
|
|
80
|
+
* TaskAdapterInterface is the parameter shape passed to a task callback.
|
|
75
81
|
* @interface TaskAdapterInterface
|
|
76
82
|
* @constructor
|
|
77
|
-
* @param {
|
|
83
|
+
* @param {BaseAdapter} adapter - The adapter object
|
|
78
84
|
*/
|
|
79
|
-
export interface TaskAdapterInterface<
|
|
80
|
-
adapter:
|
|
85
|
+
export interface TaskAdapterInterface<Adapter extends BaseAdapter<unknown, BaseState<unknown, BaseSdkState>>> {
|
|
86
|
+
adapter: Adapter;
|
|
81
87
|
}
|
|
82
88
|
/**
|
|
83
|
-
* ProcessTaskInterface is
|
|
89
|
+
* ProcessTaskInterface is the parameter shape for the process-task entry points.
|
|
84
90
|
* @interface ProcessTaskInterface
|
|
85
91
|
* @constructor
|
|
86
92
|
* @param {function} task - The task to be executed, returns exit code
|
|
87
93
|
* @param {function} onTimeout - The task to be executed on timeout, returns exit code
|
|
88
94
|
*/
|
|
89
|
-
export interface ProcessTaskInterface<
|
|
90
|
-
task: (params: TaskAdapterInterface<
|
|
91
|
-
onTimeout: (params: TaskAdapterInterface<
|
|
95
|
+
export interface ProcessTaskInterface<Adapter extends BaseAdapter<unknown, BaseState<unknown, BaseSdkState>>> {
|
|
96
|
+
task: (params: TaskAdapterInterface<Adapter>) => Promise<void>;
|
|
97
|
+
onTimeout: (params: TaskAdapterInterface<Adapter>) => Promise<void>;
|
|
92
98
|
}
|
|
93
99
|
/**
|
|
94
100
|
* WorkerEvent represents the standard worker events.
|
|
@@ -105,7 +111,8 @@ export declare enum WorkerEvent {
|
|
|
105
111
|
export declare enum WorkerMessageSubject {
|
|
106
112
|
WorkerMessageEmitted = "emit",
|
|
107
113
|
WorkerMessageExit = "exit",
|
|
108
|
-
WorkerMessageLog = "log"
|
|
114
|
+
WorkerMessageLog = "log",
|
|
115
|
+
WorkerMessageFailed = "failed"
|
|
109
116
|
}
|
|
110
117
|
/**
|
|
111
118
|
* WorkerMessageEmitted interface represents the structure of the emitted worker message.
|
|
@@ -133,15 +140,26 @@ export interface WorkerMessageLog {
|
|
|
133
140
|
isSdkLog?: boolean;
|
|
134
141
|
};
|
|
135
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* WorkerMessageFailed interface represents the structure of the worker failed message.
|
|
145
|
+
* Sent from the worker thread before calling process.exit(1) to convey the specific
|
|
146
|
+
* error reason to the main thread.
|
|
147
|
+
*/
|
|
148
|
+
export interface WorkerMessageFailed {
|
|
149
|
+
subject: WorkerMessageSubject.WorkerMessageFailed;
|
|
150
|
+
payload: {
|
|
151
|
+
message: string;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
136
154
|
/**
|
|
137
155
|
* WorkerMessage represents the structure of the worker message.
|
|
138
156
|
*/
|
|
139
|
-
export type WorkerMessage = WorkerMessageEmitted | WorkerMessageExit | WorkerMessageLog;
|
|
157
|
+
export type WorkerMessage = WorkerMessageEmitted | WorkerMessageExit | WorkerMessageLog | WorkerMessageFailed;
|
|
140
158
|
/**
|
|
141
159
|
* WorkerData represents the structure of the worker data object.
|
|
142
160
|
*/
|
|
143
161
|
export interface WorkerData<ConnectorState> {
|
|
144
|
-
event:
|
|
162
|
+
event: AirSyncEvent;
|
|
145
163
|
initialState: ConnectorState;
|
|
146
164
|
workerPath: string;
|
|
147
165
|
initialDomainMapping?: InitialDomainMapping;
|
|
@@ -151,7 +169,7 @@ export interface WorkerData<ConnectorState> {
|
|
|
151
169
|
* GetWorkerPathInterface is an interface for getting the worker path.
|
|
152
170
|
*/
|
|
153
171
|
export interface GetWorkerPathInterface {
|
|
154
|
-
event:
|
|
172
|
+
event: AirSyncEvent;
|
|
155
173
|
workerBasePath?: string | null;
|
|
156
174
|
}
|
|
157
175
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/types/workers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/types/workers.ts"],"names":[],"mappings":"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"}
|
package/dist/types/workers.js
CHANGED
|
@@ -19,4 +19,5 @@ var WorkerMessageSubject;
|
|
|
19
19
|
WorkerMessageSubject["WorkerMessageEmitted"] = "emit";
|
|
20
20
|
WorkerMessageSubject["WorkerMessageExit"] = "exit";
|
|
21
21
|
WorkerMessageSubject["WorkerMessageLog"] = "log";
|
|
22
|
+
WorkerMessageSubject["WorkerMessageFailed"] = "failed";
|
|
22
23
|
})(WorkerMessageSubject || (exports.WorkerMessageSubject = WorkerMessageSubject = {}));
|
|
@@ -7,6 +7,7 @@ export declare class Uploader {
|
|
|
7
7
|
private devrevApiToken;
|
|
8
8
|
private requestId;
|
|
9
9
|
private defaultHeaders;
|
|
10
|
+
private skipConfirmation;
|
|
10
11
|
constructor({ event, options }: UploaderFactoryInterface);
|
|
11
12
|
/**
|
|
12
13
|
* Uploads the fetched objects to the DevRev platform. Fetched objects are compressed to a gzipped jsonl object and uploaded to the platform.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/uploader/uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAU/D,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,QAAQ;IACnB,OAAO,CAAC,kBAAkB,CAAC,CAAU;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAyB;
|
|
1
|
+
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/uploader/uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAU/D,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,QAAQ;IACnB,OAAO,CAAC,kBAAkB,CAAC,CAAU;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,gBAAgB,CAAU;gBAEtB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAWxD;;;;;OAKG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,GAChC,OAAO,CAAC,cAAc,CAAC;IA4E1B;;;;;;OAMG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IA2B5C;;;;;OAKG;IACG,cAAc,CAClB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAmBzC;;;;;OAKG;IACG,cAAc,CAClB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IA8BzC;;;;OAIG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QACvD,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IAiCF;;;OAGG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;OAKG;IACG,4BAA4B,CAAC,EACjC,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC;QACV,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACrC,KAAK,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7B,CAAC;IA2DF;;;;OAIG;YACW,sBAAsB;IAsBpC;;;;OAIG;YACW,gBAAgB;IAc9B;;;;;;OAMG;IACG,yBAAyB,CAAC,EAC9B,UAAU,EACV,SAAiB,GAClB,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;CA6B/C"}
|
|
@@ -10,19 +10,8 @@ const zlib_1 = __importDefault(require("zlib"));
|
|
|
10
10
|
const constants_1 = require("../common/constants");
|
|
11
11
|
const uploader_helpers_1 = require("./uploader.helpers");
|
|
12
12
|
describe('uploader.helpers', () => {
|
|
13
|
-
let consoleErrorSpy;
|
|
14
|
-
let consoleLogSpy;
|
|
15
|
-
let consoleWarnSpy;
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation();
|
|
18
|
-
consoleLogSpy = jest.spyOn(console, 'log').mockImplementation();
|
|
19
|
-
consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation();
|
|
20
|
-
});
|
|
21
13
|
afterEach(() => {
|
|
22
14
|
jest.clearAllMocks();
|
|
23
|
-
consoleErrorSpy.mockRestore();
|
|
24
|
-
consoleLogSpy.mockRestore();
|
|
25
|
-
consoleWarnSpy.mockRestore();
|
|
26
15
|
});
|
|
27
16
|
describe(uploader_helpers_1.compressGzip.name, () => {
|
|
28
17
|
it('should compress a string to gzip buffer', () => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ErrorRecord } from '../types/common';
|
|
2
|
-
import {
|
|
2
|
+
import { AirSyncEvent } from '../types/extraction';
|
|
3
3
|
import { ExternalSystemItem, StatsFileObject } from '../types/loading';
|
|
4
4
|
import { WorkerAdapterOptions } from '../types/workers';
|
|
5
5
|
export interface UploaderFactoryInterface {
|
|
6
|
-
event:
|
|
6
|
+
event: AirSyncEvent;
|
|
7
7
|
options?: WorkerAdapterOptions;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
@@ -18,7 +18,7 @@ export type UploaderResult<T> = {
|
|
|
18
18
|
error: unknown;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
* Artifact is an interface that defines the structure of an artifact. Artifact is a file that is generated by the extractor and uploaded to
|
|
21
|
+
* Artifact is an interface that defines the structure of an artifact. Artifact is a file that is generated by the extractor and uploaded to the AirSync platform.
|
|
22
22
|
*/
|
|
23
23
|
export interface Artifact {
|
|
24
24
|
id: string;
|
|
@@ -12,10 +12,12 @@ const logger_1 = require("../logger/logger");
|
|
|
12
12
|
const uploader_helpers_1 = require("./uploader.helpers");
|
|
13
13
|
class Uploader {
|
|
14
14
|
constructor({ event, options }) {
|
|
15
|
+
var _a;
|
|
15
16
|
this.devrevApiEndpoint = event.execution_metadata.devrev_endpoint;
|
|
16
17
|
this.devrevApiToken = event.context.secrets.service_account_token;
|
|
17
18
|
this.requestId = event.payload.event_context.request_id;
|
|
18
19
|
this.isLocalDevelopment = options === null || options === void 0 ? void 0 : options.isLocalDevelopment;
|
|
20
|
+
this.skipConfirmation = (_a = options === null || options === void 0 ? void 0 : options.skipConfirmation) !== null && _a !== void 0 ? _a : false;
|
|
19
21
|
this.defaultHeaders = {
|
|
20
22
|
Authorization: `Bearer ${this.devrevApiToken}`,
|
|
21
23
|
};
|
|
@@ -34,7 +36,10 @@ class Uploader {
|
|
|
34
36
|
const { response: file, error: fileError } = (0, uploader_helpers_1.compressGzip)(js_jsonl_1.jsonl.stringify(fetchedObjects));
|
|
35
37
|
if (fileError) {
|
|
36
38
|
return {
|
|
37
|
-
error:
|
|
39
|
+
error: {
|
|
40
|
+
message: 'Error while compressing jsonl object. ' +
|
|
41
|
+
(0, logger_1.serializeError)(fileError),
|
|
42
|
+
},
|
|
38
43
|
};
|
|
39
44
|
}
|
|
40
45
|
const filename = itemType + '.jsonl.gz';
|
|
@@ -43,23 +48,35 @@ class Uploader {
|
|
|
43
48
|
const { error: preparedArtifactError, response: preparedArtifact } = await this.getArtifactUploadUrl(filename, fileType);
|
|
44
49
|
if (preparedArtifactError) {
|
|
45
50
|
return {
|
|
46
|
-
error:
|
|
51
|
+
error: {
|
|
52
|
+
message: 'Error while getting artifact upload URL: ' +
|
|
53
|
+
(0, logger_1.serializeError)(preparedArtifactError),
|
|
54
|
+
},
|
|
47
55
|
};
|
|
48
56
|
}
|
|
49
57
|
// Upload prepared artifact to the given url
|
|
50
58
|
const { error: uploadItemError } = await this.uploadArtifact(preparedArtifact, file);
|
|
51
59
|
if (uploadItemError) {
|
|
52
60
|
return {
|
|
53
|
-
error:
|
|
61
|
+
error: {
|
|
62
|
+
message: 'Error while uploading artifact: ' +
|
|
63
|
+
(0, logger_1.serializeError)(uploadItemError),
|
|
64
|
+
},
|
|
54
65
|
};
|
|
55
66
|
}
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
// Skip confirmation for External Sync Units, as this confirmation attachments
|
|
68
|
+
// uploads to the sync, which we haven't created yet when extracting External Sync Units.
|
|
69
|
+
if (!this.skipConfirmation) {
|
|
70
|
+
// Confirm upload
|
|
71
|
+
const { error: confirmArtifactUploadError } = await this.confirmArtifactUpload(preparedArtifact.artifact_id);
|
|
72
|
+
if (confirmArtifactUploadError) {
|
|
73
|
+
return {
|
|
74
|
+
error: {
|
|
75
|
+
message: 'Error while confirming artifact upload. ' +
|
|
76
|
+
JSON.stringify(confirmArtifactUploadError),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
63
80
|
}
|
|
64
81
|
// Return the artifact information to the platform
|
|
65
82
|
const artifact = {
|
|
@@ -78,6 +95,11 @@ class Uploader {
|
|
|
78
95
|
*/
|
|
79
96
|
async getArtifactUploadUrl(filename, fileType, fileSize) {
|
|
80
97
|
const url = `${this.devrevApiEndpoint}/internal/airdrop.artifacts.upload-url`;
|
|
98
|
+
if (fileSize !== undefined && fileSize <= 0) {
|
|
99
|
+
return {
|
|
100
|
+
error: { message: 'File size is 0 or less.' },
|
|
101
|
+
};
|
|
102
|
+
}
|
|
81
103
|
try {
|
|
82
104
|
const response = await axios_client_internal_1.axiosClient.get(url, {
|
|
83
105
|
headers: Object.assign({}, this.defaultHeaders),
|
|
@@ -168,13 +190,15 @@ class Uploader {
|
|
|
168
190
|
}
|
|
169
191
|
else {
|
|
170
192
|
return {
|
|
171
|
-
error:
|
|
172
|
-
|
|
193
|
+
error: {
|
|
194
|
+
message: 'Error while confirming artifact upload. ' +
|
|
195
|
+
(0, logger_1.serializeError)(response),
|
|
196
|
+
},
|
|
173
197
|
};
|
|
174
198
|
}
|
|
175
199
|
}
|
|
176
200
|
catch (error) {
|
|
177
|
-
return { error: (0, logger_1.serializeError)(error) };
|
|
201
|
+
return { error: { message: (0, logger_1.serializeError)(error) } };
|
|
178
202
|
}
|
|
179
203
|
}
|
|
180
204
|
/**
|
|
@@ -208,31 +232,40 @@ class Uploader {
|
|
|
208
232
|
const { response: artifactUrl, error: artifactUrlError } = await this.getArtifactDownloadUrl(artifact);
|
|
209
233
|
if (artifactUrlError) {
|
|
210
234
|
return {
|
|
211
|
-
error:
|
|
212
|
-
|
|
235
|
+
error: {
|
|
236
|
+
message: 'Error while getting artifact download URL. ' +
|
|
237
|
+
(0, logger_1.serializeError)(artifactUrlError),
|
|
238
|
+
},
|
|
213
239
|
};
|
|
214
240
|
}
|
|
215
241
|
// Download artifact from the URL
|
|
216
242
|
const { response: gzippedJsonlObject, error: gzippedJsonlObjectError } = await this.downloadArtifact(artifactUrl);
|
|
217
243
|
if (gzippedJsonlObjectError) {
|
|
218
244
|
return {
|
|
219
|
-
error:
|
|
220
|
-
|
|
245
|
+
error: {
|
|
246
|
+
message: 'Error while downloading gzipped jsonl object. ' +
|
|
247
|
+
(0, logger_1.serializeError)(gzippedJsonlObjectError),
|
|
248
|
+
},
|
|
221
249
|
};
|
|
222
250
|
}
|
|
223
251
|
// Decompress the gzipped jsonl object
|
|
224
252
|
const { response: jsonlObject, error: jsonlObjectError } = (0, uploader_helpers_1.decompressGzip)(gzippedJsonlObject);
|
|
225
253
|
if (jsonlObjectError) {
|
|
226
254
|
return {
|
|
227
|
-
error:
|
|
228
|
-
|
|
255
|
+
error: {
|
|
256
|
+
message: 'Error while decompressing gzipped jsonl object. ' +
|
|
257
|
+
(0, logger_1.serializeError)(jsonlObjectError),
|
|
258
|
+
},
|
|
229
259
|
};
|
|
230
260
|
}
|
|
231
261
|
// Parse the jsonl object to get the attachment metadata
|
|
232
262
|
const { response: jsonObject, error: jsonObjectError } = (0, uploader_helpers_1.parseJsonl)(jsonlObject);
|
|
233
263
|
if (jsonObjectError) {
|
|
234
264
|
return {
|
|
235
|
-
error:
|
|
265
|
+
error: {
|
|
266
|
+
message: 'Error while parsing jsonl object. ' +
|
|
267
|
+
(0, logger_1.serializeError)(jsonObjectError),
|
|
268
|
+
},
|
|
236
269
|
};
|
|
237
270
|
}
|
|
238
271
|
return { attachments: jsonObject };
|
|
@@ -8,6 +8,8 @@ const js_jsonl_1 = require("js-jsonl");
|
|
|
8
8
|
const zlib_1 = __importDefault(require("zlib"));
|
|
9
9
|
const axios_client_internal_1 = require("../http/axios-client-internal");
|
|
10
10
|
const test_helpers_1 = require("../tests/test-helpers");
|
|
11
|
+
const jest_setup_1 = require("../tests/jest.setup");
|
|
12
|
+
const test_utils_1 = require("../common/test-utils");
|
|
11
13
|
const uploader_helpers_1 = require("./uploader.helpers");
|
|
12
14
|
const uploader_1 = require("./uploader");
|
|
13
15
|
jest.mock('../http/axios-client-internal');
|
|
@@ -16,7 +18,7 @@ const mockedAxiosClient = jest.mocked(axios_client_internal_1.axiosClient);
|
|
|
16
18
|
const mockedDownloadToLocal = jest.mocked(uploader_helpers_1.downloadToLocal);
|
|
17
19
|
const mockedCompressGzip = jest.mocked(uploader_helpers_1.compressGzip);
|
|
18
20
|
describe(uploader_1.Uploader.name, () => {
|
|
19
|
-
const mockEvent = (0,
|
|
21
|
+
const mockEvent = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl);
|
|
20
22
|
let uploader;
|
|
21
23
|
beforeEach(() => {
|
|
22
24
|
uploader = new uploader_1.Uploader({ event: mockEvent });
|
|
@@ -85,7 +87,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
85
87
|
// Act
|
|
86
88
|
const result = await uploader.upload(itemType, fetchedObjects);
|
|
87
89
|
// Assert
|
|
88
|
-
expect(result.error).
|
|
90
|
+
expect(result.error).toHaveProperty('message');
|
|
89
91
|
expect(result.artifact).toBeUndefined();
|
|
90
92
|
});
|
|
91
93
|
it('should return error when uploadArtifact fails', async () => {
|
|
@@ -97,7 +99,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
97
99
|
// Act
|
|
98
100
|
const result = await uploader.upload(itemType, fetchedObjects);
|
|
99
101
|
// Assert
|
|
100
|
-
expect(result.error).
|
|
102
|
+
expect(result.error).toHaveProperty('message');
|
|
101
103
|
expect(result.artifact).toBeUndefined();
|
|
102
104
|
});
|
|
103
105
|
it('should return error when confirmArtifactUpload fails', async () => {
|
|
@@ -111,7 +113,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
111
113
|
// Act
|
|
112
114
|
const result = await uploader.upload(itemType, fetchedObjects);
|
|
113
115
|
// Assert
|
|
114
|
-
expect(result.error).
|
|
116
|
+
expect(result.error).toHaveProperty('message');
|
|
115
117
|
expect(result.artifact).toBeUndefined();
|
|
116
118
|
});
|
|
117
119
|
it('should return error when compression fails', async () => {
|
|
@@ -122,7 +124,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
122
124
|
// Act
|
|
123
125
|
const result = await uploader.upload(itemType, fetchedObjects);
|
|
124
126
|
// Assert
|
|
125
|
-
expect(result.error).
|
|
127
|
+
expect(result.error).toHaveProperty('message');
|
|
126
128
|
expect(result.artifact).toBeUndefined();
|
|
127
129
|
});
|
|
128
130
|
});
|
|
@@ -160,6 +162,16 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
160
162
|
expect(result.error).toBeInstanceOf(Error);
|
|
161
163
|
expect(mockedAxiosClient.get).toHaveBeenCalled();
|
|
162
164
|
});
|
|
165
|
+
it('should return error during upload, as it has size of zero', async () => {
|
|
166
|
+
// Arrange
|
|
167
|
+
const filename = 'test-file.jsonl.gz';
|
|
168
|
+
const fileType = 'application/x-gzip';
|
|
169
|
+
const fileSize = 0;
|
|
170
|
+
// Act
|
|
171
|
+
const result = await uploader.getArtifactUploadUrl(filename, fileType, fileSize);
|
|
172
|
+
// Assert
|
|
173
|
+
expect(result.error).toBeDefined();
|
|
174
|
+
});
|
|
163
175
|
});
|
|
164
176
|
describe(uploader_1.Uploader.prototype.uploadArtifact.name, () => {
|
|
165
177
|
it('should return response when posting file as multipart form data', async () => {
|
|
@@ -230,7 +242,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
230
242
|
const result = await uploader.confirmArtifactUpload(artifactId);
|
|
231
243
|
// Assert
|
|
232
244
|
expect(result.response).toBeUndefined();
|
|
233
|
-
expect(result.error).
|
|
245
|
+
expect(result.error).toHaveProperty('message');
|
|
234
246
|
});
|
|
235
247
|
});
|
|
236
248
|
describe(uploader_1.Uploader.prototype.streamArtifact.name, () => {
|
|
@@ -459,7 +471,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
459
471
|
artifact: artifactId,
|
|
460
472
|
});
|
|
461
473
|
// Assert
|
|
462
|
-
expect(result.error).
|
|
474
|
+
expect(result.error).toHaveProperty('message');
|
|
463
475
|
expect(result.attachments).toBeUndefined();
|
|
464
476
|
});
|
|
465
477
|
it('should return error when downloadArtifact fails', async () => {
|
|
@@ -472,7 +484,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
472
484
|
artifact: artifactId,
|
|
473
485
|
});
|
|
474
486
|
// Assert
|
|
475
|
-
expect(result.error).
|
|
487
|
+
expect(result.error).toHaveProperty('message');
|
|
476
488
|
expect(result.attachments).toBeUndefined();
|
|
477
489
|
});
|
|
478
490
|
it('should return error when decompression fails', async () => {
|
|
@@ -487,7 +499,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
487
499
|
artifact: artifactId,
|
|
488
500
|
});
|
|
489
501
|
// Assert
|
|
490
|
-
expect(result.error).
|
|
502
|
+
expect(result.error).toHaveProperty('message');
|
|
491
503
|
expect(result.attachments).toBeUndefined();
|
|
492
504
|
});
|
|
493
505
|
it('should return error when JSONL parsing fails', async () => {
|
|
@@ -503,7 +515,7 @@ describe(uploader_1.Uploader.name, () => {
|
|
|
503
515
|
artifact: artifactId,
|
|
504
516
|
});
|
|
505
517
|
// Assert
|
|
506
|
-
expect(result.error).
|
|
518
|
+
expect(result.error).toHaveProperty('message');
|
|
507
519
|
expect(result.attachments).toBeUndefined();
|
|
508
520
|
});
|
|
509
521
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devrev/airsync-sdk",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.3",
|
|
4
4
|
"description": "TypeScript SDK for building AirSync snap-ins on the DevRev platform.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
"start": "ts-node src/index.ts",
|
|
12
12
|
"lint": "eslint .",
|
|
13
13
|
"lint:fix": "eslint . --fix",
|
|
14
|
-
"test": "jest --forceExit --maxWorkers=50% --selectProjects default --",
|
|
15
|
-
"test:backwards-compatibility": "jest --forceExit --selectProjects backwards-compatibility --",
|
|
16
|
-
"test:timeout-handling": "jest --forceExit --selectProjects timeout-handling --",
|
|
17
|
-
"test:slow": "jest --forceExit --selectProjects slow --",
|
|
18
|
-
"test:coverage": "jest --forceExit --coverage --runInBand --"
|
|
14
|
+
"test": "jest --silent --forceExit --maxWorkers=50% --selectProjects default --",
|
|
15
|
+
"test:backwards-compatibility": "jest --silent --forceExit --selectProjects backwards-compatibility --",
|
|
16
|
+
"test:timeout-handling": "jest --silent --forceExit --selectProjects timeout-handling --",
|
|
17
|
+
"test:slow": "jest --silent --forceExit --selectProjects slow --",
|
|
18
|
+
"test:coverage": "jest --silent --forceExit --coverage --runInBand --",
|
|
19
|
+
"test:debug": "jest --forceExit --selectProjects default --"
|
|
19
20
|
},
|
|
20
21
|
"repository": {
|
|
21
22
|
"type": "git",
|
|
@@ -28,14 +29,11 @@
|
|
|
28
29
|
"author": "devrev",
|
|
29
30
|
"license": "ISC",
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@microsoft/api-extractor": "^7.
|
|
32
|
+
"@microsoft/api-extractor": "^7.57.6",
|
|
32
33
|
"@microsoft/api-extractor-model": "^7.30.7",
|
|
33
|
-
"@types/express": "^5.0.3",
|
|
34
34
|
"@types/jest": "^29.5.14",
|
|
35
35
|
"@types/node": "^22.18.0",
|
|
36
36
|
"@types/yargs": "^17.0.33",
|
|
37
|
-
"@typescript-eslint/eslint-plugin": "^8.46.0",
|
|
38
|
-
"@typescript-eslint/parser": "^8.46.0",
|
|
39
37
|
"ajv": "^8.18.0",
|
|
40
38
|
"eslint": "9.32.0",
|
|
41
39
|
"eslint-config-prettier": "^9.1.2",
|
|
@@ -48,10 +46,9 @@
|
|
|
48
46
|
"typescript-eslint": "^8.46.1"
|
|
49
47
|
},
|
|
50
48
|
"dependencies": {
|
|
51
|
-
"@devrev/typescript-sdk": "^1.1.
|
|
52
|
-
"axios": "^1.
|
|
49
|
+
"@devrev/typescript-sdk": "^1.1.74",
|
|
50
|
+
"axios": "^1.15.2",
|
|
53
51
|
"axios-retry": "^4.5.0",
|
|
54
|
-
"express": "^5.2.1",
|
|
55
52
|
"form-data": "^4.0.4",
|
|
56
53
|
"js-jsonl": "^1.1.1",
|
|
57
54
|
"ts-node": "^10.9.2",
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { EventType, ExtractorEventType } from '../types/extraction';
|
|
2
|
-
import { LoaderEventType } from '../types/loading';
|
|
3
|
-
/**
|
|
4
|
-
* Maps old incoming event type strings to new EventType enum values.
|
|
5
|
-
* This ensures backwards compatibility when the platform sends old event types.
|
|
6
|
-
* @param eventTypeString The raw event type string from the platform
|
|
7
|
-
* @returns The translated EventType enum value
|
|
8
|
-
*/
|
|
9
|
-
export declare function translateIncomingEventType(eventTypeString: string): EventType;
|
|
10
|
-
/**
|
|
11
|
-
* Translates ExtractorEventType enum values by converting old enum members to new ones.
|
|
12
|
-
* Old enum members are deprecated and should be replaced with new ones.
|
|
13
|
-
*/
|
|
14
|
-
export declare function translateExtractorEventType(eventType: ExtractorEventType): ExtractorEventType;
|
|
15
|
-
/**
|
|
16
|
-
* Translates LoaderEventType enum values by converting old enum members to new ones.
|
|
17
|
-
* Old enum members are deprecated and should be replaced with new ones.
|
|
18
|
-
*/
|
|
19
|
-
export declare function translateLoaderEventType(eventType: LoaderEventType): LoaderEventType;
|
|
20
|
-
/**
|
|
21
|
-
* Translates any outgoing event type (Extractor or Loader) to ensure new event types are used.
|
|
22
|
-
*/
|
|
23
|
-
export declare function translateOutgoingEventType(eventType: ExtractorEventType | LoaderEventType): ExtractorEventType | LoaderEventType;
|
|
24
|
-
//# sourceMappingURL=event-type-translation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-type-translation.d.ts","sourceRoot":"","sources":["../../src/common/event-type-translation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAwD7E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,kBAAkB,GAC5B,kBAAkB,CA0CpB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,eAAe,GACzB,eAAe,CAmBjB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,kBAAkB,GAAG,eAAe,GAC9C,kBAAkB,GAAG,eAAe,CAatC"}
|