@devrev/ts-adaas 1.17.0 → 1.17.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts +6 -0
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +1 -1
- package/dist/multithreading/worker-adapter/worker-adapter.js +26 -2
- package/dist/multithreading/worker-adapter/worker-adapter.test.js +228 -12
- package/dist/state/state.d.ts +7 -1
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.js +18 -3
- package/dist/state/state.test.js +75 -7
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/workers.d.ts +7 -0
- package/dist/types/workers.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,4 +12,5 @@ export { spawn } from './multithreading/spawn/spawn';
|
|
|
12
12
|
export { WorkerAdapter } from './multithreading/worker-adapter/worker-adapter';
|
|
13
13
|
export * from './types/workers';
|
|
14
14
|
export { formatAxiosError, serializeAxiosError } from './logger/logger';
|
|
15
|
+
export { MockServer } from './tests/mock-server/mock-server';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,cAAc,yCAAyC,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAE/E,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,cAAc,yCAAyC,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAE/E,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.serializeAxiosError = exports.formatAxiosError = exports.WorkerAdapter = exports.spawn = exports.processTask = exports.AirSyncDefaultItemTypes = void 0;
|
|
17
|
+
exports.MockServer = exports.serializeAxiosError = exports.formatAxiosError = exports.WorkerAdapter = exports.spawn = exports.processTask = exports.AirSyncDefaultItemTypes = void 0;
|
|
18
18
|
__exportStar(require("./deprecated/adapter"), exports);
|
|
19
19
|
__exportStar(require("./deprecated/demo-extractor"), exports);
|
|
20
20
|
__exportStar(require("./deprecated/http/client"), exports);
|
|
@@ -34,3 +34,5 @@ __exportStar(require("./types/workers"), exports);
|
|
|
34
34
|
var logger_1 = require("./logger/logger");
|
|
35
35
|
Object.defineProperty(exports, "formatAxiosError", { enumerable: true, get: function () { return logger_1.formatAxiosError; } });
|
|
36
36
|
Object.defineProperty(exports, "serializeAxiosError", { enumerable: true, get: function () { return logger_1.serializeAxiosError; } });
|
|
37
|
+
var mock_server_1 = require("./tests/mock-server/mock-server");
|
|
38
|
+
Object.defineProperty(exports, "MockServer", { enumerable: true, get: function () { return mock_server_1.MockServer; } });
|
|
@@ -41,6 +41,12 @@ export declare class WorkerAdapter<ConnectorState> {
|
|
|
41
41
|
get reports(): LoaderReport[];
|
|
42
42
|
get processedFiles(): string[];
|
|
43
43
|
get mappers(): Mappers;
|
|
44
|
+
get extractionScope(): import("../../types/workers").ExtractionScope;
|
|
45
|
+
/**
|
|
46
|
+
* Returns whether the given item type should be extracted.
|
|
47
|
+
* Defaults to true if the scope is empty or the item type is not listed.
|
|
48
|
+
*/
|
|
49
|
+
shouldExtract(itemType: string): boolean;
|
|
44
50
|
initializeRepos(repos: RepoInterface[]): void;
|
|
45
51
|
getRepo(itemType: string): Repo | undefined;
|
|
46
52
|
postState(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-adapter.d.ts","sourceRoot":"","sources":["../../../src/multithreading/worker-adapter/worker-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker-adapter.d.ts","sourceRoot":"","sources":["../../../src/multithreading/worker-adapter/worker-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,6 +81,21 @@ class WorkerAdapter {
|
|
|
81
81
|
get mappers() {
|
|
82
82
|
return this._mappers;
|
|
83
83
|
}
|
|
84
|
+
get extractionScope() {
|
|
85
|
+
return this.adapterState.extractionScope;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Returns whether the given item type should be extracted.
|
|
89
|
+
* Defaults to true if the scope is empty or the item type is not listed.
|
|
90
|
+
*/
|
|
91
|
+
shouldExtract(itemType) {
|
|
92
|
+
const scope = this.extractionScope;
|
|
93
|
+
if (Object.keys(scope).length === 0)
|
|
94
|
+
return true;
|
|
95
|
+
if (!(itemType in scope))
|
|
96
|
+
return true;
|
|
97
|
+
return scope[itemType].extract;
|
|
98
|
+
}
|
|
84
99
|
initializeRepos(repos) {
|
|
85
100
|
this.repos = repos.map((repo) => {
|
|
86
101
|
const shouldNormalize = repo.itemType !== constants_1.AirSyncDefaultItemTypes.EXTERNAL_DOMAIN_METADATA &&
|
|
@@ -191,11 +206,13 @@ class WorkerAdapter {
|
|
|
191
206
|
if ((_b = data === null || data === void 0 ? void 0 : data.error) === null || _b === void 0 ? void 0 : _b.message) {
|
|
192
207
|
data.error.message = (0, helpers_1.truncateMessage)(data.error.message);
|
|
193
208
|
}
|
|
209
|
+
const isExtractionEvent = Object.values(extraction_1.ExtractorEventType).includes(newEventType);
|
|
210
|
+
const isLoaderEvent = Object.values(loading_1.LoaderEventType).includes(newEventType);
|
|
194
211
|
await (0, control_protocol_1.emit)({
|
|
195
212
|
eventType: newEventType,
|
|
196
213
|
event: this.event,
|
|
197
|
-
data: Object.assign(Object.assign({}, data), (
|
|
198
|
-
? {
|
|
214
|
+
data: Object.assign(Object.assign(Object.assign({}, data), (isExtractionEvent ? { artifacts: this.artifacts } : {})), (isLoaderEvent
|
|
215
|
+
? { reports: this.reports, processed_files: this.processedFiles }
|
|
199
216
|
: {})),
|
|
200
217
|
});
|
|
201
218
|
const message = {
|
|
@@ -771,6 +788,13 @@ class WorkerAdapter {
|
|
|
771
788
|
if ((response === null || response === void 0 ? void 0 : response.delay) || (response === null || response === void 0 ? void 0 : response.error)) {
|
|
772
789
|
return response;
|
|
773
790
|
}
|
|
791
|
+
// On timeout, emit progress and exit to allow resumption.
|
|
792
|
+
if (this.isTimeout) {
|
|
793
|
+
console.log(`Timeout detected after processing attachments for artifact ID: ${attachmentsMetadataArtifactId}. Emitting progress to allow resumption.`);
|
|
794
|
+
await this.emit(extraction_1.ExtractorEventType.AttachmentExtractionProgress);
|
|
795
|
+
process.exit(0);
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
774
798
|
console.log(`Finished processing all attachments for artifact ID: ${attachmentsMetadataArtifactId}.`);
|
|
775
799
|
attachmentsMetadata.artifactIds.shift();
|
|
776
800
|
attachmentsMetadata.lastProcessed = 0;
|
|
@@ -353,6 +353,62 @@ describe(worker_adapter_1.WorkerAdapter.name, () => {
|
|
|
353
353
|
'artifact1',
|
|
354
354
|
]);
|
|
355
355
|
});
|
|
356
|
+
it('should emit progress event and exit process on timeout, preserving state for resumption', async () => {
|
|
357
|
+
const mockStream = jest.fn();
|
|
358
|
+
// Mock process.exit to prevent it from killing the test runner
|
|
359
|
+
const exitSpy = jest
|
|
360
|
+
.spyOn(process, 'exit')
|
|
361
|
+
.mockImplementation(() => undefined);
|
|
362
|
+
// Set up adapter state with multiple artifact IDs
|
|
363
|
+
adapter.state.toDevRev = {
|
|
364
|
+
attachmentsMetadata: {
|
|
365
|
+
artifactIds: ['artifact1', 'artifact2', 'artifact3'],
|
|
366
|
+
lastProcessed: 0,
|
|
367
|
+
lastProcessedAttachmentsIdsList: [],
|
|
368
|
+
},
|
|
369
|
+
};
|
|
370
|
+
// Mock getting attachments for each artifact
|
|
371
|
+
adapter['uploader'].getAttachmentsFromArtifactId = jest
|
|
372
|
+
.fn()
|
|
373
|
+
.mockResolvedValue({
|
|
374
|
+
attachments: [
|
|
375
|
+
{
|
|
376
|
+
url: 'http://example.com/file1.pdf',
|
|
377
|
+
id: 'attachment1',
|
|
378
|
+
file_name: 'file1.pdf',
|
|
379
|
+
parent_id: 'parent1',
|
|
380
|
+
},
|
|
381
|
+
],
|
|
382
|
+
});
|
|
383
|
+
// Mock the pool to simulate timeout happening during the first artifact
|
|
384
|
+
attachments_streaming_pool_1.AttachmentsStreamingPool.mockImplementationOnce(() => {
|
|
385
|
+
return {
|
|
386
|
+
streamAll: jest.fn().mockImplementation(async () => {
|
|
387
|
+
adapter.isTimeout = true;
|
|
388
|
+
return {};
|
|
389
|
+
}),
|
|
390
|
+
};
|
|
391
|
+
});
|
|
392
|
+
adapter.initializeRepos = jest.fn();
|
|
393
|
+
// Mock emit to verify it's called with progress event
|
|
394
|
+
const emitSpy = jest.spyOn(adapter, 'emit').mockResolvedValue();
|
|
395
|
+
await adapter.streamAttachments({
|
|
396
|
+
stream: mockStream,
|
|
397
|
+
});
|
|
398
|
+
// Should have emitted progress event
|
|
399
|
+
expect(emitSpy).toHaveBeenCalledWith(types_1.ExtractorEventType.AttachmentExtractionProgress);
|
|
400
|
+
// Should have called process.exit(0)
|
|
401
|
+
expect(exitSpy).toHaveBeenCalledWith(0);
|
|
402
|
+
// The current artifact should NOT be removed from the list
|
|
403
|
+
expect(adapter.state.toDevRev.attachmentsMetadata.artifactIds).toEqual([
|
|
404
|
+
'artifact1',
|
|
405
|
+
'artifact2',
|
|
406
|
+
'artifact3',
|
|
407
|
+
]);
|
|
408
|
+
// Only the first artifact should have been fetched
|
|
409
|
+
expect(adapter['uploader'].getAttachmentsFromArtifactId).toHaveBeenCalledTimes(1);
|
|
410
|
+
exitSpy.mockRestore();
|
|
411
|
+
});
|
|
356
412
|
it('should reset lastProcessed and attachment IDs list after processing all artifacts', async () => {
|
|
357
413
|
const mockStream = jest.fn();
|
|
358
414
|
adapter.state.toDevRev = {
|
|
@@ -411,10 +467,12 @@ describe(worker_adapter_1.WorkerAdapter.name, () => {
|
|
|
411
467
|
'content-length': '100',
|
|
412
468
|
}),
|
|
413
469
|
});
|
|
414
|
-
adapter['uploader'].getArtifactUploadUrl = jest
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
470
|
+
adapter['uploader'].getArtifactUploadUrl = jest.fn().mockResolvedValue({
|
|
471
|
+
response: {
|
|
472
|
+
artifact_id: 'art_1',
|
|
473
|
+
upload_url: 'https://upload',
|
|
474
|
+
form_data: [],
|
|
475
|
+
},
|
|
418
476
|
});
|
|
419
477
|
adapter['uploader'].streamArtifact = jest
|
|
420
478
|
.fn()
|
|
@@ -439,10 +497,12 @@ describe(worker_adapter_1.WorkerAdapter.name, () => {
|
|
|
439
497
|
'content-length': '200',
|
|
440
498
|
}),
|
|
441
499
|
});
|
|
442
|
-
adapter['uploader'].getArtifactUploadUrl = jest
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
500
|
+
adapter['uploader'].getArtifactUploadUrl = jest.fn().mockResolvedValue({
|
|
501
|
+
response: {
|
|
502
|
+
artifact_id: 'art_2',
|
|
503
|
+
upload_url: 'https://upload',
|
|
504
|
+
form_data: [],
|
|
505
|
+
},
|
|
446
506
|
});
|
|
447
507
|
adapter['uploader'].streamArtifact = jest
|
|
448
508
|
.fn()
|
|
@@ -463,10 +523,12 @@ describe(worker_adapter_1.WorkerAdapter.name, () => {
|
|
|
463
523
|
const mockStream = jest.fn().mockResolvedValue({
|
|
464
524
|
httpStream: createMockHttpStream({}),
|
|
465
525
|
});
|
|
466
|
-
adapter['uploader'].getArtifactUploadUrl = jest
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
526
|
+
adapter['uploader'].getArtifactUploadUrl = jest.fn().mockResolvedValue({
|
|
527
|
+
response: {
|
|
528
|
+
artifact_id: 'art_3',
|
|
529
|
+
upload_url: 'https://upload',
|
|
530
|
+
form_data: [],
|
|
531
|
+
},
|
|
470
532
|
});
|
|
471
533
|
adapter['uploader'].streamArtifact = jest
|
|
472
534
|
.fn()
|
|
@@ -569,5 +631,159 @@ describe(worker_adapter_1.WorkerAdapter.name, () => {
|
|
|
569
631
|
});
|
|
570
632
|
expect(counter.counter).toBe(1);
|
|
571
633
|
});
|
|
634
|
+
it('should include artifacts in data for extraction events', async () => {
|
|
635
|
+
const { emit: mockEmit } = require('../../common/control-protocol');
|
|
636
|
+
adapter['adapterState'].postState = jest
|
|
637
|
+
.fn()
|
|
638
|
+
.mockResolvedValue(undefined);
|
|
639
|
+
adapter.uploadAllRepos = jest.fn().mockResolvedValue(undefined);
|
|
640
|
+
adapter['_artifacts'] = [
|
|
641
|
+
{ id: 'art-1', item_count: 10, item_type: 'issues' },
|
|
642
|
+
];
|
|
643
|
+
await adapter.emit(types_1.ExtractorEventType.DataExtractionDone);
|
|
644
|
+
expect(mockEmit).toHaveBeenCalledWith(expect.objectContaining({
|
|
645
|
+
data: expect.objectContaining({
|
|
646
|
+
artifacts: expect.arrayContaining([
|
|
647
|
+
expect.objectContaining({ id: 'art-1' }),
|
|
648
|
+
]),
|
|
649
|
+
}),
|
|
650
|
+
}));
|
|
651
|
+
// Should not include loader-specific fields
|
|
652
|
+
const callData = mockEmit.mock.calls[0][0].data;
|
|
653
|
+
expect(callData).not.toHaveProperty('reports');
|
|
654
|
+
expect(callData).not.toHaveProperty('processed_files');
|
|
655
|
+
});
|
|
656
|
+
it('should include reports and processed_files in data for loader events', async () => {
|
|
657
|
+
const { emit: mockEmit } = require('../../common/control-protocol');
|
|
658
|
+
adapter['adapterState'].postState = jest
|
|
659
|
+
.fn()
|
|
660
|
+
.mockResolvedValue(undefined);
|
|
661
|
+
adapter.uploadAllRepos = jest.fn().mockResolvedValue(undefined);
|
|
662
|
+
adapter['loaderReports'] = [
|
|
663
|
+
{ item_type: 'tasks', created: 5 },
|
|
664
|
+
];
|
|
665
|
+
adapter['_processedFiles'] = ['file-1', 'file-2'];
|
|
666
|
+
await adapter.emit(types_1.LoaderEventType.DataLoadingDone);
|
|
667
|
+
expect(mockEmit).toHaveBeenCalledWith(expect.objectContaining({
|
|
668
|
+
data: expect.objectContaining({
|
|
669
|
+
reports: expect.arrayContaining([
|
|
670
|
+
expect.objectContaining({ item_type: 'tasks' }),
|
|
671
|
+
]),
|
|
672
|
+
processed_files: ['file-1', 'file-2'],
|
|
673
|
+
}),
|
|
674
|
+
}));
|
|
675
|
+
// Should not include extraction-specific fields
|
|
676
|
+
const callData = mockEmit.mock.calls[0][0].data;
|
|
677
|
+
expect(callData).not.toHaveProperty('artifacts');
|
|
678
|
+
});
|
|
679
|
+
it('should not include artifacts, reports, or processed_files for unknown event types', async () => {
|
|
680
|
+
const { emit: mockEmit } = require('../../common/control-protocol');
|
|
681
|
+
adapter['adapterState'].postState = jest
|
|
682
|
+
.fn()
|
|
683
|
+
.mockResolvedValue(undefined);
|
|
684
|
+
adapter.uploadAllRepos = jest.fn().mockResolvedValue(undefined);
|
|
685
|
+
adapter['_artifacts'] = [
|
|
686
|
+
{ id: 'art-1', item_count: 10, item_type: 'issues' },
|
|
687
|
+
];
|
|
688
|
+
adapter['loaderReports'] = [
|
|
689
|
+
{ item_type: 'tasks', created: 5 },
|
|
690
|
+
];
|
|
691
|
+
adapter['_processedFiles'] = ['file-1'];
|
|
692
|
+
await adapter.emit('SOME_UNKNOWN_EVENT');
|
|
693
|
+
const callData = mockEmit.mock.calls[0][0].data;
|
|
694
|
+
expect(callData).not.toHaveProperty('artifacts');
|
|
695
|
+
expect(callData).not.toHaveProperty('reports');
|
|
696
|
+
expect(callData).not.toHaveProperty('processed_files');
|
|
697
|
+
});
|
|
698
|
+
it('should include artifacts for all ExtractorEventType values', async () => {
|
|
699
|
+
var _a, _b;
|
|
700
|
+
const { emit: mockEmit } = require('../../common/control-protocol');
|
|
701
|
+
const extractorEvents = [
|
|
702
|
+
types_1.ExtractorEventType.DataExtractionDone,
|
|
703
|
+
types_1.ExtractorEventType.DataExtractionProgress,
|
|
704
|
+
types_1.ExtractorEventType.DataExtractionError,
|
|
705
|
+
types_1.ExtractorEventType.AttachmentExtractionDone,
|
|
706
|
+
types_1.ExtractorEventType.AttachmentExtractionProgress,
|
|
707
|
+
];
|
|
708
|
+
for (const eventType of extractorEvents) {
|
|
709
|
+
jest.clearAllMocks();
|
|
710
|
+
adapter.hasWorkerEmitted = false;
|
|
711
|
+
adapter['adapterState'].postState = jest
|
|
712
|
+
.fn()
|
|
713
|
+
.mockResolvedValue(undefined);
|
|
714
|
+
adapter.uploadAllRepos = jest.fn().mockResolvedValue(undefined);
|
|
715
|
+
await adapter.emit(eventType);
|
|
716
|
+
const callData = (_b = (_a = mockEmit.mock.calls[0]) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.data;
|
|
717
|
+
expect(callData).toHaveProperty('artifacts');
|
|
718
|
+
expect(callData).not.toHaveProperty('reports');
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
it('should include reports and processed_files for all LoaderEventType values', async () => {
|
|
722
|
+
var _a, _b;
|
|
723
|
+
const { emit: mockEmit } = require('../../common/control-protocol');
|
|
724
|
+
const loaderEvents = [
|
|
725
|
+
types_1.LoaderEventType.DataLoadingDone,
|
|
726
|
+
types_1.LoaderEventType.DataLoadingProgress,
|
|
727
|
+
types_1.LoaderEventType.DataLoadingError,
|
|
728
|
+
types_1.LoaderEventType.AttachmentLoadingDone,
|
|
729
|
+
types_1.LoaderEventType.AttachmentLoadingProgress,
|
|
730
|
+
];
|
|
731
|
+
for (const eventType of loaderEvents) {
|
|
732
|
+
jest.clearAllMocks();
|
|
733
|
+
adapter.hasWorkerEmitted = false;
|
|
734
|
+
adapter['adapterState'].postState = jest
|
|
735
|
+
.fn()
|
|
736
|
+
.mockResolvedValue(undefined);
|
|
737
|
+
adapter.uploadAllRepos = jest.fn().mockResolvedValue(undefined);
|
|
738
|
+
await adapter.emit(eventType);
|
|
739
|
+
const callData = (_b = (_a = mockEmit.mock.calls[0]) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.data;
|
|
740
|
+
expect(callData).toHaveProperty('reports');
|
|
741
|
+
expect(callData).toHaveProperty('processed_files');
|
|
742
|
+
expect(callData).not.toHaveProperty('artifacts');
|
|
743
|
+
}
|
|
744
|
+
});
|
|
745
|
+
});
|
|
746
|
+
describe('extractionScope', () => {
|
|
747
|
+
it('should return empty object by default', () => {
|
|
748
|
+
expect(adapter.extractionScope).toEqual({});
|
|
749
|
+
});
|
|
750
|
+
it('should return extraction scope from adapter state', () => {
|
|
751
|
+
const extractionScope = {
|
|
752
|
+
tasks: { extract: true },
|
|
753
|
+
users: { extract: false },
|
|
754
|
+
};
|
|
755
|
+
// Simulate what State.init() does when parsing objects from API
|
|
756
|
+
mockAdapterState._extractionScope = extractionScope;
|
|
757
|
+
expect(adapter.extractionScope).toEqual({
|
|
758
|
+
tasks: { extract: true },
|
|
759
|
+
users: { extract: false },
|
|
760
|
+
});
|
|
761
|
+
});
|
|
762
|
+
});
|
|
763
|
+
describe('shouldExtract', () => {
|
|
764
|
+
it('should return true when extraction scope is empty', () => {
|
|
765
|
+
expect(adapter.shouldExtract('tasks')).toBe(true);
|
|
766
|
+
expect(adapter.shouldExtract('users')).toBe(true);
|
|
767
|
+
});
|
|
768
|
+
it('should return true when item type is not in scope', () => {
|
|
769
|
+
mockAdapterState._extractionScope = {
|
|
770
|
+
tasks: { extract: true },
|
|
771
|
+
};
|
|
772
|
+
expect(adapter.shouldExtract('users')).toBe(true);
|
|
773
|
+
});
|
|
774
|
+
it('should return true when item type has extract: true', () => {
|
|
775
|
+
mockAdapterState._extractionScope = {
|
|
776
|
+
tasks: { extract: true },
|
|
777
|
+
};
|
|
778
|
+
expect(adapter.shouldExtract('tasks')).toBe(true);
|
|
779
|
+
});
|
|
780
|
+
it('should return false when item type has extract: false', () => {
|
|
781
|
+
mockAdapterState._extractionScope = {
|
|
782
|
+
tasks: { extract: false },
|
|
783
|
+
users: { extract: true },
|
|
784
|
+
};
|
|
785
|
+
expect(adapter.shouldExtract('tasks')).toBe(false);
|
|
786
|
+
expect(adapter.shouldExtract('users')).toBe(true);
|
|
787
|
+
});
|
|
572
788
|
});
|
|
573
789
|
});
|
package/dist/state/state.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AdapterState, StateInterface } from './state.interfaces';
|
|
2
|
+
import { ExtractionScope } from '../types/workers';
|
|
2
3
|
export declare function createAdapterState<ConnectorState>({ event, initialState, initialDomainMapping, options, }: StateInterface<ConnectorState>): Promise<State<ConnectorState>>;
|
|
3
4
|
export declare class State<ConnectorState> {
|
|
4
5
|
private _state;
|
|
6
|
+
private _extractionScope;
|
|
5
7
|
private initialSdkState;
|
|
6
8
|
private workerUrl;
|
|
7
9
|
private devrevToken;
|
|
@@ -10,6 +12,7 @@ export declare class State<ConnectorState> {
|
|
|
10
12
|
constructor({ event, initialState }: StateInterface<ConnectorState>);
|
|
11
13
|
get state(): AdapterState<ConnectorState>;
|
|
12
14
|
set state(value: AdapterState<ConnectorState>);
|
|
15
|
+
get extractionScope(): ExtractionScope;
|
|
13
16
|
/**
|
|
14
17
|
* Initializes the state for this adapter instance by fetching from API
|
|
15
18
|
* or creating an initial state if none exists (404).
|
|
@@ -25,6 +28,9 @@ export declare class State<ConnectorState> {
|
|
|
25
28
|
* Fetches the state of the adapter from API.
|
|
26
29
|
* @return The raw state data from API
|
|
27
30
|
*/
|
|
28
|
-
fetchState(): Promise<
|
|
31
|
+
fetchState(): Promise<{
|
|
32
|
+
state: string;
|
|
33
|
+
objects?: string;
|
|
34
|
+
}>;
|
|
29
35
|
}
|
|
30
36
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,YAAY,EAIZ,cAAc,EACf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,YAAY,EAIZ,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,EACvD,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,GACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CA8DjE;AAED,qBAAa,KAAK,CAAC,cAAc;IAC/B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEd,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC;IAenE,IAAI,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,CAExC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,EAE5C;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;;;OAIG;IACG,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDvD;;;OAGG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC;IAqDpD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAqBjE"}
|
package/dist/state/state.js
CHANGED
|
@@ -65,6 +65,7 @@ async function createAdapterState({ event, initialState, initialDomainMapping, o
|
|
|
65
65
|
}
|
|
66
66
|
class State {
|
|
67
67
|
constructor({ event, initialState }) {
|
|
68
|
+
this._extractionScope = {};
|
|
68
69
|
this.initialSdkState =
|
|
69
70
|
event.payload.event_context.mode === common_1.SyncMode.LOADING
|
|
70
71
|
? state_interfaces_1.loadingSdkState
|
|
@@ -81,6 +82,9 @@ class State {
|
|
|
81
82
|
set state(value) {
|
|
82
83
|
this._state = value;
|
|
83
84
|
}
|
|
85
|
+
get extractionScope() {
|
|
86
|
+
return this._extractionScope;
|
|
87
|
+
}
|
|
84
88
|
/**
|
|
85
89
|
* Initializes the state for this adapter instance by fetching from API
|
|
86
90
|
* or creating an initial state if none exists (404).
|
|
@@ -89,7 +93,7 @@ class State {
|
|
|
89
93
|
async init(initialState) {
|
|
90
94
|
var _a;
|
|
91
95
|
try {
|
|
92
|
-
const stringifiedState = await this.fetchState();
|
|
96
|
+
const { state: stringifiedState, objects } = await this.fetchState();
|
|
93
97
|
if (!stringifiedState) {
|
|
94
98
|
throw new Error('No state found in response.');
|
|
95
99
|
}
|
|
@@ -102,6 +106,14 @@ class State {
|
|
|
102
106
|
}
|
|
103
107
|
this.state = parsedState;
|
|
104
108
|
console.log('State fetched successfully. Current state', (0, logger_1.getPrintableState)(this.state));
|
|
109
|
+
if (objects) {
|
|
110
|
+
try {
|
|
111
|
+
this._extractionScope = JSON.parse(objects);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.warn(`Failed to parse extractionScope. ${error}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
105
117
|
}
|
|
106
118
|
catch (error) {
|
|
107
119
|
if (axios_1.default.isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
|
|
@@ -170,7 +182,7 @@ class State {
|
|
|
170
182
|
* @return The raw state data from API
|
|
171
183
|
*/
|
|
172
184
|
async fetchState() {
|
|
173
|
-
var _a;
|
|
185
|
+
var _a, _b;
|
|
174
186
|
console.log(`Fetching state with sync unit id ${this.syncUnitId} and request id ${this.requestId}.`);
|
|
175
187
|
const url = this.workerUrl + '.get';
|
|
176
188
|
const response = await axios_client_internal_1.axiosClient.get(url, {
|
|
@@ -182,7 +194,10 @@ class State {
|
|
|
182
194
|
request_id: this.requestId,
|
|
183
195
|
},
|
|
184
196
|
});
|
|
185
|
-
return
|
|
197
|
+
return {
|
|
198
|
+
state: (_a = response.data) === null || _a === void 0 ? void 0 : _a.state,
|
|
199
|
+
objects: (_b = response.data) === null || _b === void 0 ? void 0 : _b.objects,
|
|
200
|
+
};
|
|
186
201
|
}
|
|
187
202
|
}
|
|
188
203
|
exports.State = State;
|
package/dist/state/state.test.js
CHANGED
|
@@ -63,7 +63,7 @@ describe(state_1.State.name, () => {
|
|
|
63
63
|
const event = (0, test_helpers_1.createEvent)({
|
|
64
64
|
eventType: eventType,
|
|
65
65
|
});
|
|
66
|
-
fetchStateSpy.mockResolvedValue('invalid-json');
|
|
66
|
+
fetchStateSpy.mockResolvedValue({ state: 'invalid-json' });
|
|
67
67
|
jest.spyOn(console, 'error').mockImplementation(() => { });
|
|
68
68
|
// Act & Assert
|
|
69
69
|
await expect((0, state_1.createAdapterState)({
|
|
@@ -78,7 +78,7 @@ describe(state_1.State.name, () => {
|
|
|
78
78
|
const event = (0, test_helpers_1.createEvent)({
|
|
79
79
|
eventType: eventType,
|
|
80
80
|
});
|
|
81
|
-
fetchStateSpy.mockResolvedValue(null);
|
|
81
|
+
fetchStateSpy.mockResolvedValue({ state: null });
|
|
82
82
|
jest.spyOn(console, 'error').mockImplementation(() => { });
|
|
83
83
|
// Act & Assert
|
|
84
84
|
await expect((0, state_1.createAdapterState)({
|
|
@@ -159,9 +159,11 @@ describe(state_1.State.name, () => {
|
|
|
159
159
|
const event = (0, test_helpers_1.createEvent)({
|
|
160
160
|
eventType: eventType,
|
|
161
161
|
});
|
|
162
|
-
fetchStateSpy.mockResolvedValue(
|
|
163
|
-
|
|
164
|
-
|
|
162
|
+
fetchStateSpy.mockResolvedValue({
|
|
163
|
+
state: JSON.stringify({
|
|
164
|
+
test: 'test',
|
|
165
|
+
}),
|
|
166
|
+
});
|
|
165
167
|
jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
166
168
|
jest.spyOn(console, 'error').mockImplementation(() => { });
|
|
167
169
|
// Act & Assert
|
|
@@ -184,7 +186,7 @@ describe(state_1.State.name, () => {
|
|
|
184
186
|
test: 'test',
|
|
185
187
|
snapInVersionId: '1.0.0',
|
|
186
188
|
});
|
|
187
|
-
fetchStateSpy.mockResolvedValue(stringifiedState);
|
|
189
|
+
fetchStateSpy.mockResolvedValue({ state: stringifiedState });
|
|
188
190
|
jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
189
191
|
// Act & Assert
|
|
190
192
|
await (0, state_1.createAdapterState)({
|
|
@@ -207,7 +209,7 @@ describe(state_1.State.name, () => {
|
|
|
207
209
|
test: 'test',
|
|
208
210
|
snapInVersionId: '1.0.0',
|
|
209
211
|
});
|
|
210
|
-
fetchStateSpy.mockResolvedValue(stringifiedState);
|
|
212
|
+
fetchStateSpy.mockResolvedValue({ state: stringifiedState });
|
|
211
213
|
installInitialDomainMappingSpy.mockResolvedValue({
|
|
212
214
|
success: true,
|
|
213
215
|
});
|
|
@@ -221,4 +223,70 @@ describe(state_1.State.name, () => {
|
|
|
221
223
|
// Assert
|
|
222
224
|
expect(installInitialDomainMappingSpy).toHaveBeenCalled();
|
|
223
225
|
});
|
|
226
|
+
it('should populate extractionScope from API response', async () => {
|
|
227
|
+
// Arrange
|
|
228
|
+
const event = (0, test_helpers_1.createEvent)({
|
|
229
|
+
eventType: extraction_1.EventType.StartExtractingData,
|
|
230
|
+
contextOverrides: {
|
|
231
|
+
snap_in_version_id: '1.0.0',
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
fetchStateSpy.mockResolvedValue({
|
|
235
|
+
state: JSON.stringify({ snapInVersionId: '1.0.0' }),
|
|
236
|
+
objects: JSON.stringify({
|
|
237
|
+
tasks: { extract: true },
|
|
238
|
+
users: { extract: true },
|
|
239
|
+
}),
|
|
240
|
+
});
|
|
241
|
+
jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
242
|
+
// Act
|
|
243
|
+
const result = await (0, state_1.createAdapterState)({
|
|
244
|
+
event,
|
|
245
|
+
initialState: {},
|
|
246
|
+
initialDomainMapping: {},
|
|
247
|
+
});
|
|
248
|
+
// Assert
|
|
249
|
+
expect(result.extractionScope).toEqual({
|
|
250
|
+
tasks: { extract: true },
|
|
251
|
+
users: { extract: true },
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
it('should have empty extractionScope on 404', async () => {
|
|
255
|
+
// Arrange
|
|
256
|
+
const event = (0, test_helpers_1.createEvent)({
|
|
257
|
+
eventType: extraction_1.EventType.StartExtractingMetadata,
|
|
258
|
+
contextOverrides: {
|
|
259
|
+
snap_in_version_id: '',
|
|
260
|
+
},
|
|
261
|
+
});
|
|
262
|
+
fetchStateSpy.mockRejectedValue({
|
|
263
|
+
isAxiosError: true,
|
|
264
|
+
response: { status: 404 },
|
|
265
|
+
});
|
|
266
|
+
installInitialDomainMappingSpy.mockResolvedValue({ success: true });
|
|
267
|
+
postStateSpy.mockResolvedValue({ success: true });
|
|
268
|
+
jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
269
|
+
// Act
|
|
270
|
+
const result = await (0, state_1.createAdapterState)({
|
|
271
|
+
event,
|
|
272
|
+
initialState: {},
|
|
273
|
+
initialDomainMapping: {},
|
|
274
|
+
});
|
|
275
|
+
// Assert
|
|
276
|
+
expect(result.extractionScope).toEqual({});
|
|
277
|
+
});
|
|
278
|
+
it('should have empty extractionScope for stateless events', async () => {
|
|
279
|
+
// Arrange
|
|
280
|
+
const event = (0, test_helpers_1.createEvent)({
|
|
281
|
+
eventType: extraction_1.EventType.StartExtractingExternalSyncUnits,
|
|
282
|
+
});
|
|
283
|
+
// Act
|
|
284
|
+
const result = await (0, state_1.createAdapterState)({
|
|
285
|
+
event,
|
|
286
|
+
initialState: {},
|
|
287
|
+
initialDomainMapping: {},
|
|
288
|
+
});
|
|
289
|
+
// Assert
|
|
290
|
+
expect(result.extractionScope).toEqual({});
|
|
291
|
+
});
|
|
224
292
|
});
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { AdapterUpdateParams, ErrorLevel, ErrorRecord, InitialDomainMapping, LogRecord, SyncMode, } from './common';
|
|
2
|
-
export { AirdropEvent, AirdropMessage, ConnectionData, DomainObjectState, EventContextIn, EventContextOut, EventData, EventType, ExternalProcessAttachmentFunction, ExternalSyncUnit, ExternalSystemAttachmentIteratorFunction, ExternalSystemAttachmentReducerFunction, ExternalSystemAttachmentStreamingFunction, ExternalSystemAttachmentStreamingParams, ExternalSystemAttachmentStreamingResponse, ExtractionMode, ExtractorEvent, ExtractorEventType, ProcessAttachmentReturnType, } from './extraction';
|
|
2
|
+
export { AirdropEvent, AirdropMessage, ConnectionData, DomainObjectState, EventContextIn, EventContextOut, EventContext, EventData, EventType, ExternalProcessAttachmentFunction, ExternalSyncUnit, ExternalSystemAttachmentIteratorFunction, ExternalSystemAttachmentReducerFunction, ExternalSystemAttachmentStreamingFunction, ExternalSystemAttachmentStreamingParams, ExternalSystemAttachmentStreamingResponse, ExtractionMode, ExtractorEvent, ExtractorEventType, ProcessAttachmentReturnType, } from './extraction';
|
|
3
3
|
export { ExternalSystemAttachment, ExternalSystemItem, ExternalSystemItemLoadingParams, ExternalSystemItemLoadingResponse, LoaderEventType, } from './loading';
|
|
4
4
|
export { NormalizedAttachment, NormalizedItem, RepoInterface, } from '../repo/repo.interfaces';
|
|
5
5
|
export { AdapterState } from '../state/state.interfaces';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,QAAQ,GACT,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,SAAS,EACT,SAAS,EACT,iCAAiC,EACjC,gBAAgB,EAChB,wCAAwC,EACxC,uCAAuC,EACvC,yCAAyC,EACzC,uCAAuC,EACvC,yCAAyC,EACzC,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,+BAA+B,EAC/B,iCAAiC,EACjC,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,cAAc,GACf,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,KAAK,EACL,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,OAAO,EACP,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,GACnB,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,QAAQ,GACT,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,SAAS,EACT,SAAS,EACT,iCAAiC,EACjC,gBAAgB,EAChB,wCAAwC,EACxC,uCAAuC,EACvC,yCAAyC,EACzC,uCAAuC,EACvC,yCAAyC,EACzC,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,+BAA+B,EAC/B,iCAAiC,EACjC,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,cAAc,EACd,yBAAyB,EACzB,cAAc,EACd,cAAc,GACf,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,KAAK,EACL,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,OAAO,EACP,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,GACnB,MAAM,4BAA4B,CAAC"}
|
package/dist/types/workers.d.ts
CHANGED
|
@@ -18,6 +18,13 @@ export interface WorkerAdapterInterface<ConnectorState> {
|
|
|
18
18
|
adapterState: State<ConnectorState>;
|
|
19
19
|
options?: WorkerAdapterOptions;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* ExtractionScope represents the parsed extraction scope from the platform.
|
|
23
|
+
* Each key is an item type name, and the value indicates whether it should be extracted.
|
|
24
|
+
*/
|
|
25
|
+
export type ExtractionScope = Record<string, {
|
|
26
|
+
extract: boolean;
|
|
27
|
+
}>;
|
|
21
28
|
/**
|
|
22
29
|
* WorkerAdapterOptions represents the options for WorkerAdapter class.
|
|
23
30
|
* @interface WorkerAdapterOptions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/types/workers.ts"],"names":[],"mappings":"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"}
|
|
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,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB,CAAC,cAAc;IACpD,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,qBAAqB,CAAC,cAAc;IACnD,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,cAAc,CAAC;IAE7B,wGAAwG;IACxG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,cAAc;IAClD,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB,CAAC,cAAc;IAClD,IAAI,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,aAAa,YAAY;IACzB,YAAY,WAAW;IACvB,WAAW,UAAU;IACrB,UAAU,SAAS;CACpB;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,oBAAoB,SAAS;IAC7B,iBAAiB,SAAS;IAC1B,gBAAgB,QAAQ;IACxB,mBAAmB,WAAW;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,oBAAoB,CAAC,oBAAoB,CAAC;IACnD,OAAO,EAAE;QACP,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;KACjD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,oBAAoB,CAAC,iBAAiB,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;IAC/C,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,QAAQ,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;IAClD,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,cAAc;IACxC,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,cAAc,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC"}
|