@workflow/core 5.0.0-beta.5 → 5.0.0-beta.51
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 +5 -0
- package/dist/attribute-changes.d.ts +5 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.d.ts +35 -2
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +74 -5
- package/dist/capture-stack.d.ts +1 -1
- package/dist/capture-stack.js +2 -2
- package/dist/class-serialization.d.ts +32 -0
- package/dist/class-serialization.d.ts.map +1 -1
- package/dist/class-serialization.js +37 -1
- package/dist/classify-error.d.ts +19 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +98 -6
- package/dist/context-violation-error.d.ts +5 -5
- package/dist/context-violation-error.d.ts.map +1 -1
- package/dist/context-violation-error.js +8 -6
- package/dist/create-hook.d.ts +72 -7
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +1 -1
- package/dist/define-hook.js +2 -2
- package/dist/describe-error.d.ts +7 -7
- package/dist/describe-error.d.ts.map +1 -1
- package/dist/describe-error.js +97 -12
- package/dist/encryption.d.ts +38 -4
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +96 -14
- package/dist/events-consumer.d.ts +297 -0
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +673 -42
- package/dist/flushable-stream.d.ts +97 -1
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +291 -11
- package/dist/global.d.ts +36 -2
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +21 -6
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/log-format.d.ts +2 -2
- package/dist/log-format.js +19 -12
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -6
- package/dist/private.d.ts +226 -9
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +626 -7
- package/dist/replay-divergence.d.ts +25 -0
- package/dist/replay-divergence.d.ts.map +1 -0
- package/dist/replay-divergence.js +61 -0
- package/dist/replay-payload-cache.d.ts +64 -0
- package/dist/replay-payload-cache.d.ts.map +1 -0
- package/dist/replay-payload-cache.js +158 -0
- package/dist/runtime/compute-instance.d.ts +13 -0
- package/dist/runtime/compute-instance.d.ts.map +1 -0
- package/dist/runtime/compute-instance.js +14 -0
- package/dist/runtime/constants.d.ts +315 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +502 -16
- package/dist/runtime/count-step-started-events.d.ts +52 -0
- package/dist/runtime/count-step-started-events.d.ts.map +1 -0
- package/dist/runtime/count-step-started-events.js +72 -0
- package/dist/runtime/deployment-guard.d.ts +99 -0
- package/dist/runtime/deployment-guard.d.ts.map +1 -0
- package/dist/runtime/deployment-guard.js +154 -0
- package/dist/runtime/get-port-lazy.d.ts +15 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -1
- package/dist/runtime/get-port-lazy.js +75 -6
- package/dist/runtime/get-world-lazy.d.ts +5 -14
- package/dist/runtime/get-world-lazy.d.ts.map +1 -1
- package/dist/runtime/get-world-lazy.js +19 -29
- package/dist/runtime/helpers.d.ts +415 -29
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +686 -57
- package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
- package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
- package/dist/runtime/quickjs-assets.generated.js +30 -0
- package/dist/runtime/quickjs-entrypoint.d.ts +158 -0
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
- package/dist/runtime/quickjs-entrypoint.js +1863 -0
- package/dist/runtime/quickjs-log-view.d.ts +129 -0
- package/dist/runtime/quickjs-log-view.d.ts.map +1 -0
- package/dist/runtime/quickjs-log-view.js +229 -0
- package/dist/runtime/quickjs-runtime.d.ts +244 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +2427 -0
- package/dist/runtime/quickjs-serde.d.ts +107 -0
- package/dist/runtime/quickjs-serde.d.ts.map +1 -0
- package/dist/runtime/quickjs-serde.js +2159 -0
- package/dist/runtime/replay-budget.d.ts +97 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +139 -0
- package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
- package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
- package/dist/runtime/replay-recovery-reporter.js +64 -0
- package/dist/runtime/resume-hook.d.ts +91 -8
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +512 -89
- package/dist/runtime/resume-latency.d.ts +150 -0
- package/dist/runtime/resume-latency.d.ts.map +1 -0
- package/dist/runtime/resume-latency.js +155 -0
- package/dist/runtime/run-id-time.d.ts +19 -0
- package/dist/runtime/run-id-time.d.ts.map +1 -0
- package/dist/runtime/run-id-time.js +42 -0
- package/dist/runtime/run.d.ts +72 -7
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +280 -53
- package/dist/runtime/runs.d.ts +54 -3
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +126 -16
- package/dist/runtime/start.d.ts +101 -2
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +352 -61
- package/dist/runtime/step-executor.d.ts +186 -5
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +768 -130
- package/dist/runtime/step-latency.d.ts +220 -0
- package/dist/runtime/step-latency.d.ts.map +1 -0
- package/dist/runtime/step-latency.js +215 -0
- package/dist/runtime/step-ownership.d.ts +72 -0
- package/dist/runtime/step-ownership.d.ts.map +1 -0
- package/dist/runtime/step-ownership.js +114 -0
- package/dist/runtime/step-single-flight.d.ts +12 -0
- package/dist/runtime/step-single-flight.d.ts.map +1 -0
- package/dist/runtime/step-single-flight.js +75 -0
- package/dist/runtime/suspension-handler.d.ts +247 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +1304 -125
- package/dist/runtime/unserializable-step.d.ts +34 -0
- package/dist/runtime/unserializable-step.d.ts.map +1 -0
- package/dist/runtime/unserializable-step.js +52 -0
- package/dist/runtime/vm-mode.d.ts +44 -0
- package/dist/runtime/vm-mode.d.ts.map +1 -0
- package/dist/runtime/vm-mode.js +62 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
- package/dist/runtime/vm-serde-bundle.generated.js +16 -0
- package/dist/runtime/wait-continuation.d.ts +106 -0
- package/dist/runtime/wait-continuation.d.ts.map +1 -0
- package/dist/runtime/wait-continuation.js +136 -0
- package/dist/runtime/wait-until.d.ts +18 -0
- package/dist/runtime/wait-until.d.ts.map +1 -0
- package/dist/runtime/wait-until.js +42 -0
- package/dist/runtime/world-compatibility.d.ts +32 -0
- package/dist/runtime/world-compatibility.d.ts.map +1 -0
- package/dist/runtime/world-compatibility.js +44 -0
- package/dist/runtime/world-init.d.ts +17 -42
- package/dist/runtime/world-init.d.ts.map +1 -1
- package/dist/runtime/world-init.js +18 -43
- package/dist/runtime/world.d.ts +14 -2
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +75 -19
- package/dist/runtime.d.ts +10 -6
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3911 -489
- package/dist/sealed-box.d.ts +167 -0
- package/dist/sealed-box.d.ts.map +1 -0
- package/dist/sealed-box.js +571 -0
- package/dist/serialization/client.d.ts +3 -3
- package/dist/serialization/client.d.ts.map +1 -1
- package/dist/serialization/client.js +8 -4
- package/dist/serialization/codec-devalue-vm.d.ts +16 -0
- package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
- package/dist/serialization/codec-devalue-vm.js +148 -0
- package/dist/serialization/codec-devalue.d.ts +1 -1
- package/dist/serialization/codec-devalue.d.ts.map +1 -1
- package/dist/serialization/codec-devalue.js +24 -6
- package/dist/serialization/codec.d.ts +37 -2
- package/dist/serialization/codec.d.ts.map +1 -1
- package/dist/serialization/codec.js +2 -2
- package/dist/serialization/compression.d.ts +105 -0
- package/dist/serialization/compression.d.ts.map +1 -0
- package/dist/serialization/compression.js +261 -0
- package/dist/serialization/encryption.d.ts +119 -17
- package/dist/serialization/encryption.d.ts.map +1 -1
- package/dist/serialization/encryption.js +152 -17
- package/dist/serialization/errors.d.ts +13 -0
- package/dist/serialization/errors.d.ts.map +1 -1
- package/dist/serialization/errors.js +20 -2
- package/dist/serialization/format.d.ts +6 -6
- package/dist/serialization/format.js +7 -7
- package/dist/serialization/hardened.d.ts +156 -0
- package/dist/serialization/hardened.d.ts.map +1 -0
- package/dist/serialization/hardened.js +538 -0
- package/dist/serialization/index.d.ts +10 -8
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +10 -8
- package/dist/serialization/reducers/class-vm.d.ts +20 -0
- package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/class-vm.js +77 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -1
- package/dist/serialization/reducers/class.js +11 -6
- package/dist/serialization/reducers/common-vm.d.ts +15 -0
- package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/common-vm.js +616 -0
- package/dist/serialization/reducers/common.d.ts +1 -1
- package/dist/serialization/reducers/common.d.ts.map +1 -1
- package/dist/serialization/reducers/common.js +202 -62
- package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
- package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function-vm.js +97 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -1
- package/dist/serialization/reducers/step-function.js +25 -9
- package/dist/serialization/step.d.ts +4 -4
- package/dist/serialization/step.d.ts.map +1 -1
- package/dist/serialization/step.js +9 -5
- package/dist/serialization/types.d.ts +80 -1
- package/dist/serialization/types.d.ts.map +1 -1
- package/dist/serialization/types.js +15 -1
- package/dist/serialization/workflow-vm.d.ts +29 -0
- package/dist/serialization/workflow-vm.d.ts.map +1 -0
- package/dist/serialization/workflow-vm.js +74 -0
- package/dist/serialization-format.d.ts +64 -8
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +225 -73
- package/dist/serialization.d.ts +262 -34
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +1885 -277
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +60 -0
- package/dist/source-map.d.ts +25 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +154 -10
- package/dist/step/context-storage.d.ts +63 -2
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +7 -5
- package/dist/step/writable-stream.d.ts +3 -3
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +80 -13
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +148 -27
- package/dist/symbols.d.ts +50 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +51 -1
- package/dist/telemetry/semantic-conventions.d.ts +433 -2
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +319 -3
- package/dist/telemetry.d.ts +91 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +244 -17
- package/dist/test-support/orchestrator-context.d.ts +25 -0
- package/dist/test-support/orchestrator-context.d.ts.map +1 -0
- package/dist/test-support/orchestrator-context.js +107 -0
- 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 +0 -5
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +1 -15
- 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 +84 -14
- package/dist/vm/script-cache.d.ts +26 -0
- package/dist/vm/script-cache.d.ts.map +1 -0
- package/dist/vm/script-cache.js +131 -0
- package/dist/vm/uint8array-base64.js +1 -1
- package/dist/workflow/abort-controller.d.ts +2 -2
- package/dist/workflow/abort-controller.d.ts.map +1 -1
- package/dist/workflow/abort-controller.js +88 -21
- package/dist/workflow/attribute-dispatcher.d.ts +6 -0
- package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
- package/dist/workflow/attribute-dispatcher.js +45 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +24 -3
- package/dist/workflow/get-workflow-metadata.js +2 -2
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +304 -47
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -1
- package/dist/workflow/set-attributes.d.ts +68 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +60 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +58 -12
- package/dist/workflow/world-init-stub.d.ts +3 -3
- package/dist/workflow/world-init-stub.js +4 -4
- package/dist/workflow.d.ts +95 -3
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +900 -561
- package/docs/api-reference/create-hook.mdx +89 -10
- package/docs/api-reference/create-webhook.mdx +16 -15
- package/docs/api-reference/define-hook.mdx +35 -33
- package/docs/api-reference/fatal-error.mdx +30 -8
- package/docs/api-reference/fetch.mdx +14 -10
- package/docs/api-reference/get-step-metadata.mdx +2 -2
- package/docs/api-reference/get-workflow-metadata.mdx +3 -3
- package/docs/api-reference/get-writable.mdx +7 -7
- package/docs/api-reference/index.mdx +4 -1
- package/docs/api-reference/retryable-error.mdx +1 -1
- package/docs/api-reference/set-attributes.mdx +61 -0
- package/docs/api-reference/sleep.mdx +4 -4
- package/docs/foundations/cancellation.mdx +31 -32
- package/docs/foundations/errors-and-retries.mdx +42 -11
- package/docs/foundations/hooks.mdx +64 -35
- package/docs/foundations/idempotency.mdx +244 -12
- package/docs/foundations/index.mdx +1 -23
- package/docs/foundations/meta.json +2 -1
- package/docs/foundations/serialization.mdx +21 -22
- package/docs/foundations/starting-workflows.mdx +106 -30
- package/docs/foundations/streaming.mdx +108 -60
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/foundations/workflows-and-steps.mdx +9 -9
- package/docs/how-it-works/cancellation.mdx +63 -63
- package/docs/how-it-works/code-transform.mdx +83 -67
- package/docs/how-it-works/encryption.mdx +30 -26
- package/docs/how-it-works/event-sourcing.mdx +125 -34
- package/docs/how-it-works/framework-integrations.mdx +96 -337
- package/docs/how-it-works/understanding-directives.mdx +22 -22
- package/package.json +24 -15
- package/dist/runtime/step-handler.d.ts +0 -2
- package/dist/runtime/step-handler.d.ts.map +0 -1
- package/dist/runtime/step-handler.js +0 -776
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { WorkflowRuntimeError } from '@workflow/errors';
|
|
2
|
+
import { withResolvers } from '@workflow/utils';
|
|
3
|
+
import * as nanoid from 'nanoid';
|
|
4
|
+
import { monotonicFactory } from 'ulid';
|
|
5
|
+
import { vi } from 'vitest';
|
|
6
|
+
import { EventsConsumer } from '../events-consumer.js';
|
|
7
|
+
import { describeDivergenceContext } from '../replay-divergence.js';
|
|
8
|
+
import { ReplayPayloadCache } from '../replay-payload-cache.js';
|
|
9
|
+
import { createContext } from '../vm/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Builds an orchestrator context that replays a hand-written event log through
|
|
12
|
+
* the real workflow primitives (`createUseStep`, `createSleep`,
|
|
13
|
+
* `createCreateHook`), without a World or a VM entrypoint.
|
|
14
|
+
*/
|
|
15
|
+
export function setupWorkflowContext(events, options = {}) {
|
|
16
|
+
const context = createContext({
|
|
17
|
+
seed: 'test',
|
|
18
|
+
fixedTimestamp: 1753481739458,
|
|
19
|
+
});
|
|
20
|
+
const ulid = monotonicFactory(() => context.globalThis.Math.random());
|
|
21
|
+
// Real-session parity: the log-order-draws quiescence fixpoint keys its
|
|
22
|
+
// progress metric on `mintCount`. Without it the loop degrades to a single
|
|
23
|
+
// turn and these suites would only exercise a degraded variant.
|
|
24
|
+
let mintCount = 0;
|
|
25
|
+
const workflowStartedAt = context.globalThis.Date.now();
|
|
26
|
+
const promiseQueueHolder = { current: Promise.resolve() };
|
|
27
|
+
// Forward onUnconsumedEvent through ctx.onWorkflowError so tests that wire
|
|
28
|
+
// onWorkflowError to a discontinuation promise (see runWithDiscontinuation)
|
|
29
|
+
// actually observe false-positive unconsumed-event detections instead of
|
|
30
|
+
// silently dropping them.
|
|
31
|
+
const ctxRef = {};
|
|
32
|
+
const ctx = {
|
|
33
|
+
suspensionGeneration: 0,
|
|
34
|
+
runId: 'wrun_test',
|
|
35
|
+
encryptionKey: undefined,
|
|
36
|
+
replayPayloadCache: new ReplayPayloadCache(undefined),
|
|
37
|
+
globalThis: context.globalThis,
|
|
38
|
+
eventsConsumer: new EventsConsumer(events, {
|
|
39
|
+
// Fake context: no deliveries are modeled, so the gate is a no-op here.
|
|
40
|
+
isDeliveryIdle: () => true,
|
|
41
|
+
onUnconsumedEvent: (event) => {
|
|
42
|
+
const current = ctxRef.current;
|
|
43
|
+
if (!current)
|
|
44
|
+
return;
|
|
45
|
+
// Same detail the production path appends (see `onUnconsumedEvent` in
|
|
46
|
+
// workflow.ts), so a test can assert on what a user would read.
|
|
47
|
+
current.onWorkflowError(new WorkflowRuntimeError(`Unconsumed event in event log: eventType=${event.eventType}, correlationId=${event.correlationId}, eventId=${event.eventId}. This indicates a corrupted or invalid event log. ${describeDivergenceContext(event, current.invocationsQueue, current.eventsConsumer)}`));
|
|
48
|
+
},
|
|
49
|
+
onDuplicateEvent: options.onDuplicateEvent,
|
|
50
|
+
getPromiseQueue: () => promiseQueueHolder.current,
|
|
51
|
+
}),
|
|
52
|
+
invocationsQueue: new Map(),
|
|
53
|
+
generateUlid: () => {
|
|
54
|
+
mintCount += 1;
|
|
55
|
+
return ulid(workflowStartedAt);
|
|
56
|
+
},
|
|
57
|
+
get mintCount() {
|
|
58
|
+
return mintCount;
|
|
59
|
+
},
|
|
60
|
+
generateNanoid: nanoid.customRandom(nanoid.urlAlphabet, 21, (size) => new Uint8Array(size).map(() => 256 * context.globalThis.Math.random())),
|
|
61
|
+
onWorkflowError: vi.fn(),
|
|
62
|
+
get promiseQueue() {
|
|
63
|
+
return promiseQueueHolder.current;
|
|
64
|
+
},
|
|
65
|
+
set promiseQueue(value) {
|
|
66
|
+
promiseQueueHolder.current = value;
|
|
67
|
+
},
|
|
68
|
+
pendingDeliveries: 0,
|
|
69
|
+
pendingDeliveryBarriers: new Map(),
|
|
70
|
+
};
|
|
71
|
+
ctxRef.current = ctx;
|
|
72
|
+
return ctx;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Deterministic correlation IDs from the ULID generator with seed 'test', in
|
|
76
|
+
* the order {@link setupWorkflowContext}'s generator mints them.
|
|
77
|
+
*/
|
|
78
|
+
export const CORR_IDS = [
|
|
79
|
+
'01K11TFZ62YS0YYFDQ3E8B9YCV',
|
|
80
|
+
'01K11TFZ62YS0YYFDQ3E8B9YCW',
|
|
81
|
+
'01K11TFZ62YS0YYFDQ3E8B9YCX',
|
|
82
|
+
'01K11TFZ62YS0YYFDQ3E8B9YCY',
|
|
83
|
+
'01K11TFZ62YS0YYFDQ3E8B9YCZ',
|
|
84
|
+
'01K11TFZ62YS0YYFDQ3E8B9YD0',
|
|
85
|
+
];
|
|
86
|
+
/**
|
|
87
|
+
* Runs `workflowFn` against `ctx`, racing it against the context's error
|
|
88
|
+
* channel so a `WorkflowSuspension` or a detected divergence surfaces as
|
|
89
|
+
* `error` rather than hanging.
|
|
90
|
+
*/
|
|
91
|
+
export async function runWithDiscontinuation(ctx, workflowFn) {
|
|
92
|
+
const workflowDiscontinuation = withResolvers();
|
|
93
|
+
ctx.onWorkflowError = workflowDiscontinuation.reject;
|
|
94
|
+
let result;
|
|
95
|
+
let error;
|
|
96
|
+
try {
|
|
97
|
+
result = await Promise.race([
|
|
98
|
+
workflowFn(),
|
|
99
|
+
workflowDiscontinuation.promise,
|
|
100
|
+
]);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
error = err;
|
|
104
|
+
}
|
|
105
|
+
return { result, error };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1zdXBwb3J0L29yY2hlc3RyYXRvci1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQWUsRUFDZixVQUF5RCxFQUFFO0lBRTNELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztRQUM1QixJQUFJLEVBQUUsTUFBTTtRQUNaLGNBQWMsRUFBRSxhQUFhO0tBQzlCLENBQUMsQ0FBQztJQUNILE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdEUsd0VBQXdFO0lBQ3hFLDJFQUEyRTtJQUMzRSxnRUFBZ0U7SUFDaEUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMs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LENBQUMsZUFBZSxHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztJQUVyRCxJQUFJLE1BQVcsQ0FBQztJQUNoQixJQUFJLEtBQVUsQ0FBQztJQUNmLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDMUIsVUFBVSxFQUFFO1lBQ1osdUJBQXVCLENBQUMsT0FBTztTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV29ya2Zsb3dSdW50aW1lRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IHdpdGhSZXNvbHZlcnMgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBFdmVudCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgKiBhcyBuYW5vaWQgZnJvbSAnbmFub2lkJztcbmltcG9ydCB7IG1vbm90b25pY0ZhY3RvcnkgfSBmcm9tICd1bGlkJztcbmltcG9ydCB7IHZpIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEV2ZW50c0NvbnN1bWVyIH0gZnJvbSAnLi4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0IH0gZnJvbSAnLi4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgeyBkZXNjcmliZURpdmVyZ2VuY2VDb250ZXh0IH0gZnJvbSAnLi4vcmVwbGF5LWRpdmVyZ2VuY2UuanMnO1xuaW1wb3J0IHsgUmVwbGF5UGF5bG9hZENhY2hlIH0gZnJvbSAnLi4vcmVwbGF5LXBheWxvYWQtY2FjaGUuanMnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gJy4uL3ZtL2luZGV4LmpzJztcblxuLyoqXG4gKiBCdWlsZHMgYW4gb3JjaGVzdHJhdG9yIGNvbnRleHQgdGhhdCByZXBsYXlzIGEgaGFuZC13cml0dGVuIGV2ZW50IGxvZyB0aHJvdWdoXG4gKiB0aGUgcmVhbCB3b3JrZmxvdyBwcmltaXRpdmVzIChgY3JlYXRlVXNlU3RlcGAsIGBjcmVhdGVTbGVlcGAsXG4gKiBgY3JlYXRlQ3JlYXRlSG9va2ApLCB3aXRob3V0IGEgV29ybGQgb3IgYSBWTSBlbnRyeXBvaW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBXb3JrZmxvd0NvbnRleHQoXG4gIGV2ZW50czogRXZlbnRbXSxcbiAgb3B0aW9uczogeyBvbkR1cGxpY2F0ZUV2ZW50PzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCB9ID0ge31cbik6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCB7XG4gIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHtcbiAgICBzZWVkOiAndGVzdCcsXG4gICAgZml4ZWRUaW1lc3RhbXA6IDE3NTM0ODE3Mzk0NTgsXG4gIH0pO1xuICBjb25zdCB1bGlkID0gbW9ub3RvbmljRmFjdG9yeSgoKSA9PiBjb250ZXh0Lmdsb2JhbFRoaXMuTWF0aC5yYW5kb20oKSk7XG4gIC8vIFJlYWwtc2Vzc2lvbiBwYXJpdHk6IHRoZSBsb2ctb3JkZXItZHJhd3MgcXVpZXNjZW5jZSBmaXhwb2ludCBrZXlzIGl0c1xuICAvLyBwcm9ncmVzcyBtZXRyaWMgb24gYG1pbnRDb3VudGAuIFdpdGhvdXQgaXQgdGhlIGxvb3AgZGVncmFkZXMgdG8gYSBzaW5nbGVcbiAgLy8gdHVybiBhbmQgdGhlc2Ugc3VpdGVzIHdvdWxkIG9ubHkgZXhlcmNpc2UgYSBkZWdyYWRlZCB2YXJpYW50LlxuICBsZXQgbWludENvdW50ID0gMDtcbiAgY29uc3Qgd29ya2Zsb3dTdGFydGVkQXQgPSBjb250ZXh0Lmdsb2JhbFRoaXMuRGF0ZS5ub3coKTtcbiAgY29uc3QgcHJvbWlzZVF1ZXVlSG9sZGVyID0geyBjdXJyZW50OiBQcm9taXNlLnJlc29sdmUoKSB9O1xuICAvLyBGb3J3YXJkIG9uVW5jb25zdW1lZEV2ZW50IHRocm91Z2ggY3R4Lm9uV29ya2Zsb3dFcnJvciBzbyB0ZXN0cyB0aGF0IHdpcmVcbiAgLy8gb25Xb3JrZmxvd0Vycm9yIHRvIGEgZGlzY29udGludWF0aW9uIHByb21pc2UgKHNlZSBydW5XaXRoRGlzY29udGludWF0aW9uKVxuICAvLyBhY3R1YWxseSBvYnNlcnZlIGZhbHNlLXBvc2l0aXZlIHVuY29uc3VtZWQtZXZlbnQgZGV0ZWN0aW9ucyBpbnN0ZWFkIG9mXG4gIC8vIHNpbGVudGx5IGRyb3BwaW5nIHRoZW0uXG4gIGNvbnN0IGN0eFJlZjogeyBjdXJyZW50PzogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0IH0gPSB7fTtcbiAgY29uc3QgY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQgPSB7XG4gICAgc3VzcGVuc2lvbkdlbmVyYXRpb246IDAsXG4gICAgcnVuSWQ6ICd3cnVuX3Rlc3QnLFxuICAgIGVuY3J5cHRpb25LZXk6IHVuZGVmaW5lZCxcbiAgICByZXBsYXlQYXlsb2FkQ2FjaGU6IG5ldyBSZXBsYXlQYXlsb2FkQ2FjaGUodW5kZWZpbmVkKSxcbiAgICBnbG9iYWxUaGlzOiBjb250ZXh0Lmdsb2JhbFRoaXMsXG4gICAgZXZlbnRzQ29uc3VtZXI6IG5ldyBFdmVudHNDb25zdW1lcihldmVudHMsIHtcbiAgICAgIC8vIEZha2UgY29udGV4dDogbm8gZGVsaXZlcmllcyBhcmUgbW9kZWxlZCwgc28gdGhlIGdhdGUgaXMgYSBuby1vcCBoZXJlLlxuICAgICAgaXNEZWxpdmVyeUlkbGU6ICgpID0+IHRydWUsXG4gICAgICBvblVuY29uc3VtZWRFdmVudDogKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjdHhSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG4gICAgICAgIC8vIFNhbWUgZGV0YWlsIHRoZSBwcm9kdWN0aW9uIHBhdGggYXBwZW5kcyAoc2VlIGBvblVuY29uc3VtZWRFdmVudGAgaW5cbiAgICAgICAgLy8gd29ya2Zsb3cudHMpLCBzbyBhIHRlc3QgY2FuIGFzc2VydCBvbiB3aGF0IGEgdXNlciB3b3VsZCByZWFkLlxuICAgICAgICBjdXJyZW50Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICBgVW5jb25zdW1lZCBldmVudCBpbiBldmVudCBsb2c6IGV2ZW50VHlwZT0ke2V2ZW50LmV2ZW50VHlwZX0sIGNvcnJlbGF0aW9uSWQ9JHtldmVudC5jb3JyZWxhdGlvbklkfSwgZXZlbnRJZD0ke2V2ZW50LmV2ZW50SWR9LiBUaGlzIGluZGljYXRlcyBhIGNvcnJ1cHRlZCBvciBpbnZhbGlkIGV2ZW50IGxvZy4gJHtkZXNjcmliZURpdmVyZ2VuY2VDb250ZXh0KGV2ZW50LCBjdXJyZW50Lmludm9jYXRpb25zUXVldWUsIGN1cnJlbnQuZXZlbnRzQ29uc3VtZXIpfWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgb25EdXBsaWNhdGVFdmVudDogb3B0aW9ucy5vbkR1cGxpY2F0ZUV2ZW50LFxuICAgICAgZ2V0UHJvbWlzZVF1ZXVlOiAoKSA9PiBwcm9taXNlUXVldWVIb2xkZXIuY3VycmVudCxcbiAgICB9KSxcbiAgICBpbnZvY2F0aW9uc1F1ZXVlOiBuZXcgTWFwKCksXG4gICAgZ2VuZXJhdGVVbGlkOiAoKSA9PiB7XG4gICAgICBtaW50Q291bnQgKz0gMTtcbiAgICAgIHJldHVybiB1bGlkKHdvcmtmbG93U3RhcnRlZEF0KTtcbiAgICB9LFxuICAgIGdldCBtaW50Q291bnQoKSB7XG4gICAgICByZXR1cm4gbWludENvdW50O1xuICAgIH0sXG4gICAgZ2VuZXJhdGVOYW5vaWQ6IG5hbm9pZC5jdXN0b21SYW5kb20obmFub2lkLnVybEFscGhhYmV0LCAyMSwgKHNpemUpID0+XG4gICAgICBuZXcgVWludDhBcnJheShzaXplKS5tYXAoKCkgPT4gMjU2ICogY29udGV4dC5nbG9iYWxUaGlzLk1hdGgucmFuZG9tKCkpXG4gICAgKSxcbiAgICBvbldvcmtmbG93RXJyb3I6IHZpLmZuKCksXG4gICAgZ2V0IHByb21pc2VRdWV1ZSgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUXVldWVIb2xkZXIuY3VycmVudDtcbiAgICB9LFxuICAgIHNldCBwcm9taXNlUXVldWUodmFsdWU6IFByb21pc2U8dm9pZD4pIHtcbiAgICAgIHByb21pc2VRdWV1ZUhvbGRlci5jdXJyZW50ID0gdmFsdWU7XG4gICAgfSxcbiAgICBwZW5kaW5nRGVsaXZlcmllczogMCxcbiAgICBwZW5kaW5nRGVsaXZlcnlCYXJyaWVyczogbmV3IE1hcCgpLFxuICB9O1xuICBjdHhSZWYuY3VycmVudCA9IGN0eDtcbiAgcmV0dXJuIGN0eDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmlzdGljIGNvcnJlbGF0aW9uIElEcyBmcm9tIHRoZSBVTElEIGdlbmVyYXRvciB3aXRoIHNlZWQgJ3Rlc3QnLCBpblxuICogdGhlIG9yZGVyIHtAbGluayBzZXR1cFdvcmtmbG93Q29udGV4dH0ncyBnZW5lcmF0b3IgbWludHMgdGhlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPUlJfSURTID0gW1xuICAnMDFLMTFURlo2MllTMFlZRkRRM0U4QjlZQ1YnLFxuICAnMDFLMTFURlo2MllTMFlZRkRRM0U4QjlZQ1cnLFxuICAnMDFLMTFURlo2MllTMFlZRkRRM0U4QjlZQ1gnLFxuICAnMDFLMTFURlo2MllTMFlZRkRRM0U4QjlZQ1knLFxuICAnMDFLMTFURlo2MllTMFlZRkRRM0U4QjlZQ1onLFxuICAnMDFLMTFURlo2MllTMFlZRkRRM0U4QjlZRDAnLFxuXTtcblxuLyoqXG4gKiBSdW5zIGB3b3JrZmxvd0ZuYCBhZ2FpbnN0IGBjdHhgLCByYWNpbmcgaXQgYWdhaW5zdCB0aGUgY29udGV4dCdzIGVycm9yXG4gKiBjaGFubmVsIHNvIGEgYFdvcmtmbG93U3VzcGVuc2lvbmAgb3IgYSBkZXRlY3RlZCBkaXZlcmdlbmNlIHN1cmZhY2VzIGFzXG4gKiBgZXJyb3JgIHJhdGhlciB0aGFuIGhhbmdpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoRGlzY29udGludWF0aW9uKFxuICBjdHg6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbiAgd29ya2Zsb3dGbjogKCkgPT4gUHJvbWlzZTxhbnk+XG4pOiBQcm9taXNlPHsgcmVzdWx0PzogYW55OyBlcnJvcj86IGFueSB9PiB7XG4gIGNvbnN0IHdvcmtmbG93RGlzY29udGludWF0aW9uID0gd2l0aFJlc29sdmVyczx2b2lkPigpO1xuICBjdHgub25Xb3JrZmxvd0Vycm9yID0gd29ya2Zsb3dEaXNjb250aW51YXRpb24ucmVqZWN0O1xuXG4gIGxldCByZXN1bHQ6IGFueTtcbiAgbGV0IGVycm9yOiBhbnk7XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIHdvcmtmbG93Rm4oKSxcbiAgICAgIHdvcmtmbG93RGlzY29udGludWF0aW9uLnByb21pc2UsXG4gICAgXSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gZXJyO1xuICB9XG4gIHJldHVybiB7IHJlc3VsdCwgZXJyb3IgfTtcbn1cbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export declare function getErrorName(v: unknown): string;
|
|
2
2
|
export declare function getErrorStack(v: unknown): string;
|
|
3
|
+
export declare function isAbortError(value: unknown): value is {
|
|
4
|
+
name: 'AbortError';
|
|
5
|
+
message: string;
|
|
6
|
+
stack?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function promoteAbortErrorToFatal(value: unknown): unknown;
|
|
3
9
|
export interface NormalizedUnknownError {
|
|
4
10
|
name: string;
|
|
5
11
|
message: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAK/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKhD;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAYlE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUhE;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AA2CD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,sBAAsB,CAAC,CAmBjC"}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { types } from 'node:util';
|
|
2
|
+
import { FatalError } from '@workflow/errors';
|
|
2
3
|
export function getErrorName(v) {
|
|
3
4
|
if (types.isNativeError(v)) {
|
|
4
5
|
return v.name;
|
|
@@ -11,6 +12,27 @@ export function getErrorStack(v) {
|
|
|
11
12
|
}
|
|
12
13
|
return '';
|
|
13
14
|
}
|
|
15
|
+
export function isAbortError(value) {
|
|
16
|
+
return (typeof value === 'object' &&
|
|
17
|
+
value !== null &&
|
|
18
|
+
'name' in value &&
|
|
19
|
+
value.name === 'AbortError' &&
|
|
20
|
+
'message' in value &&
|
|
21
|
+
typeof value.message === 'string' &&
|
|
22
|
+
(!('stack' in value) ||
|
|
23
|
+
value.stack === undefined ||
|
|
24
|
+
typeof value.stack === 'string'));
|
|
25
|
+
}
|
|
26
|
+
export function promoteAbortErrorToFatal(value) {
|
|
27
|
+
if (!isAbortError(value) || FatalError.is(value)) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
const fatalError = new FatalError(`Aborted: ${value.message}`);
|
|
31
|
+
if (value.stack) {
|
|
32
|
+
fatalError.stack = value.stack;
|
|
33
|
+
}
|
|
34
|
+
return fatalError;
|
|
35
|
+
}
|
|
14
36
|
function isThenable(value) {
|
|
15
37
|
return (typeof value === 'object' &&
|
|
16
38
|
value !== null &&
|
|
@@ -72,4 +94,4 @@ export async function normalizeUnknownError(value) {
|
|
|
72
94
|
}
|
|
73
95
|
return normalizeSyncError(value);
|
|
74
96
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFVO0lBQ3JDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBVTtJQUN0QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixLQUFjO0lBRWQsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUMzQixTQUFTLElBQUksS0FBSztRQUNsQixPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtRQUNqQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUztZQUN6QixPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQ25DLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWM7SUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFRRCxTQUFTLFVBQVUsQ0FBQyxLQUFjO0lBQ2hDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLEtBQUssS0FBSyxJQUFJO1FBQ2QsTUFBTSxJQUFJLEtBQUs7UUFDZixPQUFRLEtBQTRCLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLENBQVU7SUFDcEMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsQ0FBQztZQUNWLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLEtBQWM7SUFFZCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0scUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsT0FBTyxFQUFFLHNCQUFzQixVQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3BELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxTQUFTLEVBQUUsQ0FBQztZQUNuQixNQUFNLFVBQVUsR0FBRyxNQUFNLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFELE9BQU87Z0JBQ0wsR0FBRyxVQUFVO2dCQUNiLE9BQU8sRUFBRSxzQkFBc0IsVUFBVSxDQUFDLE9BQU8sRUFBRTthQUNwRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlcyB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBGYXRhbEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck5hbWUodjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlcy5pc05hdGl2ZUVycm9yKHYpKSB7XG4gICAgcmV0dXJuIHYubmFtZTtcbiAgfVxuICByZXR1cm4gJ0Vycm9yJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yU3RhY2sodjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlcy5pc05hdGl2ZUVycm9yKHYpKSB7XG4gICAgcmV0dXJuIHYuc3RhY2sgPz8gJyc7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBYm9ydEVycm9yKFxuICB2YWx1ZTogdW5rbm93blxuKTogdmFsdWUgaXMgeyBuYW1lOiAnQWJvcnRFcnJvcic7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmcgfSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgJ25hbWUnIGluIHZhbHVlICYmXG4gICAgdmFsdWUubmFtZSA9PT0gJ0Fib3J0RXJyb3InICYmXG4gICAgJ21lc3NhZ2UnIGluIHZhbHVlICYmXG4gICAgdHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmXG4gICAgKCEoJ3N0YWNrJyBpbiB2YWx1ZSkgfHxcbiAgICAgIHZhbHVlLnN0YWNrID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHR5cGVvZiB2YWx1ZS5zdGFjayA9PT0gJ3N0cmluZycpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tb3RlQWJvcnRFcnJvclRvRmF0YWwodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKCFpc0Fib3J0RXJyb3IodmFsdWUpIHx8IEZhdGFsRXJyb3IuaXModmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgY29uc3QgZmF0YWxFcnJvciA9IG5ldyBGYXRhbEVycm9yKGBBYm9ydGVkOiAke3ZhbHVlLm1lc3NhZ2V9YCk7XG4gIGlmICh2YWx1ZS5zdGFjaykge1xuICAgIGZhdGFsRXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgfVxuICByZXR1cm4gZmF0YWxFcnJvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkVW5rbm93bkVycm9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN0YWNrOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGlzVGhlbmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAndGhlbicgaW4gdmFsdWUgJiZcbiAgICB0eXBlb2YgKHZhbHVlIGFzIHsgdGhlbj86IHVua25vd24gfSkudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTeW5jRXJyb3IodjogdW5rbm93bik6IE5vcm1hbGl6ZWRVbmtub3duRXJyb3Ige1xuICBpZiAodHlwZXMuaXNOYXRpdmVFcnJvcih2KSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB2Lm5hbWUsXG4gICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2UsXG4gICAgICBzdGFjazogdi5zdGFjayA/PyAnJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogdixcbiAgICAgIHN0YWNrOiAnJyxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KHYpLFxuICAgICAgc3RhY2s6ICcnLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogU3RyaW5nKHYpLFxuICAgICAgc3RhY2s6ICcnLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIHVua25vd24gdGhyb3duIHZhbHVlcyBpbnRvIGEgc3RhYmxlIGVycm9yIHNoYXBlLlxuICogVGhpcyBoYW5kbGVzIFByb21pc2UvdGhlbmFibGUgdGhyb3cgdmFsdWVzIHNvIGxvZ3MvZXZlbnRzIG5ldmVyIGVuZCB1cFxuICogd2l0aCB1bmhlbHBmdWwgXCJbb2JqZWN0IFByb21pc2VdXCIgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub3JtYWxpemVVbmtub3duRXJyb3IoXG4gIHZhbHVlOiB1bmtub3duXG4pOiBQcm9taXNlPE5vcm1hbGl6ZWRVbmtub3duRXJyb3I+IHtcbiAgaWYgKGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgdmFsdWU7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYXdhaXQgbm9ybWFsaXplVW5rbm93bkVycm9yKHJlc29sdmVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5vcm1hbGl6ZWQsXG4gICAgICAgIG1lc3NhZ2U6IGBQcm9taXNlIHJlamVjdGlvbjogJHtub3JtYWxpemVkLm1lc3NhZ2V9YCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAocmVqZWN0aW9uKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYXdhaXQgbm9ybWFsaXplVW5rbm93bkVycm9yKHJlamVjdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ub3JtYWxpemVkLFxuICAgICAgICBtZXNzYWdlOiBgUHJvbWlzZSByZWplY3Rpb246ICR7bm9ybWFsaXplZC5tZXNzYWdlfWAsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVTeW5jRXJyb3IodmFsdWUpO1xufVxuIl19
|
package/dist/util.d.ts
CHANGED
|
@@ -32,9 +32,4 @@ export declare function getAbortStreamId(id: string): string;
|
|
|
32
32
|
* `strm_{id}_system_abort`.
|
|
33
33
|
*/
|
|
34
34
|
export declare function getAbortStreamIdFromToken(hookToken: string): string;
|
|
35
|
-
/**
|
|
36
|
-
* A small wrapper around `waitUntil` that also returns
|
|
37
|
-
* the result of the awaited promise.
|
|
38
|
-
*/
|
|
39
|
-
export declare function waitedUntil<T>(fn: () => Promise<T>): Promise<T>;
|
|
40
35
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA6Bf;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,UAUvE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,UAE1C;AAID;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOnE"}
|
package/dist/util.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { waitUntil } from '@vercel/functions';
|
|
2
1
|
import { pluralize } from '@workflow/utils';
|
|
3
2
|
/**
|
|
4
3
|
* Builds a workflow suspension log message based on the counts of steps,
|
|
@@ -76,17 +75,4 @@ export function getAbortStreamIdFromToken(hookToken) {
|
|
|
76
75
|
}
|
|
77
76
|
return getAbortStreamId(hookToken.slice(ABORT_TOKEN_PREFIX.length));
|
|
78
77
|
}
|
|
79
|
-
|
|
80
|
-
* A small wrapper around `waitUntil` that also returns
|
|
81
|
-
* the result of the awaited promise.
|
|
82
|
-
*/
|
|
83
|
-
export async function waitedUntil(fn) {
|
|
84
|
-
const result = fn();
|
|
85
|
-
waitUntil(result.catch(() => {
|
|
86
|
-
// Ignore error from the promise being rejected.
|
|
87
|
-
// It's expected that the invoker of `waitedUntil`
|
|
88
|
-
// will handle the error.
|
|
89
|
-
}));
|
|
90
|
-
return result;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLFNBQWlCO0lBRWpCLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDREQUE0RCxTQUFTLEVBQUUsQ0FBQztBQUN2RyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFNBQWtCO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUMzRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsaUdBQWlHO0lBQ2pHLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUMvRCxXQUFXLENBQ1osQ0FBQztJQUNGLE9BQU8sR0FBRyxRQUFRLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQVU7SUFDekMsT0FBTyxRQUFRLEVBQUUsZUFBZSxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUVuQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLFNBQWlCO0lBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxTQUFTLEdBQUcsQ0FDL0UsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUksRUFBb0I7SUFDdkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDcEIsU0FBUyxDQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLGdEQUFnRDtRQUNoRCxrREFBa0Q7UUFDbEQseUJBQXlCO0lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnQHZlcmNlbC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcblxuLyoqXG4gKiBCdWlsZHMgYSB3b3JrZmxvdyBzdXNwZW5zaW9uIGxvZyBtZXNzYWdlIGJhc2VkIG9uIHRoZSBjb3VudHMgb2Ygc3RlcHMsXG4gKiBob29rcywgYW5kIHdhaXRzLiBUaGUgc3RydWN0dXJlZCBsb2dnZXIgYXR0YWNoZXMgdGhlIHJ1biBjb250ZXh0LCBzbyB0aGVcbiAqIG1lc3NhZ2UgaXRzZWxmIG9ubHkgZGVzY3JpYmVzIHdoYXQncyBiZWluZyBlbnF1ZXVlZC5cbiAqIEBwYXJhbSBzdGVwQ291bnQgLSBOdW1iZXIgb2Ygc3RlcHMgdG8gYmUgZW5xdWV1ZWRcbiAqIEBwYXJhbSBob29rQ291bnQgLSBOdW1iZXIgb2YgaG9va3MgdG8gYmUgZW5xdWV1ZWRcbiAqIEBwYXJhbSB3YWl0Q291bnQgLSBOdW1iZXIgb2Ygd2FpdHMgdG8gYmUgZW5xdWV1ZWRcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgbG9nIG1lc3NhZ2Ugb3IgbnVsbCBpZiBhbGwgY291bnRzIGFyZSAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdvcmtmbG93U3VzcGVuc2lvbk1lc3NhZ2UoXG4gIHN0ZXBDb3VudDogbnVtYmVyLFxuICBob29rQ291bnQ6IG51bWJlcixcbiAgd2FpdENvdW50OiBudW1iZXJcbik6IHN0cmluZyB8IG51bGwge1xuICBpZiAoc3RlcENvdW50ID09PSAwICYmIGhvb2tDb3VudCA9PT0gMCAmJiB3YWl0Q291bnQgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gW107XG4gIGlmIChzdGVwQ291bnQgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtzdGVwQ291bnR9ICR7cGx1cmFsaXplKCdzdGVwJywgJ3N0ZXBzJywgc3RlcENvdW50KX1gKTtcbiAgfVxuICBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgIHBhcnRzLnB1c2goYCR7aG9va0NvdW50fSAke3BsdXJhbGl6ZSgnaG9vaycsICdob29rcycsIGhvb2tDb3VudCl9YCk7XG4gIH1cbiAgaWYgKHdhaXRDb3VudCA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke3dhaXRDb3VudH0gJHtwbHVyYWxpemUoJ3RpbWVyJywgJ3RpbWVycycsIHdhaXRDb3VudCl9YCk7XG4gIH1cblxuICBjb25zdCByZXN1bWVNc2dQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICByZXN1bWVNc2dQYXJ0cy5wdXNoKCdzdGVwcyBhcmUgY29tcGxldGVkJyk7XG4gIH1cbiAgaWYgKGhvb2tDb3VudCA+IDApIHtcbiAgICByZXN1bWVNc2dQYXJ0cy5wdXNoKCdob29rcyBhcmUgcmVjZWl2ZWQnKTtcbiAgfVxuICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ3RpbWVycyBoYXZlIGVsYXBzZWQnKTtcbiAgfVxuICBjb25zdCByZXN1bWVNc2cgPSByZXN1bWVNc2dQYXJ0cy5qb2luKCcgYW5kICcpO1xuXG4gIHJldHVybiBgJHtwYXJ0cy5qb2luKCcgYW5kICcpfSB0byBiZSBlbnF1ZXVlZFxcbiAgV29ya2Zsb3cgd2lsbCBzdXNwZW5kIGFuZCByZXN1bWUgd2hlbiAke3Jlc3VtZU1zZ31gO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHN0cmVhbSBJRCBmb3IgYSB3b3JrZmxvdyBydW4uXG4gKiBVc2VyLWRlZmluZWQgc3RyZWFtcyBpbmNsdWRlIGEgXCJ1c2VyXCIgc2VnbWVudCBmb3IgaXNvbGF0aW9uIGZyb20gZnV0dXJlIHN5c3RlbS1kZWZpbmVkIHN0cmVhbXMuXG4gKiBOYW1lc3BhY2VzIGFyZSBiYXNlNjQtZW5jb2RlZCB0byBoYW5kbGUgY2hhcmFjdGVycyBub3QgYWxsb3dlZCBpbiBSZWRpcyBrZXkgbmFtZXMuXG4gKlxuICogQHBhcmFtIHJ1bklkIC0gVGhlIHdvcmtmbG93IHJ1biBJRFxuICogQHBhcmFtIG5hbWVzcGFjZSAtIE9wdGlvbmFsIG5hbWVzcGFjZSBmb3IgdGhlIHN0cmVhbVxuICogQHJldHVybnMgVGhlIHN0cmVhbSBJRCBpbiBmb3JtYXQ6IGBzdHJtX3tVTElEfV91c2VyX3tiYXNlNjQobmFtZXNwYWNlKT99YFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya2Zsb3dSdW5TdHJlYW1JZChydW5JZDogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcpIHtcbiAgY29uc3Qgc3RyZWFtSWQgPSBgJHtydW5JZC5yZXBsYWNlKCd3cnVuXycsICdzdHJtXycpfV91c2VyYDtcbiAgaWYgKCFuYW1lc3BhY2UpIHtcbiAgICByZXR1cm4gc3RyZWFtSWQ7XG4gIH1cbiAgLy8gQmFzZTY0IGVuY29kZSB0aGUgbmFtZXNwYWNlIHRvIGhhbmRsZSBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCBtYXkgbm90IGJlIGFsbG93ZWQgaW4gUmVkaXMga2V5c1xuICBjb25zdCBlbmNvZGVkTmFtZXNwYWNlID0gQnVmZmVyLmZyb20obmFtZXNwYWNlLCAndXRmLTgnKS50b1N0cmluZyhcbiAgICAnYmFzZTY0dXJsJ1xuICApO1xuICByZXR1cm4gYCR7c3RyZWFtSWR9XyR7ZW5jb2RlZE5hbWVzcGFjZX1gO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RyZWFtIElEIGZvciBhbiBhYm9ydCBzaWduYWwncyBiYWNraW5nIHN0cmVhbS5cbiAqIFVzZXMgdGhlIFwiX3N5c3RlbV9hYm9ydFwiIG5hbWVzcGFjZSB0byBpc29sYXRlIGZyb20gdXNlci1kZWZpbmVkIHN0cmVhbXMuXG4gKlxuICogQHBhcmFtIGlkIC0gQSB1bmlxdWUgaWRlbnRpZmllciAodHlwaWNhbGx5IGEgVUxJRClcbiAqIEByZXR1cm5zIFRoZSBzdHJlYW0gSUQgaW4gZm9ybWF0OiBgc3RybV97aWR9X3N5c3RlbV9hYm9ydGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3J0U3RyZWFtSWQoaWQ6IHN0cmluZykge1xuICByZXR1cm4gYHN0cm1fJHtpZH1fc3lzdGVtX2Fib3J0YDtcbn1cblxuY29uc3QgQUJPUlRfVE9LRU5fUFJFRklYID0gJ2FicnRfJztcblxuLyoqXG4gKiBEZXJpdmUgdGhlIGFib3J0IHN0cmVhbSBuYW1lIGZyb20gYSBob29rIHRva2VuLlxuICogSG9vayB0b2tlbnMgdXNlIHRoZSBmb3JtYXQgYGFicnRfe2lkfWAsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzdHJlYW0gaXNcbiAqIGBzdHJtX3tpZH1fc3lzdGVtX2Fib3J0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3J0U3RyZWFtSWRGcm9tVG9rZW4oaG9va1Rva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWhvb2tUb2tlbi5zdGFydHNXaXRoKEFCT1JUX1RPS0VOX1BSRUZJWCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBhYm9ydCBob29rIHRva2VuIGZvcm1hdDogZXhwZWN0ZWQgXCJhYnJ0X1wiIHByZWZpeCwgZ290IFwiJHtob29rVG9rZW59XCJgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZ2V0QWJvcnRTdHJlYW1JZChob29rVG9rZW4uc2xpY2UoQUJPUlRfVE9LRU5fUFJFRklYLmxlbmd0aCkpO1xufVxuXG4vKipcbiAqIEEgc21hbGwgd3JhcHBlciBhcm91bmQgYHdhaXRVbnRpbGAgdGhhdCBhbHNvIHJldHVybnNcbiAqIHRoZSByZXN1bHQgb2YgdGhlIGF3YWl0ZWQgcHJvbWlzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRlZFVudGlsPFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGZuKCk7XG4gIHdhaXRVbnRpbChcbiAgICByZXN1bHQuY2F0Y2goKCkgPT4ge1xuICAgICAgLy8gSWdub3JlIGVycm9yIGZyb20gdGhlIHByb21pc2UgYmVpbmcgcmVqZWN0ZWQuXG4gICAgICAvLyBJdCdzIGV4cGVjdGVkIHRoYXQgdGhlIGludm9rZXIgb2YgYHdhaXRlZFVudGlsYFxuICAgICAgLy8gd2lsbCBoYW5kbGUgdGhlIGVycm9yLlxuICAgIH0pXG4gICk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsU0FBaUI7SUFFakIsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDcEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsNERBQTRELFNBQVMsRUFBRSxDQUFDO0FBQ3ZHLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsU0FBa0I7SUFDdEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxpR0FBaUc7SUFDakcsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQy9ELFdBQVcsQ0FDWixDQUFDO0lBQ0YsT0FBTyxHQUFHLFFBQVEsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxPQUFPLFFBQVEsRUFBRSxlQUFlLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBRW5DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsU0FBaUI7SUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0VBQWtFLFNBQVMsR0FBRyxDQUMvRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHdvcmtmbG93IHN1c3BlbnNpb24gbG9nIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGNvdW50cyBvZiBzdGVwcyxcbiAqIGhvb2tzLCBhbmQgd2FpdHMuIFRoZSBzdHJ1Y3R1cmVkIGxvZ2dlciBhdHRhY2hlcyB0aGUgcnVuIGNvbnRleHQsIHNvIHRoZVxuICogbWVzc2FnZSBpdHNlbGYgb25seSBkZXNjcmliZXMgd2hhdCdzIGJlaW5nIGVucXVldWVkLlxuICogQHBhcmFtIHN0ZXBDb3VudCAtIE51bWJlciBvZiBzdGVwcyB0byBiZSBlbnF1ZXVlZFxuICogQHBhcmFtIGhvb2tDb3VudCAtIE51bWJlciBvZiBob29rcyB0byBiZSBlbnF1ZXVlZFxuICogQHBhcmFtIHdhaXRDb3VudCAtIE51bWJlciBvZiB3YWl0cyB0byBiZSBlbnF1ZXVlZFxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBsb2cgbWVzc2FnZSBvciBudWxsIGlmIGFsbCBjb3VudHMgYXJlIDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV29ya2Zsb3dTdXNwZW5zaW9uTWVzc2FnZShcbiAgc3RlcENvdW50OiBudW1iZXIsXG4gIGhvb2tDb3VudDogbnVtYmVyLFxuICB3YWl0Q291bnQ6IG51bWJlclxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChzdGVwQ291bnQgPT09IDAgJiYgaG9va0NvdW50ID09PSAwICYmIHdhaXRDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke3N0ZXBDb3VudH0gJHtwbHVyYWxpemUoJ3N0ZXAnLCAnc3RlcHMnLCBzdGVwQ291bnQpfWApO1xuICB9XG4gIGlmIChob29rQ291bnQgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtob29rQ291bnR9ICR7cGx1cmFsaXplKCdob29rJywgJ2hvb2tzJywgaG9va0NvdW50KX1gKTtcbiAgfVxuICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgIHBhcnRzLnB1c2goYCR7d2FpdENvdW50fSAke3BsdXJhbGl6ZSgndGltZXInLCAndGltZXJzJywgd2FpdENvdW50KX1gKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VtZU1zZ1BhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoc3RlcENvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ3N0ZXBzIGFyZSBjb21wbGV0ZWQnKTtcbiAgfVxuICBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ2hvb2tzIGFyZSByZWNlaXZlZCcpO1xuICB9XG4gIGlmICh3YWl0Q291bnQgPiAwKSB7XG4gICAgcmVzdW1lTXNnUGFydHMucHVzaCgndGltZXJzIGhhdmUgZWxhcHNlZCcpO1xuICB9XG4gIGNvbnN0IHJlc3VtZU1zZyA9IHJlc3VtZU1zZ1BhcnRzLmpvaW4oJyBhbmQgJyk7XG5cbiAgcmV0dXJuIGAke3BhcnRzLmpvaW4oJyBhbmQgJyl9IHRvIGJlIGVucXVldWVkXFxuICBXb3JrZmxvdyB3aWxsIHN1c3BlbmQgYW5kIHJlc3VtZSB3aGVuICR7cmVzdW1lTXNnfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc3RyZWFtIElEIGZvciBhIHdvcmtmbG93IHJ1bi5cbiAqIFVzZXItZGVmaW5lZCBzdHJlYW1zIGluY2x1ZGUgYSBcInVzZXJcIiBzZWdtZW50IGZvciBpc29sYXRpb24gZnJvbSBmdXR1cmUgc3lzdGVtLWRlZmluZWQgc3RyZWFtcy5cbiAqIE5hbWVzcGFjZXMgYXJlIGJhc2U2NC1lbmNvZGVkIHRvIGhhbmRsZSBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGluIFJlZGlzIGtleSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gcnVuSWQgLSBUaGUgd29ya2Zsb3cgcnVuIElEXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gT3B0aW9uYWwgbmFtZXNwYWNlIGZvciB0aGUgc3RyZWFtXG4gKiBAcmV0dXJucyBUaGUgc3RyZWFtIElEIGluIGZvcm1hdDogYHN0cm1fe1VMSUR9X3VzZXJfe2Jhc2U2NChuYW1lc3BhY2UpP31gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd1J1blN0cmVhbUlkKHJ1bklkOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZykge1xuICBjb25zdCBzdHJlYW1JZCA9IGAke3J1bklkLnJlcGxhY2UoJ3dydW5fJywgJ3N0cm1fJyl9X3VzZXJgO1xuICBpZiAoIW5hbWVzcGFjZSkge1xuICAgIHJldHVybiBzdHJlYW1JZDtcbiAgfVxuICAvLyBCYXNlNjQgZW5jb2RlIHRoZSBuYW1lc3BhY2UgdG8gaGFuZGxlIHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IG1heSBub3QgYmUgYWxsb3dlZCBpbiBSZWRpcyBrZXlzXG4gIGNvbnN0IGVuY29kZWROYW1lc3BhY2UgPSBCdWZmZXIuZnJvbShuYW1lc3BhY2UsICd1dGYtOCcpLnRvU3RyaW5nKFxuICAgICdiYXNlNjR1cmwnXG4gICk7XG4gIHJldHVybiBgJHtzdHJlYW1JZH1fJHtlbmNvZGVkTmFtZXNwYWNlfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdHJlYW0gSUQgZm9yIGFuIGFib3J0IHNpZ25hbCdzIGJhY2tpbmcgc3RyZWFtLlxuICogVXNlcyB0aGUgXCJfc3lzdGVtX2Fib3J0XCIgbmFtZXNwYWNlIHRvIGlzb2xhdGUgZnJvbSB1c2VyLWRlZmluZWQgc3RyZWFtcy5cbiAqXG4gKiBAcGFyYW0gaWQgLSBBIHVuaXF1ZSBpZGVudGlmaWVyICh0eXBpY2FsbHkgYSBVTElEKVxuICogQHJldHVybnMgVGhlIHN0cmVhbSBJRCBpbiBmb3JtYXQ6IGBzdHJtX3tpZH1fc3lzdGVtX2Fib3J0YFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJvcnRTdHJlYW1JZChpZDogc3RyaW5nKSB7XG4gIHJldHVybiBgc3RybV8ke2lkfV9zeXN0ZW1fYWJvcnRgO1xufVxuXG5jb25zdCBBQk9SVF9UT0tFTl9QUkVGSVggPSAnYWJydF8nO1xuXG4vKipcbiAqIERlcml2ZSB0aGUgYWJvcnQgc3RyZWFtIG5hbWUgZnJvbSBhIGhvb2sgdG9rZW4uXG4gKiBIb29rIHRva2VucyB1c2UgdGhlIGZvcm1hdCBgYWJydF97aWR9YCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHN0cmVhbSBpc1xuICogYHN0cm1fe2lkfV9zeXN0ZW1fYWJvcnRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJvcnRTdHJlYW1JZEZyb21Ub2tlbihob29rVG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaG9va1Rva2VuLnN0YXJ0c1dpdGgoQUJPUlRfVE9LRU5fUFJFRklYKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIGFib3J0IGhvb2sgdG9rZW4gZm9ybWF0OiBleHBlY3RlZCBcImFicnRfXCIgcHJlZml4LCBnb3QgXCIke2hvb2tUb2tlbn1cImBcbiAgICApO1xuICB9XG4gIHJldHVybiBnZXRBYm9ydFN0cmVhbUlkKGhvb2tUb2tlbi5zbGljZShBQk9SVF9UT0tFTl9QUkVGSVgubGVuZ3RoKSk7XG59XG4iXX0=
|
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.51";
|
|
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.51';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjUxJ1xuIl19
|
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":"AAQA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAgCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;iCA4J1B,MAAM;EAItC"}
|
package/dist/vm/index.js
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { types } from 'node:util';
|
|
1
3
|
import { runInContext, createContext as vmCreateContext } from 'node:vm';
|
|
2
4
|
import { WorkflowRuntimeError } from '@workflow/errors';
|
|
3
5
|
import seedrandom from 'seedrandom';
|
|
4
6
|
import { installUint8ArrayBase64 } from './uint8array-base64.js';
|
|
5
7
|
import { createRandomUUID } from './uuid.js';
|
|
8
|
+
// WebCrypto digest algorithm names → node:crypto (OpenSSL) names.
|
|
9
|
+
const DIGEST_ALGORITHMS = {
|
|
10
|
+
'SHA-1': 'sha1',
|
|
11
|
+
'SHA-256': 'sha256',
|
|
12
|
+
'SHA-384': 'sha384',
|
|
13
|
+
'SHA-512': 'sha512',
|
|
14
|
+
};
|
|
15
|
+
// WebCrypto BufferSource conversion. The `util.types` brand checks work
|
|
16
|
+
// across vm realms, and node:crypto's `hash.update()` reads view ranges from
|
|
17
|
+
// internal slots (own properties shadowing `byteOffset`/`byteLength` are
|
|
18
|
+
// ignored), matching WebCrypto, which also reads internal slots.
|
|
19
|
+
function toDigestInput(data) {
|
|
20
|
+
if (types.isTypedArray(data) || types.isDataView(data)) {
|
|
21
|
+
// WebCrypto's BufferSource excludes SharedArrayBuffer-backed views.
|
|
22
|
+
if (types.isSharedArrayBuffer(data.buffer)) {
|
|
23
|
+
throw new TypeError('crypto.subtle.digest does not accept SharedArrayBuffer-backed views');
|
|
24
|
+
}
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
if (!types.isArrayBuffer(data)) {
|
|
28
|
+
throw new TypeError('data must be an ArrayBuffer or ArrayBufferView');
|
|
29
|
+
}
|
|
30
|
+
return new Uint8Array(data);
|
|
31
|
+
}
|
|
6
32
|
/**
|
|
7
33
|
* Creates a Node.js `vm.Context` configured to be usable for
|
|
8
34
|
* executing workflow logic in a deterministic environment.
|
|
@@ -18,15 +44,18 @@ export function createContext(options) {
|
|
|
18
44
|
const g = runInContext('globalThis', context);
|
|
19
45
|
// Deterministic `Math.random()`
|
|
20
46
|
g.Math.random = rng;
|
|
21
|
-
// Override `Date` constructor to return fixed time when called without
|
|
47
|
+
// Override `Date` constructor to return fixed time when called without
|
|
48
|
+
// arguments. Constructing through `Reflect.construct` with `new.target`
|
|
49
|
+
// keeps subclassing intact (e.g. `TZDate` from `@date-fns/tz`), while a
|
|
50
|
+
// plain function (rather than a `class`) keeps `Date()` callable without
|
|
51
|
+
// `new`, which per spec ignores its arguments and returns the time string.
|
|
22
52
|
const Date_ = g.Date;
|
|
23
53
|
// biome-ignore lint/suspicious/noShadowRestrictedNames: We're shadowing the global `Date` property to make it deterministic.
|
|
24
54
|
g.Date = function Date(...args) {
|
|
25
|
-
if (
|
|
26
|
-
return new Date_(fixedTimestamp);
|
|
55
|
+
if (new.target === undefined) {
|
|
56
|
+
return new Date_(fixedTimestamp).toString();
|
|
27
57
|
}
|
|
28
|
-
|
|
29
|
-
return new Date_(...args);
|
|
58
|
+
return Reflect.construct(Date_, args.length === 0 ? [fixedTimestamp] : args, new.target);
|
|
30
59
|
};
|
|
31
60
|
g.Date.prototype = Date_.prototype;
|
|
32
61
|
// Preserve static methods
|
|
@@ -42,7 +71,45 @@ export function createContext(options) {
|
|
|
42
71
|
return array;
|
|
43
72
|
}
|
|
44
73
|
const randomUUID = createRandomUUID(rng);
|
|
45
|
-
|
|
74
|
+
// The sandbox must not hand workflow code a promise that settles on host
|
|
75
|
+
// timing or a way to observe host state (best-effort, for non-adversarial
|
|
76
|
+
// code): every promise a workflow creates settles either from the event log
|
|
77
|
+
// or within its own microtask cascade, so a suspended VM is fully quiescent
|
|
78
|
+
// and can be retained across inline steps.
|
|
79
|
+
//
|
|
80
|
+
// - `Atomics.waitAsync` is a wall-clock timer (via SharedArrayBuffer).
|
|
81
|
+
// - The async `WebAssembly` entry points resolve on compile-thread timing;
|
|
82
|
+
// the synchronous `new WebAssembly.Module()` / `Instance()` remain.
|
|
83
|
+
// - `WeakRef.deref()` and finalizer callbacks observe GC timing.
|
|
84
|
+
// - Dynamic `import()` settles within a microtask (rejected: no
|
|
85
|
+
// `importModuleDynamically`), so it needs no handling.
|
|
86
|
+
// - All `crypto.subtle` methods except the deterministic `digest` override
|
|
87
|
+
// below throw explicitly (see the subtle proxy); binding them to the
|
|
88
|
+
// host subtle would hand workflows a host-timing promise.
|
|
89
|
+
const intrinsics = g;
|
|
90
|
+
delete intrinsics.Atomics.waitAsync;
|
|
91
|
+
delete intrinsics.WebAssembly.compile;
|
|
92
|
+
delete intrinsics.WebAssembly.instantiate;
|
|
93
|
+
delete intrinsics.WebAssembly.compileStreaming;
|
|
94
|
+
delete intrinsics.WebAssembly.instantiateStreaming;
|
|
95
|
+
delete intrinsics.WeakRef;
|
|
96
|
+
delete intrinsics.FinalizationRegistry;
|
|
97
|
+
// `crypto.subtle.digest` computes synchronously via node:crypto, so its
|
|
98
|
+
// promise settles on a deterministic microtask instead of host threadpool
|
|
99
|
+
// timing: a digest can never advance a suspended workflow, and
|
|
100
|
+
// digest-using VMs stay retainable. Values are byte-identical to WebCrypto.
|
|
101
|
+
const digest = async (algorithm, data) => {
|
|
102
|
+
const name = typeof algorithm === 'string' ? algorithm : algorithm.name;
|
|
103
|
+
const ossl = DIGEST_ALGORITHMS[name.toUpperCase()];
|
|
104
|
+
if (!ossl) {
|
|
105
|
+
throw new DOMException(`Unrecognized algorithm name: ${name}`, 'NotSupportedError');
|
|
106
|
+
}
|
|
107
|
+
const hash = createHash(ossl).update(toDigestInput(data)).digest();
|
|
108
|
+
// Copy out: small Buffers share the internal pool allocation.
|
|
109
|
+
const out = new ArrayBuffer(hash.byteLength);
|
|
110
|
+
new Uint8Array(out).set(hash);
|
|
111
|
+
return out;
|
|
112
|
+
};
|
|
46
113
|
g.crypto = new Proxy(originalCrypto, {
|
|
47
114
|
get(target, prop) {
|
|
48
115
|
if (prop === 'getRandomValues') {
|
|
@@ -54,15 +121,18 @@ export function createContext(options) {
|
|
|
54
121
|
if (prop === 'subtle') {
|
|
55
122
|
return new Proxy(originalSubtle, {
|
|
56
123
|
get(target, prop) {
|
|
57
|
-
if (prop === '
|
|
58
|
-
return
|
|
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.');
|
|
60
|
-
};
|
|
124
|
+
if (prop === 'digest') {
|
|
125
|
+
return digest;
|
|
61
126
|
}
|
|
62
|
-
|
|
63
|
-
|
|
127
|
+
const value = target[prop];
|
|
128
|
+
if (typeof value !== 'function') {
|
|
129
|
+
return value;
|
|
64
130
|
}
|
|
65
|
-
|
|
131
|
+
// Every other subtle method (`encrypt`, `sign`, `importKey`, …)
|
|
132
|
+
// settles on host threadpool timing, which cannot be replayed.
|
|
133
|
+
return () => {
|
|
134
|
+
throw new WorkflowRuntimeError(`\`crypto.subtle.${String(prop)}()\` is not available inside a workflow function. Move it to a step function where full Node.js crypto is available.`);
|
|
135
|
+
};
|
|
66
136
|
},
|
|
67
137
|
});
|
|
68
138
|
}
|
|
@@ -100,4 +170,4 @@ export function createContext(options) {
|
|
|
100
170
|
},
|
|
101
171
|
};
|
|
102
172
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElB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QUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5JbkNvbnRleHQsIGNyZWF0ZUNvbnRleHQgYXMgdm1DcmVhdGVDb250ZXh0IH0gZnJvbSAnbm9kZTp2bSc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1bnRpbWVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHNlZWRyYW5kb20gZnJvbSAnc2VlZHJhbmRvbSc7XG5pbXBvcnQgeyBpbnN0YWxsVWludDhBcnJheUJhc2U2NCB9IGZyb20gJy4vdWludDhhcnJheS1iYXNlNjQuanMnO1xuaW1wb3J0IHsgY3JlYXRlUmFuZG9tVVVJRCB9IGZyb20gJy4vdXVpZC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGV4dE9wdGlvbnMge1xuICBzZWVkOiBzdHJpbmc7XG4gIC8vIEZpeGVkIHRpbWVzdGFtcCBmb3IgZGV0ZXJtaW5pc3RpYyBEYXRlIG9wZXJhdGlvbnNcbiAgZml4ZWRUaW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzXG4gIGNvbnN0IERhdGVfID0gZy5EYXRlO1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vU2hhZG93UmVzdHJpY3RlZE5hbWVzOiBXZSdyZSBzaGFkb3dpbmcgdGhlIGdsb2JhbCBgRGF0ZWAgcHJvcGVydHkgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljLlxuICAoZyBhcyBhbnkpLkRhdGUgPSBmdW5jdGlvbiBEYXRlKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8KHR5cGVvZiBnbG9iYWxUaGlzKVsnRGF0ZSddPltdXG4gICkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlXyhmaXhlZFRpbWVzdGFtcCk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBBcmdzIGlzIGBEYXRlYCBjb25zdHJ1Y3RvciBhcmd1bWVudHNcbiAgICByZXR1cm4gbmV3IERhdGVfKC4uLmFyZ3MpO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgY29uc3QgYm91bmREaWdlc3QgPSBvcmlnaW5hbFN1YnRsZS5kaWdlc3QuYmluZChvcmlnaW5hbFN1YnRsZSk7XG5cbiAgZy5jcnlwdG8gPSBuZXcgUHJveHkob3JpZ2luYWxDcnlwdG8sIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICBpZiAocHJvcCA9PT0gJ2dldFJhbmRvbVZhbHVlcycpIHtcbiAgICAgICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAncmFuZG9tVVVJRCcpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbVVVSUQ7XG4gICAgICB9XG4gICAgICBpZiAocHJvcCA9PT0gJ3N1YnRsZScpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShvcmlnaW5hbFN1YnRsZSwge1xuICAgICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnZ2VuZXJhdGVLZXknKSB7XG4gICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2BjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KClgIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24uIE1vdmUga2V5IGdlbmVyYXRpb24gdG8gYSBzdGVwIGZ1bmN0aW9uIHdoZXJlIGZ1bGwgTm9kZS5qcyBjcnlwdG8gaXMgYXZhaWxhYmxlLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnZGlnZXN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gYm91bmREaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgdHlwZW9mIG9yaWdpbmFsU3VidGxlXTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxJQUFJLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBUTdDLGtFQUFrRTtBQUNsRSxNQUFNLGlCQUFpQixHQUEyQjtJQUNoRCxPQUFPLEVBQUUsTUFBTTtJQUNmLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxRQUFRO0NBQ3BCLENBQUM7QUFFRix3RUFBd0U7QUFDeEUsNkVBQTZFO0FBQzdFLHlFQUF5RTtBQUN6RSxpRUFBaUU7QUFDakUsU0FBUyxhQUFhLENBQ3BCLElBQW1DO0lBRW5DLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkQsb0VBQW9FO1FBQ3BFLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxTQUFTLENBQ2pCLHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxD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QyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgcnVuSW5Db250ZXh0LCBjcmVhdGVDb250ZXh0IGFzIHZtQ3JlYXRlQ29udGV4dCB9IGZyb20gJ25vZGU6dm0nO1xuaW1wb3J0IHsgV29ya2Zsb3dSdW50aW1lRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCBzZWVkcmFuZG9tIGZyb20gJ3NlZWRyYW5kb20nO1xuaW1wb3J0IHsgaW5zdGFsbFVpbnQ4QXJyYXlCYXNlNjQgfSBmcm9tICcuL3VpbnQ4YXJyYXktYmFzZTY0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVJhbmRvbVVVSUQgfSBmcm9tICcuL3V1aWQuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRleHRPcHRpb25zIHtcbiAgc2VlZDogc3RyaW5nO1xuICAvLyBGaXhlZCB0aW1lc3RhbXAgZm9yIGRldGVybWluaXN0aWMgRGF0ZSBvcGVyYXRpb25zXG4gIGZpeGVkVGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8vIFdlYkNyeXB0byBkaWdlc3QgYWxnb3JpdGhtIG5hbWVzIOKGkiBub2RlOmNyeXB0byAoT3BlblNTTCkgbmFtZXMuXG5jb25zdCBESUdFU1RfQUxHT1JJVEhNUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ1NIQS0xJzogJ3NoYTEnLFxuICAnU0hBLTI1Nic6ICdzaGEyNTYnLFxuICAnU0hBLTM4NCc6ICdzaGEzODQnLFxuICAnU0hBLTUxMic6ICdzaGE1MTInLFxufTtcblxuLy8gV2ViQ3J5cHRvIEJ1ZmZlclNvdXJjZSBjb252ZXJzaW9uLiBUaGUgYHV0aWwudHlwZXNgIGJyYW5kIGNoZWNrcyB3b3JrXG4vLyBhY3Jvc3Mgdm0gcmVhbG1zLCBhbmQgbm9kZTpjcnlwdG8ncyBgaGFzaC51cGRhdGUoKWAgcmVhZHMgdmlldyByYW5nZXMgZnJvbVxuLy8gaW50ZXJuYWwgc2xvdHMgKG93biBwcm9wZXJ0aWVzIHNoYWRvd2luZyBgYnl0ZU9mZnNldGAvYGJ5dGVMZW5ndGhgIGFyZVxuLy8gaWdub3JlZCksIG1hdGNoaW5nIFdlYkNyeXB0bywgd2hpY2ggYWxzbyByZWFkcyBpbnRlcm5hbCBzbG90cy5cbmZ1bmN0aW9uIHRvRGlnZXN0SW5wdXQoXG4gIGRhdGE6IEFycmF5QnVmZmVyIHwgQXJyYXlCdWZmZXJWaWV3XG4pOiBOb2RlSlMuQXJyYXlCdWZmZXJWaWV3IHtcbiAgaWYgKHR5cGVzLmlzVHlwZWRBcnJheShkYXRhKSB8fCB0eXBlcy5pc0RhdGFWaWV3KGRhdGEpKSB7XG4gICAgLy8gV2ViQ3J5cHRvJ3MgQnVmZmVyU291cmNlIGV4Y2x1ZGVzIFNoYXJlZEFycmF5QnVmZmVyLWJhY2tlZCB2aWV3cy5cbiAgICBpZiAodHlwZXMuaXNTaGFyZWRBcnJheUJ1ZmZlcihkYXRhLmJ1ZmZlcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdjcnlwdG8uc3VidGxlLmRpZ2VzdCBkb2VzIG5vdCBhY2NlcHQgU2hhcmVkQXJyYXlCdWZmZXItYmFja2VkIHZpZXdzJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKCF0eXBlcy5pc0FycmF5QnVmZmVyKGRhdGEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIGFuIEFycmF5QnVmZmVyIG9yIEFycmF5QnVmZmVyVmlldycpO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXRcbiAgLy8gYXJndW1lbnRzLiBDb25zdHJ1Y3RpbmcgdGhyb3VnaCBgUmVmbGVjdC5jb25zdHJ1Y3RgIHdpdGggYG5ldy50YXJnZXRgXG4gIC8vIGtlZXBzIHN1YmNsYXNzaW5nIGludGFjdCAoZS5nLiBgVFpEYXRlYCBmcm9tIGBAZGF0ZS1mbnMvdHpgKSwgd2hpbGUgYVxuICAvLyBwbGFpbiBmdW5jdGlvbiAocmF0aGVyIHRoYW4gYSBgY2xhc3NgKSBrZWVwcyBgRGF0ZSgpYCBjYWxsYWJsZSB3aXRob3V0XG4gIC8vIGBuZXdgLCB3aGljaCBwZXIgc3BlYyBpZ25vcmVzIGl0cyBhcmd1bWVudHMgYW5kIHJldHVybnMgdGhlIHRpbWUgc3RyaW5nLlxuICBjb25zdCBEYXRlXyA9IGcuRGF0ZTtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1NoYWRvd1Jlc3RyaWN0ZWROYW1lczogV2UncmUgc2hhZG93aW5nIHRoZSBnbG9iYWwgYERhdGVgIHByb3BlcnR5IHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYy5cbiAgKGcgYXMgYW55KS5EYXRlID0gZnVuY3Rpb24gRGF0ZSguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChuZXcudGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZV8oZml4ZWRUaW1lc3RhbXApLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdChcbiAgICAgIERhdGVfLFxuICAgICAgYXJncy5sZW5ndGggPT09IDAgPyBbZml4ZWRUaW1lc3RhbXBdIDogYXJncyxcbiAgICAgIG5ldy50YXJnZXRcbiAgICApO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgLy8gVGhlIHNhbmRib3ggbXVzdCBub3QgaGFuZCB3b3JrZmxvdyBjb2RlIGEgcHJvbWlzZSB0aGF0IHNldHRsZXMgb24gaG9zdFxuICAvLyB0aW1pbmcgb3IgYSB3YXkgdG8gb2JzZXJ2ZSBob3N0IHN0YXRlIChiZXN0LWVmZm9ydCwgZm9yIG5vbi1hZHZlcnNhcmlhbFxuICAvLyBjb2RlKTogZXZlcnkgcHJvbWlzZSBhIHdvcmtmbG93IGNyZWF0ZXMgc2V0dGxlcyBlaXRoZXIgZnJvbSB0aGUgZXZlbnQgbG9nXG4gIC8vIG9yIHdpdGhpbiBpdHMgb3duIG1pY3JvdGFzayBjYXNjYWRlLCBzbyBhIHN1c3BlbmRlZCBWTSBpcyBmdWxseSBxdWllc2NlbnRcbiAgLy8gYW5kIGNhbiBiZSByZXRhaW5lZCBhY3Jvc3MgaW5saW5lIHN0ZXBzLlxuICAvL1xuICAvLyAtIGBBdG9taWNzLndhaXRBc3luY2AgaXMgYSB3YWxsLWNsb2NrIHRpbWVyICh2aWEgU2hhcmVkQXJyYXlCdWZmZXIpLlxuICAvLyAtIFRoZSBhc3luYyBgV2ViQXNzZW1ibHlgIGVudHJ5IHBvaW50cyByZXNvbHZlIG9uIGNvbXBpbGUtdGhyZWFkIHRpbWluZztcbiAgLy8gICB0aGUgc3luY2hyb25vdXMgYG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKWAgLyBgSW5zdGFuY2UoKWAgcmVtYWluLlxuICAvLyAtIGBXZWFrUmVmLmRlcmVmKClgIGFuZCBmaW5hbGl6ZXIgY2FsbGJhY2tzIG9ic2VydmUgR0MgdGltaW5nLlxuICAvLyAtIER5bmFtaWMgYGltcG9ydCgpYCBzZXR0bGVzIHdpdGhpbiBhIG1pY3JvdGFzayAocmVqZWN0ZWQ6IG5vXG4gIC8vICAgYGltcG9ydE1vZHVsZUR5bmFtaWNhbGx5YCksIHNvIGl0IG5lZWRzIG5vIGhhbmRsaW5nLlxuICAvLyAtIEFsbCBgY3J5cHRvLnN1YnRsZWAgbWV0aG9kcyBleGNlcHQgdGhlIGRldGVybWluaXN0aWMgYGRpZ2VzdGAgb3ZlcnJpZGVcbiAgLy8gICBiZWxvdyB0aHJvdyBleHBsaWNpdGx5IChzZWUgdGhlIHN1YnRsZSBwcm94eSk7IGJpbmRpbmcgdGhlbSB0byB0aGVcbiAgLy8gICBob3N0IHN1YnRsZSB3b3VsZCBoYW5kIHdvcmtmbG93cyBhIGhvc3QtdGltaW5nIHByb21pc2UuXG4gIGNvbnN0IGludHJpbnNpY3MgPSBnIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBkZWxldGUgaW50cmluc2ljcy5BdG9taWNzLndhaXRBc3luYztcbiAgZGVsZXRlIGludHJpbnNpY3MuV2ViQXNzZW1ibHkuY29tcGlsZTtcbiAgZGVsZXRlIGludHJpbnNpY3MuV2ViQXNzZW1ibHkuaW5zdGFudGlhdGU7XG4gIGRlbGV0ZSBpbnRyaW5zaWNzLldlYkFzc2VtYmx5LmNvbXBpbGVTdHJlYW1pbmc7XG4gIGRlbGV0ZSBpbnRyaW5zaWNzLldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nO1xuICBkZWxldGUgaW50cmluc2ljcy5XZWFrUmVmO1xuICBkZWxldGUgaW50cmluc2ljcy5GaW5hbGl6YXRpb25SZWdpc3RyeTtcblxuICAvLyBgY3J5cHRvLnN1YnRsZS5kaWdlc3RgIGNvbXB1dGVzIHN5bmNocm9ub3VzbHkgdmlhIG5vZGU6Y3J5cHRvLCBzbyBpdHNcbiAgLy8gcHJvbWlzZSBzZXR0bGVzIG9uIGEgZGV0ZXJtaW5pc3RpYyBtaWNyb3Rhc2sgaW5zdGVhZCBvZiBob3N0IHRocmVhZHBvb2xcbiAgLy8gdGltaW5nOiBhIGRpZ2VzdCBjYW4gbmV2ZXIgYWR2YW5jZSBhIHN1c3BlbmRlZCB3b3JrZmxvdywgYW5kXG4gIC8vIGRpZ2VzdC11c2luZyBWTXMgc3RheSByZXRhaW5hYmxlLiBWYWx1ZXMgYXJlIGJ5dGUtaWRlbnRpY2FsIHRvIFdlYkNyeXB0by5cbiAgY29uc3QgZGlnZXN0ID0gYXN5bmMgKFxuICAgIGFsZ29yaXRobTogc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgICBkYXRhOiBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuICApOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBhbGdvcml0aG0gPT09ICdzdHJpbmcnID8gYWxnb3JpdGhtIDogYWxnb3JpdGhtLm5hbWU7XG4gICAgY29uc3Qgb3NzbCA9IERJR0VTVF9BTEdPUklUSE1TW25hbWUudG9VcHBlckNhc2UoKV07XG4gICAgaWYgKCFvc3NsKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFxuICAgICAgICBgVW5yZWNvZ25pemVkIGFsZ29yaXRobSBuYW1lOiAke25hbWV9YCxcbiAgICAgICAgJ05vdFN1cHBvcnRlZEVycm9yJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2gob3NzbCkudXBkYXRlKHRvRGlnZXN0SW5wdXQoZGF0YSkpLmRpZ2VzdCgpO1xuICAgIC8vIENvcHkgb3V0OiBzbWFsbCBCdWZmZXJzIHNoYXJlIHRoZSBpbnRlcm5hbCBwb29sIGFsbG9jYXRpb24uXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5QnVmZmVyKGhhc2guYnl0ZUxlbmd0aCk7XG4gICAgbmV3IFVpbnQ4QXJyYXkob3V0KS5zZXQoaGFzaCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICBnLmNyeXB0byA9IG5ldyBQcm94eShvcmlnaW5hbENyeXB0bywge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIGlmIChwcm9wID09PSAnZ2V0UmFuZG9tVmFsdWVzJykge1xuICAgICAgICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzO1xuICAgICAgfVxuICAgICAgaWYgKHByb3AgPT09ICdyYW5kb21VVUlEJykge1xuICAgICAgICByZXR1cm4gcmFuZG9tVVVJRDtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAnc3VidGxlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsU3VidGxlLCB7XG4gICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdkaWdlc3QnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wIGFzIGtleW9mIHR5cGVvZiBvcmlnaW5hbFN1YnRsZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEV2ZXJ5IG90aGVyIHN1YnRsZSBtZXRob2QgKGBlbmNyeXB0YCwgYHNpZ25gLCBgaW1wb3J0S2V5YCwg4oCmKVxuICAgICAgICAgICAgLy8gc2V0dGxlcyBvbiBob3N0IHRocmVhZHBvb2wgdGltaW5nLCB3aGljaCBjYW5ub3QgYmUgcmVwbGF5ZWQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICAgICAgYFxcYGNyeXB0by5zdWJ0bGUuJHtTdHJpbmcocHJvcCl9KClcXGAgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbi4gTW92ZSBpdCB0byBhIHN0ZXAgZnVuY3Rpb24gd2hlcmUgZnVsbCBOb2RlLmpzIGNyeXB0byBpcyBhdmFpbGFibGUuYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Script } from 'node:vm';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a compiled `vm.Script` for the given source code and filename,
|
|
4
|
+
* compiling and caching it on first use. Subsequent calls with the same
|
|
5
|
+
* `(code, filename)` return the cached `Script`.
|
|
6
|
+
*
|
|
7
|
+
* The returned `Script` is not yet bound to any context; the caller runs it
|
|
8
|
+
* against a specific VM context via `script.runInContext(context)`. This is
|
|
9
|
+
* equivalent to `vm.runInContext(code, context, { filename })` but skips the
|
|
10
|
+
* recompile.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getCachedWorkflowScript(code: string, filename: string): {
|
|
13
|
+
script: Script;
|
|
14
|
+
cacheHit: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Clears the compiled-script cache. Intended for tests that want to assert
|
|
18
|
+
* compile-vs-cache behaviour in isolation; not used on the hot path.
|
|
19
|
+
*/
|
|
20
|
+
export declare function clearWorkflowScriptCache(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Number of distinct script source strings currently retained. Exposed for
|
|
23
|
+
* tests asserting the LRU bound; not used on the hot path.
|
|
24
|
+
*/
|
|
25
|
+
export declare function workflowScriptCacheSize(): number;
|
|
26
|
+
//# sourceMappingURL=script-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-cache.d.ts","sourceRoot":"","sources":["../../src/vm/script-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAuFjC;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAsBvC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
|