@devrev/airsync-sdk 2.0.0-beta.1 → 2.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/dist/airsync-sdk.d.ts +2059 -0
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +2 -1
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +8 -2
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.js +27 -16
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +246 -27
- package/dist/common/constants.d.ts +16 -5
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +20 -6
- package/dist/common/control-protocol.d.ts +2 -2
- package/dist/common/control-protocol.d.ts.map +1 -1
- package/dist/common/control-protocol.js +1 -5
- package/dist/common/helpers.d.ts +8 -0
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +15 -0
- package/dist/common/install-initial-domain-mapping.d.ts +2 -2
- package/dist/common/install-initial-domain-mapping.test.js +5 -2
- package/dist/common/test-utils.d.ts +19 -0
- package/dist/common/test-utils.d.ts.map +1 -0
- package/dist/common/test-utils.js +101 -0
- package/dist/common/time-value-resolver.d.ts +47 -0
- package/dist/common/time-value-resolver.d.ts.map +1 -0
- package/dist/common/time-value-resolver.js +141 -0
- package/dist/common/time-value-resolver.test.d.ts +2 -0
- package/dist/common/time-value-resolver.test.d.ts.map +1 -0
- package/dist/common/time-value-resolver.test.js +268 -0
- package/dist/http/axios-client-internal.d.ts.map +1 -1
- package/dist/http/axios-client-internal.js +7 -0
- package/dist/http/axios-client-internal.test.js +21 -0
- package/dist/http/axios-client.d.ts.map +1 -1
- package/dist/http/axios-client.js +6 -3
- package/dist/http/index.d.ts +0 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +0 -1
- package/dist/index.d.ts +12 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -13
- package/dist/logger/logger.d.ts +1 -17
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.interfaces.d.ts +2 -2
- package/dist/logger/logger.js +35 -27
- package/dist/logger/logger.test.js +66 -19
- package/dist/mappers/mappers.interface.d.ts +5 -5
- package/dist/mappers/mappers.interface.js +3 -3
- package/dist/mappers/mappers.test.js +8 -10
- package/dist/mock-server/mock-server.d.ts +47 -0
- package/dist/mock-server/mock-server.d.ts.map +1 -0
- package/dist/mock-server/mock-server.interfaces.d.ts +73 -0
- package/dist/mock-server/mock-server.interfaces.d.ts.map +1 -0
- package/dist/mock-server/mock-server.interfaces.js +4 -0
- package/dist/mock-server/mock-server.js +278 -0
- package/dist/multithreading/adapters/base-adapter.d.ts +56 -0
- package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts +2 -0
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts.map +1 -0
- package/dist/multithreading/adapters/base-adapter.emit.test.js +403 -0
- package/dist/multithreading/adapters/base-adapter.js +105 -0
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts +2 -0
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.artifacts.test.js → adapters/extraction-adapter.artifacts.test.js} +53 -5
- package/dist/multithreading/adapters/extraction-adapter.d.ts +58 -0
- package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/extraction-adapter.js +325 -0
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts +2 -0
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts.map +1 -0
- package/dist/multithreading/adapters/extraction-adapter.test.js +789 -0
- package/dist/multithreading/adapters/loading-adapter.d.ts +44 -0
- package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.helpers.d.ts → adapters/loading-adapter.helpers.d.ts} +1 -1
- package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts +2 -0
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.helpers.test.js → adapters/loading-adapter.helpers.test.js} +26 -26
- package/dist/multithreading/adapters/loading-adapter.js +461 -0
- package/dist/multithreading/adapters/loading-adapter.test.d.ts +2 -0
- package/dist/multithreading/adapters/loading-adapter.test.d.ts.map +1 -0
- package/dist/multithreading/adapters/loading-adapter.test.js +589 -0
- package/dist/multithreading/adapters/serialization.test.d.ts +2 -0
- package/dist/multithreading/adapters/serialization.test.d.ts.map +1 -0
- package/dist/multithreading/adapters/serialization.test.js +71 -0
- package/dist/multithreading/create-worker.test.js +36 -17
- package/dist/multithreading/process-task.d.ts +16 -1
- package/dist/multithreading/process-task.d.ts.map +1 -1
- package/dist/multithreading/process-task.js +97 -82
- package/dist/multithreading/process-task.test.d.ts +2 -0
- package/dist/multithreading/process-task.test.d.ts.map +1 -0
- package/dist/multithreading/process-task.test.js +146 -0
- package/dist/multithreading/spawn/spawn.d.ts +3 -3
- package/dist/multithreading/spawn/spawn.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.js +6 -14
- package/dist/multithreading/spawn/spawn.helpers.test.js +8 -8
- package/dist/multithreading/spawn/spawn.js +20 -25
- package/dist/multithreading/spawn/spawn.test.d.ts +2 -0
- package/dist/multithreading/spawn/spawn.test.d.ts.map +1 -0
- package/dist/multithreading/spawn/spawn.test.js +232 -0
- package/dist/repo/repo.d.ts.map +1 -1
- package/dist/repo/repo.interfaces.d.ts +4 -2
- package/dist/repo/repo.interfaces.d.ts.map +1 -1
- package/dist/repo/repo.js +4 -3
- package/dist/repo/repo.test.js +60 -7
- package/dist/state/base-state.d.ts +75 -0
- package/dist/state/base-state.d.ts.map +1 -0
- package/dist/state/base-state.js +261 -0
- package/dist/state/extraction-state.d.ts +29 -0
- package/dist/state/extraction-state.d.ts.map +1 -0
- package/dist/state/extraction-state.js +122 -0
- package/dist/state/loading-state.d.ts +19 -0
- package/dist/state/loading-state.d.ts.map +1 -0
- package/dist/state/loading-state.js +40 -0
- package/dist/state/state.extract-window.test.d.ts +2 -0
- package/dist/state/state.extract-window.test.d.ts.map +1 -0
- package/dist/state/state.extract-window.test.js +163 -0
- package/dist/state/state.interfaces.d.ts +44 -27
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +18 -5
- package/dist/state/state.pending-boundaries.test.d.ts +2 -0
- package/dist/state/state.pending-boundaries.test.d.ts.map +1 -0
- package/dist/state/state.pending-boundaries.test.js +189 -0
- package/dist/state/state.post-state.test.d.ts +2 -0
- package/dist/state/state.post-state.test.d.ts.map +1 -0
- package/dist/state/state.post-state.test.js +78 -0
- package/dist/state/state.test.js +135 -88
- package/dist/state/state.time-value-resolution.test.d.ts +2 -0
- package/dist/state/state.time-value-resolution.test.d.ts.map +1 -0
- package/dist/state/state.time-value-resolution.test.js +175 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/types/common.d.ts +0 -25
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +1 -11
- package/dist/types/external-domain-metadata.d.ts +20 -1
- package/dist/types/external-domain-metadata.d.ts.map +1 -1
- package/dist/types/extraction.d.ts +92 -221
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +56 -124
- package/dist/types/extraction.test.js +69 -43
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -3
- package/dist/types/loading.d.ts +4 -24
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +1 -22
- package/dist/types/workers.d.ts +47 -29
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/types/workers.js +1 -0
- package/dist/uploader/uploader.d.ts +1 -0
- package/dist/uploader/uploader.d.ts.map +1 -1
- package/dist/uploader/uploader.helpers.test.js +0 -11
- package/dist/uploader/uploader.interfaces.d.ts +3 -3
- package/dist/uploader/uploader.js +53 -20
- package/dist/uploader/uploader.test.js +22 -10
- package/package.json +10 -13
- package/dist/common/event-type-translation.d.ts +0 -24
- package/dist/common/event-type-translation.d.ts.map +0 -1
- package/dist/common/event-type-translation.js +0 -117
- package/dist/deprecated/adapter/index.d.ts +0 -62
- package/dist/deprecated/adapter/index.d.ts.map +0 -1
- package/dist/deprecated/adapter/index.js +0 -151
- package/dist/deprecated/common/helpers.d.ts +0 -7
- package/dist/deprecated/common/helpers.d.ts.map +0 -1
- package/dist/deprecated/common/helpers.js +0 -47
- package/dist/deprecated/demo-extractor/external_domain_metadata.json +0 -38
- package/dist/deprecated/demo-extractor/index.d.ts +0 -18
- package/dist/deprecated/demo-extractor/index.d.ts.map +0 -1
- package/dist/deprecated/demo-extractor/index.js +0 -161
- package/dist/deprecated/http/client.d.ts +0 -22
- package/dist/deprecated/http/client.d.ts.map +0 -1
- package/dist/deprecated/http/client.js +0 -161
- package/dist/deprecated/uploader/index.d.ts +0 -35
- package/dist/deprecated/uploader/index.d.ts.map +0 -1
- package/dist/deprecated/uploader/index.js +0 -161
- package/dist/http/types.d.ts +0 -17
- package/dist/http/types.d.ts.map +0 -1
- package/dist/http/types.js +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.js +0 -745
- package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
- package/dist/state/state.d.ts +0 -30
- package/dist/state/state.d.ts.map +0 -1
- package/dist/state/state.js +0 -166
- /package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +0 -0
package/dist/common/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_SLEEP_DELAY_MS = exports.MEMORY_LOG_INTERVAL = exports.HARD_TIMEOUT_MULTIPLIER = exports.DEFAULT_LAMBDA_TIMEOUT = exports.LIBRARY_VERSION = exports.
|
|
3
|
+
exports.UNBOUNDED_DATE_TIME_VALUE = exports.DEFAULT_SLEEP_DELAY_MS = exports.MEMORY_LOG_INTERVAL = exports.HARD_TIMEOUT_MULTIPLIER = exports.DEFAULT_LAMBDA_TIMEOUT = exports.LIBRARY_VERSION = exports.AirSyncDefaultItemTypes = exports.SSOR_ATTACHMENT = exports.EVENT_SIZE_THRESHOLD_BYTES = exports.MAX_EVENT_SIZE_BYTES = exports.MAX_DEVREV_FILENAME_EXTENSION_LENGTH = exports.MAX_DEVREV_FILENAME_LENGTH = exports.MAX_DEVREV_ARTIFACT_SIZE = exports.ARTIFACT_BATCH_SIZE = exports.STATEFUL_EVENT_TYPES = exports.STATEFUL_LOADING_EVENT_TYPES = exports.STATEFUL_EXTRACTION_EVENT_TYPES = exports.STATELESS_EVENT_TYPES = exports.STATELESS_LOADING_EVENT_TYPES = exports.STATELESS_EXTRACTION_EVENT_TYPES = exports.ALLOWED_EVENT_TYPES = exports.ALLOWED_LOADING_EVENT_TYPES = exports.ALLOWED_EXTRACTION_EVENT_TYPES = void 0;
|
|
4
4
|
const extraction_1 = require("../types/extraction");
|
|
5
5
|
const helpers_1 = require("./helpers");
|
|
6
6
|
exports.ALLOWED_EXTRACTION_EVENT_TYPES = [
|
|
@@ -46,13 +46,27 @@ exports.ARTIFACT_BATCH_SIZE = 2000;
|
|
|
46
46
|
exports.MAX_DEVREV_ARTIFACT_SIZE = 2 * 1024 * 1024 * 1024; // 2GB
|
|
47
47
|
exports.MAX_DEVREV_FILENAME_LENGTH = 256;
|
|
48
48
|
exports.MAX_DEVREV_FILENAME_EXTENSION_LENGTH = 20; // 20 characters for the file extension
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
// Max SQS message size is 250KB, we want to leave some room for the other data in the message
|
|
50
|
+
exports.MAX_EVENT_SIZE_BYTES = 200000;
|
|
51
|
+
// We want to leave some room for the other data in the message and process the rest of queued messages
|
|
52
|
+
exports.EVENT_SIZE_THRESHOLD_BYTES = Math.floor(exports.MAX_EVENT_SIZE_BYTES * 0.8);
|
|
53
|
+
exports.SSOR_ATTACHMENT = 'ssor_attachment';
|
|
54
|
+
var AirSyncDefaultItemTypes;
|
|
55
|
+
(function (AirSyncDefaultItemTypes) {
|
|
56
|
+
AirSyncDefaultItemTypes["EXTERNAL_DOMAIN_METADATA"] = "external_domain_metadata";
|
|
57
|
+
AirSyncDefaultItemTypes["ATTACHMENTS"] = "attachments";
|
|
58
|
+
AirSyncDefaultItemTypes["EXTERNAL_SYNC_UNITS"] = "external_sync_units";
|
|
59
|
+
})(AirSyncDefaultItemTypes || (exports.AirSyncDefaultItemTypes = AirSyncDefaultItemTypes = {}));
|
|
54
60
|
exports.LIBRARY_VERSION = (0, helpers_1.getLibraryVersion)();
|
|
55
61
|
exports.DEFAULT_LAMBDA_TIMEOUT = 10 * 60 * 1000; // 10 minutes
|
|
56
62
|
exports.HARD_TIMEOUT_MULTIPLIER = 1.3;
|
|
57
63
|
exports.MEMORY_LOG_INTERVAL = 30 * 1000; // 30 seconds
|
|
58
64
|
exports.DEFAULT_SLEEP_DELAY_MS = 3 * 60 * 1000; // 3 minutes
|
|
65
|
+
/**
|
|
66
|
+
* Sentinel value representing an unbounded (no limit) extraction timestamp.
|
|
67
|
+
* Used as the resolved value for TimeValueType.UNBOUNDED, stored as workersOldest
|
|
68
|
+
* when the initial import has no lower time bound. The Unix epoch ensures that
|
|
69
|
+
* no real extraction timestamp can be earlier, preventing accidental overwrites
|
|
70
|
+
* of the boundary by subsequent syncs (e.g. reconciliation with absolute dates).
|
|
71
|
+
*/
|
|
72
|
+
exports.UNBOUNDED_DATE_TIME_VALUE = '1970-01-01T00:00:00.000Z';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AxiosResponse } from 'axios';
|
|
2
|
-
import {
|
|
2
|
+
import { AirSyncEvent, EventData, ExtractorEventType } from '../types/extraction';
|
|
3
3
|
import { LoaderEventType } from '../types/loading';
|
|
4
4
|
export interface EmitInterface {
|
|
5
|
-
event:
|
|
5
|
+
event: AirSyncEvent;
|
|
6
6
|
eventType: ExtractorEventType | LoaderEventType;
|
|
7
7
|
data?: EventData;
|
|
8
8
|
}
|
|
@@ -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
|
-
// Translate 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: {
|
package/dist/common/helpers.d.ts
CHANGED
|
@@ -38,4 +38,12 @@ export interface MemoryInfo {
|
|
|
38
38
|
* @returns {MemoryInfo} The memory usage information
|
|
39
39
|
*/
|
|
40
40
|
export declare function getMemoryUsage(): MemoryInfo;
|
|
41
|
+
/**
|
|
42
|
+
* Truncates a message if it exceeds the maximum allowed length.
|
|
43
|
+
* Adds a suffix indicating how many characters were omitted.
|
|
44
|
+
*
|
|
45
|
+
* @param message - The message to truncate
|
|
46
|
+
* @returns Truncated message or original if within limits
|
|
47
|
+
*/
|
|
48
|
+
export declare function truncateMessage(message: string): string;
|
|
41
49
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,iBAAiB,QAiBhC;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAGrC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED;;;;;;;;;GASG;AACH,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;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAmD3C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOvD"}
|
package/dist/common/helpers.js
CHANGED
|
@@ -37,10 +37,12 @@ exports.getLibraryVersion = getLibraryVersion;
|
|
|
37
37
|
exports.sleep = sleep;
|
|
38
38
|
exports.truncateFilename = truncateFilename;
|
|
39
39
|
exports.getMemoryUsage = getMemoryUsage;
|
|
40
|
+
exports.truncateMessage = truncateMessage;
|
|
40
41
|
const fs_1 = require("fs");
|
|
41
42
|
const path = __importStar(require("path"));
|
|
42
43
|
const v8 = __importStar(require("v8"));
|
|
43
44
|
const constants_1 = require("./constants");
|
|
45
|
+
const logger_constants_1 = require("../logger/logger.constants");
|
|
44
46
|
/**
|
|
45
47
|
* Gets the library version from the package.json file.
|
|
46
48
|
* @returns {string} The library version
|
|
@@ -122,3 +124,16 @@ function getMemoryUsage() {
|
|
|
122
124
|
throw err;
|
|
123
125
|
}
|
|
124
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Truncates a message if it exceeds the maximum allowed length.
|
|
129
|
+
* Adds a suffix indicating how many characters were omitted.
|
|
130
|
+
*
|
|
131
|
+
* @param message - The message to truncate
|
|
132
|
+
* @returns Truncated message or original if within limits
|
|
133
|
+
*/
|
|
134
|
+
function truncateMessage(message) {
|
|
135
|
+
if (message.length > logger_constants_1.MAX_LOG_STRING_LENGTH) {
|
|
136
|
+
return `${message.substring(0, logger_constants_1.MAX_LOG_STRING_LENGTH)}... ${message.length - logger_constants_1.MAX_LOG_STRING_LENGTH} more characters`;
|
|
137
|
+
}
|
|
138
|
+
return message;
|
|
139
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AirSyncEvent } from '../types/extraction';
|
|
2
2
|
import { InitialDomainMapping } from '../types/common';
|
|
3
|
-
export declare function installInitialDomainMapping(event:
|
|
3
|
+
export declare function installInitialDomainMapping(event: AirSyncEvent, initialDomainMappingJson: InitialDomainMapping): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=install-initial-domain-mapping.d.ts.map
|
|
@@ -5,7 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const axios_1 = __importDefault(require("axios"));
|
|
7
7
|
const axios_client_internal_1 = require("../http/axios-client-internal");
|
|
8
|
-
const
|
|
8
|
+
const jest_setup_1 = require("../tests/jest.setup");
|
|
9
|
+
const test_utils_1 = require("./test-utils");
|
|
9
10
|
const extraction_1 = require("../types/extraction");
|
|
10
11
|
const install_initial_domain_mapping_1 = require("./install-initial-domain-mapping");
|
|
11
12
|
// Mock dependencies
|
|
@@ -22,7 +23,9 @@ const mockAxiosClient = axios_client_internal_1.axiosClient;
|
|
|
22
23
|
const mockIsAxiosError = axios_1.default.isAxiosError;
|
|
23
24
|
describe(install_initial_domain_mapping_1.installInitialDomainMapping.name, () => {
|
|
24
25
|
// Create mock objects
|
|
25
|
-
const mockEvent = (0,
|
|
26
|
+
const mockEvent = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
|
|
27
|
+
payload: { event_type: extraction_1.EventType.StartExtractingData },
|
|
28
|
+
});
|
|
26
29
|
const mockInitialDomainMapping = {
|
|
27
30
|
starting_recipe_blueprint: {
|
|
28
31
|
name: 'Test Recipe Blueprint',
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AirSyncEvent } from '../types/extraction';
|
|
2
|
+
export declare const MOCK_SERVER_DEFAULT_URL = "http://localhost:0";
|
|
3
|
+
/**
|
|
4
|
+
* Recursively makes all properties of T optional.
|
|
5
|
+
*/
|
|
6
|
+
export type DeepPartial<T> = {
|
|
7
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Creates a mock AirSyncEvent for testing.
|
|
11
|
+
*
|
|
12
|
+
* @param mockServerUrl - Base URL for the mock server. Defaults to {@link MOCK_SERVER_DEFAULT_URL}.
|
|
13
|
+
* The `callback_url`, `worker_data_url`, and `devrev_endpoint` fields are
|
|
14
|
+
* derived from this value unless explicitly overridden.
|
|
15
|
+
* @param overrides - Deep partial of AirSyncEvent. Any provided fields are
|
|
16
|
+
* deep-merged on top of the defaults.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createMockEvent(mockServerUrl?: string, overrides?: DeepPartial<AirSyncEvent>): AirSyncEvent;
|
|
19
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/common/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,qBAAqB,CAAC;AAE9D,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAoCF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,aAAa,GAAE,MAAgC,EAC/C,SAAS,GAAE,WAAW,CAAC,YAAY,CAAM,GACxC,YAAY,CAmEd"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MOCK_SERVER_DEFAULT_URL = void 0;
|
|
4
|
+
exports.createMockEvent = createMockEvent;
|
|
5
|
+
const extraction_1 = require("../types/extraction");
|
|
6
|
+
exports.MOCK_SERVER_DEFAULT_URL = 'http://localhost:0';
|
|
7
|
+
/**
|
|
8
|
+
* Deep merges source into target. Arrays and primitives from source replace
|
|
9
|
+
* those in target; plain objects are merged recursively.
|
|
10
|
+
*/
|
|
11
|
+
function deepMerge(target, source) {
|
|
12
|
+
const result = Object.assign({}, target);
|
|
13
|
+
for (const key of Object.keys(source)) {
|
|
14
|
+
const sourceVal = source[key];
|
|
15
|
+
const targetVal = target[key];
|
|
16
|
+
if (sourceVal !== null &&
|
|
17
|
+
typeof sourceVal === 'object' &&
|
|
18
|
+
!Array.isArray(sourceVal) &&
|
|
19
|
+
targetVal !== null &&
|
|
20
|
+
typeof targetVal === 'object' &&
|
|
21
|
+
!Array.isArray(targetVal)) {
|
|
22
|
+
result[key] = deepMerge(targetVal, sourceVal);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
result[key] = sourceVal;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a mock AirSyncEvent for testing.
|
|
32
|
+
*
|
|
33
|
+
* @param mockServerUrl - Base URL for the mock server. Defaults to {@link MOCK_SERVER_DEFAULT_URL}.
|
|
34
|
+
* The `callback_url`, `worker_data_url`, and `devrev_endpoint` fields are
|
|
35
|
+
* derived from this value unless explicitly overridden.
|
|
36
|
+
* @param overrides - Deep partial of AirSyncEvent. Any provided fields are
|
|
37
|
+
* deep-merged on top of the defaults.
|
|
38
|
+
*/
|
|
39
|
+
function createMockEvent(mockServerUrl = exports.MOCK_SERVER_DEFAULT_URL, overrides = {}) {
|
|
40
|
+
var _a, _b, _c, _d;
|
|
41
|
+
const base = {
|
|
42
|
+
context: {
|
|
43
|
+
secrets: {
|
|
44
|
+
service_account_token: 'test_token',
|
|
45
|
+
},
|
|
46
|
+
snap_in_version_id: 'test_snap_in_version_id',
|
|
47
|
+
snap_in_id: 'test_snap_in_id',
|
|
48
|
+
},
|
|
49
|
+
payload: {
|
|
50
|
+
connection_data: {
|
|
51
|
+
org_id: 'test_org_id',
|
|
52
|
+
org_name: 'test_org_name',
|
|
53
|
+
key: 'test_key',
|
|
54
|
+
key_type: 'test_key_type',
|
|
55
|
+
},
|
|
56
|
+
event_context: {
|
|
57
|
+
callback_url: `${mockServerUrl}/callback_url`,
|
|
58
|
+
dev_oid: 'test_dev_oid',
|
|
59
|
+
dev_org_id: 'test_dev_org_id',
|
|
60
|
+
dev_uid: 'test_dev_uid',
|
|
61
|
+
event_type_adaas: 'test_event_type_adaas',
|
|
62
|
+
external_sync_unit_id: 'test_external_sync_unit_id',
|
|
63
|
+
external_sync_unit_name: 'test_external_sync_unit_name',
|
|
64
|
+
external_system_id: 'test_external_system_id',
|
|
65
|
+
external_system_name: 'test_external_system_name',
|
|
66
|
+
external_system_type: 'test_external_system_type',
|
|
67
|
+
import_slug: 'test_import_slug',
|
|
68
|
+
mode: 'INITIAL',
|
|
69
|
+
request_id: 'test_request_id',
|
|
70
|
+
request_id_adaas: 'test_request_id_adaas',
|
|
71
|
+
run_id: 'test_run_id',
|
|
72
|
+
sequence_version: 'test_sequence_version',
|
|
73
|
+
snap_in_slug: 'test_snap_in_slug',
|
|
74
|
+
snap_in_version_id: 'test_snap_in_version_id',
|
|
75
|
+
sync_tier: 'test_sync_tier',
|
|
76
|
+
sync_unit: 'test_sync_unit',
|
|
77
|
+
sync_unit_id: 'test_sync_unit_id',
|
|
78
|
+
worker_data_url: `${mockServerUrl}/worker_data_url`,
|
|
79
|
+
},
|
|
80
|
+
event_type: extraction_1.EventType.StartExtractingData,
|
|
81
|
+
event_data: {},
|
|
82
|
+
},
|
|
83
|
+
execution_metadata: {
|
|
84
|
+
devrev_endpoint: mockServerUrl,
|
|
85
|
+
},
|
|
86
|
+
input_data: {
|
|
87
|
+
global_values: {},
|
|
88
|
+
event_sources: {},
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
const merged = deepMerge(base, overrides);
|
|
92
|
+
// Ensure mock server URLs always win over overrides, unless the caller
|
|
93
|
+
// explicitly provided them.
|
|
94
|
+
if (!((_b = (_a = overrides.payload) === null || _a === void 0 ? void 0 : _a.event_context) === null || _b === void 0 ? void 0 : _b.callback_url)) {
|
|
95
|
+
merged.payload.event_context.callback_url = `${mockServerUrl}/callback_url`;
|
|
96
|
+
}
|
|
97
|
+
if (!((_d = (_c = overrides.payload) === null || _c === void 0 ? void 0 : _c.event_context) === null || _d === void 0 ? void 0 : _d.worker_data_url)) {
|
|
98
|
+
merged.payload.event_context.worker_data_url = `${mockServerUrl}/worker_data_url`;
|
|
99
|
+
}
|
|
100
|
+
return merged;
|
|
101
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { TimeUnit, TimeValue } from '../types/extraction';
|
|
2
|
+
import { ExtractionSdkState } from '../state/state.interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Parses a shorthand duration string into its numeric value and unit.
|
|
5
|
+
* Supported units:
|
|
6
|
+
* - 'ns' for nanoseconds
|
|
7
|
+
* - 'us' or 'µs' for microseconds
|
|
8
|
+
* - 'ms' for milliseconds
|
|
9
|
+
* - 's' for seconds
|
|
10
|
+
* - 'm' for minutes
|
|
11
|
+
* - 'h' for hours
|
|
12
|
+
*
|
|
13
|
+
* @throws Error if the format is invalid
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseDuration(shorthand: string): {
|
|
16
|
+
value: number;
|
|
17
|
+
unit: TimeUnit;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Applies a shorthand duration to a base ISO 8601 timestamp.
|
|
21
|
+
*
|
|
22
|
+
* @param baseTimestamp - ISO 8601 timestamp to apply duration to
|
|
23
|
+
* @param duration - Shorthand duration string (e.g. '100ns', '500ms', '30s', '5m', '2h')
|
|
24
|
+
* @param operation - Whether to 'add' or 'subtract' the duration
|
|
25
|
+
* @returns ISO 8601 timestamp with the duration applied
|
|
26
|
+
*/
|
|
27
|
+
export declare function applyDuration(baseTimestamp: string, duration: string, operation: 'add' | 'subtract'): string;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves a TimeValue into a concrete ISO 8601 timestamp string.
|
|
30
|
+
*
|
|
31
|
+
* Resolution rules:
|
|
32
|
+
* - ABSOLUTE: Returns the value directly (must be an ISO 8601 timestamp)
|
|
33
|
+
* - NOW: Returns the current time as ISO 8601
|
|
34
|
+
* - UNBOUNDED: Returns UNBOUNDED_DATE_TIME_VALUE ('1970-01-01T00:00:00.000Z')
|
|
35
|
+
* - WORKERS_OLDEST: Returns workersOldest from state, or throws if not set
|
|
36
|
+
* - WORKERS_NEWEST: Returns workersNewest from state, or throws if not set
|
|
37
|
+
* - WORKERS_OLDEST_MINUS_WINDOW: Subtracts duration from workersOldest, or throws if not set
|
|
38
|
+
* - WORKERS_NEWEST_PLUS_WINDOW: Adds duration to workersNewest, or throws if not set
|
|
39
|
+
*
|
|
40
|
+
* @param timeValue - The TimeValue to resolve
|
|
41
|
+
* @param state - The current SDK state containing workersOldest and workersNewest
|
|
42
|
+
* @returns Resolved ISO 8601 timestamp string
|
|
43
|
+
* @throws Error if required TimeValue.value is missing for ABSOLUTE or *_WINDOW types
|
|
44
|
+
* @throws Error if workersOldest/workersNewest is not set in state for WORKERS_* types
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveTimeValue(timeValue: TimeValue, state: ExtractionSdkState): string;
|
|
47
|
+
//# sourceMappingURL=time-value-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-value-resolver.d.ts","sourceRoot":"","sources":["../../src/common/time-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;CAChB,CAcA;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,GAAG,UAAU,GAC5B,MAAM,CA6BR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,kBAAkB,GACxB,MAAM,CA2ER"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseDuration = parseDuration;
|
|
4
|
+
exports.applyDuration = applyDuration;
|
|
5
|
+
exports.resolveTimeValue = resolveTimeValue;
|
|
6
|
+
const extraction_1 = require("../types/extraction");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
/**
|
|
9
|
+
* Parses a shorthand duration string into its numeric value and unit.
|
|
10
|
+
* Supported units:
|
|
11
|
+
* - 'ns' for nanoseconds
|
|
12
|
+
* - 'us' or 'µs' for microseconds
|
|
13
|
+
* - 'ms' for milliseconds
|
|
14
|
+
* - 's' for seconds
|
|
15
|
+
* - 'm' for minutes
|
|
16
|
+
* - 'h' for hours
|
|
17
|
+
*
|
|
18
|
+
* @throws Error if the format is invalid
|
|
19
|
+
*/
|
|
20
|
+
function parseDuration(shorthand) {
|
|
21
|
+
const validUnits = Object.values(extraction_1.TimeUnit).join('|');
|
|
22
|
+
const match = shorthand.match(new RegExp(`^(\\d+(?:\\.\\d+)?)(${validUnits})$`));
|
|
23
|
+
if (!match) {
|
|
24
|
+
throw new Error(`Invalid duration format: '${shorthand}'. Expected format like '100ns', '500ms', '30s', '5m', or '2h'.`);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
value: parseFloat(match[1]),
|
|
28
|
+
unit: match[2],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Applies a shorthand duration to a base ISO 8601 timestamp.
|
|
33
|
+
*
|
|
34
|
+
* @param baseTimestamp - ISO 8601 timestamp to apply duration to
|
|
35
|
+
* @param duration - Shorthand duration string (e.g. '100ns', '500ms', '30s', '5m', '2h')
|
|
36
|
+
* @param operation - Whether to 'add' or 'subtract' the duration
|
|
37
|
+
* @returns ISO 8601 timestamp with the duration applied
|
|
38
|
+
*/
|
|
39
|
+
function applyDuration(baseTimestamp, duration, operation) {
|
|
40
|
+
const { value, unit } = parseDuration(duration);
|
|
41
|
+
const date = new Date(baseTimestamp);
|
|
42
|
+
const sign = operation === 'add' ? 1 : -1;
|
|
43
|
+
switch (unit) {
|
|
44
|
+
case extraction_1.TimeUnit.NANOSECONDS:
|
|
45
|
+
// JavaScript Date works in milliseconds, so convert nanoseconds
|
|
46
|
+
date.setTime(date.getTime() + sign * value * 0.000001);
|
|
47
|
+
break;
|
|
48
|
+
case extraction_1.TimeUnit.MICROSECONDS:
|
|
49
|
+
case extraction_1.TimeUnit.MICROSECONDS_MU:
|
|
50
|
+
date.setTime(date.getTime() + sign * value * 0.001);
|
|
51
|
+
break;
|
|
52
|
+
case extraction_1.TimeUnit.MILLISECONDS:
|
|
53
|
+
date.setTime(date.getTime() + sign * value);
|
|
54
|
+
break;
|
|
55
|
+
case extraction_1.TimeUnit.SECONDS:
|
|
56
|
+
date.setUTCSeconds(date.getUTCSeconds() + sign * value);
|
|
57
|
+
break;
|
|
58
|
+
case extraction_1.TimeUnit.MINUTES:
|
|
59
|
+
date.setUTCMinutes(date.getUTCMinutes() + sign * value);
|
|
60
|
+
break;
|
|
61
|
+
case extraction_1.TimeUnit.HOURS:
|
|
62
|
+
date.setUTCHours(date.getUTCHours() + sign * value);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
return date.toISOString();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolves a TimeValue into a concrete ISO 8601 timestamp string.
|
|
69
|
+
*
|
|
70
|
+
* Resolution rules:
|
|
71
|
+
* - ABSOLUTE: Returns the value directly (must be an ISO 8601 timestamp)
|
|
72
|
+
* - NOW: Returns the current time as ISO 8601
|
|
73
|
+
* - UNBOUNDED: Returns UNBOUNDED_DATE_TIME_VALUE ('1970-01-01T00:00:00.000Z')
|
|
74
|
+
* - WORKERS_OLDEST: Returns workersOldest from state, or throws if not set
|
|
75
|
+
* - WORKERS_NEWEST: Returns workersNewest from state, or throws if not set
|
|
76
|
+
* - WORKERS_OLDEST_MINUS_WINDOW: Subtracts duration from workersOldest, or throws if not set
|
|
77
|
+
* - WORKERS_NEWEST_PLUS_WINDOW: Adds duration to workersNewest, or throws if not set
|
|
78
|
+
*
|
|
79
|
+
* @param timeValue - The TimeValue to resolve
|
|
80
|
+
* @param state - The current SDK state containing workersOldest and workersNewest
|
|
81
|
+
* @returns Resolved ISO 8601 timestamp string
|
|
82
|
+
* @throws Error if required TimeValue.value is missing for ABSOLUTE or *_WINDOW types
|
|
83
|
+
* @throws Error if workersOldest/workersNewest is not set in state for WORKERS_* types
|
|
84
|
+
*/
|
|
85
|
+
function resolveTimeValue(timeValue, state) {
|
|
86
|
+
switch (timeValue.type) {
|
|
87
|
+
case extraction_1.TimeValueType.ABSOLUTE_TIME: {
|
|
88
|
+
if (!timeValue.value) {
|
|
89
|
+
throw new Error('TimeValue of type ABSOLUTE must have a value (ISO 8601 timestamp).');
|
|
90
|
+
}
|
|
91
|
+
// Normalize to consistent ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ)
|
|
92
|
+
// to ensure string comparisons in boundary expansion are safe.
|
|
93
|
+
const parsed = new Date(timeValue.value);
|
|
94
|
+
if (isNaN(parsed.getTime())) {
|
|
95
|
+
throw new Error(`TimeValue of type ABSOLUTE has an invalid ISO 8601 timestamp: '${timeValue.value}'.`);
|
|
96
|
+
}
|
|
97
|
+
return parsed.toISOString();
|
|
98
|
+
}
|
|
99
|
+
case extraction_1.TimeValueType.CURRENT_TIME: {
|
|
100
|
+
return new Date().toISOString();
|
|
101
|
+
}
|
|
102
|
+
case extraction_1.TimeValueType.UNBOUNDED: {
|
|
103
|
+
return constants_1.UNBOUNDED_DATE_TIME_VALUE;
|
|
104
|
+
}
|
|
105
|
+
case extraction_1.TimeValueType.WORKERS_OLDEST: {
|
|
106
|
+
if (!state.workersOldest) {
|
|
107
|
+
// To support backwards-compatibility for the old state
|
|
108
|
+
return constants_1.UNBOUNDED_DATE_TIME_VALUE;
|
|
109
|
+
}
|
|
110
|
+
return state.workersOldest;
|
|
111
|
+
}
|
|
112
|
+
case extraction_1.TimeValueType.WORKERS_NEWEST: {
|
|
113
|
+
if (!state.workersNewest) {
|
|
114
|
+
throw new Error('Field workersNewest is not set in state. Cannot resolve TimeValue of type WORKERS_NEWEST without a prior extraction boundary.');
|
|
115
|
+
}
|
|
116
|
+
return state.workersNewest;
|
|
117
|
+
}
|
|
118
|
+
case extraction_1.TimeValueType.WORKERS_OLDEST_MINUS_WINDOW: {
|
|
119
|
+
if (!timeValue.value) {
|
|
120
|
+
throw new Error("TimeValue of type WORKERS_OLDEST_MINUS_WINDOW must have a value (duration, e.g. '30s', '5m', '2h').");
|
|
121
|
+
}
|
|
122
|
+
if (!state.workersOldest) {
|
|
123
|
+
// To support backwards-compatibility for the old state
|
|
124
|
+
return constants_1.UNBOUNDED_DATE_TIME_VALUE;
|
|
125
|
+
}
|
|
126
|
+
return applyDuration(state.workersOldest, timeValue.value, 'subtract');
|
|
127
|
+
}
|
|
128
|
+
case extraction_1.TimeValueType.WORKERS_NEWEST_PLUS_WINDOW: {
|
|
129
|
+
if (!timeValue.value) {
|
|
130
|
+
throw new Error("TimeValue of type WORKERS_NEWEST_PLUS_WINDOW must have a value (duration, e.g. '30s', '5m', '2h').");
|
|
131
|
+
}
|
|
132
|
+
if (!state.workersNewest) {
|
|
133
|
+
throw new Error('Field workersNewest is not set in state. Cannot resolve TimeValue of type WORKERS_NEWEST_PLUS_WINDOW without a prior extraction boundary.');
|
|
134
|
+
}
|
|
135
|
+
return applyDuration(state.workersNewest, timeValue.value, 'add');
|
|
136
|
+
}
|
|
137
|
+
default: {
|
|
138
|
+
throw new Error(`Unknown TimeValueType: '${timeValue.type}'.`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-value-resolver.test.d.ts","sourceRoot":"","sources":["../../src/common/time-value-resolver.test.ts"],"names":[],"mappings":""}
|