velocious 1.0.665 → 1.0.667
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 +14 -5
- package/build/background-jobs/adapter-client.js +22 -0
- package/build/background-jobs/adapter.js +15 -0
- package/build/background-jobs/client.js +206 -14
- package/build/background-jobs/enqueue-acknowledgement-timeout-error.js +50 -0
- package/build/background-jobs/job-semantics.js +30 -0
- package/build/background-jobs/job.js +26 -1
- package/build/background-jobs/local-adapter.js +36 -8
- package/build/background-jobs/local-store.js +410 -39
- package/build/background-jobs/main.js +69 -2
- package/build/background-jobs/platform-job.js +26 -1
- package/build/background-jobs/runtime.js +58 -0
- package/build/background-jobs/store.js +374 -6
- package/build/background-jobs/types.js +27 -2
- package/build/background-jobs/web/controller.js +1 -0
- package/build/configuration.js +7 -5
- package/build/database/drivers/mssql/column.js +2 -2
- package/build/database/drivers/mssql/table.js +19 -5
- package/build/database/pool/async-tracked-multi-connection.js +2 -1
- package/build/database/query/alter-table-base.js +8 -1
- package/build/database/record/attachments/store.js +2 -2
- package/build/frontend-model-controller.js +22 -2
- package/build/http-server/websocket-events-host.js +3 -1
- package/build/src/background-jobs/adapter-client.d.ts +17 -0
- package/build/src/background-jobs/adapter-client.d.ts.map +1 -1
- package/build/src/background-jobs/adapter-client.js +19 -1
- package/build/src/background-jobs/adapter.d.ts +15 -0
- package/build/src/background-jobs/adapter.d.ts.map +1 -1
- package/build/src/background-jobs/adapter.js +14 -1
- package/build/src/background-jobs/client.d.ts +17 -0
- package/build/src/background-jobs/client.d.ts.map +1 -1
- package/build/src/background-jobs/client.js +186 -15
- package/build/src/background-jobs/enqueue-acknowledgement-timeout-error.d.ts +81 -0
- package/build/src/background-jobs/enqueue-acknowledgement-timeout-error.d.ts.map +1 -0
- package/build/src/background-jobs/enqueue-acknowledgement-timeout-error.js +47 -0
- package/build/src/background-jobs/job-semantics.d.ts +18 -0
- package/build/src/background-jobs/job-semantics.d.ts.map +1 -1
- package/build/src/background-jobs/job-semantics.js +28 -1
- package/build/src/background-jobs/job.d.ts +15 -0
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/job.js +21 -2
- package/build/src/background-jobs/local-adapter.d.ts +23 -8
- package/build/src/background-jobs/local-adapter.d.ts.map +1 -1
- package/build/src/background-jobs/local-adapter.js +35 -9
- package/build/src/background-jobs/local-store.d.ts +120 -5
- package/build/src/background-jobs/local-store.d.ts.map +1 -1
- package/build/src/background-jobs/local-store.js +366 -40
- package/build/src/background-jobs/main.d.ts +24 -2
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +68 -3
- package/build/src/background-jobs/platform-job.d.ts +15 -0
- package/build/src/background-jobs/platform-job.d.ts.map +1 -1
- package/build/src/background-jobs/platform-job.js +19 -2
- package/build/src/background-jobs/runtime.d.ts +39 -0
- package/build/src/background-jobs/runtime.d.ts.map +1 -1
- package/build/src/background-jobs/runtime.js +49 -1
- package/build/src/background-jobs/store.d.ts +100 -1
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +334 -8
- package/build/src/background-jobs/types.d.ts +97 -4
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +28 -3
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +2 -1
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +7 -5
- package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/column.js +2 -2
- package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/table.js +19 -5
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +3 -2
- package/build/src/database/query/alter-table-base.d.ts.map +1 -1
- package/build/src/database/query/alter-table-base.js +9 -2
- package/build/src/database/record/attachments/store.js +3 -3
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +18 -3
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +4 -2
- package/build/src/testing/test-files-finder.d.ts +4 -1
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.js +8 -3
- package/build/testing/test-files-finder.js +6 -1
- package/package.json +1 -1
- package/scripts/test-browser.js +1 -0
- package/src/background-jobs/adapter-client.js +22 -0
- package/src/background-jobs/adapter.js +15 -0
- package/src/background-jobs/client.js +206 -14
- package/src/background-jobs/enqueue-acknowledgement-timeout-error.js +50 -0
- package/src/background-jobs/job-semantics.js +30 -0
- package/src/background-jobs/job.js +26 -1
- package/src/background-jobs/local-adapter.js +36 -8
- package/src/background-jobs/local-store.js +410 -39
- package/src/background-jobs/main.js +69 -2
- package/src/background-jobs/platform-job.js +26 -1
- package/src/background-jobs/runtime.js +58 -0
- package/src/background-jobs/store.js +374 -6
- package/src/background-jobs/types.js +27 -2
- package/src/background-jobs/web/controller.js +1 -0
- package/src/configuration.js +7 -5
- package/src/database/drivers/mssql/column.js +2 -2
- package/src/database/drivers/mssql/table.js +19 -5
- package/src/database/pool/async-tracked-multi-connection.js +2 -1
- package/src/database/query/alter-table-base.js +8 -1
- package/src/database/record/attachments/store.js +2 -2
- package/src/frontend-model-controller.js +22 -2
- package/src/http-server/websocket-events-host.js +3 -1
- package/src/testing/test-files-finder.js +6 -1
|
@@ -6,6 +6,33 @@ export const DEFAULT_BACKGROUND_JOB_QUEUE = "default";
|
|
|
6
6
|
export const QUEUE_CONCURRENCY_KEY_PREFIX = "queue:";
|
|
7
7
|
/** @type {import("./types.js").BackgroundJobExecutionMode[]} */
|
|
8
8
|
export const BACKGROUND_JOB_EXECUTION_MODES = ["inline", "forked", "pooled", "spawned"];
|
|
9
|
+
/** @type {import("./types.js").BackgroundJobActiveStatus[]} */
|
|
10
|
+
export const BACKGROUND_JOB_ACTIVE_STATUSES = ["queued", "handed_off"];
|
|
11
|
+
/** @type {import("./types.js").BackgroundJobTerminalStatus[]} */
|
|
12
|
+
export const BACKGROUND_JOB_TERMINAL_STATUSES = ["cancelled", "completed", "failed", "orphaned"];
|
|
13
|
+
/** @type {import("./types.js").BackgroundJobStatus[]} */
|
|
14
|
+
export const BACKGROUND_JOB_STATUSES = [...BACKGROUND_JOB_ACTIVE_STATUSES, ...BACKGROUND_JOB_TERMINAL_STATUSES];
|
|
15
|
+
/**
|
|
16
|
+
* Normalizes persisted or transported job status vocabulary.
|
|
17
|
+
* @param {string} value - Candidate status.
|
|
18
|
+
* @returns {import("./types.js").BackgroundJobStatus} - Known status.
|
|
19
|
+
*/
|
|
20
|
+
export function normalizeBackgroundJobStatus(value) {
|
|
21
|
+
const status = BACKGROUND_JOB_STATUSES.find((candidate) => candidate === value);
|
|
22
|
+
if (status)
|
|
23
|
+
return status;
|
|
24
|
+
throw new Error(`Unknown background job status: ${value}`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validates a stable logical schedule key at every persistence boundary.
|
|
28
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
29
|
+
* @returns {string} - Validated key.
|
|
30
|
+
*/
|
|
31
|
+
export function normalizeBackgroundJobScheduleKey(scheduleKey) {
|
|
32
|
+
if (typeof scheduleKey === "string" && scheduleKey.length > 0 && scheduleKey.length <= 255)
|
|
33
|
+
return scheduleKey;
|
|
34
|
+
throw VelociousError.safe("background job scheduleKey must be a non-empty string of at most 255 characters");
|
|
35
|
+
}
|
|
9
36
|
/**
|
|
10
37
|
* Normalizes a job queue.
|
|
11
38
|
* @param {import("./types.js").BackgroundJobOptions} [options] - Job options.
|
|
@@ -122,4 +149,4 @@ export function normalizeBackgroundJobConcurrency({ options = {}, queue, queues
|
|
|
122
149
|
queueDerived: true
|
|
123
150
|
};
|
|
124
151
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXNlbWFudGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvam9iLXNlbWFudGljcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFFbEQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsUUFBUSxDQUFBO0FBQzdELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQTtBQUNwRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxTQUFTLENBQUE7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsUUFBUSxDQUFBO0FBQ3BELGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBRXZGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsT0FBTztJQUNqRCxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFBO0lBRTVCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBRTdFLE9BQU8sNEJBQTRCLENBQUE7QUFDckMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQ0FBbUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLG9CQUFvQixHQUFHLHFDQUFxQyxFQUFFLHVCQUF1QixHQUFHLDhCQUE4QjtJQUN0TCxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLG1JQUFtSSxDQUFDLENBQUE7SUFDdEosQ0FBQztJQUVELE1BQU0sc0JBQXNCLEdBQUcsT0FB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SSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlGLE1BQU0sSUFBSSxLQUFLLENBQUMsaUpBQWlKLENBQUMsQ0FBQTtRQUNwSyxDQUFDO1FBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSw0QkFBNEIsZ0VBQWdFLENBQUMsQ0FBQTtRQUNsTCxDQUFDO1FBRUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUE7SUFDaEYsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUE7SUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUVyRSxPQUFPO1FBQ0wsY0FBYyxFQUFFLEdBQUcsNEJBQTRCLEdBQUcsS0FBSyxFQUFFO1FBQ3pELGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBWZWxvY2lvdXNFcnJvciBmcm9tIFwiLi4vdmVsb2Npb3VzLWVycm9yLmpzXCJcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFDS0dST1VORF9KT0JfRVhFQ1VUSU9OX01PREUgPSBcInBvb2xlZFwiXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0pPQl9NQVhfUkVUUklFUyA9IDEwXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0pPQl9RVUVVRSA9IFwiZGVmYXVsdFwiXG5leHBvcnQgY29uc3QgUVVFVUVfQ09OQ1VSUkVOQ1lfS0VZX1BSRUZJWCA9IFwicXVldWU6XCJcbi8qKiBAdHlwZSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZVtdfSAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfSk9CX0VYRUNVVElPTl9NT0RFUyA9IFtcImlubGluZVwiLCBcImZvcmtlZFwiLCBcInBvb2xlZFwiLCBcInNwYXduZWRcIl1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgam9iIHF1ZXVlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfSBbb3B0aW9uc10gLSBKb2Igb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gUXVldWUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUJhY2tncm91bmRKb2JRdWV1ZShvcHRpb25zKSB7XG4gIGNvbnN0IHF1ZXVlID0gb3B0aW9ucz8ucXVldWVcblxuICBpZiAodHlwZW9mIHF1ZXVlID09PSBcInN0cmluZ1wiICYmIHF1ZXVlLnRyaW0oKS5sZW5ndGggPiAwKSByZXR1cm4gcXVldWUudHJpbSgpXG5cbiAgcmV0dXJuIERFRkFVTFRfQkFDS0dST1VORF9KT0JfUVVFVUVcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGFuIGV4cGxpY2l0IGV4ZWN1dGlvbiBtb2RlIHdoaWxlIHJldGFpbmluZyB0aGUgTm9kZSBkZWZhdWx0LlxuICogQHBhcmFtIHtPbWl0PGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnMsIFwiZXhlY3V0aW9uTW9kZVwiPiAmIHtleGVjdXRpb25Nb2RlPzogc3RyaW5nfX0gb3B0aW9ucyAtIEpvYiBvcHRpb25zLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlfSBbZGVmYXVsdEV4ZWN1dGlvbk1vZGVdIC0gRGVmYXVsdCBtb2RlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlW119IFtzdXBwb3J0ZWRFeGVjdXRpb25Nb2Rlc10gLSBNb2RlcyBhY2NlcHRlZCBieSB0aGUgY2FsbGVyLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGV9IC0gRXhlY3V0aW9uIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVCYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZShvcHRpb25zID0ge30sIGRlZmF1bHRFeGVjdXRpb25Nb2RlID0gREVGQVVMVF9CQUNLR1JPVU5EX0pPQl9FWEVDVVRJT05fTU9ERSwgc3VwcG9ydGVkRXhlY3V0aW9uTW9kZXMgPSBCQUNLR1JPVU5EX0pPQl9FWEVDVVRJT05fTU9ERVMpIHtcbiAgaWYgKFwiZm9ya2VkXCIgaW4gb3B0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBiYWNrZ3JvdW5kIGpvYiBgZm9ya2VkYCBvcHRpb24gd2FzIHJlbW92ZWQ7IHBhc3MgYGV4ZWN1dGlvbk1vZGVgIChcXFwiaW5saW5lXFxcIiwgXFxcImZvcmtlZFxcXCIsIFxcXCJwb29sZWRcXFwiLCBvciBcXFwic3Bhd25lZFxcXCIpIGluc3RlYWRcIilcbiAgfVxuXG4gIGNvbnN0IHJlcXVlc3RlZEV4ZWN1dGlvbk1vZGUgPSBvcHRpb25zLmV4ZWN1dGlvbk1vZGUgfHwgZGVmYXVsdEV4ZWN1dGlvbk1vZGVcbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZXhlY3V0aW9uTW9kZVxuXG4gIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIEJBQ0tHUk9VTkRfSk9CX0VYRUNVVElPTl9NT0RFUykge1xuICAgIGlmIChjYW5kaWRhdGUgPT09IHJlcXVlc3RlZEV4ZWN1dGlvbk1vZGUpIGV4ZWN1dGlvbk1vZGUgPSBjYW5kaWRhdGVcbiAgfVxuXG4gIGlmICghZXhlY3V0aW9uTW9kZSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGJhY2tncm91bmQgam9iIGV4ZWN1dGlvbk1vZGU6ICR7cmVxdWVzdGVkRXhlY3V0aW9uTW9kZX1gKVxuXG4gIGlmICghc3VwcG9ydGVkRXhlY3V0aW9uTW9kZXMuaW5jbHVkZXMoZXhlY3V0aW9uTW9kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEJhY2tncm91bmQgam9iIGV4ZWN1dGlvbk1vZGUgXCIke2V4ZWN1dGlvbk1vZGV9XCIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbG9jYWwgYmFja2dyb3VuZC1qb2JzIGFkYXB0ZXJgKVxuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGlvbk1vZGVcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW5kIG5vcm1hbGl6ZXMgYSByZXRyeSBjYXAuXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IG1heFJldHJpZXMgLSBSZXF1ZXN0ZWQgcmV0cnkgY2FwLlxuICogQHJldHVybnMge251bWJlcn0gLSBSZXRyeSBjYXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVCYWNrZ3JvdW5kSm9iTWF4UmV0cmllcyhtYXhSZXRyaWVzKSB7XG4gIGlmICh0eXBlb2YgbWF4UmV0cmllcyA9PT0gXCJudW1iZXJcIiAmJiBOdW1iZXIuaXNGaW5pdGUobWF4UmV0cmllcykgJiYgbWF4UmV0cmllcyA+PSAwKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobWF4UmV0cmllcylcbiAgfVxuXG4gIHJldHVybiBERUZBVUxUX0JBQ0tHUk9VTkRfSk9CX01BWF9SRVRSSUVTXG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFuIGVucXVldWUgZWxpZ2liaWxpdHkgdGltZXN0YW1wLlxuICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IHNjaGVkdWxlZEF0TXMgLSBSZXF1ZXN0ZWQgdGltZXN0YW1wLlxuICogQHBhcmFtIHtudW1iZXJ9IGRlZmF1bHRTY2hlZHVsZWRBdE1zIC0gRGVmYXVsdCB0aW1lc3RhbXAuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIEVsaWdpYmlsaXR5IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUJhY2tncm91bmRKb2JTY2hlZHVsZWRBdE1zKHNjaGVkdWxlZEF0TXMsIGRlZmF1bHRTY2hlZHVsZWRBdE1zKSB7XG4gIGlmIChzY2hlZHVsZWRBdE1zID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0U2NoZWR1bGVkQXRNc1xuICBpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIoc2NoZWR1bGVkQXRNcykgJiYgc2NoZWR1bGVkQXRNcyA+PSAwKSByZXR1cm4gc2NoZWR1bGVkQXRNc1xuXG4gIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJiYWNrZ3JvdW5kIGpvYiBzY2hlZHVsZWRBdE1zIG11c3QgYmUgYSBub24tbmVnYXRpdmUgc2FmZSBpbnRlZ2VyXCIpXG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgcmVzY2hlZHVsZSBkZWxheSBhbmQgcmVzb2x2ZXMgaXQgYXQgcGVyc2lzdGVuY2UgdGltZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZWxheU1zIC0gUmVxdWVzdGVkIGRlbGF5LlxuICogQHBhcmFtIHtudW1iZXJ9IG5vd01zIC0gUGVyc2lzdGVuY2UgdGltZXN0YW1wLlxuICogQHJldHVybnMge251bWJlcn0gLSBOZXcgZWxpZ2liaWxpdHkgdGltZXN0YW1wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzY2hlZHVsZWRCYWNrZ3JvdW5kSm9iQXRNcyhkZWxheU1zLCBub3dNcykge1xuICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGRlbGF5TXMpIHx8IGRlbGF5TXMgPCAwKSB7XG4gICAgdGhyb3cgVmVsb2Npb3VzRXJyb3Iuc2FmZShcImJhY2tncm91bmQgam9iIHJlc2NoZWR1bGUgZGVsYXlNcyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIHNhZmUgaW50ZWdlclwiKVxuICB9XG5cbiAgY29uc3Qgc2NoZWR1bGVkQXRNcyA9IG5vd01zICsgZGVsYXlNc1xuXG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIoc2NoZWR1bGVkQXRNcykpIHtcbiAgICB0aHJvdyBWZWxvY2lvdXNFcnJvci5zYWZlKFwiYmFja2dyb3VuZCBqb2IgcmVzY2hlZHVsZSBzY2hlZHVsZWRBdE1zIG11c3QgYmUgYSBzYWZlIGludGVnZXJcIilcbiAgfVxuXG4gIHJldHVybiBzY2hlZHVsZWRBdE1zXG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2hhcmVkIGZhaWx1cmUgYmFja29mZi5cbiAqIEBwYXJhbSB7bnVtYmVyfSByZXRyeUNvdW50IC0gT25lLWJhc2VkIGZhaWxlZCBhdHRlbXB0IGNvdW50LlxuICogQHJldHVybnMge251bWJlcn0gLSBCYWNrb2ZmIGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJ5RGVsYXlNcyhyZXRyeUNvdW50KSB7XG4gIGNvbnN0IHNjaGVkdWxlU2Vjb25kcyA9IFsxMCwgNjAsIDYwMCwgMzYwMF1cblxuICBpZiAocmV0cnlDb3VudCA8PSBzY2hlZHVsZVNlY29uZHMubGVuZ3RoKSByZXR1cm4gc2NoZWR1bGVTZWNvbmRzW3JldHJ5Q291bnQgLSAxXSAqIDEwMDBcblxuICByZXR1cm4gKHJldHJ5Q291bnQgLSAzKSAqIDYwICogNjAgKiAxMDAwXG59XG5cbi8qKlxuICogUmVzb2x2ZXMgZXhwbGljaXQgb3IgcXVldWUtZGVyaXZlZCBjb25jdXJyZW5jeS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUmVzb2x1dGlvbiBhcmd1bWVudHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9IGFyZ3Mub3B0aW9ucyAtIEpvYiBvcHRpb25zLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucXVldWUgLSBOb3JtYWxpemVkIHF1ZXVlLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB7bWF4Q29uY3VycmVudD86IG51bWJlciwgcHJpb3JpdHk/OiBudW1iZXJ9Pn0gYXJncy5xdWV1ZXMgLSBRdWV1ZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vdHlwZXMuanNcIikuUmVzb2x2ZWRCYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3kgfCBudWxsfSAtIENvbmN1cnJlbmN5IGNvbnRyYWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQmFja2dyb3VuZEpvYkNvbmN1cnJlbmN5KHtvcHRpb25zID0ge30sIHF1ZXVlLCBxdWV1ZXN9KSB7XG4gIGNvbnN0IGtleSA9IG9wdGlvbnMuY29uY3VycmVuY3lLZXlcbiAgY29uc3QgY2FwID0gb3B0aW9ucy5tYXhDb25jdXJyZW5jeVxuXG4gIGlmIChrZXkgIT09IHVuZGVmaW5lZCB8fCBjYXAgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2Yga2V5ICE9PSBcInN0cmluZ1wiIHx8IGtleS5sZW5ndGggPT09IDAgfHwgIU51bWJlci5pc0ludGVnZXIoY2FwKSB8fCBOdW1iZXIoY2FwKSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJiYWNrZ3JvdW5kIGpvYiBjb25jdXJyZW5jeUtleSBhbmQgbWF4Q29uY3VycmVuY3kgbXVzdCBiZSBwYWlyZWQ7IGNvbmN1cnJlbmN5S2V5IG11c3QgYmUgbm9uLWVtcHR5IGFuZCBtYXhDb25jdXJyZW5jeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlclwiKVxuICAgIH1cbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoUVVFVUVfQ09OQ1VSUkVOQ1lfS0VZX1BSRUZJWCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYmFja2dyb3VuZCBqb2IgY29uY3VycmVuY3lLZXkgbXVzdCBub3Qgc3RhcnQgd2l0aCB0aGUgcmVzZXJ2ZWQgXCIke1FVRVVFX0NPTkNVUlJFTkNZX0tFWV9QUkVGSVh9XCIgcHJlZml4LCB3aGljaCBpcyByZXNlcnZlZCBmb3IgcXVldWUtZGVyaXZlZCBjb25jdXJyZW5jeSBjYXBzYClcbiAgICB9XG5cbiAgICByZXR1cm4ge2NvbmN1cnJlbmN5S2V5OiBrZXksIG1heENvbmN1cnJlbmN5OiBOdW1iZXIoY2FwKSwgcXVldWVEZXJpdmVkOiBmYWxzZX1cbiAgfVxuXG4gIGNvbnN0IHF1ZXVlQ2FwID0gcXVldWVzW3F1ZXVlXT8ubWF4Q29uY3VycmVudFxuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihxdWV1ZUNhcCkgfHwgTnVtYmVyKHF1ZXVlQ2FwKSA8PSAwKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiB7XG4gICAgY29uY3VycmVuY3lLZXk6IGAke1FVRVVFX0NPTkNVUlJFTkNZX0tFWV9QUkVGSVh9JHtxdWV1ZX1gLFxuICAgIG1heENvbmN1cnJlbmN5OiBOdW1iZXIocXVldWVDYXApLFxuICAgIHF1ZXVlRGVyaXZlZDogdHJ1ZVxuICB9XG59XG4iXX0=
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXNlbWFudGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvam9iLXNlbWFudGljcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFFbEQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsUUFBUSxDQUFBO0FBQzdELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQTtBQUNwRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxTQUFTLENBQUE7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsUUFBUSxDQUFBO0FBQ3BELGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBQ3ZGLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQTtBQUN0RSxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUNoRyx5REFBeUQ7QUFDekQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLDhCQUE4QixFQUFFLEdBQUcsZ0NBQWdDLENBQUMsQ0FBQTtBQUUvRzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEtBQUs7SUFDaEQsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUE7SUFFL0UsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFFekIsTUFBTSxJQUFJ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LFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsNEJBQTRCLGdFQUFnRSxDQUFDLENBQUE7UUFDbEwsQ0FBQztRQUVELE9BQU8sRUFBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxDQUFBO0lBRTdDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFckUsT0FBTztRQUNMLGNBQWMsRUFBRSxHQUFHLDRCQUE0QixHQUFHLEtBQUssRUFBRTtRQUN6RCxjQUFjLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgVmVsb2Npb3VzRXJyb3IgZnJvbSBcIi4uL3ZlbG9jaW91cy1lcnJvci5qc1wiXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBQ0tHUk9VTkRfSk9CX0VYRUNVVElPTl9NT0RFID0gXCJwb29sZWRcIlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFDS0dST1VORF9KT0JfTUFYX1JFVFJJRVMgPSAxMFxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFDS0dST1VORF9KT0JfUVVFVUUgPSBcImRlZmF1bHRcIlxuZXhwb3J0IGNvbnN0IFFVRVVFX0NPTkNVUlJFTkNZX0tFWV9QUkVGSVggPSBcInF1ZXVlOlwiXG4vKiogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGVbXX0gKi9cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0pPQl9FWEVDVVRJT05fTU9ERVMgPSBbXCJpbmxpbmVcIiwgXCJmb3JrZWRcIiwgXCJwb29sZWRcIiwgXCJzcGF3bmVkXCJdXG4vKiogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkFjdGl2ZVN0YXR1c1tdfSAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfSk9CX0FDVElWRV9TVEFUVVNFUyA9IFtcInF1ZXVlZFwiLCBcImhhbmRlZF9vZmZcIl1cbi8qKiBAdHlwZSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iVGVybWluYWxTdGF0dXNbXX0gKi9cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0pPQl9URVJNSU5BTF9TVEFUVVNFUyA9IFtcImNhbmNlbGxlZFwiLCBcImNvbXBsZXRlZFwiLCBcImZhaWxlZFwiLCBcIm9ycGhhbmVkXCJdXG4vKiogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlN0YXR1c1tdfSAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfSk9CX1NUQVRVU0VTID0gWy4uLkJBQ0tHUk9VTkRfSk9CX0FDVElWRV9TVEFUVVNFUywgLi4uQkFDS0dST1VORF9KT0JfVEVSTUlOQUxfU1RBVFVTRVNdXG5cbi8qKlxuICogTm9ybWFsaXplcyBwZXJzaXN0ZWQgb3IgdHJhbnNwb3J0ZWQgam9iIHN0YXR1cyB2b2NhYnVsYXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gQ2FuZGlkYXRlIHN0YXR1cy5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JTdGF0dXN9IC0gS25vd24gc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQmFja2dyb3VuZEpvYlN0YXR1cyh2YWx1ZSkge1xuICBjb25zdCBzdGF0dXMgPSBCQUNLR1JPVU5EX0pPQl9TVEFUVVNFUy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZSA9PT0gdmFsdWUpXG5cbiAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1c1xuXG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBiYWNrZ3JvdW5kIGpvYiBzdGF0dXM6ICR7dmFsdWV9YClcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBzdGFibGUgbG9naWNhbCBzY2hlZHVsZSBrZXkgYXQgZXZlcnkgcGVyc2lzdGVuY2UgYm91bmRhcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2NoZWR1bGVLZXkgLSBTdGFibGUgc2NoZWR1bGUga2V5LlxuICogQHJldHVybnMge3N0cmluZ30gLSBWYWxpZGF0ZWQga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQmFja2dyb3VuZEpvYlNjaGVkdWxlS2V5KHNjaGVkdWxlS2V5KSB7XG4gIGlmICh0eXBlb2Ygc2NoZWR1bGVLZXkgPT09IFwic3RyaW5nXCIgJiYgc2NoZWR1bGVLZXkubGVuZ3RoID4gMCAmJiBzY2hlZHVsZUtleS5sZW5ndGggPD0gMjU1KSByZXR1cm4gc2NoZWR1bGVLZXlcblxuICB0aHJvdyBWZWxvY2lvdXNFcnJvci5zYWZlKFwiYmFja2dyb3VuZCBqb2Igc2NoZWR1bGVLZXkgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgb2YgYXQgbW9zdCAyNTUgY2hhcmFjdGVyc1wiKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBqb2IgcXVldWUuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9IFtvcHRpb25zXSAtIEpvYiBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gLSBRdWV1ZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQmFja2dyb3VuZEpvYlF1ZXVlKG9wdGlvbnMpIHtcbiAgY29uc3QgcXVldWUgPSBvcHRpb25zPy5xdWV1ZVxuXG4gIGlmICh0eXBlb2YgcXVldWUgPT09IFwic3RyaW5nXCIgJiYgcXVldWUudHJpbSgpLmxlbmd0aCA+IDApIHJldHVybiBxdWV1ZS50cmltKClcblxuICByZXR1cm4gREVGQVVMVF9CQUNLR1JPVU5EX0pPQl9RVUVVRVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYW4gZXhwbGljaXQgZXhlY3V0aW9uIG1vZGUgd2hpbGUgcmV0YWluaW5nIHRoZSBOb2RlIGRlZmF1bHQuXG4gKiBAcGFyYW0ge09taXQ8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9ucywgXCJleGVjdXRpb25Nb2RlXCI+ICYge2V4ZWN1dGlvbk1vZGU/OiBzdHJpbmd9fSBvcHRpb25zIC0gSm9iIG9wdGlvbnMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGV9IFtkZWZhdWx0RXhlY3V0aW9uTW9kZV0gLSBEZWZhdWx0IG1vZGUuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGVbXX0gW3N1cHBvcnRlZEV4ZWN1dGlvbk1vZGVzXSAtIE1vZGVzIGFjY2VwdGVkIGJ5IHRoZSBjYWxsZXIuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZX0gLSBFeGVjdXRpb24gbW9kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlKG9wdGlvbnMgPSB7fSwgZGVmYXVsdEV4ZWN1dGlvbk1vZGUgPSBERUZBVUxUX0JBQ0tHUk9VTkRfSk9CX0VYRUNVVElPTl9NT0RFLCBzdXBwb3J0ZWRFeGVjdXRpb25Nb2RlcyA9IEJBQ0tHUk9VTkRfSk9CX0VYRUNVVElPTl9NT0RFUykge1xuICBpZiAoXCJmb3JrZWRcIiBpbiBvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGJhY2tncm91bmQgam9iIGBmb3JrZWRgIG9wdGlvbiB3YXMgcmVtb3ZlZDsgcGFzcyBgZXhlY3V0aW9uTW9kZWAgKFxcXCJpbmxpbmVcXFwiLCBcXFwiZm9ya2VkXFxcIiwgXFxcInBvb2xlZFxcXCIsIG9yIFxcXCJzcGF3bmVkXFxcIikgaW5zdGVhZFwiKVxuICB9XG5cbiAgY29uc3QgcmVxdWVzdGVkRXhlY3V0aW9uTW9kZSA9IG9wdGlvbnMuZXhlY3V0aW9uTW9kZSB8fCBkZWZhdWx0RXhlY3V0aW9uTW9kZVxuICAvKiogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGUgfCB1bmRlZmluZWR9ICovXG4gIGxldCBleGVjdXRpb25Nb2RlXG5cbiAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgQkFDS0dST1VORF9KT0JfRVhFQ1VUSU9OX01PREVTKSB7XG4gICAgaWYgKGNhbmRpZGF0ZSA9PT0gcmVxdWVzdGVkRXhlY3V0aW9uTW9kZSkgZXhlY3V0aW9uTW9kZSA9IGNhbmRpZGF0ZVxuICB9XG5cbiAgaWYgKCFleGVjdXRpb25Nb2RlKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYmFja2dyb3VuZCBqb2IgZXhlY3V0aW9uTW9kZTogJHtyZXF1ZXN0ZWRFeGVjdXRpb25Nb2RlfWApXG5cbiAgaWYgKCFzdXBwb3J0ZWRFeGVjdXRpb25Nb2Rlcy5pbmNsdWRlcyhleGVjdXRpb25Nb2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQmFja2dyb3VuZCBqb2IgZXhlY3V0aW9uTW9kZSBcIiR7ZXhlY3V0aW9uTW9kZX1cIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsb2NhbCBiYWNrZ3JvdW5kLWpvYnMgYWRhcHRlcmApXG4gIH1cblxuICByZXR1cm4gZXhlY3V0aW9uTW9kZVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbmQgbm9ybWFsaXplcyBhIHJldHJ5IGNhcC5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gbWF4UmV0cmllcyAtIFJlcXVlc3RlZCByZXRyeSBjYXAuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIFJldHJ5IGNhcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUJhY2tncm91bmRKb2JNYXhSZXRyaWVzKG1heFJldHJpZXMpIHtcbiAgaWYgKHR5cGVvZiBtYXhSZXRyaWVzID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZShtYXhSZXRyaWVzKSAmJiBtYXhSZXRyaWVzID49IDApIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihtYXhSZXRyaWVzKVxuICB9XG5cbiAgcmV0dXJuIERFRkFVTFRfQkFDS0dST1VORF9KT0JfTUFYX1JFVFJJRVNcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW4gZW5xdWV1ZSBlbGlnaWJpbGl0eSB0aW1lc3RhbXAuXG4gKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gc2NoZWR1bGVkQXRNcyAtIFJlcXVlc3RlZCB0aW1lc3RhbXAuXG4gKiBAcGFyYW0ge251bWJlcn0gZGVmYXVsdFNjaGVkdWxlZEF0TXMgLSBEZWZhdWx0IHRpbWVzdGFtcC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gRWxpZ2liaWxpdHkgdGltZXN0YW1wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQmFja2dyb3VuZEpvYlNjaGVkdWxlZEF0TXMoc2NoZWR1bGVkQXRNcywgZGVmYXVsdFNjaGVkdWxlZEF0TXMpIHtcbiAgaWYgKHNjaGVkdWxlZEF0TXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGRlZmF1bHRTY2hlZHVsZWRBdE1zXG4gIGlmIChOdW1iZXIuaXNTYWZlSW50ZWdlcihzY2hlZHVsZWRBdE1zKSAmJiBzY2hlZHVsZWRBdE1zID49IDApIHJldHVybiBzY2hlZHVsZWRBdE1zXG5cbiAgdGhyb3cgVmVsb2Npb3VzRXJyb3Iuc2FmZShcImJhY2tncm91bmQgam9iIHNjaGVkdWxlZEF0TXMgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBzYWZlIGludGVnZXJcIilcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSByZXNjaGVkdWxlIGRlbGF5IGFuZCByZXNvbHZlcyBpdCBhdCBwZXJzaXN0ZW5jZSB0aW1lLlxuICogQHBhcmFtIHtudW1iZXJ9IGRlbGF5TXMgLSBSZXF1ZXN0ZWQgZGVsYXkuXG4gKiBAcGFyYW0ge251bWJlcn0gbm93TXMgLSBQZXJzaXN0ZW5jZSB0aW1lc3RhbXAuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIE5ldyBlbGlnaWJpbGl0eSB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNjaGVkdWxlZEJhY2tncm91bmRKb2JBdE1zKGRlbGF5TXMsIG5vd01zKSB7XG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIoZGVsYXlNcykgfHwgZGVsYXlNcyA8IDApIHtcbiAgICB0aHJvdyBWZWxvY2lvdXNFcnJvci5zYWZlKFwiYmFja2dyb3VuZCBqb2IgcmVzY2hlZHVsZSBkZWxheU1zIG11c3QgYmUgYSBub24tbmVnYXRpdmUgc2FmZSBpbnRlZ2VyXCIpXG4gIH1cblxuICBjb25zdCBzY2hlZHVsZWRBdE1zID0gbm93TXMgKyBkZWxheU1zXG5cbiAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzY2hlZHVsZWRBdE1zKSkge1xuICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJiYWNrZ3JvdW5kIGpvYiByZXNjaGVkdWxlIHNjaGVkdWxlZEF0TXMgbXVzdCBiZSBhIHNhZmUgaW50ZWdlclwiKVxuICB9XG5cbiAgcmV0dXJuIHNjaGVkdWxlZEF0TXNcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzaGFyZWQgZmFpbHVyZSBiYWNrb2ZmLlxuICogQHBhcmFtIHtudW1iZXJ9IHJldHJ5Q291bnQgLSBPbmUtYmFzZWQgZmFpbGVkIGF0dGVtcHQgY291bnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIEJhY2tvZmYgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0cnlEZWxheU1zKHJldHJ5Q291bnQpIHtcbiAgY29uc3Qgc2NoZWR1bGVTZWNvbmRzID0gWzEwLCA2MCwgNjAwLCAzNjAwXVxuXG4gIGlmIChyZXRyeUNvdW50IDw9IHNjaGVkdWxlU2Vjb25kcy5sZW5ndGgpIHJldHVybiBzY2hlZHVsZVNlY29uZHNbcmV0cnlDb3VudCAtIDFdICogMTAwMFxuXG4gIHJldHVybiAocmV0cnlDb3VudCAtIDMpICogNjAgKiA2MCAqIDEwMDBcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBleHBsaWNpdCBvciBxdWV1ZS1kZXJpdmVkIGNvbmN1cnJlbmN5LlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBSZXNvbHV0aW9uIGFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iT3B0aW9uc30gYXJncy5vcHRpb25zIC0gSm9iIG9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5xdWV1ZSAtIE5vcm1hbGl6ZWQgcXVldWUuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHttYXhDb25jdXJyZW50PzogbnVtYmVyLCBwcmlvcml0eT86IG51bWJlcn0+fSBhcmdzLnF1ZXVlcyAtIFF1ZXVlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5SZXNvbHZlZEJhY2tncm91bmRKb2JDb25jdXJyZW5jeSB8IG51bGx9IC0gQ29uY3VycmVuY3kgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVCYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3koe29wdGlvbnMgPSB7fSwgcXVldWUsIHF1ZXVlc30pIHtcbiAgY29uc3Qga2V5ID0gb3B0aW9ucy5jb25jdXJyZW5jeUtleVxuICBjb25zdCBjYXAgPSBvcHRpb25zLm1heENvbmN1cnJlbmN5XG5cbiAgaWYgKGtleSAhPT0gdW5kZWZpbmVkIHx8IGNhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgIT09IFwic3RyaW5nXCIgfHwga2V5Lmxlbmd0aCA9PT0gMCB8fCAhTnVtYmVyLmlzSW50ZWdlcihjYXApIHx8IE51bWJlcihjYXApIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImJhY2tncm91bmQgam9iIGNvbmN1cnJlbmN5S2V5IGFuZCBtYXhDb25jdXJyZW5jeSBtdXN0IGJlIHBhaXJlZDsgY29uY3VycmVuY3lLZXkgbXVzdCBiZSBub24tZW1wdHkgYW5kIG1heENvbmN1cnJlbmN5IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyXCIpXG4gICAgfVxuICAgIGlmIChrZXkuc3RhcnRzV2l0aChRVUVVRV9DT05DVVJSRU5DWV9LRVlfUFJFRklYKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWNrZ3JvdW5kIGpvYiBjb25jdXJyZW5jeUtleSBtdXN0IG5vdCBzdGFydCB3aXRoIHRoZSByZXNlcnZlZCBcIiR7UVVFVUVfQ09OQ1VSUkVOQ1lfS0VZX1BSRUZJWH1cIiBwcmVmaXgsIHdoaWNoIGlzIHJlc2VydmVkIGZvciBxdWV1ZS1kZXJpdmVkIGNvbmN1cnJlbmN5IGNhcHNgKVxuICAgIH1cblxuICAgIHJldHVybiB7Y29uY3VycmVuY3lLZXk6IGtleSwgbWF4Q29uY3VycmVuY3k6IE51bWJlcihjYXApLCBxdWV1ZURlcml2ZWQ6IGZhbHNlfVxuICB9XG5cbiAgY29uc3QgcXVldWVDYXAgPSBxdWV1ZXNbcXVldWVdPy5tYXhDb25jdXJyZW50XG5cbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHF1ZXVlQ2FwKSB8fCBOdW1iZXIocXVldWVDYXApIDw9IDApIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIHtcbiAgICBjb25jdXJyZW5jeUtleTogYCR7UVVFVUVfQ09OQ1VSUkVOQ1lfS0VZX1BSRUZJWH0ke3F1ZXVlfWAsXG4gICAgbWF4Q29uY3VycmVuY3k6IE51bWJlcihxdWV1ZUNhcCksXG4gICAgcXVldWVEZXJpdmVkOiB0cnVlXG4gIH1cbn1cbiJdfQ==
|
|
@@ -43,5 +43,20 @@ export default class VelociousJob<TArgs extends Array<ReturnType<typeof JSON.par
|
|
|
43
43
|
* @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
|
|
44
44
|
*/
|
|
45
45
|
static cancelScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobCancellationResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Reads current ownership and optional terminal history for a stable key.
|
|
48
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
49
|
+
* @param {{includeLatestTerminal?: boolean}} [options] - Lookup options.
|
|
50
|
+
* @returns {Promise<import("./types.js").BackgroundJobScheduledLookupResult>} - Normalized stable schedule jobs.
|
|
51
|
+
*/
|
|
52
|
+
static getScheduledJob(scheduleKey: string, options?: {
|
|
53
|
+
includeLatestTerminal?: boolean;
|
|
54
|
+
}): Promise<import("./types.js").BackgroundJobScheduledLookupResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Expedites a future queued owner without creating another job.
|
|
57
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
58
|
+
* @returns {Promise<import("./types.js").BackgroundJobWakeResult>} - Wake result.
|
|
59
|
+
*/
|
|
60
|
+
static wakeScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobWakeResult>;
|
|
46
61
|
}
|
|
47
62
|
//# sourceMappingURL=job.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job.js"],"names":[],"mappings":"AAMA,OAAO,oBAAoB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job.js"],"names":[],"mappings":"AAMA,OAAO,oBAAoB,MAAM,mBAAmB,CAAA;AASpD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY,CAHoB,KAAK,SAA5C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAS,EAAG,CAG5B,SAAQ,oBAAoB,CAF3B,KAAK,CAEsB;IAC5D;;;;OAIG;IACH,OAAa,YAAY,CAAC,GAAG,IAAI,EAHnB,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAGV,GAFpB,OAAO,CAAC,MAAM,CAAC,CAe3B;IAED;;;;;;OAMG;IACH,OAAa,uBAAuB,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,EAJjD;QAAmD,IAAI,EAA/C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;QAAyD,OAAO,AAAhE,CACA,EADQ,OAAO,YAAY,EAAE,oBAAoB,CACjD;KAEiD,GAFvC,OAAO,CAAC,MAAM,CAAC,CAc3B;IAED;;;;;;;OAOG;IACH,OAAa,gBAAgB,CAAC,EAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC,EALvD;QAAqB,WAAW,EAAxB,MAAM,CACd;QAAmD,IAAI,EAA/C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C;QAAyD,OAAO,AAAhE,CACA,EADQ,OAAO,YAAY,EAAE,oBAAoB,CACjD;KAEuD,GAF7C,OAAO,CAAC,OAAO,YAAY,EAAE,8BAA8B,CAAC,CAMxE;IAED;;;;OAIG;IACH,OAAa,eAAe,CAAC,WAAW,EAH7B,MAG6B,GAF3B,OAAO,CAAC,OAAO,YAAY,EAAE,+BAA+B,CAAC,CAMzE;IAED;;;;;OAKG;IACH,OAAa,eAAe,CAAC,WAAW,EAJ7B,MAI6B,EAAE,OAAO,AAH9C,CACA,EADQ;QAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAGW,GAFzC,OAAO,CAAC,OAAO,YAAY,EAAE,kCAAkC,CAAC,CAM5E;IAED;;;;OAIG;IACH,OAAa,aAAa,CAAC,WAAW,EAH3B,MAG2B,GAFzB,OAAO,CAAC,OAAO,YAAY,EAAE,uBAAuB,CAAC,CAMjE;CACF"}
|
|
@@ -3,7 +3,7 @@ import { randomUUID } from "node:crypto";
|
|
|
3
3
|
import configurationResolver from "../configuration-resolver.js";
|
|
4
4
|
import { currentBackgroundJobProducerProof } from "./execution-context.js";
|
|
5
5
|
import PlatformVelociousJob from "./platform-job.js";
|
|
6
|
-
import { cancelScheduledBackgroundJobForConfiguration, enqueueBackgroundJobForConfiguration, replaceScheduledBackgroundJobForConfiguration } from "./runtime.js";
|
|
6
|
+
import { cancelScheduledBackgroundJobForConfiguration, enqueueBackgroundJobForConfiguration, getScheduledBackgroundJobForConfiguration, replaceScheduledBackgroundJobForConfiguration, wakeScheduledBackgroundJobForConfiguration } from "./runtime.js";
|
|
7
7
|
/**
|
|
8
8
|
* Node background-job entry. It preserves lazy configuration discovery for
|
|
9
9
|
* fresh producer processes while the explicit platform entry stays free of
|
|
@@ -70,5 +70,24 @@ export default class VelociousJob extends PlatformVelociousJob {
|
|
|
70
70
|
const configuration = await configurationResolver();
|
|
71
71
|
return await cancelScheduledBackgroundJobForConfiguration({ configuration, scheduleKey });
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Reads current ownership and optional terminal history for a stable key.
|
|
75
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
76
|
+
* @param {{includeLatestTerminal?: boolean}} [options] - Lookup options.
|
|
77
|
+
* @returns {Promise<import("./types.js").BackgroundJobScheduledLookupResult>} - Normalized stable schedule jobs.
|
|
78
|
+
*/
|
|
79
|
+
static async getScheduledJob(scheduleKey, options = {}) {
|
|
80
|
+
const configuration = await configurationResolver();
|
|
81
|
+
return await getScheduledBackgroundJobForConfiguration({ configuration, scheduleKey, ...options });
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Expedites a future queued owner without creating another job.
|
|
85
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
86
|
+
* @returns {Promise<import("./types.js").BackgroundJobWakeResult>} - Wake result.
|
|
87
|
+
*/
|
|
88
|
+
static async wakeScheduled(scheduleKey) {
|
|
89
|
+
const configuration = await configurationResolver();
|
|
90
|
+
return await wakeScheduledBackgroundJobForConfiguration({ configuration, scheduleKey });
|
|
91
|
+
}
|
|
73
92
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9qb2IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFeEMsT0FBTyxxQkFBcUIsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMxRSxPQUFPLG9CQUFvQixNQUFNLG1CQUFtQixDQUFBO0FBQ3BELE9BQU8sRUFDTCw0Q0FBNEMsRUFDNUMsb0NBQW9DLEVBQ3BDLHlDQUF5QyxFQUN6Qyw2Q0FBNkMsRUFDN0MsMENBQTBDLEVBQzNDLE1BQU0sY0FBYyxDQUFBO0FBRXJCOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLG9CQUFvQjtJQUM1RDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJO1FBQy9CLE1BQU0sYUFBYSxHQUFHLE1BQU0scUJBQXFCLEVBQUUsQ0FBQTtRQUNuRCxNQUFNLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3RCxNQUFNLGFBQWEsR0FBRyxpQ0FBaUMsRUFBRSxDQUFBO1FBRXpELE9BQU8sTUFBTSxvQ0FBb0MsQ0FBQztZQUNoRCxhQUFhO1lBQ2IsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPO1lBQ1AsVUFBVTtZQUNWLGFBQWE7WUFDYixvQkFBb0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQy9ELENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQztRQUNsRCxNQUFNLGFBQWEsR0FBRyxNQUFNLHFCQUFxQixFQUFFLENBQUE7UUFDbkQsTUFBTSxhQUFhLEdBQUcsaUNBQWlDLEVBQUUsQ0FBQTtRQUV6RCxPQUFPLE1BQU0sb0NBQW9DLENBQUM7WUFDaEQsYUFBYTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLElBQUk7WUFDYixVQUFVLEVBQUUsT0FBTztZQUNuQixhQUFhO1lBQ2Isb0JBQW9CLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMvRCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxNQUFNLHFCQUFxQixFQUFFLENBQUE7UUFFbkQsT0FBTyxNQUFNLDZDQUE2QyxDQUFDLEVBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDOUksQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLE1BQU0scUJBQXFCLEVBQUUsQ0FBQTtRQUVuRCxPQUFPLE1BQU0sNENBQTRDLENBQUMsRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQTtJQUN6RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDcEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxxQkFBcUIsRUFBRSxDQUFBO1FBRW5ELE9BQU8sTUFBTSx5Q0FBeUMsQ0FBQyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQyxDQUFBO0lBQ2xHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVztRQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLHFCQUFxQixFQUFFLENBQUE7UUFFbkQsT0FBTyxNQUFNLDBDQUEwQyxDQUFDLEVBQUMsYUFBYSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUE7SUFDdkYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuXG5pbXBvcnQgY29uZmlndXJhdGlvblJlc29sdmVyIGZyb20gXCIuLi9jb25maWd1cmF0aW9uLXJlc29sdmVyLmpzXCJcbmltcG9ydCB7IGN1cnJlbnRCYWNrZ3JvdW5kSm9iUHJvZHVjZXJQcm9vZiB9IGZyb20gXCIuL2V4ZWN1dGlvbi1jb250ZXh0LmpzXCJcbmltcG9ydCBQbGF0Zm9ybVZlbG9jaW91c0pvYiBmcm9tIFwiLi9wbGF0Zm9ybS1qb2IuanNcIlxuaW1wb3J0IHtcbiAgY2FuY2VsU2NoZWR1bGVkQmFja2dyb3VuZEpvYkZvckNvbmZpZ3VyYXRpb24sXG4gIGVucXVldWVCYWNrZ3JvdW5kSm9iRm9yQ29uZmlndXJhdGlvbixcbiAgZ2V0U2NoZWR1bGVkQmFja2dyb3VuZEpvYkZvckNvbmZpZ3VyYXRpb24sXG4gIHJlcGxhY2VTY2hlZHVsZWRCYWNrZ3JvdW5kSm9iRm9yQ29uZmlndXJhdGlvbixcbiAgd2FrZVNjaGVkdWxlZEJhY2tncm91bmRKb2JGb3JDb25maWd1cmF0aW9uXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIlxuXG4vKipcbiAqIE5vZGUgYmFja2dyb3VuZC1qb2IgZW50cnkuIEl0IHByZXNlcnZlcyBsYXp5IGNvbmZpZ3VyYXRpb24gZGlzY292ZXJ5IGZvclxuICogZnJlc2ggcHJvZHVjZXIgcHJvY2Vzc2VzIHdoaWxlIHRoZSBleHBsaWNpdCBwbGF0Zm9ybSBlbnRyeSBzdGF5cyBmcmVlIG9mXG4gKiBOb2RlLW9ubHkgY29uZmlndXJhdGlvbiByZXNvbHV0aW9uLlxuICogQHRlbXBsYXRlIHtBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IFtUQXJncz1bXV1cbiAqIEBhdWdtZW50cyB7UGxhdGZvcm1WZWxvY2lvdXNKb2I8VEFyZ3M+fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNKb2IgZXh0ZW5kcyBQbGF0Zm9ybVZlbG9jaW91c0pvYiB7XG4gIC8qKlxuICAgKiBSdW5zIHBlcmZvcm0gbGF0ZXIuXG4gICAqIEBwYXJhbSB7Li4uUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGFyZ3MgLSBKb2IgYXJncy5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gLSBKb2IgaWQuXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgcGVyZm9ybUxhdGVyKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgY29uZmlndXJhdGlvblJlc29sdmVyKClcbiAgICBjb25zdCB7am9iQXJncywgam9iT3B0aW9uc30gPSB0aGlzLl9zcGxpdEFyZ3NBbmRPcHRpb25zKGFyZ3MpXG4gICAgY29uc3QgcHJvZHVjZXJQcm9vZiA9IGN1cnJlbnRCYWNrZ3JvdW5kSm9iUHJvZHVjZXJQcm9vZigpXG5cbiAgICByZXR1cm4gYXdhaXQgZW5xdWV1ZUJhY2tncm91bmRKb2JGb3JDb25maWd1cmF0aW9uKHtcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBKb2JDbGFzczogdGhpcyxcbiAgICAgIGpvYkFyZ3MsXG4gICAgICBqb2JPcHRpb25zLFxuICAgICAgcHJvZHVjZXJQcm9vZixcbiAgICAgIHByb2R1Y2VySW52b2NhdGlvbklkOiBwcm9kdWNlclByb29mID8gcmFuZG9tVVVJRCgpIDogdW5kZWZpbmVkXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBlcmZvcm0gbGF0ZXIgd2l0aCBvcHRpb25zLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7QXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+fSBhcmdzLmFyZ3MgLSBKb2IgYXJncy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfSBbYXJncy5vcHRpb25zXSAtIEpvYiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIEpvYiBpZC5cbiAgICovXG4gIHN0YXRpYyBhc3luYyBwZXJmb3JtTGF0ZXJXaXRoT3B0aW9ucyh7YXJncywgb3B0aW9uc30pIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgY29uZmlndXJhdGlvblJlc29sdmVyKClcbiAgICBjb25zdCBwcm9kdWNlclByb29mID0gY3VycmVudEJhY2tncm91bmRKb2JQcm9kdWNlclByb29mKClcblxuICAgIHJldHVybiBhd2FpdCBlbnF1ZXVlQmFja2dyb3VuZEpvYkZvckNvbmZpZ3VyYXRpb24oe1xuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIEpvYkNsYXNzOiB0aGlzLFxuICAgICAgam9iQXJnczogYXJncyxcbiAgICAgIGpvYk9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICBwcm9kdWNlclByb29mLFxuICAgICAgcHJvZHVjZXJJbnZvY2F0aW9uSWQ6IHByb2R1Y2VyUHJvb2YgPyByYW5kb21VVUlEKCkgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEF0b21pY2FsbHkgcmVwbGFjZXMgdGhpcyBqb2IgY2xhc3MncyBxdWV1ZWQgb3duZXIgZm9yIGEgc3RhYmxlIHNjaGVkdWxlIGtleS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zY2hlZHVsZUtleSAtIFN0YWJsZSBsb2dpY2FsIHNjaGVkdWxlIGtleS5cbiAgICogQHBhcmFtIHtBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IGFyZ3MuYXJncyAtIEpvYiBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9IFthcmdzLm9wdGlvbnNdIC0gSm9iIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJlcGxhY2VtZW50UmVzdWx0Pn0gLSBSZXBsYWNlbWVudCByZXN1bHQuXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgcmVwbGFjZVNjaGVkdWxlZCh7c2NoZWR1bGVLZXksIGFyZ3MsIG9wdGlvbnN9KSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IGNvbmZpZ3VyYXRpb25SZXNvbHZlcigpXG5cbiAgICByZXR1cm4gYXdhaXQgcmVwbGFjZVNjaGVkdWxlZEJhY2tncm91bmRKb2JGb3JDb25maWd1cmF0aW9uKHtjb25maWd1cmF0aW9uLCBKb2JDbGFzczogdGhpcywgc2NoZWR1bGVLZXksIGpvYkFyZ3M6IGFyZ3MsIGpvYk9wdGlvbnM6IG9wdGlvbnN9KVxuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgb3IgZGV0YWNoZXMgdGhlIGN1cnJlbnQgb3duZXIgb2YgYSBzdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZWR1bGVLZXkgLSBTdGFibGUgbG9naWNhbCBzY2hlZHVsZSBrZXkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvblJlc3VsdD59IC0gQ2FuY2VsbGF0aW9uIHJlc3VsdC5cbiAgICovXG4gIHN0YXRpYyBhc3luYyBjYW5jZWxTY2hlZHVsZWQoc2NoZWR1bGVLZXkpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgY29uZmlndXJhdGlvblJlc29sdmVyKClcblxuICAgIHJldHVybiBhd2FpdCBjYW5jZWxTY2hlZHVsZWRCYWNrZ3JvdW5kSm9iRm9yQ29uZmlndXJhdGlvbih7Y29uZmlndXJhdGlvbiwgc2NoZWR1bGVLZXl9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIGN1cnJlbnQgb3duZXJzaGlwIGFuZCBvcHRpb25hbCB0ZXJtaW5hbCBoaXN0b3J5IGZvciBhIHN0YWJsZSBrZXkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlZHVsZUtleSAtIFN0YWJsZSBsb2dpY2FsIHNjaGVkdWxlIGtleS5cbiAgICogQHBhcmFtIHt7aW5jbHVkZUxhdGVzdFRlcm1pbmFsPzogYm9vbGVhbn19IFtvcHRpb25zXSAtIExvb2t1cCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JTY2hlZHVsZWRMb29rdXBSZXN1bHQ+fSAtIE5vcm1hbGl6ZWQgc3RhYmxlIHNjaGVkdWxlIGpvYnMuXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZ2V0U2NoZWR1bGVkSm9iKHNjaGVkdWxlS2V5LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgY29uZmlndXJhdGlvblJlc29sdmVyKClcblxuICAgIHJldHVybiBhd2FpdCBnZXRTY2hlZHVsZWRCYWNrZ3JvdW5kSm9iRm9yQ29uZmlndXJhdGlvbih7Y29uZmlndXJhdGlvbiwgc2NoZWR1bGVLZXksIC4uLm9wdGlvbnN9KVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cGVkaXRlcyBhIGZ1dHVyZSBxdWV1ZWQgb3duZXIgd2l0aG91dCBjcmVhdGluZyBhbm90aGVyIGpvYi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVkdWxlS2V5IC0gU3RhYmxlIGxvZ2ljYWwgc2NoZWR1bGUga2V5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JXYWtlUmVzdWx0Pn0gLSBXYWtlIHJlc3VsdC5cbiAgICovXG4gIHN0YXRpYyBhc3luYyB3YWtlU2NoZWR1bGVkKHNjaGVkdWxlS2V5KSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IGNvbmZpZ3VyYXRpb25SZXNvbHZlcigpXG5cbiAgICByZXR1cm4gYXdhaXQgd2FrZVNjaGVkdWxlZEJhY2tncm91bmRKb2JGb3JDb25maWd1cmF0aW9uKHtjb25maWd1cmF0aW9uLCBzY2hlZHVsZUtleX0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -52,22 +52,37 @@ export default class LocalBackgroundJobsAdapter extends BackgroundJobsAdapter {
|
|
|
52
52
|
options?: import("./types.js").BackgroundJobOptions;
|
|
53
53
|
}): Promise<string>;
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @param {string}
|
|
57
|
-
* @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} -
|
|
55
|
+
* Cancels or detaches the current owner of a stable schedule key.
|
|
56
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
57
|
+
* @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
|
|
58
58
|
*/
|
|
59
|
-
cancelScheduled(
|
|
59
|
+
cancelScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobCancellationResult>;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
* @param {{scheduleKey: string, jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}}
|
|
63
|
-
* @returns {Promise<import("./types.js").BackgroundJobReplacementResult>} -
|
|
61
|
+
* Replaces the current owner of a stable schedule key.
|
|
62
|
+
* @param {{scheduleKey: string, jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}} args - Replacement request.
|
|
63
|
+
* @returns {Promise<import("./types.js").BackgroundJobReplacementResult>} - Replacement result.
|
|
64
64
|
*/
|
|
65
|
-
replaceScheduled(
|
|
65
|
+
replaceScheduled(args: {
|
|
66
66
|
scheduleKey: string;
|
|
67
67
|
jobName: string;
|
|
68
68
|
args: Array<ReturnType<typeof JSON.parse>>;
|
|
69
69
|
options?: import("./types.js").BackgroundJobOptions;
|
|
70
70
|
}): Promise<import("./types.js").BackgroundJobReplacementResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Reads stable ownership and optional terminal history.
|
|
73
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
74
|
+
* @param {{includeLatestTerminal?: boolean}} [options] - Lookup options.
|
|
75
|
+
* @returns {Promise<import("./types.js").BackgroundJobScheduledLookupResult>} - Normalized local jobs.
|
|
76
|
+
*/
|
|
77
|
+
getScheduledJob(scheduleKey: string, options?: {
|
|
78
|
+
includeLatestTerminal?: boolean;
|
|
79
|
+
}): Promise<import("./types.js").BackgroundJobScheduledLookupResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Makes a future queued stable owner due without replacing it.
|
|
82
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
83
|
+
* @returns {Promise<import("./types.js").BackgroundJobWakeResult>} - Exact wake result.
|
|
84
|
+
*/
|
|
85
|
+
wakeScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobWakeResult>;
|
|
71
86
|
/**
|
|
72
87
|
* Finds the next eligible local job.
|
|
73
88
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next eligible job.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/local-adapter.js"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,MAAM,cAAc,CAAA;AAChD,OAAO,6BAA6B,MAAM,uBAAuB,CAAA;AACjE,OAAO,0BAA0B,MAAM,yBAAyB,CAAA;AAChE,OAAO,wBAAoD,MAAM,kBAAkB,CAAA;AAEnF,wEAAwE;AACxE,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,qBAAqB;IAUpE,KAAK;IACL,aAAa;IACb,QAAQ;IACR,KAAK;IAML,UAAU;IAlBjB;;;;;;OAMG;IACH,YAAY,EAAC,aAAa,EAAE,KAAkC,EAAE,kBAAkB,EAAC,EAJhF;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO,CAC7C;QAA6D,KAAK,AAAlE,CACA,EADQ,OAAO,YAAY,EAAE,wBAAwB,CACrD;QAAsB,kBAAkB,AAAxC,CACF,EADU,MAAM,CAChB;KACkF,EAYlF;IAED;;;OAGG;IACG,WAAW,IAFJ,OAAO,CAAC,IAAI,CAAC,CAE2B;IAErD;;;OAGG;IACG,KAAK,IAFE,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED;;;OAGG;IACG,MAAM,IAFC,OAAO,CAAC,OAAO,YAAY,EAAE,oBAAoB,CAAC,CAEH;IAE5D;;;OAGG;IACG,yBAAyB,IAFlB,OAAO,CAAC,IAAI,CAAC,CAEwD;IAElF;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAHP;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,YAAY,EAAE,oBAAoB,CAAA;KAG1G,GAFL,OAAO,CAAC,MAAM,CAAC,CAM3B;IAED;;;;OAIG;IACG,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"local-adapter.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/local-adapter.js"],"names":[],"mappings":"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"}
|
|
@@ -59,17 +59,43 @@ export default class LocalBackgroundJobsAdapter extends BackgroundJobsAdapter {
|
|
|
59
59
|
return await this.store.enqueue(args);
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
63
|
-
* @param {string}
|
|
64
|
-
* @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} -
|
|
62
|
+
* Cancels or detaches the current owner of a stable schedule key.
|
|
63
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
64
|
+
* @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
|
|
65
65
|
*/
|
|
66
|
-
async cancelScheduled(
|
|
66
|
+
async cancelScheduled(scheduleKey) {
|
|
67
|
+
await this.ensureReady();
|
|
68
|
+
return await this.store.cancelScheduled(scheduleKey);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Replaces the current owner of a stable schedule key.
|
|
72
|
+
* @param {{scheduleKey: string, jobName: string, args: Array<ReturnType<typeof JSON.parse>>, options?: import("./types.js").BackgroundJobOptions}} args - Replacement request.
|
|
73
|
+
* @returns {Promise<import("./types.js").BackgroundJobReplacementResult>} - Replacement result.
|
|
74
|
+
*/
|
|
75
|
+
async replaceScheduled(args) {
|
|
76
|
+
await this.ensureReady();
|
|
77
|
+
this.registry.resolve(args.jobName);
|
|
78
|
+
return await this.store.replaceScheduled(args);
|
|
79
|
+
}
|
|
67
80
|
/**
|
|
68
|
-
*
|
|
69
|
-
* @param {
|
|
70
|
-
* @
|
|
81
|
+
* Reads stable ownership and optional terminal history.
|
|
82
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
83
|
+
* @param {{includeLatestTerminal?: boolean}} [options] - Lookup options.
|
|
84
|
+
* @returns {Promise<import("./types.js").BackgroundJobScheduledLookupResult>} - Normalized local jobs.
|
|
71
85
|
*/
|
|
72
|
-
async
|
|
86
|
+
async getScheduledJob(scheduleKey, options) {
|
|
87
|
+
await this.ensureReady();
|
|
88
|
+
return await this.store.getScheduledJob(scheduleKey, options);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Makes a future queued stable owner due without replacing it.
|
|
92
|
+
* @param {string} scheduleKey - Stable schedule key.
|
|
93
|
+
* @returns {Promise<import("./types.js").BackgroundJobWakeResult>} - Exact wake result.
|
|
94
|
+
*/
|
|
95
|
+
async wakeScheduled(scheduleKey) {
|
|
96
|
+
await this.ensureReady();
|
|
97
|
+
return await this.store.wakeScheduled(scheduleKey);
|
|
98
|
+
}
|
|
73
99
|
/**
|
|
74
100
|
* Finds the next eligible local job.
|
|
75
101
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Next eligible job.
|
|
@@ -144,4 +170,4 @@ export default class LocalBackgroundJobsAdapter extends BackgroundJobsAdapter {
|
|
|
144
170
|
*/
|
|
145
171
|
async waitForIdle() { await this.dispatcher.waitForIdle(); }
|
|
146
172
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvbG9jYWwtYWRhcHRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxxQkFBcUIsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyw2QkFBNkIsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLDBCQUEwQixNQUFNLHlCQUF5QixDQUFBO0FBQ2hFLE9BQU8sd0JBQXdCLEVBQUUsRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRW5GLHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEyQixTQUFRLHFCQUFxQjtJQUMzRTs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLEtBQUssR0FBRyx3QkFBd0IsRUFBRSxFQUFFLGtCQUFrQixFQUFDO1FBQ2pGLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixDQUFDLEVBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRSxFQUFDLENBQUMsQ0FBQTtRQUNyRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksd0JBQXdCLENBQUM7WUFDeEMsS0FBSztZQUNMLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7U0FDakQsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDZCQUE2QixDQUFDLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxD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QUFpQixDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVqRjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUU3RTs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVuRTs7O09BR0c7SUFDSCxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFFakM7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsS0FBSyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUEsQ0FBQyxDQUFDO0NBQzVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIgZnJvbSBcIi4vYWRhcHRlci5qc1wiXG5pbXBvcnQgTG9jYWxCYWNrZ3JvdW5kSm9ic0Rpc3BhdGNoZXIgZnJvbSBcIi4vbG9jYWwtZGlzcGF0Y2hlci5qc1wiXG5pbXBvcnQgTG9jYWxCYWNrZ3JvdW5kSm9iUmVnaXN0cnkgZnJvbSBcIi4vbG9jYWwtam9iLXJlZ2lzdHJ5LmpzXCJcbmltcG9ydCBMb2NhbEJhY2tncm91bmRKb2JzU3RvcmUsIHtsb2NhbEJhY2tncm91bmRKb2JzQ2xvY2t9IGZyb20gXCIuL2xvY2FsLXN0b3JlLmpzXCJcblxuLyoqIER1cmFibGUgbG9jYWwgU1FMaXRlIGFkYXB0ZXIgd2l0aCBhbiBvd25lZCBpbi1wcm9jZXNzIGRpc3BhdGNoZXIuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NhbEJhY2tncm91bmRKb2JzQWRhcHRlciBleHRlbmRzIEJhY2tncm91bmRKb2JzQWRhcHRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbG9jYWwgYWRhcHRlciBmb3Igb25lIGNvbmZpZ3VyYXRpb24gYW5kIGRhdGFiYXNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFkYXB0ZXIgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIE93bmluZyBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuTG9jYWxCYWNrZ3JvdW5kSm9ic0Nsb2NrfSBbYXJncy5jbG9ja10gLSBJbmplY3RhYmxlIGNsb2NrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZGF0YWJhc2VJZGVudGlmaWVyXSAtIExvY2FsIGRhdGFiYXNlIGlkZW50aWZpZXIuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgY2xvY2sgPSBsb2NhbEJhY2tncm91bmRKb2JzQ2xvY2soKSwgZGF0YWJhc2VJZGVudGlmaWVyfSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmNsb2NrID0gY2xvY2tcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5yZWdpc3RyeSA9IG5ldyBMb2NhbEJhY2tncm91bmRKb2JSZWdpc3RyeSh7am9iQ2xhc3NlczogY29uZmlndXJhdGlvbi5nZXRCYWNrZ3JvdW5kSm9iQ2xhc3NlcygpfSlcbiAgICB0aGlzLnN0b3JlID0gbmV3IExvY2FsQmFja2dyb3VuZEpvYnNTdG9yZSh7XG4gICAgICBjbG9jayxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBkYXRhYmFzZUlkZW50aWZpZXIsXG4gICAgICBvbkNvbW1pdHRlZEVucXVldWU6ICgpID0+IHRoaXMuZGlzcGF0Y2hlci53YWtlKClcbiAgICB9KVxuICAgIHRoaXMuZGlzcGF0Y2hlciA9IG5ldyBMb2NhbEJhY2tncm91bmRKb2JzRGlzcGF0Y2hlcih7Y2xvY2ssIGNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5OiB0aGlzLnJlZ2lzdHJ5LCBzdG9yZTogdGhpcy5zdG9yZX0pXG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IGxvY2FsIHBlcnNpc3RlbmNlIGFuZCBkaXNwYXRjaCBhcmUgcmVhZHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gbG9jYWwgZGlzcGF0Y2ggaXMgcmVhZHkuXG4gICAqL1xuICBhc3luYyBlbnN1cmVSZWFkeSgpIHsgYXdhaXQgdGhpcy5kaXNwYXRjaGVyLnN0YXJ0KCkgfVxuXG4gIC8qKlxuICAgKiBTdG9wcyBsb2NhbCBkaXNwYXRjaCBncmFjZWZ1bGx5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciBncmFjZWZ1bCBsb2NhbCBzaHV0ZG93bi5cbiAgICovXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hlci5zdG9wKClcbiAgICB0aGlzLnN0b3JlLnJlc2V0UmVhZGluZXNzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBvcnRzIGxvY2FsIGRpc3BhdGNoZXIgaGVhbHRoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JzSGVhbHRoPn0gLSBMb2NhbCBhZGFwdGVyIGhlYWx0aC5cbiAgICovXG4gIGFzeW5jIGhlYWx0aCgpIHsgcmV0dXJuIHtyZWFkeTogdGhpcy5kaXNwYXRjaGVyLmlzUmVhZHkoKX0gfVxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIGNvbmZpZ3VyYXRpb24tZGVyaXZlZCBxdWV1ZSBjb25jdXJyZW5jeSBjYXBzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciBxdWV1ZSBjYXAgcmVjb25jaWxpYXRpb24uXG4gICAqL1xuICBhc3luYyByZWNvbmNpbGVRdWV1ZUNvbmN1cnJlbmN5KCkgeyBhd2FpdCB0aGlzLnN0b3JlLnJlY29uY2lsZVF1ZXVlQ29uY3VycmVuY3koKSB9XG5cbiAgLyoqXG4gICAqIEVucXVldWVzIG9uZSBzdGF0aWNhbGx5IHJlZ2lzdGVyZWQgbG9jYWwgam9iLlxuICAgKiBAcGFyYW0ge3tqb2JOYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9fSBhcmdzIC0gRW5xdWV1ZSByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIER1cmFibGUgbG9jYWwgam9iIGlkLlxuICAgKi9cbiAgYXN5bmMgZW5xdWV1ZShhcmdzKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVSZWFkeSgpXG4gICAgdGhpcy5yZWdpc3RyeS5yZXNvbHZlKGFyZ3Muam9iTmFtZSlcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5lbnF1ZXVlKGFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogUmVqZWN0cyBzdGFibGUta2V5IGNhbmNlbGxhdGlvbiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgbG9jYWwgYWRhcHRlciBjb250cmFjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9zY2hlZHVsZUtleSAtIFVuc3VwcG9ydGVkIHN0YWJsZSBrZXkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvblJlc3VsdD59IC0gTmV2ZXIgcmVzb2x2ZXMuXG4gICAqL1xuICBhc3luYyBjYW5jZWxTY2hlZHVsZWQoX3NjaGVkdWxlS2V5KSB7IHRocm93IG5ldyBFcnJvcihcImNhbmNlbFNjaGVkdWxlZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsb2NhbCBiYWNrZ3JvdW5kLWpvYnMgYWRhcHRlclwiKSB9XG5cbiAgLyoqXG4gICAqIFJlamVjdHMgc3RhYmxlLWtleSByZXBsYWNlbWVudCwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgbG9jYWwgYWRhcHRlciBjb250cmFjdC5cbiAgICogQHBhcmFtIHt7c2NoZWR1bGVLZXk6IHN0cmluZywgam9iTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfX0gX2FyZ3MgLSBVbnN1cHBvcnRlZCByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSZXBsYWNlbWVudFJlc3VsdD59IC0gTmV2ZXIgcmVzb2x2ZXMuXG4gICAqL1xuICBhc3luYyByZXBsYWNlU2NoZWR1bGVkKF9hcmdzKSB7IHRocm93IG5ldyBFcnJvcihcInJlcGxhY2VTY2hlZHVsZWQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbG9jYWwgYmFja2dyb3VuZC1qb2JzIGFkYXB0ZXJcIikgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgbmV4dCBlbGlnaWJsZSBsb2NhbCBqb2IuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvdyB8IG51bGw+fSAtIE5leHQgZWxpZ2libGUgam9iLlxuICAgKi9cbiAgYXN5bmMgbmV4dEF2YWlsYWJsZUpvYigpIHsgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUubmV4dEF2YWlsYWJsZUpvYigpIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIG5leHQgZnV0dXJlIGxvY2FsIGpvYi5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93IHwgbnVsbD59IC0gTmV4dCBmdXR1cmUgam9iLlxuICAgKi9cbiAgYXN5bmMgbmV4dFNjaGVkdWxlZEpvYigpIHsgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUubmV4dFNjaGVkdWxlZEpvYigpIH1cblxuICAvKipcbiAgICogRmluZHMgYSBsb2NhbCBqb2IgYnkgaWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JJZCAtIEpvYiBpZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93IHwgbnVsbD59IC0gUGVyc2lzdGVkIGpvYi5cbiAgICovXG4gIGFzeW5jIGdldEpvYihqb2JJZCkgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5nZXRKb2Ioam9iSWQpIH1cblxuICAvKipcbiAgICogTGlzdHMgbG9jYWwgam9icyBpbiBpbnNlcnRpb24gb3JkZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvd1tdPn0gLSBMb2NhbCBqb2JzLlxuICAgKi9cbiAgYXN5bmMgbGlzdEpvYnMoKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLmxpc3RKb2JzKCkgfVxuXG4gIC8qKlxuICAgKiBDbGFpbXMgb25lIHF1ZXVlZCBsb2NhbCBqb2IuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iSGFuZG9mZlJlcXVlc3R9IGFyZ3MgLSBDbGFpbSByZXF1ZXN0LiBBIHN1cHBsaWVkIGhhbmRvZmYgaWQgaXMgcGVyc2lzdGVkIGV4YWN0bHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkhhbmRvZmYgfCBudWxsPn0gLSBIYW5kb2ZmLlxuICAgKi9cbiAgYXN5bmMgbWFya0hhbmRlZE9mZihhcmdzKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLm1hcmtIYW5kZWRPZmYoYXJncykgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhY3RpdmUgbG9jYWwgaGFuZG9mZnMgb3duZWQgYnkgb25lIHdvcmtlci5cbiAgICogQHBhcmFtIHt7d29ya2VySWQ6IHN0cmluZ319IGFyZ3MgLSBXb3JrZXIgaWRlbnRpdHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PHtqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ6IHN0cmluZ30+Pn0gLSBBY3RpdmUgd29ya2VyIGhhbmRvZmZzLlxuICAgKi9cbiAgYXN5bmMgaGFuZGVkT2ZmSm9ic0ZvcldvcmtlcihhcmdzKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLmhhbmRlZE9mZkpvYnNGb3JXb3JrZXIoYXJncykgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4YWN0IGFjdGl2ZSBsb2NhbCBoYW5kb2ZmIHRvIHRoZSBxdWV1ZS5cbiAgICogQHBhcmFtIHt7am9iSWQ6IHN0cmluZywgaGFuZG9mZklkOiBzdHJpbmd9fSBhcmdzIC0gSGFuZG9mZiByZWxlYXNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciB0aGUgZmVuY2VkIHJlbGVhc2UuXG4gICAqL1xuICBhc3luYyBtYXJrUmV0dXJuZWRUb1F1ZXVlKGFyZ3MpIHsgYXdhaXQgdGhpcy5zdG9yZS5tYXJrUmV0dXJuZWRUb1F1ZXVlKGFyZ3MpIH1cblxuICAvKipcbiAgICogQWNrbm93bGVkZ2VzIHN1Y2Nlc3NmdWwgbG9jYWwgam9iIGNvbXBsZXRpb24uXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGhhbmRvZmZJZD86IHN0cmluZ319IGFyZ3MgLSBDb21wbGV0aW9uIHJlcG9ydC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciBhY2NlcHRlZC5cbiAgICovXG4gIGFzeW5jIG1hcmtDb21wbGV0ZWQoYXJncykgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5tYXJrQ29tcGxldGVkKGFyZ3MpIH1cblxuICAvKipcbiAgICogUmVjb3JkcyBwb29sZWQtY2hpbGQgYWNjZXB0YW5jZSBldmlkZW5jZSBmb3IgYSBsb2NhbCBoYW5kb2ZmLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHJlY2VpdmVkQXRNcz86IG51bWJlciwgc3RhcnRlZEF0TXM/OiBudW1iZXIsIGNoaWxkSW5zdGFuY2VJZD86IHN0cmluZywgY2hpbGRQaWQ/OiBudW1iZXJ9fSBhcmdzIC0gQWNjZXB0YW5jZSByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgYWNjZXB0ZWQuXG4gICAqL1xuICBhc3luYyBtYXJrQ2hpbGRBY2NlcHRlZChhcmdzKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLm1hcmtDaGlsZEFjY2VwdGVkKGFyZ3MpIH1cblxuICAvKipcbiAgICogQWNrbm93bGVkZ2VzIGFuIGV4cGxpY2l0IGxvY2FsIHJlc2NoZWR1bGUuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGRlbGF5TXM6IG51bWJlciwgaGFuZG9mZklkPzogc3RyaW5nfX0gYXJncyAtIFJlc2NoZWR1bGUgcmVwb3J0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIGFjY2VwdGVkLlxuICAgKi9cbiAgYXN5bmMgbWFya1Jlc2NoZWR1bGVkKGFyZ3MpIHsgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUubWFya1Jlc2NoZWR1bGVkKGFyZ3MpIH1cblxuICAvKipcbiAgICogQWNrbm93bGVkZ2VzIGEgZmFpbGVkIGxvY2FsIHBlcmZvcm1hbmNlLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBlcnJvcjogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGhhbmRvZmZJZD86IHN0cmluZ319IGFyZ3MgLSBGYWlsdXJlIHJlcG9ydC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93IHwgbnVsbD59IC0gVHJhbnNpdGlvbi5cbiAgICovXG4gIGFzeW5jIG1hcmtGYWlsZWQoYXJncykgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5tYXJrRmFpbGVkKGFyZ3MpIH1cblxuICAvKipcbiAgICogQ29hbGVzY2VzIGEgZGlzcGF0Y2hlciB3YWtlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICB3YWtlKCkgeyB0aGlzLmRpc3BhdGNoZXIud2FrZSgpIH1cblxuICAvKipcbiAgICogV2FpdHMgdW50aWwgY3VycmVudCBsb2NhbCB3b3JrIGhhcyBiZWVuIGFja25vd2xlZGdlZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgYWxsIGN1cnJlbnQgd29yayBpcyBhY2tub3dsZWRnZWQuXG4gICAqL1xuICBhc3luYyB3YWl0Rm9ySWRsZSgpIHsgYXdhaXQgdGhpcy5kaXNwYXRjaGVyLndhaXRGb3JJZGxlKCkgfVxufVxuIl19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvbG9jYWwtYWRhcHRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxxQkFBcUIsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyw2QkFBNkIsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLDBCQUEwQixNQUFNLHlCQUF5QixDQUFBO0FBQ2hFLE9BQU8sd0JBQXdCLEVBQUUsRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRW5GLHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEyQixTQUFRLHFCQUFxQjtJQUMzRTs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLEtBQUssR0FBRyx3QkFBd0IsRUFBRSxFQUFFLGtCQUFrQixFQUFDO1FBQ2pGLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixDQUFDLEVBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRSxFQUFDLENBQUMsQ0FBQTtRQUNyRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksd0JBQXdCLENBQUM7WUFDeEMsS0FBSztZQUNMLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7U0FDakQsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDZCQUE2QixDQUFDLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxD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RUFBRSxDQUFBLENBQUMsQ0FBQztDQUM1RCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFja2dyb3VuZEpvYnNBZGFwdGVyIGZyb20gXCIuL2FkYXB0ZXIuanNcIlxuaW1wb3J0IExvY2FsQmFja2dyb3VuZEpvYnNEaXNwYXRjaGVyIGZyb20gXCIuL2xvY2FsLWRpc3BhdGNoZXIuanNcIlxuaW1wb3J0IExvY2FsQmFja2dyb3VuZEpvYlJlZ2lzdHJ5IGZyb20gXCIuL2xvY2FsLWpvYi1yZWdpc3RyeS5qc1wiXG5pbXBvcnQgTG9jYWxCYWNrZ3JvdW5kSm9ic1N0b3JlLCB7bG9jYWxCYWNrZ3JvdW5kSm9ic0Nsb2NrfSBmcm9tIFwiLi9sb2NhbC1zdG9yZS5qc1wiXG5cbi8qKiBEdXJhYmxlIGxvY2FsIFNRTGl0ZSBhZGFwdGVyIHdpdGggYW4gb3duZWQgaW4tcHJvY2VzcyBkaXNwYXRjaGVyLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9jYWxCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIgZXh0ZW5kcyBCYWNrZ3JvdW5kSm9ic0FkYXB0ZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGxvY2FsIGFkYXB0ZXIgZm9yIG9uZSBjb25maWd1cmF0aW9uIGFuZCBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBZGFwdGVyIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBPd25pbmcgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkxvY2FsQmFja2dyb3VuZEpvYnNDbG9ja30gW2FyZ3MuY2xvY2tdIC0gSW5qZWN0YWJsZSBjbG9jay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmRhdGFiYXNlSWRlbnRpZmllcl0gLSBMb2NhbCBkYXRhYmFzZSBpZGVudGlmaWVyLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIGNsb2NrID0gbG9jYWxCYWNrZ3JvdW5kSm9ic0Nsb2NrKCksIGRhdGFiYXNlSWRlbnRpZmllcn0pIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jbG9jayA9IGNsb2NrXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgTG9jYWxCYWNrZ3JvdW5kSm9iUmVnaXN0cnkoe2pvYkNsYXNzZXM6IGNvbmZpZ3VyYXRpb24uZ2V0QmFja2dyb3VuZEpvYkNsYXNzZXMoKX0pXG4gICAgdGhpcy5zdG9yZSA9IG5ldyBMb2NhbEJhY2tncm91bmRKb2JzU3RvcmUoe1xuICAgICAgY2xvY2ssXG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgZGF0YWJhc2VJZGVudGlmaWVyLFxuICAgICAgb25Db21taXR0ZWRFbnF1ZXVlOiAoKSA9PiB0aGlzLmRpc3BhdGNoZXIud2FrZSgpXG4gICAgfSlcbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBuZXcgTG9jYWxCYWNrZ3JvdW5kSm9ic0Rpc3BhdGNoZXIoe2Nsb2NrLCBjb25maWd1cmF0aW9uLCByZWdpc3RyeTogdGhpcy5yZWdpc3RyeSwgc3RvcmU6IHRoaXMuc3RvcmV9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhhdCBsb2NhbCBwZXJzaXN0ZW5jZSBhbmQgZGlzcGF0Y2ggYXJlIHJlYWR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGxvY2FsIGRpc3BhdGNoIGlzIHJlYWR5LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlUmVhZHkoKSB7IGF3YWl0IHRoaXMuZGlzcGF0Y2hlci5zdGFydCgpIH1cblxuICAvKipcbiAgICogU3RvcHMgbG9jYWwgZGlzcGF0Y2ggZ3JhY2VmdWxseS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgZ3JhY2VmdWwgbG9jYWwgc2h1dGRvd24uXG4gICAqL1xuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmRpc3BhdGNoZXIuc3RvcCgpXG4gICAgdGhpcy5zdG9yZS5yZXNldFJlYWRpbmVzcygpXG4gIH1cblxuICAvKipcbiAgICogUmVwb3J0cyBsb2NhbCBkaXNwYXRjaGVyIGhlYWx0aC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9ic0hlYWx0aD59IC0gTG9jYWwgYWRhcHRlciBoZWFsdGguXG4gICAqL1xuICBhc3luYyBoZWFsdGgoKSB7IHJldHVybiB7cmVhZHk6IHRoaXMuZGlzcGF0Y2hlci5pc1JlYWR5KCl9IH1cblxuICAvKipcbiAgICogUmVjb25jaWxlcyBjb25maWd1cmF0aW9uLWRlcml2ZWQgcXVldWUgY29uY3VycmVuY3kgY2Fwcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgcXVldWUgY2FwIHJlY29uY2lsaWF0aW9uLlxuICAgKi9cbiAgYXN5bmMgcmVjb25jaWxlUXVldWVDb25jdXJyZW5jeSgpIHsgYXdhaXQgdGhpcy5zdG9yZS5yZWNvbmNpbGVRdWV1ZUNvbmN1cnJlbmN5KCkgfVxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBvbmUgc3RhdGljYWxseSByZWdpc3RlcmVkIGxvY2FsIGpvYi5cbiAgICogQHBhcmFtIHt7am9iTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JPcHRpb25zfX0gYXJncyAtIEVucXVldWUgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gLSBEdXJhYmxlIGxvY2FsIGpvYiBpZC5cbiAgICovXG4gIGFzeW5jIGVucXVldWUoYXJncykge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuICAgIHRoaXMucmVnaXN0cnkucmVzb2x2ZShhcmdzLmpvYk5hbWUpXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUuZW5xdWV1ZShhcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgb3IgZGV0YWNoZXMgdGhlIGN1cnJlbnQgb3duZXIgb2YgYSBzdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NoZWR1bGVLZXkgLSBTdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JDYW5jZWxsYXRpb25SZXN1bHQ+fSAtIENhbmNlbGxhdGlvbiByZXN1bHQuXG4gICAqL1xuICBhc3luYyBjYW5jZWxTY2hlZHVsZWQoc2NoZWR1bGVLZXkpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVJlYWR5KClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5jYW5jZWxTY2hlZHVsZWQoc2NoZWR1bGVLZXkpXG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIGN1cnJlbnQgb3duZXIgb2YgYSBzdGFibGUgc2NoZWR1bGUga2V5LlxuICAgKiBAcGFyYW0ge3tzY2hlZHVsZUtleTogc3RyaW5nLCBqb2JOYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9fSBhcmdzIC0gUmVwbGFjZW1lbnQgcmVxdWVzdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRSZXN1bHQ+fSAtIFJlcGxhY2VtZW50IHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHJlcGxhY2VTY2hlZHVsZWQoYXJncykge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuICAgIHRoaXMucmVnaXN0cnkucmVzb2x2ZShhcmdzLmpvYk5hbWUpXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUucmVwbGFjZVNjaGVkdWxlZChhcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHN0YWJsZSBvd25lcnNoaXAgYW5kIG9wdGlvbmFsIHRlcm1pbmFsIGhpc3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlZHVsZUtleSAtIFN0YWJsZSBzY2hlZHVsZSBrZXkuXG4gICAqIEBwYXJhbSB7e2luY2x1ZGVMYXRlc3RUZXJtaW5hbD86IGJvb2xlYW59fSBbb3B0aW9uc10gLSBMb29rdXAgb3B0aW9ucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iU2NoZWR1bGVkTG9va3VwUmVzdWx0Pn0gLSBOb3JtYWxpemVkIGxvY2FsIGpvYnMuXG4gICAqL1xuICBhc3luYyBnZXRTY2hlZHVsZWRKb2Ioc2NoZWR1bGVLZXksIG9wdGlvbnMpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVJlYWR5KClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5nZXRTY2hlZHVsZWRKb2Ioc2NoZWR1bGVLZXksIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgYSBmdXR1cmUgcXVldWVkIHN0YWJsZSBvd25lciBkdWUgd2l0aG91dCByZXBsYWNpbmcgaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlZHVsZUtleSAtIFN0YWJsZSBzY2hlZHVsZSBrZXkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYldha2VSZXN1bHQ+fSAtIEV4YWN0IHdha2UgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgd2FrZVNjaGVkdWxlZChzY2hlZHVsZUtleSkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLndha2VTY2hlZHVsZWQoc2NoZWR1bGVLZXkpXG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIG5leHQgZWxpZ2libGUgbG9jYWwgam9iLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3cgfCBudWxsPn0gLSBOZXh0IGVsaWdpYmxlIGpvYi5cbiAgICovXG4gIGFzeW5jIG5leHRBdmFpbGFibGVKb2IoKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLm5leHRBdmFpbGFibGVKb2IoKSB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBuZXh0IGZ1dHVyZSBsb2NhbCBqb2IuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvdyB8IG51bGw+fSAtIE5leHQgZnV0dXJlIGpvYi5cbiAgICovXG4gIGFzeW5jIG5leHRTY2hlZHVsZWRKb2IoKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLm5leHRTY2hlZHVsZWRKb2IoKSB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGEgbG9jYWwgam9iIGJ5IGlkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9iSWQgLSBKb2IgaWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvdyB8IG51bGw+fSAtIFBlcnNpc3RlZCBqb2IuXG4gICAqL1xuICBhc3luYyBnZXRKb2Ioam9iSWQpIHsgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUuZ2V0Sm9iKGpvYklkKSB9XG5cbiAgLyoqXG4gICAqIExpc3RzIGxvY2FsIGpvYnMgaW4gaW5zZXJ0aW9uIG9yZGVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3dbXT59IC0gTG9jYWwgam9icy5cbiAgICovXG4gIGFzeW5jIGxpc3RKb2JzKCkgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5saXN0Sm9icygpIH1cblxuICAvKipcbiAgICogQ2xhaW1zIG9uZSBxdWV1ZWQgbG9jYWwgam9iLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYkhhbmRvZmZSZXF1ZXN0fSBhcmdzIC0gQ2xhaW0gcmVxdWVzdC4gQSBzdXBwbGllZCBoYW5kb2ZmIGlkIGlzIHBlcnNpc3RlZCBleGFjdGx5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JIYW5kb2ZmIHwgbnVsbD59IC0gSGFuZG9mZi5cbiAgICovXG4gIGFzeW5jIG1hcmtIYW5kZWRPZmYoYXJncykgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5tYXJrSGFuZGVkT2ZmKGFyZ3MpIH1cblxuICAvKipcbiAgICogRmluZHMgYWN0aXZlIGxvY2FsIGhhbmRvZmZzIG93bmVkIGJ5IG9uZSB3b3JrZXIuXG4gICAqIEBwYXJhbSB7e3dvcmtlcklkOiBzdHJpbmd9fSBhcmdzIC0gV29ya2VyIGlkZW50aXR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTx7am9iSWQ6IHN0cmluZywgaGFuZG9mZklkOiBzdHJpbmd9Pj59IC0gQWN0aXZlIHdvcmtlciBoYW5kb2Zmcy5cbiAgICovXG4gIGFzeW5jIGhhbmRlZE9mZkpvYnNGb3JXb3JrZXIoYXJncykgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5oYW5kZWRPZmZKb2JzRm9yV29ya2VyKGFyZ3MpIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleGFjdCBhY3RpdmUgbG9jYWwgaGFuZG9mZiB0byB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSB7e2pvYklkOiBzdHJpbmcsIGhhbmRvZmZJZDogc3RyaW5nfX0gYXJncyAtIEhhbmRvZmYgcmVsZWFzZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgdGhlIGZlbmNlZCByZWxlYXNlLlxuICAgKi9cbiAgYXN5bmMgbWFya1JldHVybmVkVG9RdWV1ZShhcmdzKSB7IGF3YWl0IHRoaXMuc3RvcmUubWFya1JldHVybmVkVG9RdWV1ZShhcmdzKSB9XG5cbiAgLyoqXG4gICAqIEFja25vd2xlZGdlcyBzdWNjZXNzZnVsIGxvY2FsIGpvYiBjb21wbGV0aW9uLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ/OiBzdHJpbmd9fSBhcmdzIC0gQ29tcGxldGlvbiByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgYWNjZXB0ZWQuXG4gICAqL1xuICBhc3luYyBtYXJrQ29tcGxldGVkKGFyZ3MpIHsgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUubWFya0NvbXBsZXRlZChhcmdzKSB9XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgcG9vbGVkLWNoaWxkIGFjY2VwdGFuY2UgZXZpZGVuY2UgZm9yIGEgbG9jYWwgaGFuZG9mZi5cbiAgICogQHBhcmFtIHt7am9iSWQ6IHN0cmluZywgaGFuZG9mZklkPzogc3RyaW5nLCByZWNlaXZlZEF0TXM/OiBudW1iZXIsIHN0YXJ0ZWRBdE1zPzogbnVtYmVyLCBjaGlsZEluc3RhbmNlSWQ/OiBzdHJpbmcsIGNoaWxkUGlkPzogbnVtYmVyfX0gYXJncyAtIEFjY2VwdGFuY2UgcmVwb3J0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIGFjY2VwdGVkLlxuICAgKi9cbiAgYXN5bmMgbWFya0NoaWxkQWNjZXB0ZWQoYXJncykgeyByZXR1cm4gYXdhaXQgdGhpcy5zdG9yZS5tYXJrQ2hpbGRBY2NlcHRlZChhcmdzKSB9XG5cbiAgLyoqXG4gICAqIEFja25vd2xlZGdlcyBhbiBleHBsaWNpdCBsb2NhbCByZXNjaGVkdWxlLlxuICAgKiBAcGFyYW0ge3tqb2JJZDogc3RyaW5nLCBkZWxheU1zOiBudW1iZXIsIGhhbmRvZmZJZD86IHN0cmluZ319IGFyZ3MgLSBSZXNjaGVkdWxlIHJlcG9ydC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciBhY2NlcHRlZC5cbiAgICovXG4gIGFzeW5jIG1hcmtSZXNjaGVkdWxlZChhcmdzKSB7IHJldHVybiBhd2FpdCB0aGlzLnN0b3JlLm1hcmtSZXNjaGVkdWxlZChhcmdzKSB9XG5cbiAgLyoqXG4gICAqIEFja25vd2xlZGdlcyBhIGZhaWxlZCBsb2NhbCBwZXJmb3JtYW5jZS5cbiAgICogQHBhcmFtIHt7am9iSWQ6IHN0cmluZywgZXJyb3I6IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCBoYW5kb2ZmSWQ/OiBzdHJpbmd9fSBhcmdzIC0gRmFpbHVyZSByZXBvcnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvdyB8IG51bGw+fSAtIFRyYW5zaXRpb24uXG4gICAqL1xuICBhc3luYyBtYXJrRmFpbGVkKGFyZ3MpIHsgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUubWFya0ZhaWxlZChhcmdzKSB9XG5cbiAgLyoqXG4gICAqIENvYWxlc2NlcyBhIGRpc3BhdGNoZXIgd2FrZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgd2FrZSgpIHsgdGhpcy5kaXNwYXRjaGVyLndha2UoKSB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIHVudGlsIGN1cnJlbnQgbG9jYWwgd29yayBoYXMgYmVlbiBhY2tub3dsZWRnZWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIGFsbCBjdXJyZW50IHdvcmsgaXMgYWNrbm93bGVkZ2VkLlxuICAgKi9cbiAgYXN5bmMgd2FpdEZvcklkbGUoKSB7IGF3YWl0IHRoaXMuZGlzcGF0Y2hlci53YWl0Rm9ySWRsZSgpIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import TableData from "../database/table-data/index.js";
|
|
2
2
|
export declare const LOCAL_BACKGROUND_JOBS_TABLE = "velocious_local_background_jobs";
|
|
3
3
|
export declare const LOCAL_BACKGROUND_JOB_CONCURRENCY_TABLE = "velocious_local_background_job_concurrency";
|
|
4
|
+
export declare const LOCAL_BACKGROUND_JOB_SCHEDULE_KEYS_TABLE = "velocious_local_background_job_schedule_keys";
|
|
4
5
|
export declare const LOCAL_BACKGROUND_JOBS_INDEX_NAMES: string[];
|
|
6
|
+
export declare const LOCAL_BACKGROUND_JOB_SCHEDULE_KEYS_INDEX_NAMES: string[];
|
|
5
7
|
/**
|
|
6
8
|
* Creates the production clock used by local dispatch.
|
|
7
9
|
* @returns {import("./types.js").LocalBackgroundJobsClock} - Production clock.
|
|
@@ -57,7 +59,8 @@ export default class LocalBackgroundJobsStore {
|
|
|
57
59
|
*/
|
|
58
60
|
_ensureReadyWithDb(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
59
61
|
/**
|
|
60
|
-
* Creates or
|
|
62
|
+
* Creates or upgrades the versioned local tables and indexes without
|
|
63
|
+
* rebuilding persisted queue data.
|
|
61
64
|
* @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
|
|
62
65
|
* @returns {Promise<boolean>} - Whether schema state changed.
|
|
63
66
|
*/
|
|
@@ -85,6 +88,11 @@ export default class LocalBackgroundJobsStore {
|
|
|
85
88
|
* @returns {TableData} - Concurrency counter table definition.
|
|
86
89
|
*/
|
|
87
90
|
_concurrencyTableData(): TableData;
|
|
91
|
+
/**
|
|
92
|
+
* Builds the stable schedule-owner table definition.
|
|
93
|
+
* @returns {TableData} - Stable owner table definition.
|
|
94
|
+
*/
|
|
95
|
+
_scheduleKeysTableData(): TableData;
|
|
88
96
|
/**
|
|
89
97
|
* Rejects an incompatible current-version table rather than rebuilding data.
|
|
90
98
|
* @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
|
|
@@ -102,14 +110,23 @@ export default class LocalBackgroundJobsStore {
|
|
|
102
110
|
/**
|
|
103
111
|
* Checks whether the current local schema version is recorded.
|
|
104
112
|
* @param {import("../database/drivers/base.js").default} db - Connection.
|
|
105
|
-
* @
|
|
113
|
+
* @param {string} version - Local schema version.
|
|
114
|
+
* @returns {Promise<boolean>} - Whether the version is recorded.
|
|
106
115
|
*/
|
|
107
|
-
_hasMigration(db: import("../database/drivers/base.js").default): Promise<boolean>;
|
|
116
|
+
_hasMigration(db: import("../database/drivers/base.js").default, version: string): Promise<boolean>;
|
|
117
|
+
/**
|
|
118
|
+
* Records one local schema version after its additive changes are present.
|
|
119
|
+
* @param {import("../database/drivers/base.js").default} db - Connection.
|
|
120
|
+
* @param {string} version - Local schema version.
|
|
121
|
+
* @returns {Promise<void>} - Resolves after recording.
|
|
122
|
+
*/
|
|
123
|
+
_recordMigration(db: import("../database/drivers/base.js").default, version: string): Promise<void>;
|
|
108
124
|
/**
|
|
109
125
|
* Builds the scoped migration key.
|
|
126
|
+
* @param {string} version - Local schema version.
|
|
110
127
|
* @returns {string} - Scoped migration key.
|
|
111
128
|
*/
|
|
112
|
-
_migrationKey(): string;
|
|
129
|
+
_migrationKey(version: string): string;
|
|
113
130
|
/**
|
|
114
131
|
* Enqueues a local job in the caller's active transaction when present.
|
|
115
132
|
* @param {object} args - Enqueue request.
|
|
@@ -123,6 +140,43 @@ export default class LocalBackgroundJobsStore {
|
|
|
123
140
|
args: Array<ReturnType<typeof JSON.parse>>;
|
|
124
141
|
options?: import("./types.js").BackgroundJobOptions;
|
|
125
142
|
}): Promise<string>;
|
|
143
|
+
/**
|
|
144
|
+
* Replaces the queued owner of a stable schedule key with a new local job.
|
|
145
|
+
* A handed-off owner remains runnable but is detached from future ownership.
|
|
146
|
+
* @param {object} args - Replacement request.
|
|
147
|
+
* @param {string} args.scheduleKey - Stable logical schedule key.
|
|
148
|
+
* @param {string} args.jobName - Registered job name.
|
|
149
|
+
* @param {Array<ReturnType<typeof JSON.parse>>} args.args - Serialized job arguments.
|
|
150
|
+
* @param {import("./types.js").BackgroundJobOptions} [args.options] - Job options.
|
|
151
|
+
* @returns {Promise<import("./types.js").BackgroundJobReplacementResult>} - Replacement result.
|
|
152
|
+
*/
|
|
153
|
+
replaceScheduled({ scheduleKey, jobName, args, options }: {
|
|
154
|
+
scheduleKey: string;
|
|
155
|
+
jobName: string;
|
|
156
|
+
args: Array<ReturnType<typeof JSON.parse>>;
|
|
157
|
+
options?: import("./types.js").BackgroundJobOptions;
|
|
158
|
+
}): Promise<import("./types.js").BackgroundJobReplacementResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Cancels a queued stable owner or detaches an active handoff truthfully.
|
|
161
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
162
|
+
* @returns {Promise<import("./types.js").BackgroundJobCancellationResult>} - Cancellation result.
|
|
163
|
+
*/
|
|
164
|
+
cancelScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobCancellationResult>;
|
|
165
|
+
/**
|
|
166
|
+
* Reads stable ownership and optional latest terminal history in one transaction.
|
|
167
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
168
|
+
* @param {{includeLatestTerminal?: boolean}} [options] - Lookup options.
|
|
169
|
+
* @returns {Promise<import("./types.js").BackgroundJobScheduledLookupResult>} - Normalized local jobs.
|
|
170
|
+
*/
|
|
171
|
+
getScheduledJob(scheduleKey: string, { includeLatestTerminal }?: {
|
|
172
|
+
includeLatestTerminal?: boolean;
|
|
173
|
+
}): Promise<import("./types.js").BackgroundJobScheduledLookupResult>;
|
|
174
|
+
/**
|
|
175
|
+
* Moves only a future queued stable owner to the current time.
|
|
176
|
+
* @param {string} scheduleKey - Stable logical schedule key.
|
|
177
|
+
* @returns {Promise<import("./types.js").BackgroundJobWakeResult>} - Exact wake outcome.
|
|
178
|
+
*/
|
|
179
|
+
wakeScheduled(scheduleKey: string): Promise<import("./types.js").BackgroundJobWakeResult>;
|
|
126
180
|
/**
|
|
127
181
|
* Serializes matching in-process deduplication checks through commit while
|
|
128
182
|
* leaving unrelated job identities independent.
|
|
@@ -146,9 +200,11 @@ export default class LocalBackgroundJobsStore {
|
|
|
146
200
|
* Inserts one prepared local job row and its concurrency metadata.
|
|
147
201
|
* @param {import("../database/drivers/base.js").default} db - Local SQLite connection.
|
|
148
202
|
* @param {import("./types.js").PreparedLocalBackgroundJob} preparedJob - Prepared row data.
|
|
203
|
+
* @param {string | null} [scheduleKey] - Stable schedule history key.
|
|
204
|
+
* @param {number | null} [scheduleOrder] - Monotonic stable ownership order.
|
|
149
205
|
* @returns {Promise<void>} - Resolves after insertion.
|
|
150
206
|
*/
|
|
151
|
-
_insertPreparedJob(db: import("../database/drivers/base.js").default, preparedJob: import("./types.js").PreparedLocalBackgroundJob): Promise<void>;
|
|
207
|
+
_insertPreparedJob(db: import("../database/drivers/base.js").default, preparedJob: import("./types.js").PreparedLocalBackgroundJob, scheduleKey?: string | null, scheduleOrder?: number | null): Promise<void>;
|
|
152
208
|
/**
|
|
153
209
|
* Reconciles configured queue-derived caps and durable counters.
|
|
154
210
|
* @returns {Promise<void>} - Resolves after reconciliation.
|
|
@@ -344,6 +400,65 @@ export default class LocalBackgroundJobsStore {
|
|
|
344
400
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Persisted row.
|
|
345
401
|
*/
|
|
346
402
|
_getJob(db: import("../database/drivers/base.js").default, jobId: string): Promise<import("./types.js").BackgroundJobRow | null>;
|
|
403
|
+
/**
|
|
404
|
+
* Reads the job currently named by one stable owner row.
|
|
405
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
406
|
+
* @param {string} scheduleKey - Validated stable schedule key.
|
|
407
|
+
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Normalized owner job.
|
|
408
|
+
*/
|
|
409
|
+
_scheduledOwnerJob(db: import("../database/drivers/base.js").default, scheduleKey: string): Promise<import("./types.js").BackgroundJobRow | null>;
|
|
410
|
+
/**
|
|
411
|
+
* Assigns the next ownership order after SQLite write serialization is held.
|
|
412
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
413
|
+
* @param {string} scheduleKey - Validated stable schedule key.
|
|
414
|
+
* @returns {Promise<number>} - Next monotonic ownership order.
|
|
415
|
+
*/
|
|
416
|
+
_nextScheduleOrder(db: import("../database/drivers/base.js").default, scheduleKey: string): Promise<number>;
|
|
417
|
+
/**
|
|
418
|
+
* Builds a stable-schedule lookup exclusively from normalized local jobs.
|
|
419
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
420
|
+
* @param {object} args - Lookup options.
|
|
421
|
+
* @param {boolean} args.includeLatestTerminal - Whether terminal history is requested.
|
|
422
|
+
* @param {string} args.scheduleKey - Validated stable schedule key.
|
|
423
|
+
* @returns {Promise<import("./types.js").BackgroundJobScheduledLookupResult>} - Normalized local jobs.
|
|
424
|
+
*/
|
|
425
|
+
_scheduledJobLookup(db: import("../database/drivers/base.js").default, { includeLatestTerminal, scheduleKey }: {
|
|
426
|
+
includeLatestTerminal: boolean;
|
|
427
|
+
scheduleKey: string;
|
|
428
|
+
}): Promise<import("./types.js").BackgroundJobScheduledLookupResult>;
|
|
429
|
+
/**
|
|
430
|
+
* Releases ownership only when the key still points at the expected job.
|
|
431
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
432
|
+
* @param {object} args - Ownership identity.
|
|
433
|
+
* @param {string | null} args.jobId - Expected owner job id, or null for a dangling owner.
|
|
434
|
+
* @param {string} args.scheduleKey - Stable schedule key.
|
|
435
|
+
* @returns {Promise<void>} - Resolves when deleted or already superseded.
|
|
436
|
+
*/
|
|
437
|
+
_releaseScheduleOwnership(db: import("../database/drivers/base.js").default, { jobId, scheduleKey }: {
|
|
438
|
+
jobId: string | null;
|
|
439
|
+
scheduleKey: string;
|
|
440
|
+
}): Promise<void>;
|
|
441
|
+
/**
|
|
442
|
+
* Releases a terminal job's stable ownership when still current.
|
|
443
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
444
|
+
* @param {import("./types.js").BackgroundJobRow} job - Terminal job.
|
|
445
|
+
* @returns {Promise<void>} - Resolves when deleted or not applicable.
|
|
446
|
+
*/
|
|
447
|
+
_releaseScheduleOwnershipForJob(db: import("../database/drivers/base.js").default, job: import("./types.js").BackgroundJobRow): Promise<void>;
|
|
448
|
+
/**
|
|
449
|
+
* Acquires SQLite's transaction write serialization before reading a stable
|
|
450
|
+
* owner. A zero-row update still establishes the write boundary for a new key.
|
|
451
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
452
|
+
* @param {string} scheduleKey - Validated stable schedule key.
|
|
453
|
+
* @returns {Promise<void>} - Resolves after write serialization is acquired.
|
|
454
|
+
*/
|
|
455
|
+
_lockScheduleKey(db: import("../database/drivers/base.js").default, scheduleKey: string): Promise<void>;
|
|
456
|
+
/**
|
|
457
|
+
* Registers the local dispatch poke on the surrounding transaction commit.
|
|
458
|
+
* @param {import("../database/drivers/base.js").default} db - Transaction connection.
|
|
459
|
+
* @returns {Promise<void>} - Resolves after registration.
|
|
460
|
+
*/
|
|
461
|
+
_wakeDispatcherAfterCommit(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
347
462
|
/**
|
|
348
463
|
* Normalizes one raw local database row.
|
|
349
464
|
* @param {Record<string, ReturnType<typeof JSON.parse>>} row - Raw row.
|