@devrev/ts-adaas 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +4 -0
  2. package/dist/common/constants.d.ts +2 -0
  3. package/dist/common/constants.js +14 -2
  4. package/dist/common/control-protocol.d.ts +2 -1
  5. package/dist/common/helpers.d.ts +15 -3
  6. package/dist/common/helpers.js +68 -3
  7. package/dist/logger/logger.test.js +3 -0
  8. package/dist/mappers/mappers.d.ts +10 -0
  9. package/dist/mappers/mappers.interface.d.ts +85 -0
  10. package/dist/mappers/mappers.interface.js +9 -0
  11. package/dist/mappers/mappers.js +37 -0
  12. package/dist/state/state.d.ts +1 -0
  13. package/dist/state/state.interfaces.d.ts +8 -5
  14. package/dist/state/state.interfaces.js +1 -0
  15. package/dist/state/state.js +21 -12
  16. package/dist/tests/from_devrev/loading.test.d.ts +1 -0
  17. package/dist/tests/from_devrev/loading.test.js +146 -0
  18. package/dist/tests/test-helpers.js +12 -6
  19. package/dist/types/extraction.d.ts +42 -9
  20. package/dist/types/extraction.js +21 -1
  21. package/dist/types/index.d.ts +2 -1
  22. package/dist/types/index.js +5 -1
  23. package/dist/types/loading.d.ts +95 -0
  24. package/dist/types/loading.js +21 -0
  25. package/dist/types/workers.d.ts +2 -1
  26. package/dist/uploader/uploader.d.ts +4 -0
  27. package/dist/uploader/uploader.interfaces.d.ts +9 -0
  28. package/dist/uploader/uploader.js +20 -0
  29. package/dist/workers/create-worker.js +2 -2
  30. package/dist/workers/default-workers/data-loading.d.ts +1 -0
  31. package/dist/workers/default-workers/data-loading.js +19 -0
  32. package/dist/workers/spawn.js +20 -8
  33. package/dist/workers/worker-adapter.d.ts +14 -1
  34. package/dist/workers/worker-adapter.js +330 -1
  35. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { InputData } from '@devrev/typescript-sdk/dist/snap-ins';
2
2
  import { Artifact } from '../uploader/uploader.interfaces';
3
3
  import { ErrorRecord } from './common';
4
+ import { DonV2, LoaderReport } from './loading';
4
5
  /**
5
6
  * EventType is an enum that defines the different types of events that can be sent to the external extractor from ADaaS.
6
7
  * The external extractor can use these events to know what to do next in the extraction process.
@@ -13,7 +14,11 @@ export declare enum EventType {
13
14
  ExtractionDataDelete = "EXTRACTION_DATA_DELETE",
14
15
  ExtractionAttachmentsStart = "EXTRACTION_ATTACHMENTS_START",
15
16
  ExtractionAttachmentsContinue = "EXTRACTION_ATTACHMENTS_CONTINUE",
16
- ExtractionAttachmentsDelete = "EXTRACTION_ATTACHMENTS_DELETE"
17
+ ExtractionAttachmentsDelete = "EXTRACTION_ATTACHMENTS_DELETE",
18
+ StartLoadingData = "START_LOADING_DATA",
19
+ ContinueLoadingData = "CONTINUE_LOADING_DATA",
20
+ StartDeletingLoaderState = "START_DELETING_LOADER_STATE",
21
+ StartDeletingLoaderAttachmentsState = "START_DELETING_LOADER_ATTACHMENTS_STATE"
17
22
  }
18
23
  /**
19
24
  * ExtractorEventType is an enum that defines the different types of events that can be sent from the external extractor to ADaaS.
@@ -35,9 +40,11 @@ export declare enum ExtractorEventType {
35
40
  ExtractionAttachmentsDone = "EXTRACTION_ATTACHMENTS_DONE",
36
41
  ExtractionAttachmentsError = "EXTRACTION_ATTACHMENTS_ERROR",
37
42
  ExtractionAttachmentsDeleteDone = "EXTRACTION_ATTACHMENTS_DELETE_DONE",
38
- ExtractionAttachmentsDeleteError = "EXTRACTION_ATTACHMENTS_DELETE_ERROR"
43
+ ExtractionAttachmentsDeleteError = "EXTRACTION_ATTACHMENTS_DELETE_ERROR",
44
+ UnknownEventType = "UNKNOWN_EVENT_TYPE"
39
45
  }
40
46
  /**
47
+ * @deprecated
41
48
  * ExtractionMode is an enum that defines the different modes of extraction that can be used by the external extractor.
42
49
  * It can be either INITIAL or INCREMENTAL. INITIAL mode is used for the first/initial import, while INCREMENTAL mode is used for doing syncs.
43
50
  */
