@workflow/core 5.0.0-beta.0 → 5.0.0-beta.10
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 +1 -1
- package/dist/attribute-changes.d.ts +7 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.js +1 -1
- package/dist/capture-stack.d.ts +16 -0
- package/dist/capture-stack.d.ts.map +1 -0
- package/dist/capture-stack.js +21 -0
- package/dist/class-serialization.js +1 -1
- package/dist/classify-error.d.ts +11 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +56 -6
- package/dist/context-errors.d.ts +27 -0
- package/dist/context-errors.d.ts.map +1 -0
- package/dist/context-errors.js +101 -0
- package/dist/context-violation-error.d.ts +97 -0
- package/dist/context-violation-error.d.ts.map +1 -0
- package/dist/context-violation-error.js +147 -0
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +4 -3
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +20 -5
- package/dist/describe-error.d.ts +70 -0
- package/dist/describe-error.d.ts.map +1 -0
- package/dist/describe-error.js +165 -0
- package/dist/encryption.d.ts +22 -1
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +72 -27
- package/dist/events-consumer.d.ts +7 -0
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +18 -3
- package/dist/flushable-stream.d.ts +10 -10
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +18 -13
- package/dist/global.d.ts +4 -0
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +8 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/log-format.d.ts +25 -0
- package/dist/log-format.d.ts.map +1 -0
- package/dist/log-format.js +250 -0
- package/dist/logger.d.ts +28 -30
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +77 -31
- package/dist/private.d.ts +5 -5
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +8 -8
- package/dist/runtime/constants.d.ts +48 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +91 -8
- package/dist/runtime/get-port-lazy.d.ts +10 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -0
- package/dist/runtime/get-port-lazy.js +30 -0
- package/dist/runtime/get-world-lazy.d.ts +32 -0
- package/dist/runtime/get-world-lazy.d.ts.map +1 -0
- package/dist/runtime/get-world-lazy.js +56 -0
- package/dist/runtime/helpers.d.ts +40 -7
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +93 -36
- package/dist/runtime/replay-budget.d.ts +98 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +191 -0
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +5 -4
- package/dist/runtime/run.d.ts +10 -32
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +83 -33
- package/dist/runtime/runs.d.ts +1 -1
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +7 -4
- package/dist/runtime/start.js +17 -6
- package/dist/runtime/step-executor.d.ts +40 -0
- package/dist/runtime/step-executor.d.ts.map +1 -0
- package/dist/runtime/step-executor.js +492 -0
- package/dist/runtime/step-handler.d.ts +0 -5
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +227 -119
- package/dist/runtime/suspension-handler.d.ts +22 -4
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +90 -73
- package/dist/runtime/world-init.d.ts +75 -0
- package/dist/runtime/world-init.d.ts.map +1 -0
- package/dist/runtime/world-init.js +75 -0
- package/dist/runtime/world.d.ts +4 -3
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +98 -9
- package/dist/runtime.d.ts +8 -7
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +810 -324
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/serialization/client.d.ts +17 -0
- package/dist/serialization/client.d.ts.map +1 -0
- package/dist/serialization/client.js +45 -0
- package/dist/serialization/codec-devalue.d.ts +14 -0
- package/dist/serialization/codec-devalue.d.ts.map +1 -0
- package/dist/serialization/codec-devalue.js +98 -0
- package/dist/serialization/codec.d.ts +90 -0
- package/dist/serialization/codec.d.ts.map +1 -0
- package/dist/serialization/codec.js +17 -0
- package/dist/serialization/encryption.d.ts +32 -0
- package/dist/serialization/encryption.d.ts.map +1 -0
- package/dist/serialization/encryption.js +67 -0
- package/dist/serialization/errors.d.ts +34 -0
- package/dist/serialization/errors.d.ts.map +1 -0
- package/dist/serialization/errors.js +59 -0
- package/dist/serialization/format.d.ts +60 -0
- package/dist/serialization/format.d.ts.map +1 -0
- package/dist/serialization/format.js +97 -0
- package/dist/serialization/index.d.ts +18 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +20 -0
- package/dist/serialization/reducers/class.d.ts +11 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -0
- package/dist/serialization/reducers/class.js +68 -0
- package/dist/serialization/reducers/common.d.ts +16 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -0
- package/dist/serialization/reducers/common.js +417 -0
- package/dist/serialization/reducers/step-function.d.ts +35 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function.js +88 -0
- package/dist/serialization/step.d.ts +17 -0
- package/dist/serialization/step.d.ts.map +1 -0
- package/dist/serialization/step.js +45 -0
- package/dist/serialization/types.d.ts +222 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +21 -0
- package/dist/serialization/workflow.d.ts +29 -0
- package/dist/serialization/workflow.d.ts.map +1 -0
- package/dist/serialization/workflow.js +54 -0
- package/dist/serialization-format.d.ts +16 -2
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +104 -5
- package/dist/serialization.d.ts +217 -224
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +940 -643
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +40 -0
- package/dist/sleep.d.ts.map +1 -1
- package/dist/sleep.js +3 -2
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +44 -6
- package/dist/step/context-storage.d.ts +14 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/step/get-closure-vars.d.ts.map +1 -1
- package/dist/step/get-closure-vars.js +3 -2
- package/dist/step/get-step-metadata.d.ts.map +1 -1
- package/dist/step/get-step-metadata.js +3 -2
- package/dist/step/get-workflow-metadata.d.ts.map +1 -1
- package/dist/step/get-workflow-metadata.js +3 -2
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +39 -5
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +97 -19
- package/dist/symbols.d.ts +20 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +21 -1
- package/dist/telemetry/semantic-conventions.d.ts +2 -2
- package/dist/telemetry/semantic-conventions.js +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/util.d.ts +18 -3
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +28 -5
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +3 -2
- package/dist/vm/uint8array-base64.js +1 -1
- package/dist/vm/uuid.js +1 -1
- package/dist/workflow/abort-controller.d.ts +65 -0
- package/dist/workflow/abort-controller.d.ts.map +1 -0
- package/dist/workflow/abort-controller.js +260 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +3 -2
- package/dist/workflow/define-hook.d.ts +1 -1
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +8 -4
- package/dist/workflow/get-workflow-metadata.d.ts +11 -0
- package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
- package/dist/workflow/get-workflow-metadata.js +14 -3
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +13 -4
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +5 -3
- package/dist/workflow/set-attributes.d.ts +74 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +66 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +22 -3
- package/dist/workflow/world-init-stub.d.ts +15 -0
- package/dist/workflow/world-init-stub.d.ts.map +1 -0
- package/dist/workflow/world-init-stub.js +15 -0
- package/dist/workflow/writable-stream.js +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +84 -31
- package/docs/api-reference/create-webhook.mdx +37 -18
- package/docs/api-reference/experimental-set-attributes.mdx +63 -0
- package/docs/api-reference/get-workflow-metadata.mdx +61 -0
- package/docs/api-reference/index.mdx +3 -0
- package/docs/foundations/cancellation.mdx +460 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/index.mdx +3 -3
- package/docs/foundations/meta.json +3 -2
- package/docs/foundations/serialization.mdx +78 -42
- package/docs/foundations/starting-workflows.mdx +6 -2
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +8 -7
- package/docs/how-it-works/event-sourcing.mdx +2 -2
- package/docs/how-it-works/meta.json +2 -1
- package/package.json +19 -10
- package/docs/foundations/common-patterns.mdx +0 -265
package/dist/util.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { waitUntil } from '@vercel/functions';
|
|
2
2
|
import { pluralize } from '@workflow/utils';
|
|
3
3
|
/**
|
|
4
|
-
* Builds a workflow suspension log message based on the counts of steps,
|
|
5
|
-
*
|
|
4
|
+
* Builds a workflow suspension log message based on the counts of steps,
|
|
5
|
+
* hooks, and waits. The structured logger attaches the run context, so the
|
|
6
|
+
* message itself only describes what's being enqueued.
|
|
6
7
|
* @param stepCount - Number of steps to be enqueued
|
|
7
8
|
* @param hookCount - Number of hooks to be enqueued
|
|
8
9
|
* @param waitCount - Number of waits to be enqueued
|
|
9
10
|
* @returns The formatted log message or null if all counts are 0
|
|
10
11
|
*/
|
|
11
|
-
export function buildWorkflowSuspensionMessage(
|
|
12
|
+
export function buildWorkflowSuspensionMessage(stepCount, hookCount, waitCount) {
|
|
12
13
|
if (stepCount === 0 && hookCount === 0 && waitCount === 0) {
|
|
13
14
|
return null;
|
|
14
15
|
}
|
|
@@ -33,7 +34,7 @@ export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount, wait
|
|
|
33
34
|
resumeMsgParts.push('timers have elapsed');
|
|
34
35
|
}
|
|
35
36
|
const resumeMsg = resumeMsgParts.join(' and ');
|
|
36
|
-
return
|
|
37
|
+
return `${parts.join(' and ')} to be enqueued\n Workflow will suspend and resume when ${resumeMsg}`;
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
40
|
* Generates a stream ID for a workflow run.
|
|
@@ -53,6 +54,28 @@ export function getWorkflowRunStreamId(runId, namespace) {
|
|
|
53
54
|
const encodedNamespace = Buffer.from(namespace, 'utf-8').toString('base64url');
|
|
54
55
|
return `${streamId}_${encodedNamespace}`;
|
|
55
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Generate a stream ID for an abort signal's backing stream.
|
|
59
|
+
* Uses the "_system_abort" namespace to isolate from user-defined streams.
|
|
60
|
+
*
|
|
61
|
+
* @param id - A unique identifier (typically a ULID)
|
|
62
|
+
* @returns The stream ID in format: `strm_{id}_system_abort`
|
|
63
|
+
*/
|
|
64
|
+
export function getAbortStreamId(id) {
|
|
65
|
+
return `strm_${id}_system_abort`;
|
|
66
|
+
}
|
|
67
|
+
const ABORT_TOKEN_PREFIX = 'abrt_';
|
|
68
|
+
/**
|
|
69
|
+
* Derive the abort stream name from a hook token.
|
|
70
|
+
* Hook tokens use the format `abrt_{id}`, and the corresponding stream is
|
|
71
|
+
* `strm_{id}_system_abort`.
|
|
72
|
+
*/
|
|
73
|
+
export function getAbortStreamIdFromToken(hookToken) {
|
|
74
|
+
if (!hookToken.startsWith(ABORT_TOKEN_PREFIX)) {
|
|
75
|
+
throw new Error(`Invalid abort hook token format: expected "abrt_" prefix, got "${hookToken}"`);
|
|
76
|
+
}
|
|
77
|
+
return getAbortStreamId(hookToken.slice(ABORT_TOKEN_PREFIX.length));
|
|
78
|
+
}
|
|
56
79
|
/**
|
|
57
80
|
* A small wrapper around `waitUntil` that also returns
|
|
58
81
|
* the result of the awaited promise.
|
|
@@ -66,4 +89,4 @@ export async function waitedUntil(fn) {
|
|
|
66
89
|
}));
|
|
67
90
|
return result;
|
|
68
91
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLFNBQWlCO0lBRWpCLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDREQUE0RCxTQUFTLEVBQUUsQ0FBQztBQUN2RyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFNBQWtCO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUMzRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsaUdBQWlHO0lBQ2pHLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUMvRCxXQUFXLENBQ1osQ0FBQztJQUNGLE9BQU8sR0FBRyxRQUFRLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQVU7SUFDekMsT0FBTyxRQUFRLEVBQUUsZUFBZSxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUVuQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLFNBQWlCO0lBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxTQUFTLEdBQUcsQ0FDL0UsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUksRUFBb0I7SUFDdkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDcEIsU0FBUyxDQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLGdEQUFnRDtRQUNoRCxrREFBa0Q7UUFDbEQseUJBQXlCO0lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnQHZlcmNlbC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcblxuLyoqXG4gKiBCdWlsZHMgYSB3b3JrZmxvdyBzdXNwZW5zaW9uIGxvZyBtZXNzYWdlIGJhc2VkIG9uIHRoZSBjb3VudHMgb2Ygc3RlcHMsXG4gKiBob29rcywgYW5kIHdhaXRzLiBUaGUgc3RydWN0dXJlZCBsb2dnZXIgYXR0YWNoZXMgdGhlIHJ1biBjb250ZXh0LCBzbyB0aGVcbiAqIG1lc3NhZ2UgaXRzZWxmIG9ubHkgZGVzY3JpYmVzIHdoYXQncyBiZWluZyBlbnF1ZXVlZC5cbiAqIEBwYXJhbSBzdGVwQ291bnQgLSBOdW1iZXIgb2Ygc3RlcHMgdG8gYmUgZW5xdWV1ZWRcbiAqIEBwYXJhbSBob29rQ291bnQgLSBOdW1iZXIgb2YgaG9va3MgdG8gYmUgZW5xdWV1ZWRcbiAqIEBwYXJhbSB3YWl0Q291bnQgLSBOdW1iZXIgb2Ygd2FpdHMgdG8gYmUgZW5xdWV1ZWRcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgbG9nIG1lc3NhZ2Ugb3IgbnVsbCBpZiBhbGwgY291bnRzIGFyZSAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdvcmtmbG93U3VzcGVuc2lvbk1lc3NhZ2UoXG4gIHN0ZXBDb3VudDogbnVtYmVyLFxuICBob29rQ291bnQ6IG51bWJlcixcbiAgd2FpdENvdW50OiBudW1iZXJcbik6IHN0cmluZyB8IG51bGwge1xuICBpZiAoc3RlcENvdW50ID09PSAwICYmIGhvb2tDb3VudCA9PT0gMCAmJiB3YWl0Q291bnQgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gW107XG4gIGlmIChzdGVwQ291bnQgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtzdGVwQ291bnR9ICR7cGx1cmFsaXplKCdzdGVwJywgJ3N0ZXBzJywgc3RlcENvdW50KX1gKTtcbiAgfVxuICBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgIHBhcnRzLnB1c2goYCR7aG9va0NvdW50fSAke3BsdXJhbGl6ZSgnaG9vaycsICdob29rcycsIGhvb2tDb3VudCl9YCk7XG4gIH1cbiAgaWYgKHdhaXRDb3VudCA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke3dhaXRDb3VudH0gJHtwbHVyYWxpemUoJ3RpbWVyJywgJ3RpbWVycycsIHdhaXRDb3VudCl9YCk7XG4gIH1cblxuICBjb25zdCByZXN1bWVNc2dQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICByZXN1bWVNc2dQYXJ0cy5wdXNoKCdzdGVwcyBhcmUgY29tcGxldGVkJyk7XG4gIH1cbiAgaWYgKGhvb2tDb3VudCA+IDApIHtcbiAgICByZXN1bWVNc2dQYXJ0cy5wdXNoKCdob29rcyBhcmUgcmVjZWl2ZWQnKTtcbiAgfVxuICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ3RpbWVycyBoYXZlIGVsYXBzZWQnKTtcbiAgfVxuICBjb25zdCByZXN1bWVNc2cgPSByZXN1bWVNc2dQYXJ0cy5qb2luKCcgYW5kICcpO1xuXG4gIHJldHVybiBgJHtwYXJ0cy5qb2luKCcgYW5kICcpfSB0byBiZSBlbnF1ZXVlZFxcbiAgV29ya2Zsb3cgd2lsbCBzdXNwZW5kIGFuZCByZXN1bWUgd2hlbiAke3Jlc3VtZU1zZ31gO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHN0cmVhbSBJRCBmb3IgYSB3b3JrZmxvdyBydW4uXG4gKiBVc2VyLWRlZmluZWQgc3RyZWFtcyBpbmNsdWRlIGEgXCJ1c2VyXCIgc2VnbWVudCBmb3IgaXNvbGF0aW9uIGZyb20gZnV0dXJlIHN5c3RlbS1kZWZpbmVkIHN0cmVhbXMuXG4gKiBOYW1lc3BhY2VzIGFyZSBiYXNlNjQtZW5jb2RlZCB0byBoYW5kbGUgY2hhcmFjdGVycyBub3QgYWxsb3dlZCBpbiBSZWRpcyBrZXkgbmFtZXMuXG4gKlxuICogQHBhcmFtIHJ1bklkIC0gVGhlIHdvcmtmbG93IHJ1biBJRFxuICogQHBhcmFtIG5hbWVzcGFjZSAtIE9wdGlvbmFsIG5hbWVzcGFjZSBmb3IgdGhlIHN0cmVhbVxuICogQHJldHVybnMgVGhlIHN0cmVhbSBJRCBpbiBmb3JtYXQ6IGBzdHJtX3tVTElEfV91c2VyX3tiYXNlNjQobmFtZXNwYWNlKT99YFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya2Zsb3dSdW5TdHJlYW1JZChydW5JZDogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcpIHtcbiAgY29uc3Qgc3RyZWFtSWQgPSBgJHtydW5JZC5yZXBsYWNlKCd3cnVuXycsICdzdHJtXycpfV91c2VyYDtcbiAgaWYgKCFuYW1lc3BhY2UpIHtcbiAgICByZXR1cm4gc3RyZWFtSWQ7XG4gIH1cbiAgLy8gQmFzZTY0IGVuY29kZSB0aGUgbmFtZXNwYWNlIHRvIGhhbmRsZSBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCBtYXkgbm90IGJlIGFsbG93ZWQgaW4gUmVkaXMga2V5c1xuICBjb25zdCBlbmNvZGVkTmFtZXNwYWNlID0gQnVmZmVyLmZyb20obmFtZXNwYWNlLCAndXRmLTgnKS50b1N0cmluZyhcbiAgICAnYmFzZTY0dXJsJ1xuICApO1xuICByZXR1cm4gYCR7c3RyZWFtSWR9XyR7ZW5jb2RlZE5hbWVzcGFjZX1gO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RyZWFtIElEIGZvciBhbiBhYm9ydCBzaWduYWwncyBiYWNraW5nIHN0cmVhbS5cbiAqIFVzZXMgdGhlIFwiX3N5c3RlbV9hYm9ydFwiIG5hbWVzcGFjZSB0byBpc29sYXRlIGZyb20gdXNlci1kZWZpbmVkIHN0cmVhbXMuXG4gKlxuICogQHBhcmFtIGlkIC0gQSB1bmlxdWUgaWRlbnRpZmllciAodHlwaWNhbGx5IGEgVUxJRClcbiAqIEByZXR1cm5zIFRoZSBzdHJlYW0gSUQgaW4gZm9ybWF0OiBgc3RybV97aWR9X3N5c3RlbV9hYm9ydGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3J0U3RyZWFtSWQoaWQ6IHN0cmluZykge1xuICByZXR1cm4gYHN0cm1fJHtpZH1fc3lzdGVtX2Fib3J0YDtcbn1cblxuY29uc3QgQUJPUlRfVE9LRU5fUFJFRklYID0gJ2FicnRfJztcblxuLyoqXG4gKiBEZXJpdmUgdGhlIGFib3J0IHN0cmVhbSBuYW1lIGZyb20gYSBob29rIHRva2VuLlxuICogSG9vayB0b2tlbnMgdXNlIHRoZSBmb3JtYXQgYGFicnRfe2lkfWAsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzdHJlYW0gaXNcbiAqIGBzdHJtX3tpZH1fc3lzdGVtX2Fib3J0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3J0U3RyZWFtSWRGcm9tVG9rZW4oaG9va1Rva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWhvb2tUb2tlbi5zdGFydHNXaXRoKEFCT1JUX1RPS0VOX1BSRUZJWCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBhYm9ydCBob29rIHRva2VuIGZvcm1hdDogZXhwZWN0ZWQgXCJhYnJ0X1wiIHByZWZpeCwgZ290IFwiJHtob29rVG9rZW59XCJgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZ2V0QWJvcnRTdHJlYW1JZChob29rVG9rZW4uc2xpY2UoQUJPUlRfVE9LRU5fUFJFRklYLmxlbmd0aCkpO1xufVxuXG4vKipcbiAqIEEgc21hbGwgd3JhcHBlciBhcm91bmQgYHdhaXRVbnRpbGAgdGhhdCBhbHNvIHJldHVybnNcbiAqIHRoZSByZXN1bHQgb2YgdGhlIGF3YWl0ZWQgcHJvbWlzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRlZFVudGlsPFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGZuKCk7XG4gIHdhaXRVbnRpbChcbiAgICByZXN1bHQuY2F0Y2goKCkgPT4ge1xuICAgICAgLy8gSWdub3JlIGVycm9yIGZyb20gdGhlIHByb21pc2UgYmVpbmcgcmVqZWN0ZWQuXG4gICAgICAvLyBJdCdzIGV4cGVjdGVkIHRoYXQgdGhlIGludm9rZXIgb2YgYHdhaXRlZFVudGlsYFxuICAgICAgLy8gd2lsbCBoYW5kbGUgdGhlIGVycm9yLlxuICAgIH0pXG4gICk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.0.0-beta.
|
|
1
|
+
export declare const version = "5.0.0-beta.10";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,kBAAkB,CAAA"}
|
package/dist/version.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '5.0.0-beta.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const version = '5.0.0-beta.10';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjEwJ1xuIl19
|
package/dist/vm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;iCAsG1B,MAAM;EAItC"}
|
package/dist/vm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runInContext, createContext as vmCreateContext } from 'node:vm';
|
|
2
|
+
import { WorkflowRuntimeError } from '@workflow/errors';
|
|
2
3
|
import seedrandom from 'seedrandom';
|
|
3
4
|
import { installUint8ArrayBase64 } from './uint8array-base64.js';
|
|
4
5
|
import { createRandomUUID } from './uuid.js';
|
|
@@ -55,7 +56,7 @@ export function createContext(options) {
|
|
|
55
56
|
get(target, prop) {
|
|
56
57
|
if (prop === 'generateKey') {
|
|
57
58
|
return () => {
|
|
58
|
-
throw new
|
|
59
|
+
throw new WorkflowRuntimeError('`crypto.subtle.generateKey()` is not available inside a workflow function. Move key generation to a step function where full Node.js crypto is available.');
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
else if (prop === 'digest') {
|
|
@@ -99,4 +100,4 @@ export function createContext(options) {
|
|
|
99
100
|
},
|
|
100
101
|
};
|
|
101
102
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxD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
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElB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QUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5JbkNvbnRleHQsIGNyZWF0ZUNvbnRleHQgYXMgdm1DcmVhdGVDb250ZXh0IH0gZnJvbSAnbm9kZTp2bSc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1bnRpbWVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHNlZWRyYW5kb20gZnJvbSAnc2VlZHJhbmRvbSc7XG5pbXBvcnQgeyBpbnN0YWxsVWludDhBcnJheUJhc2U2NCB9IGZyb20gJy4vdWludDhhcnJheS1iYXNlNjQuanMnO1xuaW1wb3J0IHsgY3JlYXRlUmFuZG9tVVVJRCB9IGZyb20gJy4vdXVpZC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGV4dE9wdGlvbnMge1xuICBzZWVkOiBzdHJpbmc7XG4gIC8vIEZpeGVkIHRpbWVzdGFtcCBmb3IgZGV0ZXJtaW5pc3RpYyBEYXRlIG9wZXJhdGlvbnNcbiAgZml4ZWRUaW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzXG4gIGNvbnN0IERhdGVfID0gZy5EYXRlO1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vU2hhZG93UmVzdHJpY3RlZE5hbWVzOiBXZSdyZSBzaGFkb3dpbmcgdGhlIGdsb2JhbCBgRGF0ZWAgcHJvcGVydHkgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljLlxuICAoZyBhcyBhbnkpLkRhdGUgPSBmdW5jdGlvbiBEYXRlKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8KHR5cGVvZiBnbG9iYWxUaGlzKVsnRGF0ZSddPltdXG4gICkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlXyhmaXhlZFRpbWVzdGFtcCk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBBcmdzIGlzIGBEYXRlYCBjb25zdHJ1Y3RvciBhcmd1bWVudHNcbiAgICByZXR1cm4gbmV3IERhdGVfKC4uLmFyZ3MpO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgY29uc3QgYm91bmREaWdlc3QgPSBvcmlnaW5hbFN1YnRsZS5kaWdlc3QuYmluZChvcmlnaW5hbFN1YnRsZSk7XG5cbiAgZy5jcnlwdG8gPSBuZXcgUHJveHkob3JpZ2luYWxDcnlwdG8sIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICBpZiAocHJvcCA9PT0gJ2dldFJhbmRvbVZhbHVlcycpIHtcbiAgICAgICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAncmFuZG9tVVVJRCcpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbVVVSUQ7XG4gICAgICB9XG4gICAgICBpZiAocHJvcCA9PT0gJ3N1YnRsZScpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShvcmlnaW5hbFN1YnRsZSwge1xuICAgICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnZ2VuZXJhdGVLZXknKSB7XG4gICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2BjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KClgIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24uIE1vdmUga2V5IGdlbmVyYXRpb24gdG8gYSBzdGVwIGZ1bmN0aW9uIHdoZXJlIGZ1bGwgTm9kZS5qcyBjcnlwdG8gaXMgYXZhaWxhYmxlLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnZGlnZXN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gYm91bmREaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgdHlwZW9mIG9yaWdpbmFsU3VidGxlXTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -403,4 +403,4 @@ export function installUint8ArrayBase64(Uint8ArrayCtor) {
|
|
|
403
403
|
});
|
|
404
404
|
}
|
|
405
405
|
}
|
|
406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWludDhhcnJheS1iYXNlNjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vdWludDhhcnJheS1iYXNlNjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBeUNILDJCQUEyQjtBQUMzQixNQUFNLFlBQVksR0FDaEIsa0VBQWtFLENBQUM7QUFFckUsMEVBQTBFO0FBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzdDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCwrREFBK0Q7QUFDL0QsU0FBUyxpQkFBaUIsQ0FBQyxJQUFZO0lBQ3JDLE9BQU8sQ0FDTCxJQUFJLEtBQUssSUFBSTtRQUNiLElBQUksS0FBSyxJQUFJO1FBQ2IsSUFBSSxLQUFLLElBQUk7UUFDYixJQUFJLEtBQUssSUFBSTtRQUNiLElBQUksS0FBSyxJQUFJLENBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ3JELE9BQU8sS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEUsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBYSxFQUNiLGdCQUEwQjtJQUUxQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lB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
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWludDhhcnJheS1iYXNlNjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vdWludDhhcnJheS1iYXNlNjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBeUNILDJCQUEyQjtBQUMzQixNQUFNLFlBQVksR0FDaEIsa0VBQWtFLENBQUM7QUFFckUsMEVBQTBFO0FBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzdDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCwrREFBK0Q7QUFDL0QsU0FBUyxpQkFBaUIsQ0FBQyxJQUFZO0lBQ3JDLE9BQU8sQ0FDTCxJQUFJLEtBQUssSUFBSTtRQUNiLElBQUksS0FBSyxJQUFJO1FBQ2IsSUFBSSxLQUFLLElBQUk7UUFDYixJQUFJLEtBQUssSUFBSTtRQUNiLElBQUksS0FBSyxJQUFJLENBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ3JELE9BQU8sS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEUsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBYSxFQUNiLGdCQUEwQjtJQUUxQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lB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SSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztnQkFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3JCLENBQUM7Z0JBRUQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBvbHlmaWxsIGZvciB0aGUgVEMzOSBVaW50OEFycmF5IGJhc2U2NC9oZXggcHJvcG9zYWwgKFN0YWdlIDQpLlxuICpcbiAqIEltcGxlbWVudHM6XG4gKiAgLSBVaW50OEFycmF5LnByb3RvdHlwZS50b0Jhc2U2NChbb3B0aW9uc10pXG4gKiAgLSBVaW50OEFycmF5LnByb3RvdHlwZS50b0hleCgpXG4gKiAgLSBVaW50OEFycmF5LmZyb21CYXNlNjQoc3RyaW5nWywgb3B0aW9uc10pXG4gKiAgLSBVaW50OEFycmF5LmZyb21IZXgoc3RyaW5nKVxuICogIC0gVWludDhBcnJheS5wcm90b3R5cGUuc2V0RnJvbUJhc2U2NChzdHJpbmdbLCBvcHRpb25zXSlcbiAqICAtIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldEZyb21IZXgoc3RyaW5nKVxuICpcbiAqIEBzZWUgaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5YnVmZmVyLWJhc2U2NC9zcGVjL1xuICovXG5cbi8vIExvY2FsIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBwb2x5ZmlsbGVkIG1ldGhvZHMuIFRoZXNlIGFyZSBpbnRlbnRpb25hbGx5XG4vLyBOT1QgYGRlY2xhcmUgZ2xvYmFsYCB0byBhdm9pZCBsZWFraW5nIHR5cGVzIHRvIGhvc3Qtc2lkZSBjb2RlIOKAlCB0aGUgcG9seWZpbGxcbi8vIGlzIG9ubHkgaW5zdGFsbGVkIGluc2lkZSB0aGUgd29ya2Zsb3cgVk0gY29udGV4dC5cbmludGVyZmFjZSBVaW50OEFycmF5V2l0aEJhc2U2NCBleHRlbmRzIFVpbnQ4QXJyYXkge1xuICB0b0Jhc2U2NChvcHRpb25zPzogeyBhbHBoYWJldD86IHN0cmluZzsgb21pdFBhZGRpbmc/OiBib29sZWFuIH0pOiBzdHJpbmc7XG4gIHRvSGV4KCk6IHN0cmluZztcbiAgc2V0RnJvbUJhc2U2NChcbiAgICBzdHI6IHN0cmluZyxcbiAgICBvcHRpb25zPzogeyBhbHBoYWJldD86IHN0cmluZzsgbGFzdENodW5rSGFuZGxpbmc/OiBzdHJpbmcgfVxuICApOiB7IHJlYWQ6IG51bWJlcjsgd3JpdHRlbjogbnVtYmVyIH07XG4gIHNldEZyb21IZXgoc3RyOiBzdHJpbmcpOiB7IHJlYWQ6IG51bWJlcjsgd3JpdHRlbjogbnVtYmVyIH07XG59XG5cbmludGVyZmFjZSBVaW50OEFycmF5Q29uc3RydWN0b3JXaXRoQmFzZTY0IGV4dGVuZHMgVWludDhBcnJheUNvbnN0cnVjdG9yIHtcbiAgZnJvbUJhc2U2NChcbiAgICBzdHI6IHN0cmluZyxcbiAgICBvcHRpb25zPzogeyBhbHBoYWJldD86IHN0cmluZzsgbGFzdENodW5rSGFuZGxpbmc/OiBzdHJpbmcgfVxuICApOiBVaW50OEFycmF5O1xuICBmcm9tSGV4KHN0cjogc3RyaW5nKTogVWludDhBcnJheTtcbn1cblxudHlwZSBCYXNlNjRBbHBoYWJldCA9ICdiYXNlNjQnIHwgJ2Jhc2U2NHVybCc7XG50eXBlIExhc3RDaHVua0hhbmRsaW5nID0gJ2xvb3NlJyB8ICdzdHJpY3QnIHwgJ3N0b3AtYmVmb3JlLXBhcnRpYWwnO1xuXG5pbnRlcmZhY2UgVG9CYXNlNjRPcHRpb25zIHtcbiAgYWxwaGFiZXQ/OiBCYXNlNjRBbHBoYWJldDtcbiAgb21pdFBhZGRpbmc/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRnJvbUJhc2U2NE9wdGlvbnMge1xuICBhbHBoYWJldD86IEJhc2U2NEFscGhhYmV0O1xuICBsYXN0Q2h1bmtIYW5kbGluZz86IExhc3RDaHVua0hhbmRsaW5nO1xufVxuXG5pbnRlcmZhY2UgU2V0RnJvbVJlc3VsdCB7XG4gIHJlYWQ6IG51bWJlcjtcbiAgd3JpdHRlbjogbnVtYmVyO1xufVxuXG4vLyBTdGFuZGFyZCBiYXNlNjQgYWxwaGFiZXRcbmNvbnN0IEJBU0U2NF9DSEFSUyA9XG4gICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcblxuLy8gUmV2ZXJzZSBsb29rdXAgdGFibGU6IGNoYXIgY29kZSAtPiBpbmRleCAoZm9yIHN0YW5kYXJkIGJhc2U2NCBhbHBoYWJldClcbmNvbnN0IEJBU0U2NF9MT09LVVAgPSBuZXcgVWludDhBcnJheSgxMjgpLmZpbGwoMjU1KTtcbmZvciAobGV0IGkgPSAwOyBpIDwgQkFTRTY0X0NIQVJTLmxlbmd0aDsgaSsrKSB7XG4gIEJBU0U2NF9MT09LVVBbQkFTRTY0X0NIQVJTLmNoYXJDb2RlQXQoaSldID0gaTtcbn1cblxuLy8gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHBlciBzcGVjOiBUQUIsIExGLCBGRiwgQ1IsIFNQQUNFXG5mdW5jdGlvbiBpc0FzY2lpV2hpdGVzcGFjZShjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBjb2RlID09PSAweDA5IHx8XG4gICAgY29kZSA9PT0gMHgwYSB8fFxuICAgIGNvZGUgPT09IDB4MGMgfHxcbiAgICBjb2RlID09PSAweDBkIHx8XG4gICAgY29kZSA9PT0gMHgyMFxuICApO1xufVxuXG5mdW5jdGlvbiBza2lwQXNjaWlXaGl0ZXNwYWNlKHN0cjogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCAmJiBpc0FzY2lpV2hpdGVzcGFjZShzdHIuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgaW5kZXgrKztcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGRlY29kZUJhc2U2NENodW5rKFxuICBjaHVuazogc3RyaW5nLFxuICB0aHJvd09uRXh0cmFCaXRzPzogYm9vbGVhblxuKTogbnVtYmVyW10ge1xuICBjb25zdCBjaHVua0xlbmd0aCA9IGNodW5rLmxlbmd0aDtcbiAgbGV0IHBhZGRlZCA9IGNodW5rO1xuICBpZiAoY2h1bmtMZW5ndGggPT09IDIpIHtcbiAgICBwYWRkZWQgPSBjaHVuayArICdBQSc7XG4gIH0gZWxzZSBpZiAoY2h1bmtMZW5ndGggPT09IDMpIHtcbiAgICBwYWRkZWQgPSBjaHVuayArICdBJztcbiAgfVxuXG4gIC8vIERlY29kZSA0IGJhc2U2NCBjaGFycyB0byAzIGJ5dGVzXG4gIGNvbnN0IGIwID0gQkFTRTY0X0xPT0tVUFtwYWRkZWQuY2hhckNvZGVBdCgwKV07XG4gIGNvbnN0IGIxID0gQkFTRTY0X0xPT0tVUFtwYWRkZWQuY2hhckNvZGVBdCgxKV07XG4gIGNvbnN0IGIyID0gQkFTRTY0X0xPT0tVUFtwYWRkZWQuY2hhckNvZGVBdCgyKV07XG4gIGNvbnN0IGIzID0gQkFTRTY0X0xPT0tVUFtwYWRkZWQuY2hhckNvZGVBdCgzKV07XG5cbiAgY29uc3QgYnl0ZTAgPSAoYjAgPDwgMikgfCAoYjEgPj4gNCk7XG4gIGNvbnN0IGJ5dGUxID0gKChiMSAmIDB4MGYpIDw8IDQpIHwgKGIyID4+IDIpO1xuICBjb25zdCBieXRlMiA9ICgoYjIgJiAweDAzKSA8PCA2KSB8IGIzO1xuXG4gIGlmIChjaHVua0xlbmd0aCA9PT0gMikge1xuICAgIGlmICh0aHJvd09uRXh0cmFCaXRzICYmIGJ5dGUxICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0V4dHJhIGJpdHMgaW4gYmFzZTY0IGNodW5rJyk7XG4gICAgfVxuICAgIHJldHVybiBbYnl0ZTBdO1xuICB9XG4gIGlmIChjaHVua0xlbmd0aCA9PT0gMykge1xuICAgIGlmICh0aHJvd09uRXh0cmFCaXRzICYmIGJ5dGUyICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0V4dHJhIGJpdHMgaW4gYmFzZTY0IGNodW5rJyk7XG4gICAgfVxuICAgIHJldHVybiBbYnl0ZTAsIGJ5dGUxXTtcbiAgfVxuICByZXR1cm4gW2J5dGUwLCBieXRlMSwgYnl0ZTJdO1xufVxuXG5pbnRlcmZhY2UgRnJvbUJhc2U2NFJlc3VsdCB7XG4gIHJlYWQ6IG51bWJlcjtcbiAgYnl0ZXM6IG51bWJlcltdO1xuICBlcnJvcjogU3ludGF4RXJyb3IgfCBudWxsO1xufVxuXG5mdW5jdGlvbiBmcm9tQmFzZTY0KFxuICBzdHI6IHN0cmluZyxcbiAgYWxwaGFiZXQ6IEJhc2U2NEFscGhhYmV0LFxuICBsYXN0Q2h1bmtIYW5kbGluZzogTGFzdENodW5rSGFuZGxpbmcsXG4gIG1heExlbmd0aD86IG51bWJlclxuKTogRnJvbUJhc2U2NFJlc3VsdCB7XG4gIGlmIChtYXhMZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIG1heExlbmd0aCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICB9XG4gIGlmIChtYXhMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyByZWFkOiAwLCBieXRlczogW10sIGVycm9yOiBudWxsIH07XG4gIH1cblxuICBsZXQgcmVhZCA9IDA7XG4gIGNvbnN0IGJ5dGVzOiBudW1iZXJbXSA9IFtdO1xuICBsZXQgY2h1bmsgPSAnJztcbiAgbGV0IGNodW5rTGVuZ3RoID0gMDtcbiAgbGV0IGluZGV4ID0gMDtcbiAgY29uc3QgbGVuZ3RoID0gc3RyLmxlbmd0aDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGluZGV4ID0gc2tpcEFzY2lpV2hpdGVzcGFjZShzdHIsIGluZGV4KTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAoY2h1bmtMZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChsYXN0Q2h1bmtIYW5kbGluZyA9PT0gJ3N0b3AtYmVmb3JlLXBhcnRpYWwnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgcmVhZCwgYnl0ZXMsIGVycm9yOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhc3RDaHVua0hhbmRsaW5nID09PSAnbG9vc2UnKSB7XG4gICAgICAgICAgaWYgKGNodW5rTGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICByZWFkLFxuICAgICAgICAgICAgICBieXRlcyxcbiAgICAgICAgICAgICAgZXJyb3I6IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICAgICAgICAnSW52YWxpZCBiYXNlNjQ6IGxvbmUgY2hhcmFjdGVyIGluIGZpbmFsIGNodW5rJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnl0ZXMucHVzaCguLi5kZWNvZGVCYXNlNjRDaHVuayhjaHVuaywgZmFsc2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzdHJpY3RcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVhZCxcbiAgICAgICAgICAgIGJ5dGVzLFxuICAgICAgICAgICAgZXJyb3I6IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICAgICAgJ0ludmFsaWQgYmFzZTY0OiBpbmNvbXBsZXRlIGNodW5rIGluIHN0cmljdCBtb2RlJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyByZWFkOiBsZW5ndGgsIGJ5dGVzLCBlcnJvcjogbnVsbCB9O1xuICAgIH1cblxuICAgIGxldCBjaGFyID0gc3RyW2luZGV4XTtcbiAgICBpbmRleCsrO1xuXG4gICAgaWYgKGNoYXIgPT09ICc9Jykge1xuICAgICAgaWYgKGNodW5rTGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlYWQsXG4gICAgICAgICAgYnl0ZXMsXG4gICAgICAgICAgZXJyb3I6IG5ldyBTeW50YXhFcnJvcignSW52YWxpZCBiYXNlNjQ6IHBhZGRpbmcgaW4gdW5leHBlY3RlZCBwbGFjZScpLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHNraXBBc2NpaVdoaXRlc3BhY2Uoc3RyLCBpbmRleCk7XG5cbiAgICAgIGlmIChjaHVua0xlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgICAgIGlmIChsYXN0Q2h1bmtIYW5kbGluZyA9PT0gJ3N0b3AtYmVmb3JlLXBhcnRpYWwnKSB7XG4gICAgICAgICAgICByZXR1cm4geyByZWFkLCBieXRlcywgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlYWQsXG4gICAgICAgICAgICBieXRlcyxcbiAgICAgICAgICAgIGVycm9yOiBuZXcgU3ludGF4RXJyb3IoXG4gICAgICAgICAgICAgICdJbnZhbGlkIGJhc2U2NDogbWlzc2luZyBzZWNvbmQgcGFkZGluZyBjaGFyYWN0ZXInXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2hhciA9IHN0cltpbmRleF07XG4gICAgICAgIGlmIChjaGFyID09PSAnPScpIHtcbiAgICAgICAgICBpbmRleCA9IHNraXBBc2NpaVdoaXRlc3BhY2Uoc3RyLCBpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlYWQsXG4gICAgICAgICAgYnl0ZXMsXG4gICAgICAgICAgZXJyb3I6IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICAgICdJbnZhbGlkIGJhc2U2NDogdW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIHBhZGRpbmcnXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGhyb3dPbkV4dHJhQml0cyA9IGxhc3RDaHVua0hhbmRsaW5nID09PSAnc3RyaWN0JztcbiAgICAgIHRyeSB7XG4gICAgICAgIGJ5dGVzLnB1c2goLi4uZGVjb2RlQmFzZTY0Q2h1bmsoY2h1bmssIHRocm93T25FeHRyYUJpdHMpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHsgcmVhZCwgYnl0ZXMsIGVycm9yOiBlIGFzIFN5bnRheEVycm9yIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyByZWFkOiBsZW5ndGgsIGJ5dGVzLCBlcnJvcjogbnVsbCB9O1xuICAgIH1cblxuICAgIGlmIChhbHBoYWJldCA9PT0gJ2Jhc2U2NHVybCcpIHtcbiAgICAgIGlmIChjaGFyID09PSAnKycgfHwgY2hhciA9PT0gJy8nKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVhZCxcbiAgICAgICAgICBieXRlcyxcbiAgICAgICAgICBlcnJvcjogbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgYmFzZTY0dXJsOiB1bmV4cGVjdGVkIGNoYXJhY3RlciAnJHtjaGFyfSdgXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFyID09PSAnLScpIHtcbiAgICAgICAgY2hhciA9ICcrJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJ18nKSB7XG4gICAgICAgIGNoYXIgPSAnLyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgY2hhcmFjdGVyIGlzIGluIHRoZSBzdGFuZGFyZCBiYXNlNjQgYWxwaGFiZXRcbiAgICBjb25zdCBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChjb2RlID49IDEyOCB8fCBCQVNFNjRfTE9PS1VQW2NvZGVdID09PSAyNTUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlYWQsXG4gICAgICAgIGJ5dGVzLFxuICAgICAgICBlcnJvcjogbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGJhc2U2NDogdW5leHBlY3RlZCBjaGFyYWN0ZXIgJyR7c3RyW2luZGV4IC0gMV19J2BcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgYWRkaW5nIHRoaXMgY2hhcmFjdGVyIHdvdWxkIGV4Y2VlZCBtYXhMZW5ndGhcbiAgICBjb25zdCByZW1haW5pbmcgPSBtYXhMZW5ndGggLSBieXRlcy5sZW5ndGg7XG4gICAgaWYgKFxuICAgICAgKHJlbWFpbmluZyA9PT0gMSAmJiBjaHVua0xlbmd0aCA9PT0gMikgfHxcbiAgICAgIChyZW1haW5pbmcgPT09IDIgJiYgY2h1bmtMZW5ndGggPT09IDMpXG4gICAgKSB7XG4gICAgICByZXR1cm4geyByZWFkLCBieXRlcywgZXJyb3I6IG51bGwgfTtcbiAgICB9XG5cbiAgICBjaHVuayArPSBjaGFyO1xuICAgIGNodW5rTGVuZ3RoID0gY2h1bmsubGVuZ3RoO1xuXG4gICAgaWYgKGNodW5rTGVuZ3RoID09PSA0KSB7XG4gICAgICBieXRlcy5wdXNoKC4uLmRlY29kZUJhc2U2NENodW5rKGNodW5rKSk7XG4gICAgICBjaHVuayA9ICcnO1xuICAgICAgY2h1bmtMZW5ndGggPSAwO1xuICAgICAgcmVhZCA9IGluZGV4O1xuXG4gICAgICBpZiAoYnl0ZXMubGVuZ3RoID09PSBtYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHsgcmVhZCwgYnl0ZXMsIGVycm9yOiBudWxsIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBGcm9tSGV4UmVzdWx0IHtcbiAgcmVhZDogbnVtYmVyO1xuICBieXRlczogbnVtYmVyW107XG4gIGVycm9yOiBTeW50YXhFcnJvciB8IG51bGw7XG59XG5cbmZ1bmN0aW9uIGZyb21IZXgoc3RyOiBzdHJpbmcsIG1heExlbmd0aD86IG51bWJlcik6IEZyb21IZXhSZXN1bHQge1xuICBpZiAobWF4TGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBtYXhMZW5ndGggPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgfVxuXG4gIGNvbnN0IGxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gIGNvbnN0IGJ5dGVzOiBudW1iZXJbXSA9IFtdO1xuICBsZXQgcmVhZCA9IDA7XG5cbiAgaWYgKGxlbmd0aCAlIDIgIT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVhZDogMCxcbiAgICAgIGJ5dGVzOiBbXSxcbiAgICAgIGVycm9yOiBuZXcgU3ludGF4RXJyb3IoJ0ludmFsaWQgaGV4OiBzdHJpbmcgbGVuZ3RoIG11c3QgYmUgZXZlbicpLFxuICAgIH07XG4gIH1cblxuICB3aGlsZSAocmVhZCA8IGxlbmd0aCAmJiBieXRlcy5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICBjb25zdCBoZXhpdHMgPSBzdHIuc3Vic3RyaW5nKHJlYWQsIHJlYWQgKyAyKTtcbiAgICBpZiAoIS9eWzAtOWEtZkEtRl17Mn0kLy50ZXN0KGhleGl0cykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlYWQsXG4gICAgICAgIGJ5dGVzLFxuICAgICAgICBlcnJvcjogbmV3IFN5bnRheEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGhleDogdW5leHBlY3RlZCBjaGFyYWN0ZXIgYXQgcG9zaXRpb24gJHtyZWFkfWBcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJlYWQgKz0gMjtcbiAgICBieXRlcy5wdXNoKE51bWJlci5wYXJzZUludChoZXhpdHMsIDE2KSk7XG4gIH1cblxuICByZXR1cm4geyByZWFkLCBieXRlcywgZXJyb3I6IG51bGwgfTtcbn1cblxuZnVuY3Rpb24gdG9CYXNlNjQodWludDg6IFVpbnQ4QXJyYXksIG9wdGlvbnM/OiBUb0Jhc2U2NE9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBhbHBoYWJldDogQmFzZTY0QWxwaGFiZXQgPSBvcHRpb25zPy5hbHBoYWJldCA/PyAnYmFzZTY0JztcbiAgaWYgKGFscGhhYmV0ICE9PSAnYmFzZTY0JyAmJiBhbHBoYWJldCAhPT0gJ2Jhc2U2NHVybCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYEludmFsaWQgYWxwaGFiZXQ6IGV4cGVjdGVkIFwiYmFzZTY0XCIgb3IgXCJiYXNlNjR1cmxcIiwgZ290IFwiJHthbHBoYWJldH1cImBcbiAgICApO1xuICB9XG4gIGNvbnN0IG9taXRQYWRkaW5nID0gQm9vbGVhbihvcHRpb25zPy5vbWl0UGFkZGluZyk7XG5cbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBjb25zdCBsZW4gPSB1aW50OC5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMykge1xuICAgIGNvbnN0IGIwID0gdWludDhbaV07XG4gICAgY29uc3QgYjEgPSBpICsgMSA8IGxlbiA/IHVpbnQ4W2kgKyAxXSA6IDA7XG4gICAgY29uc3QgYjIgPSBpICsgMiA8IGxlbiA/IHVpbnQ4W2kgKyAyXSA6IDA7XG5cbiAgICByZXN1bHQgKz0gQkFTRTY0X0NIQVJTWyhiMCA+PiAyKSAmIDB4M2ZdO1xuICAgIHJlc3VsdCArPSBCQVNFNjRfQ0hBUlNbKChiMCAmIDB4MDMpIDw8IDQpIHwgKChiMSA+PiA0KSAmIDB4MGYpXTtcblxuICAgIGlmIChpICsgMSA8IGxlbikge1xuICAgICAgcmVzdWx0ICs9IEJBU0U2NF9DSEFSU1soKGIxICYgMHgwZikgPDwgMikgfCAoKGIyID4+IDYpICYgMHgwMyldO1xuICAgIH0gZWxzZSBpZiAoIW9taXRQYWRkaW5nKSB7XG4gICAgICByZXN1bHQgKz0gJz0nO1xuICAgIH1cblxuICAgIGlmIChpICsgMiA8IGxlbikge1xuICAgICAgcmVzdWx0ICs9IEJBU0U2NF9DSEFSU1tiMiAmIDB4M2ZdO1xuICAgIH0gZWxzZSBpZiAoIW9taXRQYWRkaW5nKSB7XG4gICAgICByZXN1bHQgKz0gJz0nO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhbHBoYWJldCA9PT0gJ2Jhc2U2NHVybCcpIHtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvXFwrL2csICctJykucmVwbGFjZSgvXFwvL2csICdfJyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB0b0hleCh1aW50ODogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIGxldCBvdXQgPSAnJztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB1aW50OC5sZW5ndGg7IGkrKykge1xuICAgIG91dCArPSB1aW50OFtpXS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBVaW50OEFycmF5IGJhc2U2NC9oZXggcG9seWZpbGwgb250byB0aGUgZ2l2ZW5cbiAqIFVpbnQ4QXJyYXkgY29uc3RydWN0b3IgYW5kIHByb3RvdHlwZS4gVGhpcyBpcyBkZXNpZ25lZCB0byBiZVxuICogdXNlZCBpbnNpZGUgdGhlIHdvcmtmbG93IFZNIGNvbnRleHQsIG9wZXJhdGluZyBvbiB0aGUgVk0nc1xuICogb3duIFVpbnQ4QXJyYXkgcmF0aGVyIHRoYW4gdGhlIGhvc3Qncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxVaW50OEFycmF5QmFzZTY0KFxuICBVaW50OEFycmF5Q3RvcjogdHlwZW9mIFVpbnQ4QXJyYXlcbik6IHZvaWQge1xuICBjb25zdCBwcm90byA9IFVpbnQ4QXJyYXlDdG9yLnByb3RvdHlwZSBhcyBVaW50OEFycmF5V2l0aEJhc2U2NDtcbiAgY29uc3QgY3RvciA9IFVpbnQ4QXJyYXlDdG9yIGFzIFVpbnQ4QXJyYXlDb25zdHJ1Y3RvcldpdGhCYXNlNjQ7XG5cbiAgLy8gVWludDhBcnJheS5wcm90b3R5cGUudG9CYXNlNjQoW29wdGlvbnNdKVxuICBpZiAoIXByb3RvLnRvQmFzZTY0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAndG9CYXNlNjQnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdG9CYXNlNjRNZXRob2QoXG4gICAgICAgIHRoaXM6IFVpbnQ4QXJyYXksXG4gICAgICAgIG9wdGlvbnM/OiBUb0Jhc2U2NE9wdGlvbnNcbiAgICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBVaW50OEFycmF5Q3RvcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0aGlzIGlzIG5vdCBhIFVpbnQ4QXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9CYXNlNjQodGhpcywgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSGV4KClcbiAgaWYgKCFwcm90by50b0hleCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ3RvSGV4Jywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvSGV4TWV0aG9kKHRoaXM6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVWludDhBcnJheUN0b3IpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBVaW50OEFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvSGV4KHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBVaW50OEFycmF5LnByb3RvdHlwZS5zZXRGcm9tQmFzZTY0KHN0cmluZ1ssIG9wdGlvbnNdKVxuICBpZiAoIXByb3RvLnNldEZyb21CYXNlNjQpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdzZXRGcm9tQmFzZTY0Jywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZyb21CYXNlNjRNZXRob2QoXG4gICAgICAgIHRoaXM6IFVpbnQ4QXJyYXksXG4gICAgICAgIHN0cjogc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzogRnJvbUJhc2U2NE9wdGlvbnNcbiAgICAgICk6IFNldEZyb21SZXN1bHQge1xuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVWludDhBcnJheUN0b3IpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBVaW50OEFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHBoYWJldDogQmFzZTY0QWxwaGFiZXQgPSBvcHRpb25zPy5hbHBoYWJldCA/PyAnYmFzZTY0JztcbiAgICAgICAgaWYgKGFscGhhYmV0ICE9PSAnYmFzZTY0JyAmJiBhbHBoYWJldCAhPT0gJ2Jhc2U2NHVybCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgYWxwaGFiZXQ6IGV4cGVjdGVkIFwiYmFzZTY0XCIgb3IgXCJiYXNlNjR1cmxcIiwgZ290IFwiJHthbHBoYWJldH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3RDaHVua0hhbmRsaW5nOiBMYXN0Q2h1bmtIYW5kbGluZyA9XG4gICAgICAgICAgb3B0aW9ucz8ubGFzdENodW5rSGFuZGxpbmcgPz8gJ2xvb3NlJztcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGxhc3RDaHVua0hhbmRsaW5nICE9PSAnbG9vc2UnICYmXG4gICAgICAgICAgbGFzdENodW5rSGFuZGxpbmcgIT09ICdzdHJpY3QnICYmXG4gICAgICAgICAgbGFzdENodW5rSGFuZGxpbmcgIT09ICdzdG9wLWJlZm9yZS1wYXJ0aWFsJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgbGFzdENodW5rSGFuZGxpbmc6IGV4cGVjdGVkIFwibG9vc2VcIiwgXCJzdHJpY3RcIiwgb3IgXCJzdG9wLWJlZm9yZS1wYXJ0aWFsXCIsIGdvdCBcIiR7bGFzdENodW5rSGFuZGxpbmd9XCJgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZyb21CYXNlNjQoXG4gICAgICAgICAgc3RyLFxuICAgICAgICAgIGFscGhhYmV0LFxuICAgICAgICAgIGxhc3RDaHVua0hhbmRsaW5nLFxuICAgICAgICAgIHRoaXMubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGJ5dGVzID0gcmVzdWx0LmJ5dGVzO1xuICAgICAgICBjb25zdCB3cml0dGVuID0gYnl0ZXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd3JpdHRlbjsgaSsrKSB7XG4gICAgICAgICAgdGhpc1tpXSA9IGJ5dGVzW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHJlYWQ6IHJlc3VsdC5yZWFkLCB3cml0dGVuIH07XG4gICAgICB9LFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldEZyb21IZXgoc3RyaW5nKVxuICBpZiAoIXByb3RvLnNldEZyb21IZXgpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sICdzZXRGcm9tSGV4Jywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZyb21IZXhNZXRob2QoXG4gICAgICAgIHRoaXM6IFVpbnQ4QXJyYXksXG4gICAgICAgIHN0cjogc3RyaW5nXG4gICAgICApOiBTZXRGcm9tUmVzdWx0IHtcbiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlDdG9yKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RoaXMgaXMgbm90IGEgVWludDhBcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmcm9tSGV4KHN0ciwgdGhpcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBieXRlcyA9IHJlc3VsdC5ieXRlcztcbiAgICAgICAgY29uc3Qgd3JpdHRlbiA9IGJ5dGVzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdyaXR0ZW47IGkrKykge1xuICAgICAgICAgIHRoaXNbaV0gPSBieXRlc1tpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyByZWFkOiByZXN1bHQucmVhZCwgd3JpdHRlbiB9O1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBVaW50OEFycmF5LmZyb21CYXNlNjQoc3RyaW5nWywgb3B0aW9uc10pXG4gIGlmICghY3Rvci5mcm9tQmFzZTY0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVpbnQ4QXJyYXlDdG9yLCAnZnJvbUJhc2U2NCcsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBmcm9tQmFzZTY0U3RhdGljKFxuICAgICAgICBzdHI6IHN0cmluZyxcbiAgICAgICAgb3B0aW9ucz86IEZyb21CYXNlNjRPcHRpb25zXG4gICAgICApOiBVaW50OEFycmF5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHBoYWJldDogQmFzZTY0QWxwaGFiZXQgPSBvcHRpb25zPy5hbHBoYWJldCA/PyAnYmFzZTY0JztcbiAgICAgICAgaWYgKGFscGhhYmV0ICE9PSAnYmFzZTY0JyAmJiBhbHBoYWJldCAhPT0gJ2Jhc2U2NHVybCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgYWxwaGFiZXQ6IGV4cGVjdGVkIFwiYmFzZTY0XCIgb3IgXCJiYXNlNjR1cmxcIiwgZ290IFwiJHthbHBoYWJldH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3RDaHVua0hhbmRsaW5nOiBMYXN0Q2h1bmtIYW5kbGluZyA9XG4gICAgICAgICAgb3B0aW9ucz8ubGFzdENodW5rSGFuZGxpbmcgPz8gJ2xvb3NlJztcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGxhc3RDaHVua0hhbmRsaW5nICE9PSAnbG9vc2UnICYmXG4gICAgICAgICAgbGFzdENodW5rSGFuZGxpbmcgIT09ICdzdHJpY3QnICYmXG4gICAgICAgICAgbGFzdENodW5rSGFuZGxpbmcgIT09ICdzdG9wLWJlZm9yZS1wYXJ0aWFsJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgbGFzdENodW5rSGFuZGxpbmc6IGV4cGVjdGVkIFwibG9vc2VcIiwgXCJzdHJpY3RcIiwgb3IgXCJzdG9wLWJlZm9yZS1wYXJ0aWFsXCIsIGdvdCBcIiR7bGFzdENodW5rSGFuZGxpbmd9XCJgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZyb21CYXNlNjQoc3RyLCBhbHBoYWJldCwgbGFzdENodW5rSGFuZGxpbmcpO1xuICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5Q3RvcihyZXN1bHQuYnl0ZXMpO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBVaW50OEFycmF5LmZyb21IZXgoc3RyaW5nKVxuICBpZiAoIWN0b3IuZnJvbUhleCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVaW50OEFycmF5Q3RvciwgJ2Zyb21IZXgnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZnJvbUhleFN0YXRpYyhzdHI6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgICAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBhIHN0cmluZycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZnJvbUhleChzdHIpO1xuICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5Q3RvcihyZXN1bHQuYnl0ZXMpO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/vm/uuid.js
CHANGED
|
@@ -27,4 +27,4 @@ export function createRandomUUID(rng) {
|
|
|
27
27
|
return uuid;
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92bS91dWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBaUI7SUFDaEQsT0FBTyxTQUFTLFVBQVU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLElBQUksR0FBRyxDQUFDO1lBQ2QsQ0FBQztpQkFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQjtZQUNoQyxDQUFDO2lCQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7WUFDNUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUE0QyxDQUFDO0lBQ3RELENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyBhIHJhbmRvbSBVVUlELCBiYXNlZCBvbiB0aGUgZ2l2ZW4gUk5HLlxuICpcbiAqIGBybmdgIGlzIGV4cGVjdGVkIHRvIGJlIGEgc2VlZGVkIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIChpLmUuIGBzZWVkcmFuZG9tLlBSTkdgIGluc3RhbmNlKS5cbiAqXG4gKiBAcGFyYW0gcm5nIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gMCBhbmQgMS5cbiAqIEByZXR1cm5zIEEgYGNyeXB0by5yYW5kb21VVUlEYC1saWtlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmFuZG9tVVVJRChybmc6ICgpID0+IG51bWJlcikge1xuICByZXR1cm4gZnVuY3Rpb24gcmFuZG9tVVVJRCgpOiBSZXR1cm5UeXBlPHR5cGVvZiBjcnlwdG8ucmFuZG9tVVVJRD4ge1xuICAgIGNvbnN0IGNoYXJzID0gJzAxMjM0NTY3ODlhYmNkZWYnO1xuICAgIGxldCB1dWlkID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzNjsgaSsrKSB7XG4gICAgICBpZiAoaSA9PT0gOCB8fCBpID09PSAxMyB8fCBpID09PSAxOCB8fCBpID09PSAyMykge1xuICAgICAgICB1dWlkICs9ICctJztcbiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMTQpIHtcbiAgICAgICAgdXVpZCArPSAnNCc7IC8vIFZlcnNpb24gNCBVVUlEXG4gICAgICB9IGVsc2UgaWYgKGkgPT09IDE5KSB7XG4gICAgICAgIHV1aWQgKz0gY2hhcnNbTWF0aC5mbG9vcihybmcoKSAqIDQpICsgOF07IC8vIDgsIDksIGEsIG9yIGJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHV1aWQgKz0gY2hhcnNbTWF0aC5mbG9vcihybmcoKSAqIDE2KV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1dWlkIGFzIFJldHVyblR5cGU8dHlwZW9mIGNyeXB0by5yYW5kb21VVUlEPjtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { WorkflowOrchestratorContext } from '../private.js';
|
|
2
|
+
import { ABORT_HOOK_TOKEN, ABORT_STREAM_NAME } from '../symbols.js';
|
|
3
|
+
/**
|
|
4
|
+
* A lightweight AbortSignal implementation for the workflow VM context.
|
|
5
|
+
*
|
|
6
|
+
* `signal.aborted` and listeners are updated in two scenarios:
|
|
7
|
+
* 1. On first-run: when `abort()` is called in the workflow code
|
|
8
|
+
* 2. On replay: when the events consumer processes the `hook_received`
|
|
9
|
+
* event (chained through promiseQueue for deterministic ordering)
|
|
10
|
+
*
|
|
11
|
+
* On replay, `abort()` in the workflow code becomes a no-op since
|
|
12
|
+
* `_setAborted` was already called by the events consumer.
|
|
13
|
+
*/
|
|
14
|
+
export declare class WorkflowAbortSignal {
|
|
15
|
+
#private;
|
|
16
|
+
aborted: boolean;
|
|
17
|
+
reason: unknown;
|
|
18
|
+
readonly [ABORT_STREAM_NAME]: string;
|
|
19
|
+
readonly [ABORT_HOOK_TOKEN]: string;
|
|
20
|
+
get onabort(): ((this: WorkflowAbortSignal) => void) | null;
|
|
21
|
+
set onabort(handler: ((this: WorkflowAbortSignal) => void) | null);
|
|
22
|
+
constructor(streamName: string, hookToken: string);
|
|
23
|
+
/**
|
|
24
|
+
* @internal Sets aborted state and fires listeners.
|
|
25
|
+
* Called by abort() on first-run, or by the events consumer on replay.
|
|
26
|
+
* Idempotent — second call is a no-op.
|
|
27
|
+
*/
|
|
28
|
+
_setAborted(reason?: unknown): void;
|
|
29
|
+
addEventListener(type: string, listener: () => void): void;
|
|
30
|
+
removeEventListener(type: string, listener: () => void): void;
|
|
31
|
+
throwIfAborted(): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a workflow-context `AbortController` class that uses hooks for
|
|
35
|
+
* durable state and streams for real-time step propagation.
|
|
36
|
+
*
|
|
37
|
+
* Follows the same pattern as `createCreateHook()` in `workflow/hook.ts`:
|
|
38
|
+
* - Registers a hook in the invocations queue on construction
|
|
39
|
+
* - Subscribes to the events consumer for hook_created/hook_received events
|
|
40
|
+
* - `abort()` calls `_setAborted` + marks the hook for resumption
|
|
41
|
+
* - The suspension handler processes the abort (creates event + writes stream)
|
|
42
|
+
* - On replay, the events consumer calls `_setAborted` when hook_received
|
|
43
|
+
* is processed, and `abort()` in the workflow code becomes a no-op
|
|
44
|
+
*/
|
|
45
|
+
export declare function createCreateAbortController(ctx: WorkflowOrchestratorContext): {
|
|
46
|
+
new (): {
|
|
47
|
+
readonly signal: WorkflowAbortSignal;
|
|
48
|
+
abort(reason?: unknown): void;
|
|
49
|
+
readonly [ABORT_STREAM_NAME]: string;
|
|
50
|
+
readonly [ABORT_HOOK_TOKEN]: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Creates a workflow-context `AbortSignal` object with static methods.
|
|
55
|
+
*/
|
|
56
|
+
export declare function createAbortSignalStatics(): {
|
|
57
|
+
abort: (reason?: unknown) => WorkflowAbortSignal;
|
|
58
|
+
any: (signals: Iterable<{
|
|
59
|
+
aborted: boolean;
|
|
60
|
+
reason?: unknown;
|
|
61
|
+
addEventListener?: Function;
|
|
62
|
+
}>) => WorkflowAbortSignal;
|
|
63
|
+
timeout: () => never;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=abort-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/workflow/abort-controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGpE;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;;IAC9B,OAAO,UAAS;IAChB,MAAM,EAAE,OAAO,CAAa;IAE5B,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAKpC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,CAE1D;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,EAKhE;gBAEW,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD;;;;OAIG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAanC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAa1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAK7D,cAAc,IAAI,IAAI;CAQvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,2BAA2B;;yBAEvD,mBAAmB;uBAuHrB,OAAO,GAAG,IAAI;sCAtHC,MAAM;qCACP,MAAM;;EAsItC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,mBAAmB,CAAC;IACjD,GAAG,EAAE,CACH,OAAO,EAAE,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;KAC7B,CAAC,KACC,mBAAmB,CAAC;IACzB,OAAO,EAAE,MAAM,KAAK,CAAC;CACtB,CAwEA"}
|