@devrev/ts-adaas 1.12.2 → 1.12.3-beta.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 (70) hide show
  1. package/dist/common/constants.js +11 -11
  2. package/dist/common/control-protocol.d.ts.map +1 -1
  3. package/dist/common/control-protocol.js +5 -1
  4. package/dist/common/event-type-translation.d.ts +24 -0
  5. package/dist/common/event-type-translation.d.ts.map +1 -0
  6. package/dist/common/event-type-translation.js +117 -0
  7. package/dist/common/helpers.d.ts.map +1 -1
  8. package/dist/common/helpers.js +25 -7
  9. package/dist/deprecated/adapter/index.d.ts.map +1 -1
  10. package/dist/deprecated/adapter/index.js +2 -0
  11. package/dist/state/state.js +2 -2
  12. package/dist/state/state.test.js +3 -3
  13. package/dist/tests/timeout-handling/timeout-1.js +2 -2
  14. package/dist/tests/timeout-handling/timeout-1.test.js +1 -1
  15. package/dist/tests/timeout-handling/timeout-2.js +3 -3
  16. package/dist/tests/timeout-handling/timeout-2.test.js +1 -1
  17. package/dist/tests/timeout-handling/timeout-3a.js +2 -2
  18. package/dist/tests/timeout-handling/timeout-3a.test.js +1 -1
  19. package/dist/tests/timeout-handling/timeout-3b.js +2 -2
  20. package/dist/tests/timeout-handling/timeout-3b.test.js +1 -1
  21. package/dist/types/extraction.d.ts +99 -2
  22. package/dist/types/extraction.d.ts.map +1 -1
  23. package/dist/types/extraction.js +102 -2
  24. package/dist/types/loading.d.ts +21 -1
  25. package/dist/types/loading.d.ts.map +1 -1
  26. package/dist/types/loading.js +23 -0
  27. package/dist/types/workers.d.ts +4 -1
  28. package/dist/types/workers.d.ts.map +1 -1
  29. package/dist/workers/process-task.d.ts.map +1 -1
  30. package/dist/workers/process-task.js +3 -0
  31. package/dist/workers/spawn.d.ts +3 -3
  32. package/dist/workers/spawn.d.ts.map +1 -1
  33. package/dist/workers/spawn.js +64 -43
  34. package/dist/workers/worker-adapter.js +4 -4
  35. package/dist/workers/worker.js +0 -1
  36. package/package.json +1 -1
  37. package/dist/workers/default-workers/attachments-deletion.d.ts +0 -2
  38. package/dist/workers/default-workers/attachments-deletion.d.ts.map +0 -1
  39. package/dist/workers/default-workers/attachments-deletion.js +0 -13
  40. package/dist/workers/default-workers/attachments-extraction.d.ts +0 -2
  41. package/dist/workers/default-workers/attachments-extraction.d.ts.map +0 -1
  42. package/dist/workers/default-workers/attachments-extraction.js +0 -95
  43. package/dist/workers/default-workers/data-deletion.d.ts +0 -2
  44. package/dist/workers/default-workers/data-deletion.d.ts.map +0 -1
  45. package/dist/workers/default-workers/data-deletion.js +0 -15
  46. package/dist/workers/default-workers/data-extraction.d.ts +0 -2
  47. package/dist/workers/default-workers/data-extraction.d.ts.map +0 -1
  48. package/dist/workers/default-workers/data-extraction.js +0 -100
  49. package/dist/workers/default-workers/delete-loader-attachment-state.d.ts +0 -2
  50. package/dist/workers/default-workers/delete-loader-attachment-state.d.ts.map +0 -1
  51. package/dist/workers/default-workers/delete-loader-attachment-state.js +0 -15
  52. package/dist/workers/default-workers/delete-loader-state.d.ts +0 -2
  53. package/dist/workers/default-workers/delete-loader-state.d.ts.map +0 -1
  54. package/dist/workers/default-workers/delete-loader-state.js +0 -15
  55. package/dist/workers/default-workers/external-sync-units-extraction.d.ts +0 -2
  56. package/dist/workers/default-workers/external-sync-units-extraction.d.ts.map +0 -1
  57. package/dist/workers/default-workers/external-sync-units-extraction.js +0 -27
  58. package/dist/workers/default-workers/load-attachments.d.ts +0 -2
  59. package/dist/workers/default-workers/load-attachments.d.ts.map +0 -1
  60. package/dist/workers/default-workers/load-attachments.js +0 -19
  61. package/dist/workers/default-workers/load-data.d.ts +0 -2
  62. package/dist/workers/default-workers/load-data.d.ts.map +0 -1
  63. package/dist/workers/default-workers/load-data.js +0 -18
  64. package/dist/workers/default-workers/metadata-extraction.d.ts +0 -2
  65. package/dist/workers/default-workers/metadata-extraction.d.ts.map +0 -1
  66. package/dist/workers/default-workers/metadata-extraction.js +0 -26
  67. package/dist/workers/dummy-extractor/data-normalization.d.ts +0 -5
  68. package/dist/workers/dummy-extractor/data-normalization.d.ts.map +0 -1
  69. package/dist/workers/dummy-extractor/data-normalization.js +0 -41
  70. package/dist/workers/dummy-extractor/external_domain_metadata.json +0 -58