@@ -45,6 +52,15 @@ export declare enum ExtractionMode {
45
52
  INITIAL = "INITIAL",
46
53
  INCREMENTAL = "INCREMENTAL"
47
54
  }
55
+ /**
56
+ * ExtractionMode is an enum that defines the different modes of extraction that can be used by the external extractor.
57
+ * It can be either INITIAL or INCREMENTAL. INITIAL mode is used for the first/initial import, while INCREMENTAL mode is used for doing syncs.
58
+ */
59
+ export declare enum SyncMode {
60
+ INITIAL = "INITIAL",
61
+ INCREMENTAL = "INCREMENTAL",
62
+ LOADING = "LOADING"
63
+ }
48
64
  /**
49
65
  * ExternalSyncUnit is an interface that defines the structure of an external sync unit (repos, projects, ...) that can be extracted.
50
66
  * It must contain an ID, a name, and a description. It can also contain the number of items in the external sync unit.
@@ -60,21 +76,27 @@ export interface ExternalSyncUnit {
60
76
  * EventContextIn is an interface that defines the structure of the input event context that is sent to the external extractor from ADaaS.
61
77
  */
62
78
  export interface EventContextIn {
63
- mode: string;
64
79
  callback_url: string;
80
+ dev_org: string;
65
81
  dev_org_id: string;
82
+ dev_user: string;
66
83
  dev_user_id: string;
67
- external_sync_unit_id?: string;
68
- sync_unit_id?: string;
69
- sync_run_id: string;
70
- external_system_id: string;
71
- uuid: string;
72
- worker_data_url: string;
84
+ external_sync_unit: string;
85
+ external_sync_unit_id: string;
86
+ external_sync_unit_name: string;
73
87
  external_system: string;
74
88
  external_system_type: string;
75
89
  import_slug: string;
90
+ mode: string;
91
+ request_id: string;
76
92
  snap_in_slug: string;
93
+ sync_run: string;
94
+ sync_run_id: string;
77
95
  sync_tier: string;
96
+ sync_unit: DonV2;
97
+ sync_unit_id: string;
98
+ uuid: string;
99
+ worker_data_url: string;
78
100
  }
79
101
  /**
80
102
  * EventContextOut is an interface that defines the structure of the output event context that is sent from the external extractor to ADaaS.
@@ -106,6 +128,9 @@ export interface EventData {
106
128
  * @deprecated This field is deprecated and should not be used.
107
129
  */
108
130
  artifacts?: Artifact[];
131
+ reports?: LoaderReport[];
132
+ processed_files?: string[];
133
+ stats_file?: string;
109
134
  }
110
135
  /**
111
136
  * DomainObject is an interface that defines the structure of a domain object that can be extracted.
@@ -157,3 +182,11 @@ export interface ExtractorEvent {
157
182
  event_context: EventContextOut;
158
183
  event_data?: EventData;
159
184
  }
185
+ /**
186
+ * LoaderEvent
187
+ */
188
+ export interface LoaderEvent {
189
+ event_type: string;
190
+ event_context: EventContextOut;
191
+ event_data?: EventData;
192
+ }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExtractionMode = exports.ExtractorEventType = exports.EventType = void 0;
3
+ exports.SyncMode = exports.ExtractionMode = exports.ExtractorEventType = exports.EventType = void 0;
4
4
  /**
5
5
  * EventType is an enum that defines the different types of events that can be sent to the external extractor from ADaaS.
6
6
  * The external extractor can use these events to know what to do next in the extraction process.
7
7
  */
8
8
  var EventType;
