@devrev/ts-adaas 1.12.3-beta.0 → 1.12.3-beta.2
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/common/constants.js +11 -11
- package/dist/common/control-protocol.d.ts.map +1 -1
- package/dist/common/control-protocol.js +1 -5
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +7 -25
- package/dist/deprecated/adapter/index.d.ts.map +1 -1
- package/dist/deprecated/adapter/index.js +0 -2
- package/dist/logger/logger.context.d.ts +6 -0
- package/dist/logger/logger.context.d.ts.map +1 -0
- package/dist/logger/logger.context.js +31 -0
- package/dist/logger/logger.d.ts +16 -1
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.interfaces.d.ts +4 -3
- package/dist/logger/logger.interfaces.d.ts.map +1 -1
- package/dist/logger/logger.js +33 -6
- package/dist/logger/logger.test.js +71 -10
- package/dist/logger/logger.worker-fixture.d.ts +2 -0
- package/dist/logger/logger.worker-fixture.d.ts.map +1 -0
- package/dist/logger/logger.worker-fixture.js +10 -0
- package/dist/state/state.js +2 -2
- package/dist/state/state.test.js +3 -3
- package/dist/tests/backwards-compatibility/backwards-compatibility.test.js +17 -2
- package/dist/tests/timeout-handling/timeout-1.js +2 -2
- package/dist/tests/timeout-handling/timeout-1.test.js +1 -1
- package/dist/tests/timeout-handling/timeout-2.js +3 -3
- package/dist/tests/timeout-handling/timeout-2.test.js +1 -1
- package/dist/tests/timeout-handling/timeout-3a.js +2 -2
- package/dist/tests/timeout-handling/timeout-3a.test.js +1 -1
- package/dist/tests/timeout-handling/timeout-3b.js +2 -2
- package/dist/tests/timeout-handling/timeout-3b.test.js +1 -1
- package/dist/types/extraction.d.ts +2 -99
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +2 -102
- package/dist/types/loading.d.ts +1 -21
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +0 -23
- package/dist/types/workers.d.ts +14 -5
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/workers/default-workers/attachments-deletion.d.ts +2 -0
- package/dist/workers/default-workers/attachments-deletion.d.ts.map +1 -0
- package/dist/workers/default-workers/attachments-deletion.js +13 -0
- package/dist/workers/default-workers/attachments-extraction.d.ts +2 -0
- package/dist/workers/default-workers/attachments-extraction.d.ts.map +1 -0
- package/dist/workers/default-workers/attachments-extraction.js +95 -0
- package/dist/workers/default-workers/data-deletion.d.ts +2 -0
- package/dist/workers/default-workers/data-deletion.d.ts.map +1 -0
- package/dist/workers/default-workers/data-deletion.js +15 -0
- package/dist/workers/default-workers/data-extraction.d.ts +2 -0
- package/dist/workers/default-workers/data-extraction.d.ts.map +1 -0
- package/dist/workers/default-workers/data-extraction.js +100 -0
- package/dist/workers/default-workers/delete-loader-attachment-state.d.ts +2 -0
- package/dist/workers/default-workers/delete-loader-attachment-state.d.ts.map +1 -0
- package/dist/workers/default-workers/delete-loader-attachment-state.js +15 -0
- package/dist/workers/default-workers/delete-loader-state.d.ts +2 -0
- package/dist/workers/default-workers/delete-loader-state.d.ts.map +1 -0
- package/dist/workers/default-workers/delete-loader-state.js +15 -0
- package/dist/workers/default-workers/external-sync-units-extraction.d.ts +2 -0
- package/dist/workers/default-workers/external-sync-units-extraction.d.ts.map +1 -0
- package/dist/workers/default-workers/external-sync-units-extraction.js +27 -0
- package/dist/workers/default-workers/load-attachments.d.ts +2 -0
- package/dist/workers/default-workers/load-attachments.d.ts.map +1 -0
- package/dist/workers/default-workers/load-attachments.js +19 -0
- package/dist/workers/default-workers/load-data.d.ts +2 -0
- package/dist/workers/default-workers/load-data.d.ts.map +1 -0
- package/dist/workers/default-workers/load-data.js +18 -0
- package/dist/workers/default-workers/metadata-extraction.d.ts +2 -0
- package/dist/workers/default-workers/metadata-extraction.d.ts.map +1 -0
- package/dist/workers/default-workers/metadata-extraction.js +26 -0
- package/dist/workers/dummy-extractor/data-normalization.d.ts +5 -0
- package/dist/workers/dummy-extractor/data-normalization.d.ts.map +1 -0
- package/dist/workers/dummy-extractor/data-normalization.js +41 -0
- package/dist/workers/dummy-extractor/external_domain_metadata.json +58 -0
- package/dist/workers/process-task.d.ts.map +1 -1
- package/dist/workers/process-task.js +37 -35
- package/dist/workers/spawn.d.ts +3 -3
- package/dist/workers/spawn.d.ts.map +1 -1
- package/dist/workers/spawn.js +47 -66
- package/dist/workers/worker-adapter.d.ts.map +1 -1
- package/dist/workers/worker-adapter.js +496 -475
- package/dist/workers/worker-adapter.test.js +7 -0
- package/dist/workers/worker.js +4 -1
- package/package.json +1 -1
- 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/common/constants.js
CHANGED
|
@@ -4,14 +4,14 @@ exports.DEFAULT_SLEEP_DELAY_MS = exports.MEMORY_LOG_INTERVAL = exports.HARD_TIME
|
|
|
4
4
|
const extraction_1 = require("../types/extraction");
|
|
5
5
|
const helpers_1 = require("./helpers");
|
|
6
6
|
exports.ALLOWED_EXTRACTION_EVENT_TYPES = [
|
|
7
|
-
extraction_1.EventType.
|
|
8
|
-
extraction_1.EventType.
|
|
9
|
-
extraction_1.EventType.
|
|
10
|
-
extraction_1.EventType.
|
|
11
|
-
extraction_1.EventType.
|
|
12
|
-
extraction_1.EventType.
|
|
13
|
-
extraction_1.EventType.
|
|
14
|
-
extraction_1.EventType.
|
|
7
|
+
extraction_1.EventType.ExtractionExternalSyncUnitsStart,
|
|
8
|
+
extraction_1.EventType.ExtractionMetadataStart,
|
|
9
|
+
extraction_1.EventType.ExtractionDataStart,
|
|
10
|
+
extraction_1.EventType.ExtractionDataContinue,
|
|
11
|
+
extraction_1.EventType.ExtractionDataDelete,
|
|
12
|
+
extraction_1.EventType.ExtractionAttachmentsStart,
|
|
13
|
+
extraction_1.EventType.ExtractionAttachmentsContinue,
|
|
14
|
+
extraction_1.EventType.ExtractionAttachmentsDelete,
|
|
15
15
|
];
|
|
16
16
|
exports.ALLOWED_LOADING_EVENT_TYPES = [
|
|
17
17
|
extraction_1.EventType.StartLoadingData,
|
|
@@ -24,9 +24,9 @@ exports.ALLOWED_EVENT_TYPES = [
|
|
|
24
24
|
...exports.ALLOWED_LOADING_EVENT_TYPES,
|
|
25
25
|
];
|
|
26
26
|
exports.STATELESS_EXTRACTION_EVENT_TYPES = [
|
|
27
|
-
extraction_1.EventType.
|
|
28
|
-
extraction_1.EventType.
|
|
29
|
-
extraction_1.EventType.
|
|
27
|
+
extraction_1.EventType.ExtractionExternalSyncUnitsStart,
|
|
28
|
+
extraction_1.EventType.ExtractionDataDelete,
|
|
29
|
+
extraction_1.EventType.ExtractionAttachmentsDelete,
|
|
30
30
|
];
|
|
31
31
|
exports.STATELESS_LOADING_EVENT_TYPES = [
|
|
32
32
|
extraction_1.EventType.StartDeletingLoaderState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-protocol.d.ts","sourceRoot":"","sources":["../../src/common/control-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EACL,YAAY,EACZ,SAAS,EAET,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"control-protocol.d.ts","sourceRoot":"","sources":["../../src/common/control-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EACL,YAAY,EACZ,SAAS,EAET,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;IAChD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,IAAI,GAAU,6BAIxB,aAAa,KAAG,OAAO,CAAC,aAAa,CA4BvC,CAAC"}
|
|
@@ -3,13 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.emit = void 0;
|
|
4
4
|
const axios_client_internal_1 = require("../http/axios-client-internal");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
|
-
const event_type_translation_1 = require("./event-type-translation");
|
|
7
6
|
const emit = async ({ event, eventType, data, }) => {
|
|
8
|
-
// Normalize outgoing event type to ensure we always send new event types
|
|
9
|
-
// TODO: Remove when the old types are completely phased out
|
|
10
|
-
const translatedEventType = (0, event_type_translation_1.translateOutgoingEventType)(eventType);
|
|
11
7
|
const newEvent = {
|
|
12
|
-
event_type:
|
|
8
|
+
event_type: eventType,
|
|
13
9
|
event_context: event.payload.event_context,
|
|
14
10
|
event_data: Object.assign({}, data),
|
|
15
11
|
worker_metadata: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,UAAU,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAM1B,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC9D,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;CACjD,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,UAAU,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAM1B,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC9D,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAAC;CACjD,CAiEA;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,UAElE;AAED,wBAAgB,cAAc,CAAC,EAC7B,kBAAkB,EAClB,SAAS,GACV,EAAE;IACD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B,GAAG,UAAU,EAAE,CA8Bf;AAED,wBAAgB,uBAAuB,CAAC,EACtC,aAAa,EACb,MAAM,GACP,EAAE;IACD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;CACtB,GAAG,YAAY,EAAE,CA4BjB;AAGD,wBAAgB,iBAAiB,QAiBhC;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAGrC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,cAAc,IAAI,UAAU,CAmD3C"}
|
package/dist/common/helpers.js
CHANGED
|
@@ -49,64 +49,46 @@ const loading_1 = require("../types/loading");
|
|
|
49
49
|
const constants_1 = require("./constants");
|
|
50
50
|
function getTimeoutErrorEventType(eventType) {
|
|
51
51
|
switch (eventType) {
|
|
52
|
-
// Metadata extraction (handles both old and new enum members)
|
|
53
|
-
case extraction_1.EventType.StartExtractingMetadata:
|
|
54
52
|
case extraction_1.EventType.ExtractionMetadataStart:
|
|
55
53
|
return {
|
|
56
|
-
eventType: extraction_1.ExtractorEventType.
|
|
54
|
+
eventType: extraction_1.ExtractorEventType.ExtractionMetadataError,
|
|
57
55
|
};
|
|
58
|
-
// Data extraction (handles both old and new enum members)
|
|
59
|
-
case extraction_1.EventType.StartExtractingData:
|
|
60
|
-
case extraction_1.EventType.ContinueExtractingData:
|
|
61
56
|
case extraction_1.EventType.ExtractionDataStart:
|
|
62
57
|
case extraction_1.EventType.ExtractionDataContinue:
|
|
63
58
|
return {
|
|
64
|
-
eventType: extraction_1.ExtractorEventType.
|
|
59
|
+
eventType: extraction_1.ExtractorEventType.ExtractionDataError,
|
|
65
60
|
};
|
|
66
|
-
// Data deletion (handles both old and new enum members)
|
|
67
|
-
case extraction_1.EventType.StartDeletingExtractorState:
|
|
68
61
|
case extraction_1.EventType.ExtractionDataDelete:
|
|
69
62
|
return {
|
|
70
|
-
eventType: extraction_1.ExtractorEventType.
|
|
63
|
+
eventType: extraction_1.ExtractorEventType.ExtractionDataDeleteError,
|
|
71
64
|
};
|
|
72
|
-
// Attachments extraction (handles both old and new enum members)
|
|
73
|
-
case extraction_1.EventType.StartExtractingAttachments:
|
|
74
|
-
case extraction_1.EventType.ContinueExtractingAttachments:
|
|
75
65
|
case extraction_1.EventType.ExtractionAttachmentsStart:
|
|
76
66
|
case extraction_1.EventType.ExtractionAttachmentsContinue:
|
|
77
67
|
return {
|
|
78
|
-
eventType: extraction_1.ExtractorEventType.
|
|
68
|
+
eventType: extraction_1.ExtractorEventType.ExtractionAttachmentsError,
|
|
79
69
|
};
|
|
80
|
-
// Attachments deletion (handles both old and new enum members)
|
|
81
|
-
case extraction_1.EventType.StartDeletingExtractorAttachmentsState:
|
|
82
70
|
case extraction_1.EventType.ExtractionAttachmentsDelete:
|
|
83
71
|
return {
|
|
84
|
-
eventType: extraction_1.ExtractorEventType.
|
|
72
|
+
eventType: extraction_1.ExtractorEventType.ExtractionAttachmentsDeleteError,
|
|
85
73
|
};
|
|
86
|
-
// External sync units (handles both old and new enum members)
|
|
87
|
-
case extraction_1.EventType.StartExtractingExternalSyncUnits:
|
|
88
74
|
case extraction_1.EventType.ExtractionExternalSyncUnitsStart:
|
|
89
75
|
return {
|
|
90
|
-
eventType: extraction_1.ExtractorEventType.
|
|
76
|
+
eventType: extraction_1.ExtractorEventType.ExtractionExternalSyncUnitsError,
|
|
91
77
|
};
|
|
92
|
-
// Loading data
|
|
93
78
|
case extraction_1.EventType.StartLoadingData:
|
|
94
79
|
case extraction_1.EventType.ContinueLoadingData:
|
|
95
80
|
return {
|
|
96
81
|
eventType: loading_1.LoaderEventType.DataLoadingError,
|
|
97
82
|
};
|
|
98
|
-
// Deleting loader state
|
|
99
83
|
case extraction_1.EventType.StartDeletingLoaderState:
|
|
100
84
|
return {
|
|
101
85
|
eventType: loading_1.LoaderEventType.LoaderStateDeletionError,
|
|
102
86
|
};
|
|
103
|
-
// Loading attachments
|
|
104
87
|
case extraction_1.EventType.StartLoadingAttachments:
|
|
105
88
|
case extraction_1.EventType.ContinueLoadingAttachments:
|
|
106
89
|
return {
|
|
107
|
-
eventType: loading_1.LoaderEventType.
|
|
90
|
+
eventType: loading_1.LoaderEventType.AttachmentLoadingError,
|
|
108
91
|
};
|
|
109
|
-
// Deleting loader attachment state
|
|
110
92
|
case extraction_1.EventType.StartDeletingLoaderAttachmentState:
|
|
111
93
|
return {
|
|
112
94
|
eventType: loading_1.LoaderEventType.LoaderAttachmentStateDeletionError,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deprecated/adapter/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,SAAS,EAET,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D,OAAO,EAAE,KAAK,EAAsB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deprecated/adapter/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,SAAS,EAET,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D,OAAO,EAAE,KAAK,EAAsB,MAAM,mBAAmB,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AAEH,wBAAsB,aAAa,CAAC,cAAc,EAChD,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,cAAc,EAC5B,kBAAkB,GAAE,OAAe,oCAepC;AAED,qBAAa,OAAO,CAAC,cAAc;IACjC,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,iBAAiB,CAAqB;gBAG5C,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,EACnC,kBAAkB,GAAE,OAAe;IAwBrC,IAAI,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,CAExC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,EAE5C;IAED,IAAI,SAAS,IAAI,QAAQ,EAAE,CAE1B;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAE9B;IAED;;;;;OAKG;IACG,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,SAAS;IAkD7D;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;;OAGG;YACW,SAAS;CAiBxB"}
|
|
@@ -10,7 +10,6 @@ const constants_1 = require("../../common/constants");
|
|
|
10
10
|
const helpers_1 = require("../common/helpers");
|
|
11
11
|
// import { Logger } from '../../logger/logger';
|
|
12
12
|
const state_1 = require("../../state/state");
|
|
13
|
-
const event_type_translation_1 = require("../../common/event-type-translation");
|
|
14
13
|
/**
|
|
15
14
|
* Adapter class is used to interact with Airdrop platform. The class provides
|
|
16
15
|
* utilities to
|
|
@@ -34,7 +33,6 @@ const event_type_translation_1 = require("../../common/event-type-translation");
|
|
|
34
33
|
* @return The adapter instance
|
|
35
34
|
*/
|
|
36
35
|
async function createAdapter(event, initialState, isLocalDevelopment = false) {
|
|
37
|
-
event.payload.event_type = (0, event_type_translation_1.translateIncomingEventType)(event.payload.event_type);
|
|
38
36
|
const newInitialState = structuredClone(initialState);
|
|
39
37
|
const adapterState = await (0, state_1.createAdapterState)({
|
|
40
38
|
event,
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function ensureSdkLogContext(defaultValue?: boolean): void;
|
|
2
|
+
export declare function runWithUserLogContext<T>(fn: () => T): T;
|
|
3
|
+
export declare function runWithSdkLogContext<T>(fn: () => T): T;
|
|
4
|
+
export declare function getSdkLogContextValue(defaultValue: boolean): boolean;
|
|
5
|
+
export declare function getSdkLogContextValueOrUndefined(): boolean | undefined;
|
|
6
|
+
//# sourceMappingURL=logger.context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.context.d.ts","sourceRoot":"","sources":["../../src/logger/logger.context.ts"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,CAAC,YAAY,UAAO,GAAG,IAAI,CAK7D;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEtD;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAMpE;AAED,wBAAgB,gCAAgC,IAAI,OAAO,GAAG,SAAS,CAEtE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureSdkLogContext = ensureSdkLogContext;
|
|
4
|
+
exports.runWithUserLogContext = runWithUserLogContext;
|
|
5
|
+
exports.runWithSdkLogContext = runWithSdkLogContext;
|
|
6
|
+
exports.getSdkLogContextValue = getSdkLogContextValue;
|
|
7
|
+
exports.getSdkLogContextValueOrUndefined = getSdkLogContextValueOrUndefined;
|
|
8
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
9
|
+
const sdkLogContext = new node_async_hooks_1.AsyncLocalStorage();
|
|
10
|
+
function ensureSdkLogContext(defaultValue = true) {
|
|
11
|
+
const storeValue = sdkLogContext.getStore();
|
|
12
|
+
if (typeof storeValue !== 'boolean') {
|
|
13
|
+
sdkLogContext.enterWith(defaultValue);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function runWithUserLogContext(fn) {
|
|
17
|
+
return sdkLogContext.run(false, fn);
|
|
18
|
+
}
|
|
19
|
+
function runWithSdkLogContext(fn) {
|
|
20
|
+
return sdkLogContext.run(true, fn);
|
|
21
|
+
}
|
|
22
|
+
function getSdkLogContextValue(defaultValue) {
|
|
23
|
+
const storeValue = sdkLogContext.getStore();
|
|
24
|
+
if (typeof storeValue === 'boolean') {
|
|
25
|
+
return storeValue;
|
|
26
|
+
}
|
|
27
|
+
return defaultValue;
|
|
28
|
+
}
|
|
29
|
+
function getSdkLogContextValueOrUndefined() {
|
|
30
|
+
return sdkLogContext.getStore();
|
|
31
|
+
}
|
package/dist/logger/logger.d.ts
CHANGED
|
@@ -33,8 +33,20 @@ export declare class Logger extends Console {
|
|
|
33
33
|
*
|
|
34
34
|
* @param message - The pre-formatted message string to log
|
|
35
35
|
* @param level - Log level (info, warn, error)
|
|
36
|
+
* @param sdkLog - Flag indicating if the log originated from the SDK
|
|
36
37
|
*/
|
|
37
|
-
logFn(message: string, level: LogLevel): void;
|
|
38
|
+
logFn(message: string, level: LogLevel, sdkLog?: boolean): void;
|
|
39
|
+
/**
|
|
40
|
+
* Determines if a log call originated from SDK code.
|
|
41
|
+
*
|
|
42
|
+
* Uses AsyncLocalStorage context set by runWithUserLogContext/runWithSdkLogContext.
|
|
43
|
+
* All SDK entry points and public methods are wrapped with runWithSdkLogContext,
|
|
44
|
+
* and user code runs inside runWithUserLogContext, so the context should always be set.
|
|
45
|
+
*
|
|
46
|
+
* Defaults to true (SDK log) if no context is set, which should only happen
|
|
47
|
+
* in edge cases or during testing.
|
|
48
|
+
*/
|
|
49
|
+
private getSdkLogFlag;
|
|
38
50
|
/**
|
|
39
51
|
* Stringifies and logs arguments to the appropriate destination.
|
|
40
52
|
* On main thread, converts arguments to strings and calls logFn.
|
|
@@ -49,6 +61,9 @@ export declare class Logger extends Console {
|
|
|
49
61
|
info(...args: unknown[]): void;
|
|
50
62
|
warn(...args: unknown[]): void;
|
|
51
63
|
error(...args: unknown[]): void;
|
|
64
|
+
sdkInfo(...args: unknown[]): void;
|
|
65
|
+
sdkWarn(...args: unknown[]): void;
|
|
66
|
+
sdkError(...args: unknown[]): void;
|
|
52
67
|
}
|
|
53
68
|
/**
|
|
54
69
|
* Converts a state object into a printable format where arrays are summarized.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASvC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAEtB,QAAQ,EAER,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBAAa,MAAO,SAAQ,OAAO;IACjC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,IAAI,CAAa;gBAEb,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,sBAAsB;IAWtD;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IASvB;;;;;;;;;OASG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,MAAM,GAAE,OAA8B,GACrC,IAAI;IAcP;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAqBd,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIxC,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIjC,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIjC,QAAQ,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAGnC;AACD;;;;;;;GAOG;AAEH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc,CAqB5E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKtD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,CAwBzE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE1D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RawAxiosResponseHeaders } from 'axios';
|
|
2
|
-
import { AirdropEvent, EventContext } from '../types/extraction';
|
|
3
|
-
import { WorkerAdapterOptions } from '../types/workers';
|
|
1
|
+
import type { RawAxiosResponseHeaders } from 'axios';
|
|
2
|
+
import type { AirdropEvent, EventContext } from '../types/extraction';
|
|
3
|
+
import type { WorkerAdapterOptions } from '../types/workers';
|
|
4
4
|
export interface LoggerFactoryInterface {
|
|
5
5
|
event: AirdropEvent;
|
|
6
6
|
options?: WorkerAdapterOptions;
|
|
@@ -38,5 +38,6 @@ export interface AxiosErrorResponse {
|
|
|
38
38
|
}
|
|
39
39
|
export interface LoggerTags extends EventContext {
|
|
40
40
|
sdk_version: string;
|
|
41
|
+
sdk_log: boolean;
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=logger.interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.interfaces.d.ts","sourceRoot":"","sources":["../../src/logger/logger.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.interfaces.d.ts","sourceRoot":"","sources":["../../src/logger/logger.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,GAAG,CAAC;IAEhB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAE7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,cAAc,GAAG,cAAc,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAE3B,MAAM,EAAE,GAAG,CAAC;QACZ,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,uBAAuB,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
package/dist/logger/logger.js
CHANGED
|
@@ -12,6 +12,7 @@ const node_worker_threads_1 = require("node:worker_threads");
|
|
|
12
12
|
const constants_1 = require("../common/constants");
|
|
13
13
|
const workers_1 = require("../types/workers");
|
|
14
14
|
const logger_constants_1 = require("./logger.constants");
|
|
15
|
+
const logger_context_1 = require("./logger.context");
|
|
15
16
|
const logger_interfaces_1 = require("./logger.interfaces");
|
|
16
17
|
/**
|
|
17
18
|
* Custom logger that extends Node.js Console with context-aware logging.
|
|
@@ -22,7 +23,7 @@ class Logger extends node_console_1.Console {
|
|
|
22
23
|
super(process.stdout, process.stderr);
|
|
23
24
|
this.originalConsole = console;
|
|
24
25
|
this.options = options;
|
|
25
|
-
this.tags = Object.assign(Object.assign({}, event.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION });
|
|
26
|
+
this.tags = Object.assign(Object.assign({}, event.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, sdk_log: true });
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* Converts any value to a string using `util.inspect()` for complex types.
|
|
@@ -57,16 +58,32 @@ class Logger extends node_console_1.Console {
|
|
|
57
58
|
*
|
|
58
59
|
* @param message - The pre-formatted message string to log
|
|
59
60
|
* @param level - Log level (info, warn, error)
|
|
61
|
+
* @param sdkLog - Flag indicating if the log originated from the SDK
|
|
60
62
|
*/
|
|
61
|
-
logFn(message, level) {
|
|
63
|
+
logFn(message, level, sdkLog = this.getSdkLogFlag()) {
|
|
62
64
|
var _a;
|
|
63
65
|
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.isLocalDevelopment) {
|
|
64
66
|
this.originalConsole[level](message);
|
|
65
67
|
return;
|
|
66
68
|
}
|
|
67
|
-
const logObject = Object.assign({ message }, this.tags);
|
|
69
|
+
const logObject = Object.assign(Object.assign({ message }, this.tags), { sdk_log: sdkLog });
|
|
68
70
|
this.originalConsole[level](JSON.stringify(logObject));
|
|
69
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Determines if a log call originated from SDK code.
|
|
74
|
+
*
|
|
75
|
+
* Uses AsyncLocalStorage context set by runWithUserLogContext/runWithSdkLogContext.
|
|
76
|
+
* All SDK entry points and public methods are wrapped with runWithSdkLogContext,
|
|
77
|
+
* and user code runs inside runWithUserLogContext, so the context should always be set.
|
|
78
|
+
*
|
|
79
|
+
* Defaults to true (SDK log) if no context is set, which should only happen
|
|
80
|
+
* in edge cases or during testing.
|
|
81
|
+
*/
|
|
82
|
+
getSdkLogFlag() {
|
|
83
|
+
const contextValue = (0, logger_context_1.getSdkLogContextValueOrUndefined)();
|
|
84
|
+
// Default to SDK log (true) if context is not set
|
|
85
|
+
return typeof contextValue === 'boolean' ? contextValue : true;
|
|
86
|
+
}
|
|
70
87
|
/**
|
|
71
88
|
* Stringifies and logs arguments to the appropriate destination.
|
|
72
89
|
* On main thread, converts arguments to strings and calls logFn.
|
|
@@ -76,16 +93,17 @@ class Logger extends node_console_1.Console {
|
|
|
76
93
|
* @param args - Values to log (will be stringified and truncated if needed)
|
|
77
94
|
* @param level - Log level (info, warn, error)
|
|
78
95
|
*/
|
|
79
|
-
stringifyAndLog(args, level) {
|
|
96
|
+
stringifyAndLog(args, level, sdkOverride) {
|
|
80
97
|
let stringifiedArgs = args.map((arg) => this.valueToString(arg)).join(' ');
|
|
81
98
|
stringifiedArgs = this.truncateMessage(stringifiedArgs);
|
|
99
|
+
const sdkLogFlag = typeof sdkOverride === 'boolean' ? sdkOverride : this.getSdkLogFlag();
|
|
82
100
|
if (node_worker_threads_1.isMainThread) {
|
|
83
|
-
this.logFn(stringifiedArgs, level);
|
|
101
|
+
this.logFn(stringifiedArgs, level, sdkLogFlag);
|
|
84
102
|
}
|
|
85
103
|
else {
|
|
86
104
|
node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
|
|
87
105
|
subject: workers_1.WorkerMessageSubject.WorkerMessageLog,
|
|
88
|
-
payload: { stringifiedArgs, level },
|
|
106
|
+
payload: { stringifiedArgs, level, sdk_log: sdkLogFlag },
|
|
89
107
|
});
|
|
90
108
|
}
|
|
91
109
|
}
|
|
@@ -101,6 +119,15 @@ class Logger extends node_console_1.Console {
|
|
|
101
119
|
error(...args) {
|
|
102
120
|
this.stringifyAndLog(args, logger_interfaces_1.LogLevel.ERROR);
|
|
103
121
|
}
|
|
122
|
+
sdkInfo(...args) {
|
|
123
|
+
this.stringifyAndLog(args, logger_interfaces_1.LogLevel.INFO, true);
|
|
124
|
+
}
|
|
125
|
+
sdkWarn(...args) {
|
|
126
|
+
this.stringifyAndLog(args, logger_interfaces_1.LogLevel.WARN, true);
|
|
127
|
+
}
|
|
128
|
+
sdkError(...args) {
|
|
129
|
+
this.stringifyAndLog(args, logger_interfaces_1.LogLevel.ERROR, true);
|
|
130
|
+
}
|
|
104
131
|
}
|
|
105
132
|
exports.Logger = Logger;
|
|
106
133
|
/**
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
3
7
|
const node_util_1 = require("node:util");
|
|
8
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
4
9
|
const constants_1 = require("../common/constants");
|
|
5
10
|
const test_helpers_1 = require("../tests/test-helpers");
|
|
6
11
|
const extraction_1 = require("../types/extraction");
|
|
12
|
+
const workers_1 = require("../types/workers");
|
|
7
13
|
const logger_1 = require("./logger");
|
|
8
14
|
const logger_constants_1 = require("./logger.constants");
|
|
15
|
+
const logger_interfaces_1 = require("./logger.interfaces");
|
|
9
16
|
// Mock console methods
|
|
10
17
|
const mockConsoleInfo = jest.spyOn(console, 'info').mockImplementation();
|
|
11
18
|
const mockConsoleWarn = jest.spyOn(console, 'warn').mockImplementation();
|
|
12
19
|
const mockConsoleError = jest.spyOn(console, 'error').mockImplementation();
|
|
13
|
-
// Mock worker_threads
|
|
14
|
-
jest.mock('node:worker_threads', () =>
|
|
15
|
-
|
|
16
|
-
parentPort: null
|
|
17
|
-
})
|
|
20
|
+
// Mock worker_threads for main-thread specific behavior but keep actual Worker implementation
|
|
21
|
+
jest.mock('node:worker_threads', () => {
|
|
22
|
+
const actual = jest.requireActual('node:worker_threads');
|
|
23
|
+
return Object.assign(Object.assign({}, actual), { isMainThread: true, parentPort: null });
|
|
24
|
+
});
|
|
18
25
|
describe(logger_1.Logger.name, () => {
|
|
19
26
|
let mockEvent;
|
|
20
27
|
let mockOptions;
|
|
@@ -52,7 +59,7 @@ describe(logger_1.Logger.name, () => {
|
|
|
52
59
|
// Assert
|
|
53
60
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
61
|
const tags = logger.tags;
|
|
55
|
-
expect(tags).toEqual(Object.assign(Object.assign({}, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION }));
|
|
62
|
+
expect(tags).toEqual(Object.assign(Object.assign({}, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, sdk_log: true }));
|
|
56
63
|
});
|
|
57
64
|
it('should log string message as JSON with event context tags in production mode', () => {
|
|
58
65
|
// Arrange
|
|
@@ -61,7 +68,7 @@ describe(logger_1.Logger.name, () => {
|
|
|
61
68
|
// Act
|
|
62
69
|
logger.info(message);
|
|
63
70
|
// Assert
|
|
64
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION })));
|
|
71
|
+
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, sdk_log: true })));
|
|
65
72
|
});
|
|
66
73
|
it('should log object message using inspect with proper formatting in production mode', () => {
|
|
67
74
|
// Arrange
|
|
@@ -71,7 +78,7 @@ describe(logger_1.Logger.name, () => {
|
|
|
71
78
|
// Act
|
|
72
79
|
logger.info(data);
|
|
73
80
|
// Assert
|
|
74
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: expectedMessage }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION })));
|
|
81
|
+
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: expectedMessage }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, sdk_log: true })));
|
|
75
82
|
});
|
|
76
83
|
it('should join multiple arguments with space when logging in production mode', () => {
|
|
77
84
|
// Arrange
|
|
@@ -82,7 +89,7 @@ describe(logger_1.Logger.name, () => {
|
|
|
82
89
|
// Act
|
|
83
90
|
logger.info(text, data);
|
|
84
91
|
// Assert
|
|
85
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: `${text} ${expectedDataMessage}` }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION })));
|
|
92
|
+
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: `${text} ${expectedDataMessage}` }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, sdk_log: true })));
|
|
86
93
|
});
|
|
87
94
|
it('should log mixed string and object arguments joined with spaces in production mode', () => {
|
|
88
95
|
// Arrange
|
|
@@ -94,7 +101,60 @@ describe(logger_1.Logger.name, () => {
|
|
|
94
101
|
// Act
|
|
95
102
|
logger.info(text1, data, text2);
|
|
96
103
|
// Assert
|
|
97
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: `${text1} ${expectedDataMessage} ${text2}` }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION })));
|
|
104
|
+
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: `${text1} ${expectedDataMessage} ${text2}` }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, sdk_log: true })));
|
|
105
|
+
});
|
|
106
|
+
async function runWorkerLog(mode) {
|
|
107
|
+
const workerScriptPath = node_path_1.default.join(__dirname, 'logger.worker-fixture.js');
|
|
108
|
+
const worker = new node_worker_threads_1.Worker(workerScriptPath, {
|
|
109
|
+
workerData: {
|
|
110
|
+
event: mockEvent,
|
|
111
|
+
options: mockOptions,
|
|
112
|
+
message: 'Worker log',
|
|
113
|
+
mode,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
try {
|
|
117
|
+
const logMessage = await new Promise((resolve, reject) => {
|
|
118
|
+
function cleanup() {
|
|
119
|
+
worker.off('message', handleMessage);
|
|
120
|
+
worker.off('exit', handleExit);
|
|
121
|
+
worker.off('error', handleError);
|
|
122
|
+
}
|
|
123
|
+
function handleMessage(message) {
|
|
124
|
+
const typedMessage = message;
|
|
125
|
+
if ((typedMessage === null || typedMessage === void 0 ? void 0 : typedMessage.subject) === workers_1.WorkerMessageSubject.WorkerMessageLog) {
|
|
126
|
+
cleanup();
|
|
127
|
+
resolve(typedMessage);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function handleExit(code) {
|
|
131
|
+
cleanup();
|
|
132
|
+
reject(new Error(`Worker exited before emitting log. Exit code: ${code.toString()}`));
|
|
133
|
+
}
|
|
134
|
+
function handleError(error) {
|
|
135
|
+
cleanup();
|
|
136
|
+
reject(error);
|
|
137
|
+
}
|
|
138
|
+
worker.on('message', handleMessage);
|
|
139
|
+
worker.once('exit', handleExit);
|
|
140
|
+
worker.once('error', handleError);
|
|
141
|
+
});
|
|
142
|
+
return logMessage;
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
await worker.terminate();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
it('should set sdk_log to false for worker thread logs', async () => {
|
|
149
|
+
const logMessage = await runWorkerLog('user');
|
|
150
|
+
expect(logMessage.payload.sdk_log).toBe(false);
|
|
151
|
+
expect(logMessage.payload.level).toBe(logger_interfaces_1.LogLevel.INFO);
|
|
152
|
+
expect(logMessage.payload.stringifiedArgs).toContain('Worker log');
|
|
153
|
+
});
|
|
154
|
+
it('should keep sdk_log true for SDK logs inside worker thread', async () => {
|
|
155
|
+
const logMessage = await runWorkerLog('sdk');
|
|
156
|
+
expect(logMessage.payload.sdk_log).toBe(true);
|
|
157
|
+
expect(logMessage.payload.stringifiedArgs).toContain('Worker log');
|
|
98
158
|
});
|
|
99
159
|
it('should log directly without JSON wrapping in local development mode', () => {
|
|
100
160
|
// Arrange
|
|
@@ -243,6 +303,7 @@ describe(logger_1.Logger.name, () => {
|
|
|
243
303
|
const logObject = JSON.parse(callArgs);
|
|
244
304
|
expect(logObject.message).toBe('');
|
|
245
305
|
expect(logObject.sdk_version).toBe(constants_1.LIBRARY_VERSION);
|
|
306
|
+
expect(logObject.sdk_log).toBe(true);
|
|
246
307
|
});
|
|
247
308
|
it('[edge] should handle null and undefined values in log arguments', () => {
|
|
248
309
|
// Arrange
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.worker-fixture.d.ts","sourceRoot":"","sources":["../../src/logger/logger.worker-fixture.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { workerData } = require('node:worker_threads');
|
|
3
|
+
require('ts-node/register');
|
|
4
|
+
const { Logger } = require('./logger');
|
|
5
|
+
const { runWithUserLogContext } = require('./logger.context');
|
|
6
|
+
console = new Logger({ event: workerData.event, options: workerData.options });
|
|
7
|
+
const runner = workerData.mode === 'sdk' ? (fn) => fn() : runWithUserLogContext;
|
|
8
|
+
runner(() => {
|
|
9
|
+
console.log(workerData.message);
|
|
10
|
+
});
|
package/dist/state/state.js
CHANGED
|
@@ -48,8 +48,8 @@ async function createAdapterState({ event, initialState, initialDomainMapping, o
|
|
|
48
48
|
process.exit(1);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
// Set lastSyncStarted if the event type is
|
|
52
|
-
if (event.payload.event_type === extraction_1.EventType.
|
|
51
|
+
// Set lastSyncStarted if the event type is ExtractionDataStart
|
|
52
|
+
if (event.payload.event_type === extraction_1.EventType.ExtractionDataStart &&
|
|
53
53
|
!as.state.lastSyncStarted) {
|
|
54
54
|
as.state.lastSyncStarted = new Date().toISOString();
|
|
55
55
|
console.log(`Setting lastSyncStarted to ${as.state.lastSyncStarted}.`);
|
package/dist/state/state.test.js
CHANGED
|
@@ -88,7 +88,7 @@ describe(state_1.State.name, () => {
|
|
|
88
88
|
})).rejects.toThrow('process.exit called');
|
|
89
89
|
expect(processExitSpy).toHaveBeenCalledWith(1);
|
|
90
90
|
});
|
|
91
|
-
it.each(constants_1.STATEFUL_EVENT_TYPES.filter((eventType) => eventType !== extraction_1.EventType.
|
|
91
|
+
it.each(constants_1.STATEFUL_EVENT_TYPES.filter((eventType) => eventType !== extraction_1.EventType.ExtractionDataStart))('should call post state with full adapter state if fetching returns 404 for event type %s', async (eventType) => {
|
|
92
92
|
// Arrange
|
|
93
93
|
const initialState = {
|
|
94
94
|
test: 'test',
|
|
@@ -119,13 +119,13 @@ describe(state_1.State.name, () => {
|
|
|
119
119
|
const expectedState = Object.assign(Object.assign({}, initialState), state_interfaces_1.extractionSdkState);
|
|
120
120
|
expect(postStateSpy).toHaveBeenCalledWith(expectedState);
|
|
121
121
|
});
|
|
122
|
-
it(extraction_1.EventType.
|
|
122
|
+
it(extraction_1.EventType.ExtractionDataStart, async () => {
|
|
123
123
|
// Arrange
|
|
124
124
|
const initialState = {
|
|
125
125
|
test: 'test',
|
|
126
126
|
};
|
|
127
127
|
const event = (0, test_helpers_1.createEvent)({
|
|
128
|
-
eventType: extraction_1.EventType.
|
|
128
|
+
eventType: extraction_1.EventType.ExtractionDataStart,
|
|
129
129
|
contextOverrides: {
|
|
130
130
|
snap_in_version_id: '',
|
|
131
131
|
},
|
|
@@ -367,14 +367,29 @@ describe('Backwards Compatibility', () => {
|
|
|
367
367
|
});
|
|
368
368
|
// Verify that the type alias is the same as the current type alias
|
|
369
369
|
describe('should verify type aliases are the same as the current type aliases', () => {
|
|
370
|
+
const normalizeTypeText = (text) => text.replace(/\s/g, '');
|
|
371
|
+
const getUnionMembers = (text) => normalizeTypeText(text)
|
|
372
|
+
.split('|')
|
|
373
|
+
.map((member) => member.trim())
|
|
374
|
+
.filter(Boolean);
|
|
370
375
|
for (const newType of newTypes) {
|
|
371
376
|
const currentType = currentTypes.find((t) => t.name === newType.name);
|
|
372
377
|
if (!currentType) {
|
|
373
378
|
continue;
|
|
374
379
|
}
|
|
375
380
|
it(`Type ${newType.name} should have the same type as the current type`, () => {
|
|
376
|
-
|
|
377
|
-
|
|
381
|
+
const currentTypeText = normalizeTypeText(currentType.typeExcerpt.text);
|
|
382
|
+
const newTypeText = normalizeTypeText(newType.typeExcerpt.text);
|
|
383
|
+
if (currentTypeText.includes('|')) {
|
|
384
|
+
const currentUnionMembers = getUnionMembers(currentType.typeExcerpt.text);
|
|
385
|
+
const newUnionMembers = new Set(getUnionMembers(newType.typeExcerpt.text));
|
|
386
|
+
expect(!!currentUnionMembers.length).toBe(true);
|
|
387
|
+
for (const member of currentUnionMembers) {
|
|
388
|
+
expect(newUnionMembers.has(member)).toBe(true);
|
|
389
|
+
}
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
expect(newTypeText).toEqual(currentTypeText);
|
|
378
393
|
});
|
|
379
394
|
}
|
|
380
395
|
});
|
|
@@ -6,9 +6,9 @@ const index_1 = require("../../index");
|
|
|
6
6
|
for (let i = 0; i < 10; i++) {
|
|
7
7
|
console.log('timeout-1 iteration', i);
|
|
8
8
|
}
|
|
9
|
-
await adapter.emit(index_1.ExtractorEventType.
|
|
9
|
+
await adapter.emit(index_1.ExtractorEventType.ExtractionDataDone);
|
|
10
10
|
},
|
|
11
11
|
onTimeout: async ({ adapter }) => {
|
|
12
|
-
await adapter.emit(index_1.ExtractorEventType.
|
|
12
|
+
await adapter.emit(index_1.ExtractorEventType.ExtractionDataProgress);
|
|
13
13
|
},
|
|
14
14
|
});
|
|
@@ -40,6 +40,6 @@ describe('timeout-1 extraction', () => {
|
|
|
40
40
|
// Expect last request to be emission of done event
|
|
41
41
|
expect(lastRequest.url).toContain('airdrop.external-extractor.message');
|
|
42
42
|
expect(lastRequest.method).toBe('POST');
|
|
43
|
-
expect(lastRequest.body.event_type).toBe(
|
|
43
|
+
expect(lastRequest.body.event_type).toBe('EXTRACTION_DATA_DONE');
|
|
44
44
|
});
|
|
45
45
|
});
|
|
@@ -31,14 +31,14 @@ const simulateNetworkRequest = async (url, delay) => {
|
|
|
31
31
|
console.log('Network request completed:', response.data);
|
|
32
32
|
}
|
|
33
33
|
console.log('All network requests completed successfully');
|
|
34
|
-
await adapter.emit(index_1.ExtractorEventType.
|
|
34
|
+
await adapter.emit(index_1.ExtractorEventType.ExtractionDataDone);
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
37
|
console.error('Network request failed:', error);
|
|
38
|
-
await adapter.emit(index_1.ExtractorEventType.
|
|
38
|
+
await adapter.emit(index_1.ExtractorEventType.ExtractionDataDone);
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
onTimeout: async ({ adapter }) => {
|
|
42
|
-
await adapter.emit(index_1.ExtractorEventType.
|
|
42
|
+
await adapter.emit(index_1.ExtractorEventType.ExtractionDataProgress);
|
|
43
43
|
},
|
|
44
44
|
});
|