@@ -1,95 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const axios_1 = __importDefault(require("axios"));
7
- const constants_1 = require("../../common/constants");
8
- const index_1 = require("../../index");
9
- const getAttachmentStream = async ({ item, }) => {
10
- const { id, url } = item;
11
- let fileStreamResponse;
12
- try {
13
- // Get the stream response directly
14
- fileStreamResponse = await axios_1.default.get(url, {
15
- responseType: 'stream',
16
- headers: {
17
- 'Accept-Encoding': 'identity',
18
- },
19
- });
20
- // Check content-length from the stream response headers
21
- const contentLength = fileStreamResponse === null || fileStreamResponse === void 0 ? void 0 : fileStreamResponse.headers['content-length'];
22
- if (contentLength && parseInt(contentLength) > constants_1.MAX_DEVREV_ARTIFACT_SIZE) {
23
- console.warn(`Attachment ${id} size (${contentLength} bytes) exceeds maximum limit of ${constants_1.MAX_DEVREV_ARTIFACT_SIZE} bytes. Skipping download.`);
24
- // Destroy the stream since we won't use it
25
- if (fileStreamResponse != null) {
26
- destroyHttpStream(fileStreamResponse);
27
- }
28
- return {
29
- error: {
30
- message: `File size exceeds maximum limit of ${constants_1.MAX_DEVREV_ARTIFACT_SIZE} bytes.`,
31
- },
32
- };
33
- }
34
- return { httpStream: fileStreamResponse };
35
- }
36
- catch (error) {
37
- // If we created a stream but failed afterwards, destroy it
38
- if (fileStreamResponse != null) {
39
- destroyHttpStream(fileStreamResponse);
40
- }
41
- return {
42
- error: {
43
- message: `Error while getting attachment stream for attachment with id ${id}. ${error}`,
44
- },
45
- };
46
- }
47
- };
48
- /**
49
- * Destroys a stream to prevent memory leaks.
50
- * @param {any} httpStream - The axios response stream to destroy
51
- */
52
- const destroyHttpStream = (httpStream) => {
53
- try {
54
- if (httpStream && httpStream.data) {
55
- if (typeof httpStream.data.destroy === 'function') {
56
- httpStream.data.destroy();
57
- }
58
- else if (typeof httpStream.data.close === 'function') {
59
- httpStream.data.close();
60
- }
61
- }
62
- }
63
- catch (error) {
64
- console.warn('Error while destroying HTTP stream:', error);
65
- }
66
- };
67
- (0, index_1.processTask)({
68
- task: async ({ adapter }) => {
69
- try {
70
- const response = await adapter.streamAttachments({
71
- stream: getAttachmentStream,
72
- batchSize: 10,
73
- });
74
- if (response === null || response === void 0 ? void 0 : response.delay) {
75
- await adapter.emit(index_1.ExtractorEventType.ExtractionAttachmentsDelay, {
76
- delay: response.delay,
77
- });
78
- }
79
- else if (response === null || response === void 0 ? void 0 : response.error) {
80
- await adapter.emit(index_1.ExtractorEventType.ExtractionAttachmentsError, {
81
- error: response.error,
82
- });
83
- }
84
- else {
85
- await adapter.emit(index_1.ExtractorEventType.ExtractionAttachmentsDone);
86
- }
87
- }
88
- catch (error) {
89
- console.error('An error occured while processing a task.', error);
90
- }
91
- },
92
- onTimeout: async ({ adapter }) => {
93
- await adapter.emit(index_1.ExtractorEventType.ExtractionAttachmentsProgress);
94
- },
95
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data-deletion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-deletion.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/data-deletion.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("../../index");
4
- (0, index_1.processTask)({
5
- task: async ({ adapter }) => {
6
- await adapter.emit(index_1.ExtractorEventType.ExtractionDataDeleteDone);
7
- },
8
- onTimeout: async ({ adapter }) => {
9
- await adapter.emit(index_1.ExtractorEventType.ExtractionDataDeleteError, {
10
- error: {
11
- message: 'Failed to delete data. Lambda timeout.',
12
- },
13
- });
14
- },
15
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data-extraction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-extraction.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/data-extraction.ts"],"names":[],"mappings":""}
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("../../index");
4
- const data_normalization_1 = require("../dummy-extractor/data-normalization");
5
- // Dummy data that originally would be fetched from an external source
6
- const issues = [
7
- {
8
- id: 'issue-1',
9
- created_date: '1999-12-25T01:00:03+01:00',
10
- modified_date: '1999-12-25T01:00:03+01:00',
11
- body: '<p>This is issue 1</p>',
12
- creator: 'user-1',
13
- owner: 'user-1',
14
- title: 'Issue 1',
15
- },
16
- {
17
- id: 'issue-2',
18
- created_date: '1999-12-27T15:31:34+01:00',
19
- modified_date: '2002-04-09T01:55:31+02:00',
20
- body: '<p>This is issue 2</p>',
21
- creator: 'user-2',
22
- owner: 'user-2',
23
- title: 'Issue 2',
24
- },
25
- ];
26
- const users = [
27
- {
28
- id: 'user-1',
29
- created_date: '1999-12-25T01:00:03+01:00',
30
- modified_date: '1999-12-25T01:00:03+01:00',
31
- data: {
32
- email: 'johndoe@test.com',
33
- name: 'John Doe',
34
- },
35
- },
36
- {
37
- id: 'user-2',
38
- created_date: '1999-12-27T15:31:34+01:00',
39
- modified_date: '2002-04-09T01:55:31+02:00',
40
- data: {
41
- email: 'janedoe@test.com',
42
- name: 'Jane Doe',
43
- },
44
- },
45
- ];
46
- const attachments = [
47
- {
48
- url: 'https://app.dev.devrev-eng.ai/favicon.ico',
49
- id: 'attachment-1',
50
- file_name: 'dummy.jpg',
51
- author_id: 'user-1',
52
- parent_id: 'issue-1',
53
- },
54
- {
55
- url: 'https://app.dev.devrev-eng.ai/favicon.ico',
56
- id: 'attachment-2',
57
- file_name: 'dummy.ico',
58
- author_id: 'user-2',
59
- parent_id: 'issue-2',
60
- },
61
- ];
62
- const repos = [
63
- {
64
- itemType: 'issues',
65
- normalize: data_normalization_1.normalizeIssue,
66
- },
67
- {
68
- itemType: 'users',
69
- normalize: data_normalization_1.normalizeUser,
70
- },
71
- {
72
- itemType: 'attachments',
73
- normalize: data_normalization_1.normalizeAttachment,
74
- },
75
- ];
76
- (0, index_1.processTask)({
77
- task: async ({ adapter }) => {
78
- var _a, _b, _c;
79
- console.log('Logging something from worker thread', {});
80
- adapter.initializeRepos(repos);
81
- if (adapter.event.payload.event_type === index_1.EventType.ExtractionDataStart) {
82
- await ((_a = adapter.getRepo('issues')) === null || _a === void 0 ? void 0 : _a.push(issues));
83
- await adapter.emit(index_1.ExtractorEventType.ExtractionDataProgress, {
84
- progress: 50,
85
- });
86
- }
87
- else {
88
- await ((_b = adapter.getRepo('users')) === null || _b === void 0 ? void 0 : _b.push(users));
89
- await ((_c = adapter.getRepo('attachments')) === null || _c === void 0 ? void 0 : _c.push(attachments));
90
- await adapter.emit(index_1.ExtractorEventType.ExtractionDataDone, {
91
- progress: 100,
92
- });
93
- }
94
- },
95
- onTimeout: async ({ adapter }) => {
96
- await adapter.emit(index_1.ExtractorEventType.ExtractionDataProgress, {
97
- progress: 50,
98
- });
99
- },
100
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=delete-loader-attachment-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete-loader-attachment-state.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/delete-loader-attachment-state.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("../../index");
4
- (0, index_1.processTask)({
5
- task: async ({ adapter }) => {
6
- await adapter.emit(index_1.LoaderEventType.LoaderAttachmentStateDeletionDone);
7
- },
8
- onTimeout: async ({ adapter }) => {
9
- await adapter.emit(index_1.LoaderEventType.LoaderAttachmentStateDeletionError, {
10
- error: {
11
- message: 'Failed to delete attachment state. Timeout.',
12
- },
13
- });
14
- },
15
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=delete-loader-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete-loader-state.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/delete-loader-state.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("../../index");
4
- (0, index_1.processTask)({
5
- task: async ({ adapter }) => {
6
- await adapter.emit(index_1.LoaderEventType.LoaderStateDeletionDone);
7
- },
8
- onTimeout: async ({ adapter }) => {
9
- await adapter.emit(index_1.LoaderEventType.LoaderStateDeletionError, {
10
- error: {
11
- message: 'Failed to delete data. Lambda timeout.',
12
- },
13
- });
14
- },
15
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=external-sync-units-extraction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"external-sync-units-extraction.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/external-sync-units-extraction.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("../../index");
4
- // Dummy data that originally would be fetched from an external source
5
- const externalSyncUnits = [
6
- {
7
- id: 'devrev',
8
- name: 'devrev',
9
- description: 'Demo external sync unit',
10
- item_count: 2,
11
- item_type: 'issues',
12
- },
13
- ];
14
- (0, index_1.processTask)({
15
- task: async ({ adapter }) => {
16
- await adapter.emit(index_1.ExtractorEventType.ExtractionExternalSyncUnitsDone, {
17
- external_sync_units: externalSyncUnits,
18
- });
19
- },
20
- onTimeout: async ({ adapter }) => {
21
- await adapter.emit(index_1.ExtractorEventType.ExtractionExternalSyncUnitsError, {
22
- error: {
23
- message: 'Failed to extract external sync units. Lambda timeout.',
24
- },
25
- });
26
- },
27
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=load-attachments.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-attachments.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/load-attachments.ts"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const types_1 = require("../../types");
4
- const process_task_1 = require("../process-task");
5
- (0, process_task_1.processTask)({
6
- task: async ({ adapter }) => {
7
- await adapter.emit(types_1.LoaderEventType.UnknownEventType, {
8
- error: {
9
- message: 'Event type ' + adapter.event.payload.event_type + ' not supported.',
10
- },
11
- });
12
- },
13
- onTimeout: async ({ adapter }) => {
14
- await adapter.emit(types_1.LoaderEventType.AttachmentLoadingError, {
15
- reports: adapter.reports,
16
- processed_files: adapter.processedFiles,
17
- });
18
- },
19
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=load-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-data.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/load-data.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const loading_1 = require("../../types/loading");
4
- const process_task_1 = require("../process-task");
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.emit(loading_1.LoaderEventType.DataLoadingError, {
14
- reports: adapter.reports,
15
- processed_files: adapter.processedFiles,
16
- });
17
- },
18
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=metadata-extraction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata-extraction.d.ts","sourceRoot":"","sources":["../../../src/workers/default-workers/metadata-extraction.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const index_1 = require("../../index");
7
- const external_domain_metadata_json_1 = __importDefault(require("../dummy-extractor/external_domain_metadata.json"));
8
- const repos = [
9
- {
10
- itemType: 'external_domain_metadata',
11
- },
12
- ];
13
- (0, index_1.processTask)({
14
- task: async ({ adapter }) => {
15
- var _a;
16
- adapter.initializeRepos(repos);
17
- await ((_a = adapter
18
- .getRepo('external_domain_metadata')) === null || _a === void 0 ? void 0 : _a.push([external_domain_metadata_json_1.default]));
19
- await adapter.emit(index_1.ExtractorEventType.ExtractionMetadataDone);
20
- },
21
- onTimeout: async ({ adapter }) => {
22
- await adapter.emit(index_1.ExtractorEventType.ExtractionMetadataError, {
23
- error: { message: 'Failed to extract metadata. Lambda timeout.' },
24
- });
25
- },
26
- });
@@ -1,5 +0,0 @@
1
- import { NormalizedAttachment, NormalizedItem } from '../../index';
2
- export declare function normalizeIssue(item: any): NormalizedItem;
3
- export declare function normalizeUser(item: any): NormalizedItem;
4
- export declare function normalizeAttachment(item: any): NormalizedAttachment;
5
- //# sourceMappingURL=data-normalization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-normalization.d.ts","sourceRoot":"","sources":["../../../src/workers/dummy-extractor/data-normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnE,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CAYxD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CAUvD;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,oBAAoB,CAQnE"}
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeIssue = normalizeIssue;
4
- exports.normalizeUser = normalizeUser;
5
- exports.normalizeAttachment = normalizeAttachment;
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- function normalizeIssue(item) {
8
- return {
9
- id: item.id,
10
- created_date: item.created_date,
11
- modified_date: item.modified_date,
12
- data: {
13
- body: item.body,
14
- creator: item.creator,
15
- owner: item.owner,
16
- title: item.title,
17
- },
18
- };
19
- }
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- function normalizeUser(item) {
22
- return {
23
- id: item.id,
24
- created_date: item.created_date,
25
- modified_date: item.modified_date,
26
- data: {
27
- email: item.email,
28
- name: item.name,
29
- },
30
- };
31
- }
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- function normalizeAttachment(item) {
34
- return {
35
- url: item.url,
36
- id: item.id,
37
- file_name: item.file_name,
38
- author_id: item.author_id,
39
- parent_id: item.parent_id,
40
- };
41
- }
@@ -1,58 +0,0 @@
1
- {
2
- "record_types": {
3
- "issues": {
4
- "name": "Issues",
5
- "fields": {
6
- "title": {
7
- "is_required": true,
8
- "type": "text",
9
- "name": "Title",
10
- "text": {
11
- "min_length": 1
12
- }
13
- },
14
- "body": {
15
- "type": "rich_text",
16
- "name": "body",
17
- "is_required": true
18
- },
19
- "owner": {
20
- "is_required": true,
21
- "type": "reference",
22
- "reference": {
23
- "refers_to": {
24
- "#record:users": {}
25
- }
26
- }
27
- },
28
- "creator": {
29
- "is_required": true,
30
- "type": "reference",
31
- "reference": {
32
- "refers_to": {
33
- "#record:users": {}
34
- }
35
- }
36
- }
37
- }
38
- },
39
- "users": {
40
- "name": "Users",
41
- "fields": {
42
- "name": {
43
- "is_required": true,
44
- "type": "text",
45
- "name": "Name",
46
- "text": {
47
- "min_length": 1
48
- }
49
- },
50
- "email": {
51
- "type": "text",
52
- "name": "Email",
53
- "is_required": true
54
- }
55
- }
56
- }
57
- }
58
- }