9
9
  (function (EventType) {
10
+ // Extraction
10
11
  EventType["ExtractionExternalSyncUnitsStart"] = "EXTRACTION_EXTERNAL_SYNC_UNITS_START";
11
12
  EventType["ExtractionMetadataStart"] = "EXTRACTION_METADATA_START";
12
13
  EventType["ExtractionDataStart"] = "EXTRACTION_DATA_START";
@@ -15,6 +16,11 @@ var EventType;
15
16
  EventType["ExtractionAttachmentsStart"] = "EXTRACTION_ATTACHMENTS_START";
16
17
  EventType["ExtractionAttachmentsContinue"] = "EXTRACTION_ATTACHMENTS_CONTINUE";
17
18
  EventType["ExtractionAttachmentsDelete"] = "EXTRACTION_ATTACHMENTS_DELETE";
19
+ // Loading
20
+ EventType["StartLoadingData"] = "START_LOADING_DATA";
21
+ EventType["ContinueLoadingData"] = "CONTINUE_LOADING_DATA";
22
+ EventType["StartDeletingLoaderState"] = "START_DELETING_LOADER_STATE";
23
+ EventType["StartDeletingLoaderAttachmentsState"] = "START_DELETING_LOADER_ATTACHMENTS_STATE";
18
24
  })(EventType || (exports.EventType = EventType = {}));
19
25
  /**
20
26
  * ExtractorEventType is an enum that defines the different types of events that can be sent from the external extractor to ADaaS.
@@ -22,6 +28,7 @@ var EventType;
22
28
  */
23
29
  var ExtractorEventType;
24
30
  (function (ExtractorEventType) {
31
+ // Extraction
25
32
  ExtractorEventType["ExtractionExternalSyncUnitsDone"] = "EXTRACTION_EXTERNAL_SYNC_UNITS_DONE";
26
33
  ExtractorEventType["ExtractionExternalSyncUnitsError"] = "EXTRACTION_EXTERNAL_SYNC_UNITS_ERROR";
27
34
  ExtractorEventType["ExtractionMetadataDone"] = "EXTRACTION_METADATA_DONE";
@@ -38,8 +45,11 @@ var ExtractorEventType;
38
45
  ExtractorEventType["ExtractionAttachmentsError"] = "EXTRACTION_ATTACHMENTS_ERROR";
39
46
  ExtractorEventType["ExtractionAttachmentsDeleteDone"] = "EXTRACTION_ATTACHMENTS_DELETE_DONE";
40
47
  ExtractorEventType["ExtractionAttachmentsDeleteError"] = "EXTRACTION_ATTACHMENTS_DELETE_ERROR";
48
+ // Unknown
49
+ ExtractorEventType["UnknownEventType"] = "UNKNOWN_EVENT_TYPE";
41
50
  })(ExtractorEventType || (exports.ExtractorEventType = ExtractorEventType = {}));
42
51
  /**
52
+ * @deprecated
43
53
  * ExtractionMode is an enum that defines the different modes of extraction that can be used by the external extractor.
44
54
  * It can be either INITIAL or INCREMENTAL. INITIAL mode is used for the first/initial import, while INCREMENTAL mode is used for doing syncs.
45
55
  */
@@ -48,3 +58,13 @@ var ExtractionMode;
48
58
  ExtractionMode["INITIAL"] = "INITIAL";
49
59
  ExtractionMode["INCREMENTAL"] = "INCREMENTAL";
50
60
  })(ExtractionMode || (exports.ExtractionMode = ExtractionMode = {}));
61
+ /**
62
+ * ExtractionMode is an enum that defines the different modes of extraction that can be used by the external extractor.
63
+ * It can be either INITIAL or INCREMENTAL. INITIAL mode is used for the first/initial import, while INCREMENTAL mode is used for doing syncs.
64
+ */
65
+ var SyncMode;
66
+ (function (SyncMode) {
67
+ SyncMode["INITIAL"] = "INITIAL";
68
+ SyncMode["INCREMENTAL"] = "INCREMENTAL";
69
+ SyncMode["LOADING"] = "LOADING";
70
+ })(SyncMode || (exports.SyncMode = SyncMode = {}));
@@ -1,5 +1,6 @@
1
1
  export { ErrorLevel, ErrorRecord, LogRecord, AdapterUpdateParams, InitialDomainMapping, } from './common';
2
- export { EventType, ExtractorEventType, ExtractionMode, ExternalSyncUnit, EventContextIn, EventContextOut, ConnectionData, EventData, DomainObjectState, AirdropEvent, AirdropMessage, ExtractorEvent, } from './extraction';
2
+ export { EventType, ExtractorEventType, ExtractionMode, ExternalSyncUnit, EventContextIn, EventContextOut, ConnectionData, EventData, DomainObjectState, AirdropEvent, AirdropMessage, ExtractorEvent, SyncMode, } from './extraction';
3
+ export { LoaderEventType, ExternalSystemItem, ExternalSystemItemLoadingResponse, ExternalSystemItemLoadingParams, } from './loading';
3
4
  export { NormalizedItem, NormalizedAttachment, RepoInterface, } from '../repo/repo.interfaces';
4
5
  export { AdapterState } from '../state/state.interfaces';
5
6
  export { Artifact, ArtifactsPrepareResponse, UploadResponse, StreamResponse, StreamAttachmentsResponse, SsorAttachment, } from '../uploader/uploader.interfaces';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExtractionMode = exports.ExtractorEventType = exports.EventType = exports.ErrorLevel = void 0;
3
+ exports.LoaderEventType = exports.SyncMode = exports.ExtractionMode = exports.ExtractorEventType = exports.EventType = exports.ErrorLevel = void 0;
4
4
  // Common
5
5
  var common_1 = require("./common");
6
6
  Object.defineProperty(exports, "ErrorLevel", { enumerable: true, get: function () { return common_1.ErrorLevel; } });
@@ -9,3 +9,7 @@ var extraction_1 = require("./extraction");
9
9
  Object.defineProperty(exports, "EventType", { enumerable: true, get: function () { return extraction_1.EventType; } });
10
10
  Object.defineProperty(exports, "ExtractorEventType", { enumerable: true, get: function () { return extraction_1.ExtractorEventType; } });
11
11
  Object.defineProperty(exports, "ExtractionMode", { enumerable: true, get: function () { return extraction_1.ExtractionMode; } });
12
+ Object.defineProperty(exports, "SyncMode", { enumerable: true, get: function () { return extraction_1.SyncMode; } });
13
+ // Loading
14
+ var loading_1 = require("./loading");
15
+ Object.defineProperty(exports, "LoaderEventType", { enumerable: true, get: function () { return loading_1.LoaderEventType; } });
@@ -0,0 +1,95 @@
1
+ import { AirdropEvent } from './extraction';
2
+ import { Mappers } from '../mappers/mappers';
3
+ import { ErrorRecord } from './common';
4
+ export interface StatsFileObject {
5
+ id: string;
6
+ item_type: string;
7
+ file_name: string;
8
+ count: string;
9
+ }
10
+ export interface FileToLoad {
11
+ id: string;
12
+ file_name: string;
13
+ itemType: string;
14
+ count: number;
15
+ lineToProcess: number;
16
+ completed: boolean;
17
+ }
18
+ export interface ExternalSystemItem {
19
+ id: {
20
+ devrev: DonV2;
21
+ external?: string;
22
+ };
23
+ created_date: string;
24
+ modified_date: string;
25
+ data: any;
26
+ }
27
+ export interface ExternalSystemItemLoadingParams {
28
+ item: ExternalSystemItem;
29
+ mappers: Mappers;
30
+ event: AirdropEvent;
31
+ }
32
+ export interface ExternalSystemItemLoadingResponse {
33
+ id?: string;
34
+ error?: string;
35
+ modifiedDate?: string;
36
+ delay?: number;
37
+ }
38
+ export interface ExternalSystemItemLoadedItem {
39
+ id?: string;
40
+ error?: string;
41
+ modifiedDate?: string;
42
+ }
43
+ export type ExternalSystemLoadingFunction = ({ item, mappers, event, }: ExternalSystemItemLoadingParams) => Promise<ExternalSystemItemLoadingResponse>;
44
+ export interface ItemTypeToLoad {
45
+ itemType: string;
46
+ create: ExternalSystemLoadingFunction;
47
+ update: ExternalSystemLoadingFunction;
48
+ }
49
+ export interface ItemTypesToLoadParams {
50
+ itemTypesToLoad: ItemTypeToLoad[];
51
+ }
52
+ export interface LoaderReport {
53
+ item_type: string;
54
+ [ActionType.CREATED]?: number;
55
+ [ActionType.UPDATED]?: number;
56
+ [ActionType.SKIPPED]?: number;
57
+ [ActionType.DELETED]?: number;
58
+ [ActionType.FAILED]?: number;
59
+ }
60
+ export interface RateLimited {
61
+ delay: number;
62
+ }
63
+ export interface LoadItemResponse {
64
+ error?: ErrorRecord;
65
+ report?: LoaderReport;
66
+ rateLimit?: RateLimited;
67
+ }
68
+ export interface LoadItemTypesResponse {
69
+ reports: LoaderReport[];
70
+ processed_files: string[];
71
+ }
72
+ export declare enum ActionType {
73
+ CREATED = "created",
74
+ UPDATED = "updated",
75
+ SKIPPED = "skipped",
76
+ DELETED = "deleted",
77
+ FAILED = "failed"
78
+ }
79
+ export type DonV2 = string;
80
+ export type SyncMapperRecord = {
81
+ external_ids: string[];
82
+ secondary_ids: string[];
83
+ devrev_ids: string[];
84
+ status: string[];
85
+ input_file?: string;
86
+ };
87
+ export declare enum LoaderEventType {
88
+ DataLoadingProgress = "DATA_LOADING_PROGRESS",
89
+ DataLoadingDelay = "DATA_LOADING_DELAYED",
90
+ DataLoadingDone = "DATA_LOADING_DONE",
91
+ DataLoadingError = "DATA_LOADING_ERROR",
92
+ LoaderStateDeletionDone = "LOADER_STATE_DELETION_DONE",
93
+ LoaderStateDeletionError = "LOADER_STATE_DELETION_ERROR",
94
+ UnknownEventType = "UNKNOWN_EVENT_TYPE"
95
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoaderEventType = exports.ActionType = void 0;
4
+ var ActionType;
5
+ (function (ActionType) {
6
+ ActionType["CREATED"] = "created";
7
+ ActionType["UPDATED"] = "updated";
8
+ ActionType["SKIPPED"] = "skipped";
9
+ ActionType["DELETED"] = "deleted";
10
+ ActionType["FAILED"] = "failed";
11
+ })(ActionType || (exports.ActionType = ActionType = {}));
12
+ var LoaderEventType;
13
+ (function (LoaderEventType) {
14
+ LoaderEventType["DataLoadingProgress"] = "DATA_LOADING_PROGRESS";
15
+ LoaderEventType["DataLoadingDelay"] = "DATA_LOADING_DELAYED";
16
+ LoaderEventType["DataLoadingDone"] = "DATA_LOADING_DONE";
17
+ LoaderEventType["DataLoadingError"] = "DATA_LOADING_ERROR";
18
+ LoaderEventType["LoaderStateDeletionDone"] = "LOADER_STATE_DELETION_DONE";
19
+ LoaderEventType["LoaderStateDeletionError"] = "LOADER_STATE_DELETION_ERROR";
20
+ LoaderEventType["UnknownEventType"] = "UNKNOWN_EVENT_TYPE";
21
+ })(LoaderEventType || (exports.LoaderEventType = LoaderEventType = {}));
@@ -3,6 +3,7 @@ import { MessagePort } from 'node:worker_threads';
3
3
  import { State } from '../state/state';
4
4
  import { WorkerAdapter } from '../workers/worker-adapter';
5
5
  import { ExtractorEventType, AirdropEvent } from './extraction';
6
+ import { LoaderEventType } from './loading';
6
7
  /**
7
8
  * WorkerAdapterInterface is an interface for WorkerAdapter class.
8
9
  * @interface WorkerAdapterInterface
@@ -105,7 +106,7 @@ export declare enum WorkerMessageSubject {
105
106
  export interface WorkerMessageEmitted {
106
107
  subject: WorkerMessageSubject.WorkerMessageEmitted;
107
108
  payload: {
108
- eventType: ExtractorEventType;
109
+ eventType: ExtractorEventType | LoaderEventType;
109
110
  };
110
111
  }
111
112
  /**
@@ -34,5 +34,9 @@ export declare class Uploader {
34
34
  private parseJsonl;
35
35
  private stream;
36
36
  private getFileStreamResponse;
37
+ getJsonObjectByArtifactId({ artifactId, isGzipped, }: {
38
+ artifactId: string;
39
+ isGzipped?: boolean;
40
+ }): Promise<object[] | object | void>;
37
41
  private downloadToLocal;
38
42
  }
@@ -1,6 +1,7 @@
1
1
  import { AirdropEvent } from '../types/extraction';
2
2
  import { WorkerAdapterOptions } from '../types/workers';
3
3
  import { ErrorRecord } from '../types/common';
4
+ import { ExternalSystemItem, StatsFileObject } from '../types/loading';
4
5
  export interface UploaderFactoryInterface {
5
6
  event: AirdropEvent;
6
7
  options?: WorkerAdapterOptions;
@@ -61,3 +62,11 @@ export interface SsorAttachment {
61
62
  external: string;
62
63
  };
63
64
  }
65
+ export interface StatsFileResponse {
66
+ error?: ErrorRecord;
67
+ statsFile?: StatsFileObject[];
68
+ }
69
+ export interface TransformerFileResponse {
70
+ error?: ErrorRecord;
71
+ transformerFile?: ExternalSystemItem[];
72
+ }
@@ -319,6 +319,26 @@ class Uploader {
319
319
  }
320
320
  }
321
321
  }
322
+ async getJsonObjectByArtifactId({ artifactId, isGzipped = false, }) {
323
+ const artifactUrl = await this.getArtifactDownloadUrl(artifactId);
324
+ if (!artifactUrl) {
325
+ return;
326
+ }
327
+ const artifact = await this.downloadArtifact(artifactUrl);
328
+ if (!artifact) {
329
+ return;
330
+ }
331
+ if (isGzipped) {
332
+ const decompressedArtifact = await this.decompressGzip(artifact);
333
+ if (!decompressedArtifact) {
334
+ return;
335
+ }
336
+ const jsonlObject = Buffer.from(decompressedArtifact).toString('utf-8');
337
+ return js_jsonl_1.jsonl.parse(jsonlObject);
338
+ }
339
+ const jsonlObject = Buffer.from(artifact).toString('utf-8');
340
+ return js_jsonl_1.jsonl.parse(jsonlObject);
341
+ }
322
342
  async downloadToLocal(itemType, fetchedObjects) {
323
343
  console.log(`Downloading ${itemType} to local file system.`);
324
344
  try {
@@ -15,8 +15,8 @@ async function createWorker(workerData) {
15
15
  const worker = new node_worker_threads_1.Worker(workerFile, {
16
16
  workerData,
17
17
  });
18
- worker.on(workers_1.WorkerEvent.WorkerError, () => {
19
- logger.error('Worker error');
18
+ worker.on(workers_1.WorkerEvent.WorkerError, (error) => {
19
+ logger.error('Worker error', error);
20
20
  reject();
21
21
  });
22
22
  worker.on(workers_1.WorkerEvent.WorkerOnline, () => {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const process_task_1 = require("workers/process-task");
4
+ const loading_1 = require("../../types/loading");
5
+ (0, process_task_1.processTask)({
6
+ task: async ({ adapter }) => {
7
+ await adapter.emit(loading_1.LoaderEventType.DataLoadingDone, {
8
+ reports: adapter.reports,
9
+ processed_files: adapter.processedFiles,
10
+ });
11
+ },
12
+ onTimeout: async ({ adapter }) => {
13
+ await adapter.postState();
14
+ await adapter.emit(loading_1.LoaderEventType.DataLoadingProgress, {
15
+ reports: adapter.reports,
16
+ processed_files: adapter.processedFiles,
17
+ });
18
+ },
19
+ });
@@ -9,8 +9,7 @@ const logger_1 = require("../logger/logger");
9
9
  const constants_1 = require("../common/constants");
10
10
  const workers_1 = require("../types/workers");
11
11
  const create_worker_1 = require("./create-worker");
12
- function getWorkerPath({ event, connectorWorkerPath, options, }) {
13
- const logger = new logger_1.Logger({ event, options });
12
+ function getWorkerPath({ event, connectorWorkerPath, }) {
14
13
  if (!constants_1.ALLOWED_EVENT_TYPES.includes(event.payload.event_type)) {
15
14
  return null;
16
15
  }
@@ -18,6 +17,7 @@ function getWorkerPath({ event, connectorWorkerPath, options, }) {
18
17
  return connectorWorkerPath;
19
18
  let path = null;
20
19
  switch (event.payload.event_type) {
20
+ // Extraction
21
21
  case extraction_1.EventType.ExtractionExternalSyncUnitsStart:
22
22
  path = __dirname + '/default-workers/external-sync-units-extraction';
23
23
  break;
@@ -33,16 +33,28 @@ function getWorkerPath({ event, connectorWorkerPath, options, }) {
33
33
  path = __dirname + '/default-workers/attachments-extraction';
34
34
  break;
35
35
  case extraction_1.EventType.ExtractionDataDelete:
36
- path = __dirname + '/default-workers/data-deletion.js';
36
+ path = __dirname + '/default-workers/data-deletion';
37
37
  break;
38
38
  case extraction_1.EventType.ExtractionAttachmentsDelete:
39
39
  path = __dirname + '/default-workers/attachments-deletion';
40
40
  break;
41
+ // Loading
42
+ case extraction_1.EventType.StartLoadingData:
43
+ case extraction_1.EventType.ContinueLoadingData:
44
+ path = __dirname + '/default-workers/data-loading';
45
+ break;
41
46
  default:
42
- logger.error('Worker script not found for event type: ' +
43
- event.payload.event_type +
44
- '.');
45
- path = null;
47
+ (0, control_protocol_1.emit)({
48
+ event,
49
+ eventType: extraction_1.ExtractorEventType.UnknownEventType,
50
+ data: {
51
+ error: {
52
+ message: 'Unrecognized event type in spawn ' +
53
+ event.payload.event_type +
54
+ '.',
55
+ },
56
+ },
57
+ });
46
58
  }
47
59
  return path;
48
60
  }
@@ -144,7 +156,7 @@ class Spawn {
144
156
  this.resolve(true);
145
157
  return;
146
158
  }
147
- const timeoutEventType = (0, helpers_1.getErrorExtractorEventType)(this.event.payload.event_type);
159
+ const timeoutEventType = (0, helpers_1.getTimeoutErrorEventType)(this.event.payload.event_type);
148
160
  if (timeoutEventType !== null) {
149
161
  const { eventType } = timeoutEventType;
150
162
  await (0, control_protocol_1.emit)({
@@ -1,9 +1,11 @@
1
1
  import { AirdropEvent, ExtractorEventType, EventData } from '../types/extraction';
2
+ import { LoaderEventType } from '../types/loading';
2
3
  import { AdapterState } from '../state/state.interfaces';
3
4
  import { Artifact } from '../uploader/uploader.interfaces';
4
5
  import { WorkerAdapterInterface, WorkerAdapterOptions } from '../types/workers';
5
6
  import { Repo } from '../repo/repo';
6
7
  import { RepoInterface } from '../repo/repo.interfaces';
8
+ import { ExternalSystemItem, ItemTypesToLoadParams, ItemTypeToLoad, LoaderReport, LoadItemResponse, LoadItemTypesResponse } from '../types/loading';
7
9
  export declare function createWorkerAdapter<ConnectorState>({ event, adapterState, parentPort, options, }: WorkerAdapterInterface<ConnectorState>): WorkerAdapter<ConnectorState>;
8
10
  /**
9
11
  * WorkerAdapter class is used to interact with Airdrop platform. It is passed to the snap-in
@@ -28,9 +30,15 @@ export declare class WorkerAdapter<ConnectorState> {
28
30
  private parentPort;
29
31
  private isTimeout;
30
32
  private repos;
33
+ private loaderReports;
34
+ private _processedFiles;
35
+ private mappers;
36
+ private uploader;
31
37
  constructor({ event, adapterState, parentPort, options, }: WorkerAdapterInterface<ConnectorState>);
32
38
  get state(): AdapterState<ConnectorState>;
33
39
  set state(value: AdapterState<ConnectorState>);
40
+ get reports(): LoaderReport[];
41
+ get processedFiles(): string[];
34
42
  initializeRepos(repos: RepoInterface[]): void;
35
43
  getRepo(itemType: string): Repo | undefined;
36
44
  postState(): Promise<void>;
@@ -42,7 +50,12 @@ export declare class WorkerAdapter<ConnectorState> {
42
50
  * @param {ExtractorEventType} newEventType - The event type to be emitted
43
51
  * @param {EventData=} data - The data to be sent with the event
44
52
  */
45
- emit(newEventType: ExtractorEventType, data?: EventData): Promise<void>;
53
+ emit(newEventType: ExtractorEventType | LoaderEventType, data?: EventData): Promise<void>;
46
54
  uploadAllRepos(): Promise<void>;
47
55
  handleTimeout(): void;
56
+ loadItemTypes({ itemTypesToLoad, }: ItemTypesToLoadParams): Promise<LoadItemTypesResponse>;
57
+ loadItem({ item, itemTypeToLoad, }: {
58
+ item: ExternalSystemItem;
59
+ itemTypeToLoad: ItemTypeToLoad;
60
+ }): Promise<LoadItemResponse>;
48
61
  }