@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
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { CorruptedEventLogError } from '@workflow/errors';
|
|
2
|
+
import { EventConsumerResult } from '../events-consumer.js';
|
|
3
|
+
import { hydrateStepReturnValue } from '../serialization.js';
|
|
4
|
+
import { ABORT_HOOK_TOKEN, ABORT_STREAM_NAME } from '../symbols.js';
|
|
5
|
+
import { getAbortStreamId } from '../util.js';
|
|
6
|
+
/**
|
|
7
|
+
* A lightweight AbortSignal implementation for the workflow VM context.
|
|
8
|
+
*
|
|
9
|
+
* `signal.aborted` and listeners are updated in two scenarios:
|
|
10
|
+
* 1. On first-run: when `abort()` is called in the workflow code
|
|
11
|
+
* 2. On replay: when the events consumer processes the `hook_received`
|
|
12
|
+
* event (chained through promiseQueue for deterministic ordering)
|
|
13
|
+
*
|
|
14
|
+
* On replay, `abort()` in the workflow code becomes a no-op since
|
|
15
|
+
* `_setAborted` was already called by the events consumer.
|
|
16
|
+
*/
|
|
17
|
+
export class WorkflowAbortSignal {
|
|
18
|
+
aborted = false;
|
|
19
|
+
reason = undefined;
|
|
20
|
+
[ABORT_STREAM_NAME];
|
|
21
|
+
[ABORT_HOOK_TOKEN];
|
|
22
|
+
#listeners = [];
|
|
23
|
+
#onabort = null;
|
|
24
|
+
get onabort() {
|
|
25
|
+
return this.#onabort;
|
|
26
|
+
}
|
|
27
|
+
set onabort(handler) {
|
|
28
|
+
this.#onabort = handler;
|
|
29
|
+
if (handler && this.aborted) {
|
|
30
|
+
handler.call(this);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
constructor(streamName, hookToken) {
|
|
34
|
+
this[ABORT_STREAM_NAME] = streamName;
|
|
35
|
+
this[ABORT_HOOK_TOKEN] = hookToken;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @internal Sets aborted state and fires listeners.
|
|
39
|
+
* Called by abort() on first-run, or by the events consumer on replay.
|
|
40
|
+
* Idempotent — second call is a no-op.
|
|
41
|
+
*/
|
|
42
|
+
_setAborted(reason) {
|
|
43
|
+
if (this.aborted)
|
|
44
|
+
return;
|
|
45
|
+
this.aborted = true;
|
|
46
|
+
this.reason = reason;
|
|
47
|
+
if (this.#onabort) {
|
|
48
|
+
this.#onabort.call(this);
|
|
49
|
+
}
|
|
50
|
+
for (const listener of this.#listeners) {
|
|
51
|
+
listener();
|
|
52
|
+
}
|
|
53
|
+
this.#listeners = [];
|
|
54
|
+
}
|
|
55
|
+
addEventListener(type, listener) {
|
|
56
|
+
if (type !== 'abort')
|
|
57
|
+
return;
|
|
58
|
+
if (this.aborted) {
|
|
59
|
+
// Fire synchronously, not on a microtask. Native AbortSignal fires on a
|
|
60
|
+
// microtask per spec, but inside the workflow VM we deliberately diverge
|
|
61
|
+
// for deterministic replay: listener ordering must be tied to the
|
|
62
|
+
// orchestrator's sync execution path, not to microtask scheduling.
|
|
63
|
+
listener();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.#listeners.push(listener);
|
|
67
|
+
}
|
|
68
|
+
removeEventListener(type, listener) {
|
|
69
|
+
if (type !== 'abort')
|
|
70
|
+
return;
|
|
71
|
+
this.#listeners = this.#listeners.filter((l) => l !== listener);
|
|
72
|
+
}
|
|
73
|
+
throwIfAborted() {
|
|
74
|
+
if (this.aborted) {
|
|
75
|
+
throw (this.reason ??
|
|
76
|
+
new DOMException('The operation was aborted.', 'AbortError'));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a workflow-context `AbortController` class that uses hooks for
|
|
82
|
+
* durable state and streams for real-time step propagation.
|
|
83
|
+
*
|
|
84
|
+
* Follows the same pattern as `createCreateHook()` in `workflow/hook.ts`:
|
|
85
|
+
* - Registers a hook in the invocations queue on construction
|
|
86
|
+
* - Subscribes to the events consumer for hook_created/hook_received events
|
|
87
|
+
* - `abort()` calls `_setAborted` + marks the hook for resumption
|
|
88
|
+
* - The suspension handler processes the abort (creates event + writes stream)
|
|
89
|
+
* - On replay, the events consumer calls `_setAborted` when hook_received
|
|
90
|
+
* is processed, and `abort()` in the workflow code becomes a no-op
|
|
91
|
+
*/
|
|
92
|
+
export function createCreateAbortController(ctx) {
|
|
93
|
+
return class WorkflowAbortController {
|
|
94
|
+
signal;
|
|
95
|
+
[ABORT_STREAM_NAME];
|
|
96
|
+
[ABORT_HOOK_TOKEN];
|
|
97
|
+
constructor() {
|
|
98
|
+
const id = ctx.generateUlid();
|
|
99
|
+
const streamName = getAbortStreamId(id);
|
|
100
|
+
const hookToken = `abrt_${id}`;
|
|
101
|
+
this[ABORT_STREAM_NAME] = streamName;
|
|
102
|
+
this[ABORT_HOOK_TOKEN] = hookToken;
|
|
103
|
+
this.signal = new WorkflowAbortSignal(streamName, hookToken);
|
|
104
|
+
// Register an internal system hook in the invocations queue.
|
|
105
|
+
// isSystem prevents token namespace conflicts with user hooks.
|
|
106
|
+
const correlationId = `hook_${ctx.generateUlid()}`;
|
|
107
|
+
ctx.invocationsQueue.set(correlationId, {
|
|
108
|
+
type: 'hook',
|
|
109
|
+
correlationId,
|
|
110
|
+
token: hookToken,
|
|
111
|
+
isWebhook: false,
|
|
112
|
+
isSystem: true,
|
|
113
|
+
});
|
|
114
|
+
// Subscribe to events for this hook's lifecycle
|
|
115
|
+
ctx.eventsConsumer.subscribe((event) => {
|
|
116
|
+
if (!event) {
|
|
117
|
+
return EventConsumerResult.NotConsumed;
|
|
118
|
+
}
|
|
119
|
+
if (event.correlationId !== correlationId) {
|
|
120
|
+
return EventConsumerResult.NotConsumed;
|
|
121
|
+
}
|
|
122
|
+
const eventToken = 'eventData' in event && event.eventData && 'token' in event.eventData
|
|
123
|
+
? event.eventData.token
|
|
124
|
+
: undefined;
|
|
125
|
+
if (typeof eventToken === 'string' &&
|
|
126
|
+
eventToken !== this[ABORT_HOOK_TOKEN]) {
|
|
127
|
+
ctx.promiseQueue = ctx.promiseQueue.then(() => {
|
|
128
|
+
ctx.onWorkflowError(new CorruptedEventLogError(`Corrupted event log: abort hook event ${event.eventType} for ${correlationId} belongs to token "${eventToken}", but the current abort hook expects "${this[ABORT_HOOK_TOKEN]}"`));
|
|
129
|
+
});
|
|
130
|
+
return EventConsumerResult.Finished;
|
|
131
|
+
}
|
|
132
|
+
if (event.eventType === 'hook_created') {
|
|
133
|
+
const queueItem = ctx.invocationsQueue.get(correlationId);
|
|
134
|
+
if (queueItem && queueItem.type === 'hook') {
|
|
135
|
+
queueItem.hasCreatedEvent = true;
|
|
136
|
+
}
|
|
137
|
+
return EventConsumerResult.Consumed;
|
|
138
|
+
}
|
|
139
|
+
if (event.eventType === 'hook_received') {
|
|
140
|
+
// The abort was recorded in the event log (from a previous run's
|
|
141
|
+
// abort() call, or from a step/external abort). Update signal
|
|
142
|
+
// state and fire listeners at this deterministic point in the
|
|
143
|
+
// promiseQueue — same ordering as hook payload delivery.
|
|
144
|
+
//
|
|
145
|
+
// The payload is the dehydrated form written by the suspension
|
|
146
|
+
// handler (a Uint8Array, possibly encrypted). Hydrate it via the
|
|
147
|
+
// same machinery as regular hook payloads (workflow/hook.ts:117)
|
|
148
|
+
// so the reason round-trips with full type fidelity. Reading the
|
|
149
|
+
// raw payload here is a bug — it's not a plain object after
|
|
150
|
+
// dehydration, so `'reason' in payload` is false and reason
|
|
151
|
+
// ends up undefined on replay.
|
|
152
|
+
const rawPayload = event.eventData?.payload;
|
|
153
|
+
ctx.promiseQueue = ctx.promiseQueue.then(async () => {
|
|
154
|
+
let reason;
|
|
155
|
+
if (rawPayload !== undefined) {
|
|
156
|
+
try {
|
|
157
|
+
const hydrated = (await hydrateStepReturnValue(rawPayload, ctx.runId, ctx.encryptionKey, ctx.globalThis));
|
|
158
|
+
if (hydrated &&
|
|
159
|
+
typeof hydrated === 'object' &&
|
|
160
|
+
'reason' in hydrated) {
|
|
161
|
+
reason = hydrated.reason;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Best-effort: if hydration fails, fall back to undefined
|
|
166
|
+
// reason. The signal still aborts; the user just won't see
|
|
167
|
+
// the original reason. Matches WorkflowAbortSignal's spec
|
|
168
|
+
// fallback (DOMException AbortError).
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
this.signal._setAborted(reason);
|
|
172
|
+
});
|
|
173
|
+
ctx.invocationsQueue.delete(correlationId);
|
|
174
|
+
// Multiple handlers can observe the same pending abort request and
|
|
175
|
+
// durably record it before replay removes the queue item. Abort is
|
|
176
|
+
// idempotent, so consume later matching receipts as no-ops instead
|
|
177
|
+
// of surfacing a corrupted event log after the first receipt.
|
|
178
|
+
return EventConsumerResult.Consumed;
|
|
179
|
+
}
|
|
180
|
+
if (event.eventType === 'hook_disposed') {
|
|
181
|
+
ctx.invocationsQueue.delete(correlationId);
|
|
182
|
+
return EventConsumerResult.Finished;
|
|
183
|
+
}
|
|
184
|
+
return EventConsumerResult.NotConsumed;
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
abort(reason) {
|
|
188
|
+
if (this.signal.aborted)
|
|
189
|
+
return; // no-op (already aborted, e.g. from replay)
|
|
190
|
+
// Update signal state and fire listeners synchronously
|
|
191
|
+
this.signal._setAborted(reason);
|
|
192
|
+
// Mark the hook for resumption so the suspension handler records
|
|
193
|
+
// the abort in the event log and writes the stream packet.
|
|
194
|
+
for (const [, item] of ctx.invocationsQueue) {
|
|
195
|
+
if (item.type === 'hook' && item.token === this[ABORT_HOOK_TOKEN]) {
|
|
196
|
+
item.abortRequested = true;
|
|
197
|
+
item.abortReason = reason;
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Creates a workflow-context `AbortSignal` object with static methods.
|
|
206
|
+
*/
|
|
207
|
+
export function createAbortSignalStatics() {
|
|
208
|
+
return {
|
|
209
|
+
abort(reason) {
|
|
210
|
+
const signal = new WorkflowAbortSignal('', '');
|
|
211
|
+
signal._setAborted(reason ?? new DOMException('The operation was aborted.', 'AbortError'));
|
|
212
|
+
return signal;
|
|
213
|
+
},
|
|
214
|
+
any(signals) {
|
|
215
|
+
const composite = new WorkflowAbortSignal('', '');
|
|
216
|
+
// Materialize the iterable once. Native AbortSignal.any does the same:
|
|
217
|
+
// single-shot iterables (e.g. generators) would otherwise produce zero
|
|
218
|
+
// entries on the second pass below.
|
|
219
|
+
const arr = Array.from(signals);
|
|
220
|
+
for (const signal of arr) {
|
|
221
|
+
if (signal.aborted) {
|
|
222
|
+
composite._setAborted(signal.reason);
|
|
223
|
+
return composite;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Listen to each signal — first one to abort wins. Track listeners so
|
|
227
|
+
// we can remove them after the composite aborts; otherwise the closures
|
|
228
|
+
// (capturing `composite`) prevent GC for any input signal that outlives
|
|
229
|
+
// the composite (e.g. a long-lived external controller).
|
|
230
|
+
const listeners = [];
|
|
231
|
+
const cleanup = () => {
|
|
232
|
+
for (const { signal, listener } of listeners) {
|
|
233
|
+
if (signal.removeEventListener) {
|
|
234
|
+
signal.removeEventListener('abort', listener);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
listeners.length = 0;
|
|
238
|
+
};
|
|
239
|
+
for (const signal of arr) {
|
|
240
|
+
if (!signal.addEventListener)
|
|
241
|
+
continue;
|
|
242
|
+
const listener = () => {
|
|
243
|
+
if (!composite.aborted) {
|
|
244
|
+
composite._setAborted(signal.reason);
|
|
245
|
+
cleanup();
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
listeners.push({ signal, listener });
|
|
249
|
+
signal.addEventListener('abort', listener);
|
|
250
|
+
}
|
|
251
|
+
return composite;
|
|
252
|
+
},
|
|
253
|
+
timeout() {
|
|
254
|
+
throw new Error('AbortSignal.timeout() is not supported in workflow functions. ' +
|
|
255
|
+
'Use sleep() with an AbortController instead. ' +
|
|
256
|
+
'See: /docs/errors/abort-signal-timeout-in-workflow');
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvcnQtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9hYm9ydC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixNQUFNLEdBQVksU0FBUyxDQUFDO0lBRW5CLENBQUMsaUJBQWlCLENBQUMsQ0FBUztJQUM1QixDQUFDLGdCQUFnQixDQUFDLENBQVM7SUFFcEMsVUFBVSxHQUFzQixFQUFFLENBQUM7SUFDbkMsUUFBUSxHQUFpRCxJQUFJLENBQUM7SUFFOUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFxRDtRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksVUFBa0IsRUFBRSxTQUFpQjtRQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcs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QUcsR0FBRyxFQUFFO29CQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN2QixTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDckMsT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQztnQkFDSCxDQUFDLENBQUM7Z0JBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTztZQUNMLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0VBQWdFO2dCQUM5RCwrQ0FBK0M7Z0JBQy9DLG9EQUFvRCxDQUN2RCxDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ycnVwdGVkRXZlbnRMb2dFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4uL2V2ZW50cy1jb25zdW1lci5qcyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCB9IGZyb20gJy4uL3ByaXZhdGUuanMnO1xuaW1wb3J0IHsgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZSB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24uanMnO1xuaW1wb3J0IHsgQUJPUlRfSE9PS19UT0tFTiwgQUJPUlRfU1RSRUFNX05BTUUgfSBmcm9tICcuLi9zeW1ib2xzLmpzJztcbmltcG9ydCB7IGdldEFib3J0U3RyZWFtSWQgfSBmcm9tICcuLi91dGlsLmpzJztcblxuLyoqXG4gKiBBIGxpZ2h0d2VpZ2h0IEFib3J0U2lnbmFsIGltcGxlbWVudGF0aW9uIGZvciB0aGUgd29ya2Zsb3cgVk0gY29udGV4dC5cbiAqXG4gKiBgc2lnbmFsLmFib3J0ZWRgIGFuZCBsaXN0ZW5lcnMgYXJlIHVwZGF0ZWQgaW4gdHdvIHNjZW5hcmlvczpcbiAqIDEuIE9uIGZpcnN0LXJ1bjogd2hlbiBgYWJvcnQoKWAgaXMgY2FsbGVkIGluIHRoZSB3b3JrZmxvdyBjb2RlXG4gKiAyLiBPbiByZXBsYXk6IHdoZW4gdGhlIGV2ZW50cyBjb25zdW1lciBwcm9jZXNzZXMgdGhlIGBob29rX3JlY2VpdmVkYFxuICogICAgZXZlbnQgKGNoYWluZWQgdGhyb3VnaCBwcm9taXNlUXVldWUgZm9yIGRldGVybWluaXN0aWMgb3JkZXJpbmcpXG4gKlxuICogT24gcmVwbGF5LCBgYWJvcnQoKWAgaW4gdGhlIHdvcmtmbG93IGNvZGUgYmVjb21lcyBhIG5vLW9wIHNpbmNlXG4gKiBgX3NldEFib3J0ZWRgIHdhcyBhbHJlYWR5IGNhbGxlZCBieSB0aGUgZXZlbnRzIGNvbnN1bWVyLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBYm9ydFNpZ25hbCB7XG4gIGFib3J0ZWQgPSBmYWxzZTtcbiAgcmVhc29uOiB1bmtub3duID0gdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5IFtBQk9SVF9TVFJFQU1fTkFNRV06IHN0cmluZztcbiAgcmVhZG9ubHkgW0FCT1JUX0hPT0tfVE9LRU5dOiBzdHJpbmc7XG5cbiAgI2xpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcbiAgI29uYWJvcnQ6ICgodGhpczogV29ya2Zsb3dBYm9ydFNpZ25hbCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBnZXQgb25hYm9ydCgpOiAoKHRoaXM6IFdvcmtmbG93QWJvcnRTaWduYWwpID0+IHZvaWQpIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI29uYWJvcnQ7XG4gIH1cblxuICBzZXQgb25hYm9ydChoYW5kbGVyOiAoKHRoaXM6IFdvcmtmbG93QWJvcnRTaWduYWwpID0+IHZvaWQpIHwgbnVsbCkge1xuICAgIHRoaXMuI29uYWJvcnQgPSBoYW5kbGVyO1xuICAgIGlmIChoYW5kbGVyICYmIHRoaXMuYWJvcnRlZCkge1xuICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbU5hbWU6IHN0cmluZywgaG9va1Rva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzW0FCT1JUX1NUUkVBTV9OQU1FXSA9IHN0cmVhbU5hbWU7XG4gICAgdGhpc1tBQk9SVF9IT09LX1RPS0VOXSA9IGhvb2tUb2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgU2V0cyBhYm9ydGVkIHN0YXRlIGFuZCBmaXJlcyBsaXN0ZW5lcnMuXG4gICAqIENhbGxlZCBieSBhYm9ydCgpIG9uIGZpcnN0LXJ1biwgb3IgYnkgdGhlIGV2ZW50cyBjb25zdW1lciBvbiByZXBsYXkuXG4gICAqIElkZW1wb3RlbnQg4oCUIHNlY29uZCBjYWxsIGlzIGEgbm8tb3AuXG4gICAqL1xuICBfc2V0QWJvcnRlZChyZWFzb24/OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWJvcnRlZCkgcmV0dXJuO1xuICAgIHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgaWYgKHRoaXMuI29uYWJvcnQpIHtcbiAgICAgIHRoaXMuI29uYWJvcnQuY2FsbCh0aGlzKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLiNsaXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxuICAgIHRoaXMuI2xpc3RlbmVycyA9IFtdO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgIT09ICdhYm9ydCcpIHJldHVybjtcbiAgICBpZiAodGhpcy5hYm9ydGVkKSB7XG4gICAgICAvLyBGaXJlIHN5bmNocm9ub3VzbHksIG5vdCBvbiBhIG1pY3JvdGFzay4gTmF0aXZlIEFib3J0U2lnbmFsIGZpcmVzIG9uIGFcbiAgICAgIC8vIG1pY3JvdGFzayBwZXIgc3BlYywgYnV0IGluc2lkZSB0aGUgd29ya2Zsb3cgVk0gd2UgZGVsaWJlcmF0ZWx5IGRpdmVyZ2VcbiAgICAgIC8vIGZvciBkZXRlcm1pbmlzdGljIHJlcGxheTogbGlzdGVuZXIgb3JkZXJpbmcgbXVzdCBiZSB0aWVkIHRvIHRoZVxuICAgICAgLy8gb3JjaGVzdHJhdG9yJ3Mgc3luYyBleGVjdXRpb24gcGF0aCwgbm90IHRvIG1pY3JvdGFzayBzY2hlZHVsaW5nLlxuICAgICAgbGlzdGVuZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy4jbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgIT09ICdhYm9ydCcpIHJldHVybjtcbiAgICB0aGlzLiNsaXN0ZW5lcnMgPSB0aGlzLiNsaXN0ZW5lcnMuZmlsdGVyKChsKSA9PiBsICE9PSBsaXN0ZW5lcik7XG4gIH1cblxuICB0aHJvd0lmQWJvcnRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hYm9ydGVkKSB7XG4gICAgICB0aHJvdyAoXG4gICAgICAgIHRoaXMucmVhc29uID8/XG4gICAgICAgIG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd29ya2Zsb3ctY29udGV4dCBgQWJvcnRDb250cm9sbGVyYCBjbGFzcyB0aGF0IHVzZXMgaG9va3MgZm9yXG4gKiBkdXJhYmxlIHN0YXRlIGFuZCBzdHJlYW1zIGZvciByZWFsLXRpbWUgc3RlcCBwcm9wYWdhdGlvbi5cbiAqXG4gKiBGb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgYGNyZWF0ZUNyZWF0ZUhvb2soKWAgaW4gYHdvcmtmbG93L2hvb2sudHNgOlxuICogLSBSZWdpc3RlcnMgYSBob29rIGluIHRoZSBpbnZvY2F0aW9ucyBxdWV1ZSBvbiBjb25zdHJ1Y3Rpb25cbiAqIC0gU3Vic2NyaWJlcyB0byB0aGUgZXZlbnRzIGNvbnN1bWVyIGZvciBob29rX2NyZWF0ZWQvaG9va19yZWNlaXZlZCBldmVudHNcbiAqIC0gYGFib3J0KClgIGNhbGxzIGBfc2V0QWJvcnRlZGAgKyBtYXJrcyB0aGUgaG9vayBmb3IgcmVzdW1wdGlvblxuICogLSBUaGUgc3VzcGVuc2lvbiBoYW5kbGVyIHByb2Nlc3NlcyB0aGUgYWJvcnQgKGNyZWF0ZXMgZXZlbnQgKyB3cml0ZXMgc3RyZWFtKVxuICogLSBPbiByZXBsYXksIHRoZSBldmVudHMgY29uc3VtZXIgY2FsbHMgYF9zZXRBYm9ydGVkYCB3aGVuIGhvb2tfcmVjZWl2ZWRcbiAqICAgaXMgcHJvY2Vzc2VkLCBhbmQgYGFib3J0KClgIGluIHRoZSB3b3JrZmxvdyBjb2RlIGJlY29tZXMgYSBuby1vcFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3JlYXRlQWJvcnRDb250cm9sbGVyKGN0eDogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBjbGFzcyBXb3JrZmxvd0Fib3J0Q29udHJvbGxlciB7XG4gICAgcmVhZG9ubHkgc2lnbmFsOiBXb3JrZmxvd0Fib3J0U2lnbmFsO1xuICAgIHJlYWRvbmx5IFtBQk9SVF9TVFJFQU1fTkFNRV06IHN0cmluZztcbiAgICByZWFkb25seSBbQUJPUlRfSE9PS19UT0tFTl06IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgY29uc3QgaWQgPSBjdHguZ2VuZXJhdGVVbGlkKCk7XG4gICAgICBjb25zdCBzdHJlYW1OYW1lID0gZ2V0QWJvcnRTdHJlYW1JZChpZCk7XG4gICAgICBjb25zdCBob29rVG9rZW4gPSBgYWJydF8ke2lkfWA7XG5cbiAgICAgIHRoaXNbQUJPUlRfU1RSRUFNX05BTUVdID0gc3RyZWFtTmFtZTtcbiAgICAgIHRoaXNbQUJPUlRfSE9PS19UT0tFTl0gPSBob29rVG9rZW47XG4gICAgICB0aGlzLnNpZ25hbCA9IG5ldyBXb3JrZmxvd0Fib3J0U2lnbmFsKHN0cmVhbU5hbWUsIGhvb2tUb2tlbik7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIGFuIGludGVybmFsIHN5c3RlbSBob29rIGluIHRoZSBpbnZvY2F0aW9ucyBxdWV1ZS5cbiAgICAgIC8vIGlzU3lzdGVtIHByZXZlbnRzIHRva2VuIG5hbWVzcGFjZSBjb25mbGljdHMgd2l0aCB1c2VyIGhvb2tzLlxuICAgICAgY29uc3QgY29ycmVsYXRpb25JZCA9IGBob29rXyR7Y3R4LmdlbmVyYXRlVWxpZCgpfWA7XG4gICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5zZXQoY29ycmVsYXRpb25JZCwge1xuICAgICAgICB0eXBlOiAnaG9vaycsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgIHRva2VuOiBob29rVG9rZW4sXG4gICAgICAgIGlzV2ViaG9vazogZmFsc2UsXG4gICAgICAgIGlzU3lzdGVtOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN1YnNjcmliZSB0byBldmVudHMgZm9yIHRoaXMgaG9vaydzIGxpZmVjeWNsZVxuICAgICAgY3R4LmV2ZW50c0NvbnN1bWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50VG9rZW4gPVxuICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmIGV2ZW50LmV2ZW50RGF0YSAmJiAndG9rZW4nIGluIGV2ZW50LmV2ZW50RGF0YVxuICAgICAgICAgICAgPyBldmVudC5ldmVudERhdGEudG9rZW5cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgZXZlbnRUb2tlbiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICBldmVudFRva2VuICE9PSB0aGlzW0FCT1JUX0hPT0tfVE9LRU5dXG4gICAgICAgICkge1xuICAgICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgICAgbmV3IENvcnJ1cHRlZEV2ZW50TG9nRXJyb3IoXG4gICAgICAgICAgICAgICAgYENvcnJ1cHRlZCBldmVudCBsb2c6IGFib3J0IGhvb2sgZXZlbnQgJHtldmVudC5ldmVudFR5cGV9IGZvciAke2NvcnJlbGF0aW9uSWR9IGJlbG9uZ3MgdG8gdG9rZW4gXCIke2V2ZW50VG9rZW59XCIsIGJ1dCB0aGUgY3VycmVudCBhYm9ydCBob29rIGV4cGVjdHMgXCIke3RoaXNbQUJPUlRfSE9PS19UT0tFTl19XCJgXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJykge1xuICAgICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmdldChjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX3JlY2VpdmVkJykge1xuICAgICAgICAgIC8vIFRoZSBhYm9ydCB3YXMgcmVjb3JkZWQgaW4gdGhlIGV2ZW50IGxvZyAoZnJvbSBhIHByZXZpb3VzIHJ1bidzXG4gICAgICAgICAgLy8gYWJvcnQoKSBjYWxsLCBvciBmcm9tIGEgc3RlcC9leHRlcm5hbCBhYm9ydCkuIFVwZGF0ZSBzaWduYWxcbiAgICAgICAgICAvLyBzdGF0ZSBhbmQgZmlyZSBsaXN0ZW5lcnMgYXQgdGhpcyBkZXRlcm1pbmlzdGljIHBvaW50IGluIHRoZVxuICAgICAgICAgIC8vIHByb21pc2VRdWV1ZSDigJQgc2FtZSBvcmRlcmluZyBhcyBob29rIHBheWxvYWQgZGVsaXZlcnkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBUaGUgcGF5bG9hZCBpcyB0aGUgZGVoeWRyYXRlZCBmb3JtIHdyaXR0ZW4gYnkgdGhlIHN1c3BlbnNpb25cbiAgICAgICAgICAvLyBoYW5kbGVyIChhIFVpbnQ4QXJyYXksIHBvc3NpYmx5IGVuY3J5cHRlZCkuIEh5ZHJhdGUgaXQgdmlhIHRoZVxuICAgICAgICAgIC8vIHNhbWUgbWFjaGluZXJ5IGFzIHJlZ3VsYXIgaG9vayBwYXlsb2FkcyAod29ya2Zsb3cvaG9vay50czoxMTcpXG4gICAgICAgICAgLy8gc28gdGhlIHJlYXNvbiByb3VuZC10cmlwcyB3aXRoIGZ1bGwgdHlwZSBmaWRlbGl0eS4gUmVhZGluZyB0aGVcbiAgICAgICAgICAvLyByYXcgcGF5bG9hZCBoZXJlIGlzIGEgYnVnIOKAlCBpdCdzIG5vdCBhIHBsYWluIG9iamVjdCBhZnRlclxuICAgICAgICAgIC8vIGRlaHlkcmF0aW9uLCBzbyBgJ3JlYXNvbicgaW4gcGF5bG9hZGAgaXMgZmFsc2UgYW5kIHJlYXNvblxuICAgICAgICAgIC8vIGVuZHMgdXAgdW5kZWZpbmVkIG9uIHJlcGxheS5cbiAgICAgICAgICBjb25zdCByYXdQYXlsb2FkID0gZXZlbnQuZXZlbnREYXRhPy5wYXlsb2FkO1xuICAgICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlYXNvbjogdW5rbm93bjtcbiAgICAgICAgICAgIGlmIChyYXdQYXlsb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoeWRyYXRlZCA9IChhd2FpdCBoeWRyYXRlU3RlcFJldHVyblZhbHVlKFxuICAgICAgICAgICAgICAgICAgcmF3UGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICAgIGN0eC5lbmNyeXB0aW9uS2V5LFxuICAgICAgICAgICAgICAgICAgY3R4Lmdsb2JhbFRoaXNcbiAgICAgICAgICAgICAgICApKSBhcyB7IHJlYXNvbj86IHVua25vd24gfSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBoeWRyYXRlZCAmJlxuICAgICAgICAgICAgICAgICAgdHlwZW9mIGh5ZHJhdGVkID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgJ3JlYXNvbicgaW4gaHlkcmF0ZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHJlYXNvbiA9IGh5ZHJhdGVkLnJlYXNvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIC8vIEJlc3QtZWZmb3J0OiBpZiBoeWRyYXRpb24gZmFpbHMsIGZhbGwgYmFjayB0byB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAvLyByZWFzb24uIFRoZSBzaWduYWwgc3RpbGwgYWJvcnRzOyB0aGUgdXNlciBqdXN0IHdvbid0IHNlZVxuICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCByZWFzb24uIE1hdGNoZXMgV29ya2Zsb3dBYm9ydFNpZ25hbCdzIHNwZWNcbiAgICAgICAgICAgICAgICAvLyBmYWxsYmFjayAoRE9NRXhjZXB0aW9uIEFib3J0RXJyb3IpLlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNpZ25hbC5fc2V0QWJvcnRlZChyZWFzb24pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY3R4Lmludm9jYXRpb25zUXVldWUuZGVsZXRlKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAgIC8vIE11bHRpcGxlIGhhbmRsZXJzIGNhbiBvYnNlcnZlIHRoZSBzYW1lIHBlbmRpbmcgYWJvcnQgcmVxdWVzdCBhbmRcbiAgICAgICAgICAvLyBkdXJhYmx5IHJlY29yZCBpdCBiZWZvcmUgcmVwbGF5IHJlbW92ZXMgdGhlIHF1ZXVlIGl0ZW0uIEFib3J0IGlzXG4gICAgICAgICAgLy8gaWRlbXBvdGVudCwgc28gY29uc3VtZSBsYXRlciBtYXRjaGluZyByZWNlaXB0cyBhcyBuby1vcHMgaW5zdGVhZFxuICAgICAgICAgIC8vIG9mIHN1cmZhY2luZyBhIGNvcnJ1cHRlZCBldmVudCBsb2cgYWZ0ZXIgdGhlIGZpcnN0IHJlY2VpcHQuXG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19kaXNwb3NlZCcpIHtcbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFib3J0KHJlYXNvbj86IHVua25vd24pOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnNpZ25hbC5hYm9ydGVkKSByZXR1cm47IC8vIG5vLW9wIChhbHJlYWR5IGFib3J0ZWQsIGUuZy4gZnJvbSByZXBsYXkpXG5cbiAgICAgIC8vIFVwZGF0ZSBzaWduYWwgc3RhdGUgYW5kIGZpcmUgbGlzdGVuZXJzIHN5bmNocm9ub3VzbHlcbiAgICAgIHRoaXMuc2lnbmFsLl9zZXRBYm9ydGVkKHJlYXNvbik7XG5cbiAgICAgIC8vIE1hcmsgdGhlIGhvb2sgZm9yIHJlc3VtcHRpb24gc28gdGhlIHN1c3BlbnNpb24gaGFuZGxlciByZWNvcmRzXG4gICAgICAvLyB0aGUgYWJvcnQgaW4gdGhlIGV2ZW50IGxvZyBhbmQgd3JpdGVzIHRoZSBzdHJlYW0gcGFja2V0LlxuICAgICAgZm9yIChjb25zdCBbLCBpdGVtXSBvZiBjdHguaW52b2NhdGlvbnNRdWV1ZSkge1xuICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnaG9vaycgJiYgaXRlbS50b2tlbiA9PT0gdGhpc1tBQk9SVF9IT09LX1RPS0VOXSkge1xuICAgICAgICAgIGl0ZW0uYWJvcnRSZXF1ZXN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGl0ZW0uYWJvcnRSZWFzb24gPSByZWFzb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHdvcmtmbG93LWNvbnRleHQgYEFib3J0U2lnbmFsYCBvYmplY3Qgd2l0aCBzdGF0aWMgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFib3J0U2lnbmFsU3RhdGljcygpOiB7XG4gIGFib3J0OiAocmVhc29uPzogdW5rbm93bikgPT4gV29ya2Zsb3dBYm9ydFNpZ25hbDtcbiAgYW55OiAoXG4gICAgc2lnbmFsczogSXRlcmFibGU8e1xuICAgICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICAgIHJlYXNvbj86IHVua25vd247XG4gICAgICBhZGRFdmVudExpc3RlbmVyPzogRnVuY3Rpb247XG4gICAgfT5cbiAgKSA9PiBXb3JrZmxvd0Fib3J0U2lnbmFsO1xuICB0aW1lb3V0OiAoKSA9PiBuZXZlcjtcbn0ge1xuICByZXR1cm4ge1xuICAgIGFib3J0KHJlYXNvbj86IHVua25vd24pOiBXb3JrZmxvd0Fib3J0U2lnbmFsIHtcbiAgICAgIGNvbnN0IHNpZ25hbCA9IG5ldyBXb3JrZmxvd0Fib3J0U2lnbmFsKCcnLCAnJyk7XG4gICAgICBzaWduYWwuX3NldEFib3J0ZWQoXG4gICAgICAgIHJlYXNvbiA/PyBuZXcgRE9NRXhjZXB0aW9uKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkLicsICdBYm9ydEVycm9yJylcbiAgICAgICk7XG4gICAgICByZXR1cm4gc2lnbmFsO1xuICAgIH0sXG5cbiAgICBhbnkoXG4gICAgICBzaWduYWxzOiBJdGVyYWJsZTx7XG4gICAgICAgIGFib3J0ZWQ6IGJvb2xlYW47XG4gICAgICAgIHJlYXNvbj86IHVua25vd247XG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXI/OiBGdW5jdGlvbjtcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcj86IEZ1bmN0aW9uO1xuICAgICAgfT5cbiAgICApOiBXb3JrZmxvd0Fib3J0U2lnbmFsIHtcbiAgICAgIGNvbnN0IGNvbXBvc2l0ZSA9IG5ldyBXb3JrZmxvd0Fib3J0U2lnbmFsKCcnLCAnJyk7XG5cbiAgICAgIC8vIE1hdGVyaWFsaXplIHRoZSBpdGVyYWJsZSBvbmNlLiBOYXRpdmUgQWJvcnRTaWduYWwuYW55IGRvZXMgdGhlIHNhbWU6XG4gICAgICAvLyBzaW5nbGUtc2hvdCBpdGVyYWJsZXMgKGUuZy4gZ2VuZXJhdG9ycykgd291bGQgb3RoZXJ3aXNlIHByb2R1Y2UgemVyb1xuICAgICAgLy8gZW50cmllcyBvbiB0aGUgc2Vjb25kIHBhc3MgYmVsb3cuXG4gICAgICBjb25zdCBhcnIgPSBBcnJheS5mcm9tKHNpZ25hbHMpO1xuXG4gICAgICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBhcnIpIHtcbiAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgY29tcG9zaXRlLl9zZXRBYm9ydGVkKHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgIHJldHVybiBjb21wb3NpdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGlzdGVuIHRvIGVhY2ggc2lnbmFsIOKAlCBmaXJzdCBvbmUgdG8gYWJvcnQgd2lucy4gVHJhY2sgbGlzdGVuZXJzIHNvXG4gICAgICAvLyB3ZSBjYW4gcmVtb3ZlIHRoZW0gYWZ0ZXIgdGhlIGNvbXBvc2l0ZSBhYm9ydHM7IG90aGVyd2lzZSB0aGUgY2xvc3VyZXNcbiAgICAgIC8vIChjYXB0dXJpbmcgYGNvbXBvc2l0ZWApIHByZXZlbnQgR0MgZm9yIGFueSBpbnB1dCBzaWduYWwgdGhhdCBvdXRsaXZlc1xuICAgICAgLy8gdGhlIGNvbXBvc2l0ZSAoZS5nLiBhIGxvbmctbGl2ZWQgZXh0ZXJuYWwgY29udHJvbGxlcikuXG4gICAgICBjb25zdCBsaXN0ZW5lcnM6IEFycmF5PHtcbiAgICAgICAgc2lnbmFsOiAodHlwZW9mIGFycilbbnVtYmVyXTtcbiAgICAgICAgbGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gICAgICB9PiA9IFtdO1xuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB7IHNpZ25hbCwgbGlzdGVuZXIgfSBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgICAgICBpZiAoc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGxpc3RlbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGlzdGVuZXJzLmxlbmd0aCA9IDA7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBhcnIpIHtcbiAgICAgICAgaWYgKCFzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcikgY29udGludWU7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAgIGlmICghY29tcG9zaXRlLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIGNvbXBvc2l0ZS5fc2V0QWJvcnRlZChzaWduYWwucmVhc29uKTtcbiAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKHsgc2lnbmFsLCBsaXN0ZW5lciB9KTtcbiAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcG9zaXRlO1xuICAgIH0sXG5cbiAgICB0aW1lb3V0KCk6IG5ldmVyIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Fib3J0U2lnbmFsLnRpbWVvdXQoKSBpcyBub3Qgc3VwcG9ydGVkIGluIHdvcmtmbG93IGZ1bmN0aW9ucy4gJyArXG4gICAgICAgICAgJ1VzZSBzbGVlcCgpIHdpdGggYW4gQWJvcnRDb250cm9sbGVyIGluc3RlYWQuICcgK1xuICAgICAgICAgICdTZWU6IC9kb2NzL2Vycm9ycy9hYm9ydC1zaWduYWwtdGltZW91dC1pbi13b3JrZmxvdydcbiAgICAgICk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-hook.d.ts","sourceRoot":"","sources":["../../src/workflow/create-hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-hook.d.ts","sourceRoot":"","sources":["../../src/workflow/create-hook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,cAAc,EACf,MAAM,mBAAmB,CAAC;AAI3B,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAalE;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,GAClD,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAChC,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { throwNotInWorkflowContext } from '../context-errors.js';
|
|
1
2
|
import { WORKFLOW_CREATE_HOOK } from '../symbols.js';
|
|
2
3
|
import { getWorkflowMetadata } from './get-workflow-metadata.js';
|
|
3
4
|
export function createHook(options) {
|
|
4
5
|
// Inside the workflow VM, the hook function is stored in the globalThis object behind a symbol
|
|
5
6
|
const createHookFn = globalThis[WORKFLOW_CREATE_HOOK];
|
|
6
7
|
if (!createHookFn) {
|
|
7
|
-
|
|
8
|
+
throwNotInWorkflowContext('createHook()', 'https://workflow-sdk.dev/docs/api-reference/workflow/create-hook', createHook);
|
|
8
9
|
}
|
|
9
10
|
return createHookFn(options);
|
|
10
11
|
}
|
|
@@ -22,4 +23,4 @@ export function createWebhook(options) {
|
|
|
22
23
|
hook.url = `${url}/.well-known/workflow/v1/webhook/${encodeURIComponent(hook.token)}`;
|
|
23
24
|
return hook;
|
|
24
25
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3cvY3JlYXRlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFRakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLE1BQU0sVUFBVSxVQUFVLENBQVUsT0FBcUI7SUFDdkQsK0ZBQStGO0lBQy9GLE1BQU0sWUFBWSxHQUFJLFVBQWtCLENBQ3RDLG9CQUFvQixDQUNHLENBQUM7SUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLHlCQUF5QixDQUN2QixjQUFjLEVBQ2Qsa0VBQWtFLEVBQ2xFLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFNRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixPQUF3QjtJQUV4QixNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FFckQsQ0FBQztJQUVGLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEtBQTRLLENBQzdLLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxRQUF5RCxDQUFDO0lBQzlELElBQUksT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDdkMsUUFBUSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBRTlCLENBQUM7SUFFakMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsb0NBQW9DLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBRXRGLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0LWVycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEhvb2ssXG4gIEhvb2tPcHRpb25zLFxuICBSZXF1ZXN0V2l0aFJlc3BvbnNlLFxuICBXZWJob29rLFxuICBXZWJob29rT3B0aW9ucyxcbn0gZnJvbSAnLi4vY3JlYXRlLWhvb2suanMnO1xuaW1wb3J0IHsgV09SS0ZMT1dfQ1JFQVRFX0hPT0sgfSBmcm9tICcuLi9zeW1ib2xzLmpzJztcbmltcG9ydCB7IGdldFdvcmtmbG93TWV0YWRhdGEgfSBmcm9tICcuL2dldC13b3JrZmxvdy1tZXRhZGF0YS5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIb29rPFQgPSBhbnk+KG9wdGlvbnM/OiBIb29rT3B0aW9ucyk6IEhvb2s8VD4ge1xuICAvLyBJbnNpZGUgdGhlIHdvcmtmbG93IFZNLCB0aGUgaG9vayBmdW5jdGlvbiBpcyBzdG9yZWQgaW4gdGhlIGdsb2JhbFRoaXMgb2JqZWN0IGJlaGluZCBhIHN5bWJvbFxuICBjb25zdCBjcmVhdGVIb29rRm4gPSAoZ2xvYmFsVGhpcyBhcyBhbnkpW1xuICAgIFdPUktGTE9XX0NSRUFURV9IT09LXG4gIF0gYXMgdHlwZW9mIGNyZWF0ZUhvb2s8VD47XG4gIGlmICghY3JlYXRlSG9va0ZuKSB7XG4gICAgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dChcbiAgICAgICdjcmVhdGVIb29rKCknLFxuICAgICAgJ2h0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi9kb2NzL2FwaS1yZWZlcmVuY2Uvd29ya2Zsb3cvY3JlYXRlLWhvb2snLFxuICAgICAgY3JlYXRlSG9va1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUhvb2tGbihvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYmhvb2soXG4gIG9wdGlvbnM6IFdlYmhvb2tPcHRpb25zICYgeyByZXNwb25kV2l0aDogJ21hbnVhbCcgfVxuKTogV2ViaG9vazxSZXF1ZXN0V2l0aFJlc3BvbnNlPjtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJob29rKG9wdGlvbnM/OiBXZWJob29rT3B0aW9ucyk6IFdlYmhvb2s8UmVxdWVzdD47XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViaG9vayhcbiAgb3B0aW9ucz86IFdlYmhvb2tPcHRpb25zXG4pOiBXZWJob29rPFJlcXVlc3Q+IHwgV2ViaG9vazxSZXF1ZXN0V2l0aFJlc3BvbnNlPiB7XG4gIGNvbnN0IHsgcmVzcG9uZFdpdGgsIHRva2VuLCAuLi5yZXN0IH0gPSAob3B0aW9ucyA/PyB7fSkgYXMgV2ViaG9va09wdGlvbnMgJiB7XG4gICAgdG9rZW4/OiBzdHJpbmc7XG4gIH07XG5cbiAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYGNyZWF0ZVdlYmhvb2soKWAgZG9lcyBub3QgYWNjZXB0IGEgYHRva2VuYCBvcHRpb24uIFdlYmhvb2sgdG9rZW5zIGFyZSBhbHdheXMgcmFuZG9tbHkgZ2VuZXJhdGVkLiBVc2UgYGNyZWF0ZUhvb2soKWAgd2l0aCBgcmVzdW1lSG9vaygpYCBmb3IgZGV0ZXJtaW5pc3RpYyB0b2tlbiBwYXR0ZXJucy4nXG4gICAgKTtcbiAgfVxuXG4gIGxldCBtZXRhZGF0YTogUGljazxXZWJob29rT3B0aW9ucywgJ3Jlc3BvbmRXaXRoJz4gfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2YgcmVzcG9uZFdpdGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbWV0YWRhdGEgPSB7IHJlc3BvbmRXaXRoIH07XG4gIH1cblxuICBjb25zdCBob29rID0gY3JlYXRlSG9vayh7IC4uLnJlc3QsIG1ldGFkYXRhLCBpc1dlYmhvb2s6IHRydWUgfSkgYXNcbiAgICB8IFdlYmhvb2s8UmVxdWVzdD5cbiAgICB8IFdlYmhvb2s8UmVxdWVzdFdpdGhSZXNwb25zZT47XG5cbiAgY29uc3QgeyB1cmwgfSA9IGdldFdvcmtmbG93TWV0YWRhdGEoKTtcbiAgaG9vay51cmwgPSBgJHt1cmx9Ly53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2svJHtlbmNvZGVVUklDb21wb25lbnQoaG9vay50b2tlbil9YDtcblxuICByZXR1cm4gaG9vaztcbn1cbiJdfQ==
|
|
@@ -5,6 +5,6 @@ import type { Hook, HookOptions } from '../create-hook.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare function defineHook<TInput, TOutput = TInput>(): {
|
|
7
7
|
create(options?: HookOptions): Hook<TOutput>;
|
|
8
|
-
resume(_token: string, _payload: TInput)
|
|
8
|
+
resume: (_token: string, _payload: TInput) => Promise<HookEntity | null>;
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=define-hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-hook.d.ts","sourceRoot":"","sources":["../../src/workflow/define-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"define-hook.d.ts","sourceRoot":"","sources":["../../src/workflow/define-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;qBAe9B,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;qBAbpC,MAAM,YACJ,MAAM,KACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;EAgB9B"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
import { throwUnavailableInWorkflowContext } from '../context-errors.js';
|
|
1
2
|
import { createHook } from './create-hook.js';
|
|
2
3
|
/**
|
|
3
4
|
* NOTE: This is the implementation of `defineHook()` that is used in workflow contexts.
|
|
4
5
|
*/
|
|
5
6
|
export function defineHook() {
|
|
7
|
+
function resume(_token, _payload) {
|
|
8
|
+
// Referenced by name (not `this.resume`) so the stack strip works even
|
|
9
|
+
// if the caller destructured the hook.
|
|
10
|
+
throwUnavailableInWorkflowContext('defineHook().resume()', 'https://workflow-sdk.dev/docs/api-reference/workflow-api/resume-hook', resume);
|
|
11
|
+
}
|
|
6
12
|
return {
|
|
7
13
|
create(options) {
|
|
8
14
|
return createHook(options);
|
|
9
15
|
},
|
|
10
|
-
resume
|
|
11
|
-
throw new Error('`defineHook().resume()` can only be called from external contexts (e.g. API routes).');
|
|
12
|
-
},
|
|
16
|
+
resume,
|
|
13
17
|
};
|
|
14
18
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3cvZGVmaW5lLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVU7SUFDeEIsU0FBUyxNQUFNLENBQ2IsTUFBYyxFQUNkLFFBQWdCO1FBRWhCLHVFQUF1RTtRQUN2RSx1Q0FBdUM7UUFDdkMsaUNBQWlDLENBQy9CLHVCQUF1QixFQUN2QixzRUFBc0UsRUFDdEUsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sQ0FBQyxPQUFxQjtZQUMxQixPQUFPLFVBQVUsQ0FBVSxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBIb29rIGFzIEhvb2tFbnRpdHkgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgdGhyb3dVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC1lcnJvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBIb29rLCBIb29rT3B0aW9ucyB9IGZyb20gJy4uL2NyZWF0ZS1ob29rLmpzJztcbmltcG9ydCB7IGNyZWF0ZUhvb2sgfSBmcm9tICcuL2NyZWF0ZS1ob29rLmpzJztcblxuLyoqXG4gKiBOT1RFOiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGVmaW5lSG9vaygpYCB0aGF0IGlzIHVzZWQgaW4gd29ya2Zsb3cgY29udGV4dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVIb29rPFRJbnB1dCwgVE91dHB1dCA9IFRJbnB1dD4oKSB7XG4gIGZ1bmN0aW9uIHJlc3VtZShcbiAgICBfdG9rZW46IHN0cmluZyxcbiAgICBfcGF5bG9hZDogVElucHV0XG4gICk6IFByb21pc2U8SG9va0VudGl0eSB8IG51bGw+IHtcbiAgICAvLyBSZWZlcmVuY2VkIGJ5IG5hbWUgKG5vdCBgdGhpcy5yZXN1bWVgKSBzbyB0aGUgc3RhY2sgc3RyaXAgd29ya3MgZXZlblxuICAgIC8vIGlmIHRoZSBjYWxsZXIgZGVzdHJ1Y3R1cmVkIHRoZSBob29rLlxuICAgIHRocm93VW5hdmFpbGFibGVJbldvcmtmbG93Q29udGV4dChcbiAgICAgICdkZWZpbmVIb29rKCkucmVzdW1lKCknLFxuICAgICAgJ2h0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi9kb2NzL2FwaS1yZWZlcmVuY2Uvd29ya2Zsb3ctYXBpL3Jlc3VtZS1ob29rJyxcbiAgICAgIHJlc3VtZVxuICAgICk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZShvcHRpb25zPzogSG9va09wdGlvbnMpOiBIb29rPFRPdXRwdXQ+IHtcbiAgICAgIHJldHVybiBjcmVhdGVIb29rPFRPdXRwdXQ+KG9wdGlvbnMpO1xuICAgIH0sXG4gICAgcmVzdW1lLFxuICB9O1xufVxuIl19
|
|
@@ -15,6 +15,17 @@ export interface WorkflowMetadata {
|
|
|
15
15
|
* The URL where the workflow can be triggered.
|
|
16
16
|
*/
|
|
17
17
|
url: string;
|
|
18
|
+
/**
|
|
19
|
+
* Feature flags indicating which capabilities are active for this workflow run.
|
|
20
|
+
*/
|
|
21
|
+
features: {
|
|
22
|
+
/**
|
|
23
|
+
* Whether encryption is enabled for this workflow run.
|
|
24
|
+
* When `true`, step inputs, outputs, and other serialized data
|
|
25
|
+
* are encrypted at rest.
|
|
26
|
+
*/
|
|
27
|
+
encryption: boolean;
|
|
28
|
+
};
|
|
18
29
|
}
|
|
19
30
|
export declare const WORKFLOW_CONTEXT_SYMBOL: unique symbol;
|
|
20
31
|
export declare function getWorkflowMetadata(): WorkflowMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-workflow-metadata.d.ts","sourceRoot":"","sources":["../../src/workflow/get-workflow-metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-workflow-metadata.d.ts","sourceRoot":"","sources":["../../src/workflow/get-workflow-metadata.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,iBAAiB,EAAE,IAAI,CAAC;IAExB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE;QACR;;;;WAIG;QACH,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,uBAAuB,eACY,CAAC;AAEjD,wBAAgB,mBAAmB,IAAI,gBAAgB,CAmBtD"}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
+
import { redirectStackToCaller } from '../capture-stack.js';
|
|
2
|
+
import { NotInWorkflowOrStepContextError } from '../context-violation-error.js';
|
|
1
3
|
export const WORKFLOW_CONTEXT_SYMBOL =
|
|
2
4
|
/* @__PURE__ */ Symbol.for('WORKFLOW_CONTEXT');
|
|
3
5
|
export function getWorkflowMetadata() {
|
|
4
|
-
// Inside the workflow VM, the context is stored in the globalThis object
|
|
6
|
+
// Inside the workflow VM, the context is stored in the globalThis object
|
|
7
|
+
// behind a symbol.
|
|
5
8
|
const ctx = globalThis[WORKFLOW_CONTEXT_SYMBOL];
|
|
6
9
|
if (!ctx) {
|
|
7
|
-
|
|
10
|
+
// Use the shared `NotInWorkflowOrStepContextError` — it lives in
|
|
11
|
+
// `context-violation-error.ts` specifically so this file can throw it
|
|
12
|
+
// without creating a module-init cycle (the full `context-errors.ts`
|
|
13
|
+
// depends on this file's `WORKFLOW_CONTEXT_SYMBOL`).
|
|
14
|
+
const err = new NotInWorkflowOrStepContextError('getWorkflowMetadata()', 'https://workflow-sdk.dev/docs/api-reference/workflow/get-workflow-metadata');
|
|
15
|
+
// Redirect the stack to the caller so terminal overlays (Next.js,
|
|
16
|
+
// Turbopack, VS Code) point at the user's code rather than this frame.
|
|
17
|
+
redirectStackToCaller(err, getWorkflowMetadata);
|
|
18
|
+
throw err;
|
|
8
19
|
}
|
|
9
20
|
return ctx;
|
|
10
21
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXdvcmtmbG93LW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmtmbG93L2dldC13b3JrZmxvdy1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQW9DaEYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCO0FBQ2xDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFakQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyx5RUFBeUU7SUFDekUsbUJBQW1CO0lBQ25CLE1BQU0sR0FBRyxHQUFJLFVBQWtCLENBQUMsdUJBQXVCLENBQXFCLENBQUM7SUFDN0UsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsaUVBQWlFO1FBQ2pFLHNFQUFzRTtRQUN0RSxxRUFBcUU7UUFDckUscURBQXFEO1FBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksK0JBQStCLENBQzdDLHVCQUF1QixFQUN2Qiw0RUFBNEUsQ0FDN0UsQ0FBQztRQUNGLGtFQUFrRTtRQUNsRSx1RUFBdUU7UUFDdkUscUJBQXFCLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDaEQsTUFBTSxHQUFHLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVkaXJlY3RTdGFja1RvQ2FsbGVyIH0gZnJvbSAnLi4vY2FwdHVyZS1zdGFjay5qcyc7XG5pbXBvcnQgeyBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yIH0gZnJvbSAnLi4vY29udGV4dC12aW9sYXRpb24tZXJyb3IuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93TWV0YWRhdGEge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgd29ya2Zsb3cgcnVuLlxuICAgKi9cbiAgd29ya2Zsb3dSdW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgd29ya2Zsb3cgcnVuIHN0YXJ0ZWQuXG4gICAqL1xuICB3b3JrZmxvd1N0YXJ0ZWRBdDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIFVSTCB3aGVyZSB0aGUgd29ya2Zsb3cgY2FuIGJlIHRyaWdnZXJlZC5cbiAgICovXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGZWF0dXJlIGZsYWdzIGluZGljYXRpbmcgd2hpY2ggY2FwYWJpbGl0aWVzIGFyZSBhY3RpdmUgZm9yIHRoaXMgd29ya2Zsb3cgcnVuLlxuICAgKi9cbiAgZmVhdHVyZXM6IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdGhpcyB3b3JrZmxvdyBydW4uXG4gICAgICogV2hlbiBgdHJ1ZWAsIHN0ZXAgaW5wdXRzLCBvdXRwdXRzLCBhbmQgb3RoZXIgc2VyaWFsaXplZCBkYXRhXG4gICAgICogYXJlIGVuY3J5cHRlZCBhdCByZXN0LlxuICAgICAqL1xuICAgIGVuY3J5cHRpb246IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBXT1JLRkxPV19DT05URVhUX1NZTUJPTCA9XG4gIC8qIEBfX1BVUkVfXyAqLyBTeW1ib2wuZm9yKCdXT1JLRkxPV19DT05URVhUJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd01ldGFkYXRhKCk6IFdvcmtmbG93TWV0YWRhdGEge1xuICAvLyBJbnNpZGUgdGhlIHdvcmtmbG93IFZNLCB0aGUgY29udGV4dCBpcyBzdG9yZWQgaW4gdGhlIGdsb2JhbFRoaXMgb2JqZWN0XG4gIC8vIGJlaGluZCBhIHN5bWJvbC5cbiAgY29uc3QgY3R4ID0gKGdsb2JhbFRoaXMgYXMgYW55KVtXT1JLRkxPV19DT05URVhUX1NZTUJPTF0gYXMgV29ya2Zsb3dNZXRhZGF0YTtcbiAgaWYgKCFjdHgpIHtcbiAgICAvLyBVc2UgdGhlIHNoYXJlZCBgTm90SW5Xb3JrZmxvd09yU3RlcENvbnRleHRFcnJvcmAg4oCUIGl0IGxpdmVzIGluXG4gICAgLy8gYGNvbnRleHQtdmlvbGF0aW9uLWVycm9yLnRzYCBzcGVjaWZpY2FsbHkgc28gdGhpcyBmaWxlIGNhbiB0aHJvdyBpdFxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgYSBtb2R1bGUtaW5pdCBjeWNsZSAodGhlIGZ1bGwgYGNvbnRleHQtZXJyb3JzLnRzYFxuICAgIC8vIGRlcGVuZHMgb24gdGhpcyBmaWxlJ3MgYFdPUktGTE9XX0NPTlRFWFRfU1lNQk9MYCkuXG4gICAgY29uc3QgZXJyID0gbmV3IE5vdEluV29ya2Zsb3dPclN0ZXBDb250ZXh0RXJyb3IoXG4gICAgICAnZ2V0V29ya2Zsb3dNZXRhZGF0YSgpJyxcbiAgICAgICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9hcGktcmVmZXJlbmNlL3dvcmtmbG93L2dldC13b3JrZmxvdy1tZXRhZGF0YSdcbiAgICApO1xuICAgIC8vIFJlZGlyZWN0IHRoZSBzdGFjayB0byB0aGUgY2FsbGVyIHNvIHRlcm1pbmFsIG92ZXJsYXlzIChOZXh0LmpzLFxuICAgIC8vIFR1cmJvcGFjaywgVlMgQ29kZSkgcG9pbnQgYXQgdGhlIHVzZXIncyBjb2RlIHJhdGhlciB0aGFuIHRoaXMgZnJhbWUuXG4gICAgcmVkaXJlY3RTdGFja1RvQ2FsbGVyKGVyciwgZ2V0V29ya2Zsb3dNZXRhZGF0YSk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjdHg7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI3D,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,eAAe,CAAC;AAGvB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,2BAA2B,IAChC,CAAC,GAAG,GAAG,EAAE,UAAS,WAAgB,KAAG,IAAI,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI3D,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,eAAe,CAAC;AAGvB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,2BAA2B,IAChC,CAAC,GAAG,GAAG,EAAE,UAAS,WAAgB,KAAG,IAAI,CAAC,CAAC,CAAC,CA2R5E"}
|
package/dist/workflow/hook.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CorruptedEventLogError, HookConflictError } from '@workflow/errors';
|
|
2
2
|
import { withResolvers } from '@workflow/utils';
|
|
3
3
|
import { EventConsumerResult } from '../events-consumer.js';
|
|
4
4
|
import { WorkflowSuspension } from '../global.js';
|
|
@@ -47,6 +47,15 @@ export function createCreateHook(ctx) {
|
|
|
47
47
|
// We're not interested in this event - the correlationId belongs to a different entity
|
|
48
48
|
return EventConsumerResult.NotConsumed;
|
|
49
49
|
}
|
|
50
|
+
const eventToken = 'eventData' in event && event.eventData && 'token' in event.eventData
|
|
51
|
+
? event.eventData.token
|
|
52
|
+
: undefined;
|
|
53
|
+
if (typeof eventToken === 'string' && eventToken !== token) {
|
|
54
|
+
ctx.promiseQueue = ctx.promiseQueue.then(() => {
|
|
55
|
+
ctx.onWorkflowError(new CorruptedEventLogError(`Corrupted event log: hook event ${event.eventType} for ${correlationId} belongs to token "${eventToken}", but the current hook consumer expects "${token}"`));
|
|
56
|
+
});
|
|
57
|
+
return EventConsumerResult.Finished;
|
|
58
|
+
}
|
|
50
59
|
// Check for hook_created event to mark this hook as already created
|
|
51
60
|
if (event.eventType === 'hook_created') {
|
|
52
61
|
const queueItem = ctx.invocationsQueue.get(correlationId);
|
|
@@ -62,7 +71,7 @@ export function createCreateHook(ctx) {
|
|
|
62
71
|
// Store the conflict event so we can reject any awaited promises.
|
|
63
72
|
// Chain through promiseQueue to ensure deterministic ordering.
|
|
64
73
|
const conflictEvent = event;
|
|
65
|
-
const conflictError = new HookConflictError(conflictEvent.eventData.token);
|
|
74
|
+
const conflictError = new HookConflictError(conflictEvent.eventData.token, conflictEvent.eventData.conflictingRunId);
|
|
66
75
|
// Mark that we have a conflict so future awaits also reject
|
|
67
76
|
hasConflict = true;
|
|
68
77
|
conflictErrorRef = conflictError;
|
|
@@ -115,7 +124,7 @@ export function createCreateHook(ctx) {
|
|
|
115
124
|
}
|
|
116
125
|
// An unexpected event type has been received, this event log looks corrupted. Let's fail immediately.
|
|
117
126
|
ctx.promiseQueue = ctx.promiseQueue.then(() => {
|
|
118
|
-
ctx.onWorkflowError(new
|
|
127
|
+
ctx.onWorkflowError(new CorruptedEventLogError(`Unexpected event type for hook ${correlationId} (token: ${token}) "${event.eventType}"`));
|
|
119
128
|
});
|
|
120
129
|
return EventConsumerResult.Finished;
|
|
121
130
|
});
|
|
@@ -213,4 +222,4 @@ export function createCreateHook(ctx) {
|
|
|
213
222
|
return hook;
|
|
214
223
|
};
|
|
215
224
|
}
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNFLE9BQU8sRUFBNkIsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBZ0M7SUFDL0QsT0FBTyxTQUFTLGNBQWMsQ0FBVSxVQUF1QixFQUFFO1FBQy9ELDZCQUE2QjtRQUM3QixNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBELHlFQUF5RTtRQUN6RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztRQUU3QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxJQUFJLEVBQUUsTUFBTTtZQUNaLGFBQWE7WUFDYixLQUFLO1lBQ0wsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLFNBQVM7U0FDVixDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsTUFBTSxhQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUU5QywwREFBMEQ7UUFDMUQsTUFBTSxRQUFRLEdBQThCLEVBQUUsQ0FBQztRQUUvQyxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFMUIsbUVBQW1FO1FBQ25FLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRTdCLDZEQUE2RDtRQUM3RCxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxnQkFBZ0IsR0FBNkIsSUFBSSxDQUFDO1FBRXRELGFBQWEsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNyRSxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLHlEQUF5RDtZQUN6RCx5RkFBeUY7WUFDekYsNEVBQTRFO1lBQzVFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUVyQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3RELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7d0JBQ3pCLEdBQUcsQ0FBQyxlQUFlLENBQ2pCLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDN0QsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sbUJBQW1CLENBQUMsV0FBVyxDQUFDO1lBQ3pDLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQzFDLHVGQUF1RjtnQkFDdkYsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7WUFDekMsQ0FBQztZQUVELG9FQUFvRTtZQUNwRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzFELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQzNDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUM7WUFFRCxvRUFBb0U7WUFDcEUsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRSxDQUFDO2dCQUN4Qyw4Q0FBOEM7Z0JBQzlDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRTNDLGtFQUFrRTtnQkFDbEUsK0RBQStEO2dCQUMvRCxNQUFNLGFBQWEsR0FBRyxLQUEwQixDQUFDO2dCQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLGlCQUFpQixDQUN6QyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FDOUIsQ0FBQztnQkFFRiw0REFBNEQ7Z0JBQzVELFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztnQkFFakMscUVBQXFFO2dCQUNyRSxvRUFBb0U7Z0JBQ3BFLHdFQUF3RTtnQkFDeEUsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFFcEIsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzVDLEtBQUssTUFBTSxRQUFRLElBQUksZUFBZSxFQUFFLENBQUM7d0JBQ3ZDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ2pDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7WUFDdEMsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN4QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzlCLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ1QsK0NBQStDO3dCQUMvQyxzREFBc0Q7d0JBQ3RELGtFQUFrRTt3QkFDbEUsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7d0JBQ3hCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7NEJBQ2xELElBQUksQ0FBQztnQ0FDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLHNCQUFzQixDQUMxQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFDdkIsR0FBRyxDQUFDLEtBQUssRUFDVCxHQUFHLENBQUMsYUFBYSxFQUNqQixHQUFHLENBQUMsVUFBVSxDQUNmLENBQUM7Z0NBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFZLENBQUMsQ0FBQzs0QkFDN0IsQ0FBQzs0QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dDQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3JCLENBQUM7b0NBQVMsQ0FBQztnQ0FDVCxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzs0QkFDMUIsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUVELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQ3hDLDBFQUEwRTtnQkFDMUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0MscURBQXFEO2dCQUNyRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLHNEQUFzRDtnQkFDdEQsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7WUFDdEMsQ0FBQztZQUVELHNHQUFzRztZQUN0RyxHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDNUMsR0FBRyxDQUFDLGVBQWUsQ0FDakIsSUFBSSxvQkFBb0IsQ0FDdEIsa0NBQWtDLGFBQWEsWUFBWSxLQUFLLE1BQU0sS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUN6RixDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsc0NBQXNDO1FBQ3RDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV2QiwrRUFBK0U7UUFDL0UsU0FBUyxpQkFBaUI7WUFDeEIsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFLLENBQUM7WUFFckMscUVBQXFFO1lBQ3JFLDREQUE0RDtZQUM1RCxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNwQyxHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDNUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDM0IsQ0FBQztZQUVELElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMxQyxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixzREFBc0Q7b0JBQ3RELGtFQUFrRTtvQkFDbEUsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3hCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQ2xELElBQUksQ0FBQzs0QkFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLHNCQUFzQixDQUMxQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFDN0IsR0FBRyxDQUFDLEtBQUssRUFDVCxHQUFHLENBQUMsYUFBYSxFQUNqQixHQUFHLENBQUMsVUFBVSxDQUNmLENBQUM7NEJBQ0YsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFZLENBQUMsQ0FBQzt3QkFDbEMsQ0FBQzt3QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDOzRCQUNmLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzFCLENBQUM7Z0NBQVMsQ0FBQzs0QkFDVCxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDMUIsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDekIsR0FBRyxDQUFDLGVBQWUsQ0FDakIsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUM3RCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFekIsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQzNCLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsU0FBUyxXQUFXO1lBQ2xCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLGtDQUFrQztZQUM1QyxDQUFDO1lBQ0QsVUFBVSxHQUFHLElBQUksQ0FBQztZQUVsQiw0RUFBNEU7WUFDNUUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixPQUFPO1lBQ1QsQ0FBQztZQUVELCtDQUErQztZQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQzNDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQzVCLENBQUM7WUFFRCw0REFBNEQ7WUFDNUQseUVBQXlFO1lBQ3pFLHNFQUFzRTtZQUN0RSxzREFBc0Q7WUFDdEQsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDekIsR0FBRyxDQUFDLGVBQWUsQ0FDakIsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUM3RCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELGFBQWEsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFZO1lBQ3BCLEtBQUs7WUFFTCxzRUFBc0U7WUFDdEUsSUFBSSxDQUNGLFdBQXFFLEVBQ3JFLFVBQXVFO2dCQUV2RSxPQUFPLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBRUQsMkRBQTJEO1lBQzNELEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNuQixNQUFNLE1BQU0sSUFBSSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sRUFBRSxXQUFXO1lBRXBCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVc7U0FDOUIsQ0FBQztRQUVGLHFFQUFxRTtRQUNyRSxvRUFBb0U7UUFDcEUsaUNBQWlDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLElBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBNkIsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBZ0M7SUFDL0QsT0FBTyxTQUFTLGNBQWMsQ0FBVSxVQUF1QixFQUFFO1FBQy9ELDZCQUE2QjtRQUM3QixNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBELHlFQUF5RTtRQUN6RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztRQUU3QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxJQUFJLEVBQUUsTUFBTTtZQUNaLGFBQWE7WUFDYixLQUFLO1lBQ0wsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLFNBQVM7U0FDVixDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsTUFBTSxhQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUU5QywwREFBMEQ7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QUNqQixJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQzdELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQVk7WUFDcEIsS0FBSztZQUVMLHNFQUFzRTtZQUN0RSxJQUFJLENBQ0YsV0FBcUUsRUFDckUsVUFBdUU7Z0JBRXZFLE9BQU8saUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCwyREFBMkQ7WUFDM0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUMzQixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ25CLE1BQU0sTUFBTSxJQUFJLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxFQUFFLFdBQVc7WUFFcEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVztTQUM5QixDQUFDO1FBRUYscUVBQXFFO1FBQ3JFLG9FQUFvRTtRQUNwRSxpQ0FBaUM7UUFDakMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2hELElBQUksU0FBUyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0MsSUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUN6QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ycnVwdGVkRXZlbnRMb2dFcnJvciwgSG9va0NvbmZsaWN0RXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgUHJvbWlzZVdpdGhSZXNvbHZlcnMsIHdpdGhSZXNvbHZlcnMgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBIb29rQ29uZmxpY3RFdmVudCwgSG9va1JlY2VpdmVkRXZlbnQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHR5cGUgeyBIb29rLCBIb29rT3B0aW9ucyB9IGZyb20gJy4uL2NyZWF0ZS1ob29rLmpzJztcbmltcG9ydCB7IEV2ZW50Q29uc3VtZXJSZXN1bHQgfSBmcm9tICcuLi9ldmVudHMtY29uc3VtZXIuanMnO1xuaW1wb3J0IHsgV29ya2Zsb3dTdXNwZW5zaW9uIH0gZnJvbSAnLi4vZ2xvYmFsLmpzJztcbmltcG9ydCB7IHdlYmhvb2tMb2dnZXIgfSBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHtcbiAgc2NoZWR1bGVXaGVuSWRsZSxcbiAgdHlwZSBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG59IGZyb20gJy4uL3ByaXZhdGUuanMnO1xuaW1wb3J0IHsgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZSB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24uanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3JlYXRlSG9vayhjdHg6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlSG9va0ltcGw8VCA9IGFueT4ob3B0aW9uczogSG9va09wdGlvbnMgPSB7fSk6IEhvb2s8VD4ge1xuICAgIC8vIEdlbmVyYXRlIGhvb2sgSUQgYW5kIHRva2VuXG4gICAgY29uc3QgY29ycmVsYXRpb25JZCA9IGBob29rXyR7Y3R4LmdlbmVyYXRlVWxpZCgpfWA7XG4gICAgY29uc3QgdG9rZW4gPSBvcHRpb25zLnRva2VuID8/IGN0eC5nZW5lcmF0ZU5hbm9pZCgpO1xuXG4gICAgLy8gQWRkIGhvb2sgY3JlYXRpb24gdG8gaW52b2NhdGlvbnMgcXVldWUgKHVzaW5nIE1hcCBmb3IgTygxKSBvcGVyYXRpb25zKVxuICAgIGNvbnN0IGlzV2ViaG9vayA9IG9wdGlvbnMuaXNXZWJob29rID8/IGZhbHNlO1xuXG4gICAgY3R4Lmludm9jYXRpb25zUXVldWUuc2V0KGNvcnJlbGF0aW9uSWQsIHtcbiAgICAgIHR5cGU6ICdob29rJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICB0b2tlbixcbiAgICAgIG1ldGFkYXRhOiBvcHRpb25zLm1ldGFkYXRhLFxuICAgICAgaXNXZWJob29rLFxuICAgIH0pO1xuXG4gICAgLy8gUXVldWUgb2YgaG9vayBldmVudHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQgYnV0IG5vdCB5ZXQgcHJvY2Vzc2VkXG4gICAgY29uc3QgcGF5bG9hZHNRdWV1ZTogSG9va1JlY2VpdmVkRXZlbnRbXSA9IFtdO1xuXG4gICAgLy8gUXVldWUgb2YgcHJvbWlzZXMgdGhhdCByZXNvbHZlIHRvIHRoZSBuZXh0IGhvb2sgcGF5bG9hZFxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlV2l0aFJlc29sdmVyczxUPltdID0gW107XG5cbiAgICBsZXQgZXZlbnRMb2dFbXB0eSA9IGZhbHNlO1xuXG4gICAgLy8gVHJhY2sgaWYgdGhlIGV2ZW50IGxvZyBjb25maXJtcyBkaXNwb3NhbCBoYXBwZW5lZCAocmVwbGF5IG5vLW9wKVxuICAgIGxldCBoYXNEaXNwb3NlZEV2ZW50ID0gZmFsc2U7XG5cbiAgICAvLyBUcmFjayBpZiB3ZSBoYXZlIGEgY29uZmxpY3Qgc28gd2UgY2FuIHJlamVjdCBmdXR1cmUgYXdhaXRzXG4gICAgbGV0IGhhc0NvbmZsaWN0ID0gZmFsc2U7XG4gICAgbGV0IGNvbmZsaWN0RXJyb3JSZWY6IEhvb2tDb25mbGljdEVycm9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICB3ZWJob29rTG9nZ2VyLmRlYnVnKCdIb29rIGNvbnN1bWVyIHNldHVwJywgeyBjb3JyZWxhdGlvbklkLCB0b2tlbiB9KTtcbiAgICBjdHguZXZlbnRzQ29uc3VtZXIuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGV2ZW50cyBhbmQgdGhlcmUgYXJlIHByb21pc2VzIHdhaXRpbmcsXG4gICAgICAvLyBpdCBtZWFucyB0aGUgaG9vayBoYXMgYmVlbiBhd2FpdGVkLCBidXQgYW4gaW5jb21pbmcgcGF5bG9hZCBoYXMgbm90IHlldCBiZWVuIHJlY2VpdmVkLlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgd29ya2Zsb3cgc2hvdWxkIGJlIHN1c3BlbmRlZCB1bnRpbCB0aGUgaG9vayBpcyByZXN1bWVkLlxuICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICBldmVudExvZ0VtcHR5ID0gdHJ1ZTtcblxuICAgICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCAmJiBwYXlsb2Fkc1F1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHNjaGVkdWxlV2hlbklkbGUoY3R4LCAoKSA9PiB7XG4gICAgICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgICAgICBuZXcgV29ya2Zsb3dTdXNwZW5zaW9uKGN0eC5pbnZvY2F0aW9uc1F1ZXVlLCBjdHguZ2xvYmFsVGhpcylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuTm90Q29uc3VtZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5jb3JyZWxhdGlvbklkICE9PSBjb3JyZWxhdGlvbklkKSB7XG4gICAgICAgIC8vIFdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluIHRoaXMgZXZlbnQgLSB0aGUgY29ycmVsYXRpb25JZCBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IGVudGl0eVxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXZlbnRUb2tlbiA9XG4gICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmIGV2ZW50LmV2ZW50RGF0YSAmJiAndG9rZW4nIGluIGV2ZW50LmV2ZW50RGF0YVxuICAgICAgICAgID8gZXZlbnQuZXZlbnREYXRhLnRva2VuXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0eXBlb2YgZXZlbnRUb2tlbiA9PT0gJ3N0cmluZycgJiYgZXZlbnRUb2tlbiAhPT0gdG9rZW4pIHtcbiAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBDb3JydXB0ZWRFdmVudExvZ0Vycm9yKFxuICAgICAgICAgICAgICBgQ29ycnVwdGVkIGV2ZW50IGxvZzogaG9vayBldmVudCAke2V2ZW50LmV2ZW50VHlwZX0gZm9yICR7Y29ycmVsYXRpb25JZH0gYmVsb25ncyB0byB0b2tlbiBcIiR7ZXZlbnRUb2tlbn1cIiwgYnV0IHRoZSBjdXJyZW50IGhvb2sgY29uc3VtZXIgZXhwZWN0cyBcIiR7dG9rZW59XCJgXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgaG9va19jcmVhdGVkIGV2ZW50IHRvIG1hcmsgdGhpcyBob29rIGFzIGFscmVhZHkgY3JlYXRlZFxuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCcpIHtcbiAgICAgICAgY29uc3QgcXVldWVJdGVtID0gY3R4Lmludm9jYXRpb25zUXVldWUuZ2V0KGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgICBxdWV1ZUl0ZW0uaGFzQ3JlYXRlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGhvb2tfY29uZmxpY3QgZXZlbnQgLSBhbm90aGVyIHdvcmtmbG93IGlzIHVzaW5nIHRoaXMgdG9rZW5cbiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX2NvbmZsaWN0Jykge1xuICAgICAgICAvLyBSZW1vdmUgdGhpcyBob29rIGZyb20gdGhlIGludm9jYXRpb25zIHF1ZXVlXG4gICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShjb3JyZWxhdGlvbklkKTtcblxuICAgICAgICAvLyBTdG9yZSB0aGUgY29uZmxpY3QgZXZlbnQgc28gd2UgY2FuIHJlamVjdCBhbnkgYXdhaXRlZCBwcm9taXNlcy5cbiAgICAgICAgLy8gQ2hhaW4gdGhyb3VnaCBwcm9taXNlUXVldWUgdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0RXZlbnQgPSBldmVudCBhcyBIb29rQ29uZmxpY3RFdmVudDtcbiAgICAgICAgY29uc3QgY29uZmxpY3RFcnJvciA9IG5ldyBIb29rQ29uZmxpY3RFcnJvcihcbiAgICAgICAgICBjb25mbGljdEV2ZW50LmV2ZW50RGF0YS50b2tlbixcbiAgICAgICAgICBjb25mbGljdEV2ZW50LmV2ZW50RGF0YS5jb25mbGljdGluZ1J1bklkXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gTWFyayB0aGF0IHdlIGhhdmUgYSBjb25mbGljdCBzbyBmdXR1cmUgYXdhaXRzIGFsc28gcmVqZWN0XG4gICAgICAgIGhhc0NvbmZsaWN0ID0gdHJ1ZTtcbiAgICAgICAgY29uZmxpY3RFcnJvclJlZiA9IGNvbmZsaWN0RXJyb3I7XG5cbiAgICAgICAgLy8gQ2FwdHVyZSBhbmQgZHJhaW4gcGVuZGluZyBwcm9taXNlcyBzeW5jaHJvbm91c2x5IHNvIHRoZSBudWxsIGV2ZW50XG4gICAgICAgIC8vIGhhbmRsZXIgd29uJ3Qgc2VlIHRoZW0gYW5kIHRyaWdnZXIgYSBzcHVyaW91cyBXb3JrZmxvd1N1c3BlbnNpb24uXG4gICAgICAgIC8vIFRoZSBhY3R1YWwgcmVqZWN0aW9ucyBhcmUgZGVmZXJyZWQgdGhyb3VnaCBwcm9taXNlUXVldWUgZm9yIG9yZGVyaW5nLlxuICAgICAgICBjb25zdCBwZW5kaW5nUHJvbWlzZXMgPSBwcm9taXNlcy5zbGljZSgpO1xuICAgICAgICBwcm9taXNlcy5sZW5ndGggPSAwO1xuXG4gICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgcmVzb2x2ZXIgb2YgcGVuZGluZ1Byb21pc2VzKSB7XG4gICAgICAgICAgICByZXNvbHZlci5yZWplY3QoY29uZmxpY3RFcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfcmVjZWl2ZWQnKSB7XG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHByb21pc2VzLnNoaWZ0KCk7XG4gICAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgIC8vIFJlY29uc3RydWN0IHRoZSBwYXlsb2FkIGZyb20gdGhlIGV2ZW50IGRhdGEuXG4gICAgICAgICAgICAvLyBDaGFpbiB0aHJvdWdoIGN0eC5wcm9taXNlUXVldWUgdG8gZW5zdXJlIHRoYXQgYXN5bmNcbiAgICAgICAgICAgIC8vIGRlc2VyaWFsaXphdGlvbiAoZS5nLiwgZGVjcnlwdGlvbikgcmVzb2x2ZXMgaW4gZXZlbnQgbG9nIG9yZGVyLlxuICAgICAgICAgICAgY3R4LnBlbmRpbmdEZWxpdmVyaWVzKys7XG4gICAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50RGF0YS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgICAgY3R4LmVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbmV4dC5yZXNvbHZlKHBheWxvYWQgYXMgVCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgbmV4dC5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGN0eC5wZW5kaW5nRGVsaXZlcmllcy0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF5bG9hZHNRdWV1ZS5wdXNoKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkNvbnN1bWVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19kaXNwb3NlZCcpIHtcbiAgICAgICAgLy8gVGVybWluYWwgc3RhdGUgLSByZW1vdmUgZnJvbSBxdWV1ZSAobGlrZSBzdGVwX2NvbXBsZXRlZC93YWl0X2NvbXBsZXRlZClcbiAgICAgICAgY3R4Lmludm9jYXRpb25zUXVldWUuZGVsZXRlKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAvLyBNYXJrIHRoYXQgdGhlIGV2ZW50IGxvZyBjb25maXJtcyBkaXNwb3NhbCBoYXBwZW5lZFxuICAgICAgICBoYXNEaXNwb3NlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgLy8gV2UncmUgZG9uZSBwcm9jZXNzaW5nIGFueSBtb3JlIGV2ZW50cyBmb3IgdGhpcyBob29rXG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgfVxuXG4gICAgICAvLyBBbiB1bmV4cGVjdGVkIGV2ZW50IHR5cGUgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoaXMgZXZlbnQgbG9nIGxvb2tzIGNvcnJ1cHRlZC4gTGV0J3MgZmFpbCBpbW1lZGlhdGVseS5cbiAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgIG5ldyBDb3JydXB0ZWRFdmVudExvZ0Vycm9yKFxuICAgICAgICAgICAgYFVuZXhwZWN0ZWQgZXZlbnQgdHlwZSBmb3IgaG9vayAke2NvcnJlbGF0aW9uSWR9ICh0b2tlbjogJHt0b2tlbn0pIFwiJHtldmVudC5ldmVudFR5cGV9XCJgXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZDtcbiAgICB9KTtcblxuICAgIC8vIFRyYWNrIGlmIHRoZSBob29rIGhhcyBiZWVuIGRpc3Bvc2VkXG4gICAgbGV0IGlzRGlzcG9zZWQgPSBmYWxzZTtcblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgcHJvbWlzZSB0aGF0IHdhaXRzIGZvciB0aGUgbmV4dCBob29rIHBheWxvYWRcbiAgICBmdW5jdGlvbiBjcmVhdGVIb29rUHJvbWlzZSgpOiBQcm9taXNlPFQ+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVycyA9IHdpdGhSZXNvbHZlcnM8VD4oKTtcblxuICAgICAgLy8gSWYgd2UgaGF2ZSBhIGNvbmZsaWN0LCByZWplY3QgdGhyb3VnaCB0aGUgcHJvbWlzZVF1ZXVlIHRvIG1haW50YWluXG4gICAgICAvLyBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIHdpdGggYW55IHByaW9yIHF1ZXVlZCByZXNvbHV0aW9ucy5cbiAgICAgIGlmIChoYXNDb25mbGljdCAmJiBjb25mbGljdEVycm9yUmVmKSB7XG4gICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmVycy5yZWplY3QoY29uZmxpY3RFcnJvclJlZik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZXJzLnByb21pc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXlsb2Fkc1F1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgbmV4dFBheWxvYWQgPSBwYXlsb2Fkc1F1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIGlmIChuZXh0UGF5bG9hZCkge1xuICAgICAgICAgIC8vIENoYWluIHRocm91Z2ggY3R4LnByb21pc2VRdWV1ZSB0byBlbnN1cmUgdGhhdCBhc3luY1xuICAgICAgICAgIC8vIGRlc2VyaWFsaXphdGlvbiAoZS5nLiwgZGVjcnlwdGlvbikgcmVzb2x2ZXMgaW4gZXZlbnQgbG9nIG9yZGVyLlxuICAgICAgICAgIGN0eC5wZW5kaW5nRGVsaXZlcmllcysrO1xuICAgICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWUoXG4gICAgICAgICAgICAgICAgbmV4dFBheWxvYWQuZXZlbnREYXRhLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgIGN0eC5lbmNyeXB0aW9uS2V5LFxuICAgICAgICAgICAgICAgIGN0eC5nbG9iYWxUaGlzXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJlc29sdmVycy5yZXNvbHZlKHBheWxvYWQgYXMgVCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICByZXNvbHZlcnMucmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGN0eC5wZW5kaW5nRGVsaXZlcmllcy0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlcnMucHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnRMb2dFbXB0eSkge1xuICAgICAgICBzY2hlZHVsZVdoZW5JZGxlKGN0eCwgKCkgPT4ge1xuICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICBuZXcgV29ya2Zsb3dTdXNwZW5zaW9uKGN0eC5pbnZvY2F0aW9uc1F1ZXVlLCBjdHguZ2xvYmFsVGhpcylcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcHJvbWlzZXMucHVzaChyZXNvbHZlcnMpO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZXJzLnByb21pc2U7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRpc3Bvc2UgdGhlIGhvb2tcbiAgICBmdW5jdGlvbiBkaXNwb3NlSG9vaygpOiB2b2lkIHtcbiAgICAgIGlmIChpc0Rpc3Bvc2VkKSB7XG4gICAgICAgIHJldHVybjsgLy8gQWxyZWFkeSBkaXNwb3NlZCwgbm90aGluZyB0byBkb1xuICAgICAgfVxuICAgICAgaXNEaXNwb3NlZCA9IHRydWU7XG5cbiAgICAgIC8vIElmIHRoZSBldmVudCBsb2cgYWxyZWFkeSBjb250YWlucyBob29rX2Rpc3Bvc2VkLCB0aGlzIGlzIGEgcmVwbGF5IOKAlCBuby1vcFxuICAgICAgaWYgKGhhc0Rpc3Bvc2VkRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgZGlzcG9zZWQgZmxhZyBvbiB0aGUgZXhpc3RpbmcgcXVldWUgaXRlbVxuICAgICAgY29uc3QgcXVldWVJdGVtID0gY3R4Lmludm9jYXRpb25zUXVldWUuZ2V0KGNvcnJlbGF0aW9uSWQpO1xuICAgICAgaWYgKHF1ZXVlSXRlbSAmJiBxdWV1ZUl0ZW0udHlwZSA9PT0gJ2hvb2snKSB7XG4gICAgICAgIHF1ZXVlSXRlbS5kaXNwb3NlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIERyYWluIGFueSBwZW5kaW5nIHByb21pc2VzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHBheWxvYWRzLlxuICAgICAgLy8gV2l0aG91dCB0aGlzLCBwcm9taXNlcyBjcmVhdGVkIGJ5IGBhd2FpdCBob29rYCBvciB0aGUgYXN5bmMgaXRlcmF0b3Inc1xuICAgICAgLy8gYHlpZWxkIGF3YWl0IHRoaXNgIHdvdWxkIGhhbmcgZm9yZXZlciBzaW5jZSB0aGUgZXZlbnQgY29uc3VtZXIgd2lsbFxuICAgICAgLy8gbmV2ZXIgZGVsaXZlciBhbm90aGVyIGhvb2tfcmVjZWl2ZWQgYWZ0ZXIgZGlzcG9zYWwuXG4gICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBwcm9taXNlcy5sZW5ndGggPSAwO1xuICAgICAgICBzY2hlZHVsZVdoZW5JZGxlKGN0eCwgKCkgPT4ge1xuICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICBuZXcgV29ya2Zsb3dTdXNwZW5zaW9uKGN0eC5pbnZvY2F0aW9uc1F1ZXVlLCBjdHguZ2xvYmFsVGhpcylcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgd2ViaG9va0xvZ2dlci5kZWJ1ZygnSG9vayBkaXNwb3NlZCcsIHsgY29ycmVsYXRpb25JZCwgdG9rZW4gfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaG9vazogSG9vazxUPiA9IHtcbiAgICAgIHRva2VuLFxuXG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vVGhlblByb3BlcnR5OiBJbnRlbnRpb25hbGx5IHRoZW5hYmxlXG4gICAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4oXG4gICAgICAgIG9uZnVsZmlsbGVkPzogKCh2YWx1ZTogVCkgPT4gVFJlc3VsdDEgfCBQcm9taXNlTGlrZTxUUmVzdWx0MT4pIHwgbnVsbCxcbiAgICAgICAgb25yZWplY3RlZD86ICgocmVhc29uOiBhbnkpID0+IFRSZXN1bHQyIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IG51bGxcbiAgICAgICk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlSG9va1Byb21pc2UoKS50aGVuKG9uZnVsZmlsbGVkLCBvbnJlamVjdGVkKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIFN1cHBvcnQgYGZvciBhd2FpdCAoY29uc3QgcGF5bG9hZCBvZiBob29rKSB7IOKApiB9YCBzeW50YXhcbiAgICAgIGFzeW5jICpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICB3aGlsZSAoIWlzRGlzcG9zZWQpIHtcbiAgICAgICAgICB5aWVsZCBhd2FpdCB0aGlzO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBkaXNwb3NlOiBkaXNwb3NlSG9vayxcblxuICAgICAgW1N5bWJvbC5kaXNwb3NlXTogZGlzcG9zZUhvb2ssXG4gICAgfTtcblxuICAgIC8vIEFsc28gcmVnaXN0ZXIgd2l0aCB0aGUgVk0ncyBTeW1ib2wuZGlzcG9zZSBzbyBgdXNpbmdgIHdvcmtzIGluc2lkZVxuICAgIC8vIHRoZSB3b3JrZmxvdyBzYW5kYm94ICh0aGUgVk0gbWF5IGhhdmUgYSBwb2x5ZmlsbGVkIFN5bWJvbC5kaXNwb3NlXG4gICAgLy8gdGhhdCBkaWZmZXJzIGZyb20gdGhlIGhvc3QncykuXG4gICAgY29uc3Qgdm1EaXNwb3NlID0gY3R4Lmdsb2JhbFRoaXMuU3ltYm9sLmRpc3Bvc2U7XG4gICAgaWYgKHZtRGlzcG9zZSAmJiB2bURpc3Bvc2UgIT09IFN5bWJvbC5kaXNwb3NlKSB7XG4gICAgICAoaG9vayBhcyBhbnkpW3ZtRGlzcG9zZV0gPSBkaXNwb3NlSG9vaztcbiAgICB9XG5cbiAgICByZXR1cm4gaG9vaztcbiAgfTtcbn1cbiJdfQ==
|
package/dist/workflow/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { StepMetadata } from '../step/get-step-metadata.js';
|
|
2
2
|
export { FatalError, RetryableError, type RetryableErrorOptions, } from '@workflow/errors';
|
|
3
3
|
export type { Hook, HookOptions } from '../create-hook.js';
|
|
4
|
+
export { experimental_setAttributes } from './set-attributes.js';
|
|
4
5
|
export { sleep } from '../sleep.js';
|
|
5
6
|
export { createHook, createWebhook } from './create-hook.js';
|
|
6
7
|
export { defineHook } from './define-hook.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EACL,UAAU,EACV,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD,wBAAgB,eAAe,IAAI,YAAY,CAM9C;AACD,wBAAgB,UAAU,SAMzB"}
|
package/dist/workflow/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { throwNotInStepContext, throwUnavailableInWorkflowContext, } from '../context-errors.js';
|
|
1
2
|
export { FatalError, RetryableError, } from '@workflow/errors';
|
|
3
|
+
export { experimental_setAttributes } from './set-attributes.js';
|
|
2
4
|
export { sleep } from '../sleep.js';
|
|
3
5
|
export { createHook, createWebhook } from './create-hook.js';
|
|
4
6
|
export { defineHook } from './define-hook.js';
|
|
@@ -7,9 +9,9 @@ export { getWritable } from './writable-stream.js';
|
|
|
7
9
|
// workflows can't use these functions, but we still need to provide
|
|
8
10
|
// the export so bundling doesn't fail when step and workflow are in same file
|
|
9
11
|
export function getStepMetadata() {
|
|
10
|
-
|
|
12
|
+
throwNotInStepContext('getStepMetadata()', 'https://workflow-sdk.dev/docs/api-reference/workflow/get-step-metadata', getStepMetadata);
|
|
11
13
|
}
|
|
12
14
|
export function resumeHook() {
|
|
13
|
-
|
|
15
|
+
throwUnavailableInWorkflowContext('resumeHook()', 'https://workflow-sdk.dev/docs/api-reference/workflow-api/resume-hook', resumeHook);
|
|
14
16
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixpQ0FBaUMsR0FDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixPQUFPLEVBQ0wsVUFBVSxFQUNWLGNBQWMsR0FFZixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELG9FQUFvRTtBQUNwRSw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLGVBQWU7SUFDN0IscUJBQXFCLENBQ25CLG1CQUFtQixFQUNuQix3RUFBd0UsRUFDeEUsZUFBZSxDQUNoQixDQUFDO0FBQ0osQ0FBQztBQUNELE1BQU0sVUFBVSxVQUFVO0lBQ3hCLGlDQUFpQyxDQUMvQixjQUFjLEVBQ2Qsc0VBQXNFLEVBQ3RFLFVBQVUsQ0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHRocm93Tm90SW5TdGVwQ29udGV4dCxcbiAgdGhyb3dVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0LFxufSBmcm9tICcuLi9jb250ZXh0LWVycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0ZXBNZXRhZGF0YSB9IGZyb20gJy4uL3N0ZXAvZ2V0LXN0ZXAtbWV0YWRhdGEuanMnO1xuXG5leHBvcnQge1xuICBGYXRhbEVycm9yLFxuICBSZXRyeWFibGVFcnJvcixcbiAgdHlwZSBSZXRyeWFibGVFcnJvck9wdGlvbnMsXG59IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuZXhwb3J0IHR5cGUgeyBIb29rLCBIb29rT3B0aW9ucyB9IGZyb20gJy4uL2NyZWF0ZS1ob29rLmpzJztcbmV4cG9ydCB7IGV4cGVyaW1lbnRhbF9zZXRBdHRyaWJ1dGVzIH0gZnJvbSAnLi9zZXQtYXR0cmlidXRlcy5qcyc7XG5leHBvcnQgeyBzbGVlcCB9IGZyb20gJy4uL3NsZWVwLmpzJztcbmV4cG9ydCB7IGNyZWF0ZUhvb2ssIGNyZWF0ZVdlYmhvb2sgfSBmcm9tICcuL2NyZWF0ZS1ob29rLmpzJztcbmV4cG9ydCB7IGRlZmluZUhvb2sgfSBmcm9tICcuL2RlZmluZS1ob29rLmpzJztcbmV4cG9ydCB7IGdldFdvcmtmbG93TWV0YWRhdGEgfSBmcm9tICcuL2dldC13b3JrZmxvdy1tZXRhZGF0YS5qcyc7XG5leHBvcnQgeyBnZXRXcml0YWJsZSB9IGZyb20gJy4vd3JpdGFibGUtc3RyZWFtLmpzJztcblxuLy8gd29ya2Zsb3dzIGNhbid0IHVzZSB0aGVzZSBmdW5jdGlvbnMsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHByb3ZpZGVcbi8vIHRoZSBleHBvcnQgc28gYnVuZGxpbmcgZG9lc24ndCBmYWlsIHdoZW4gc3RlcCBhbmQgd29ya2Zsb3cgYXJlIGluIHNhbWUgZmlsZVxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZXBNZXRhZGF0YSgpOiBTdGVwTWV0YWRhdGEge1xuICB0aHJvd05vdEluU3RlcENvbnRleHQoXG4gICAgJ2dldFN0ZXBNZXRhZGF0YSgpJyxcbiAgICAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2L2RvY3MvYXBpLXJlZmVyZW5jZS93b3JrZmxvdy9nZXQtc3RlcC1tZXRhZGF0YScsXG4gICAgZ2V0U3RlcE1ldGFkYXRhXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzdW1lSG9vaygpIHtcbiAgdGhyb3dVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0KFxuICAgICdyZXN1bWVIb29rKCknLFxuICAgICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9hcGktcmVmZXJlbmNlL3dvcmtmbG93LWFwaS9yZXN1bWUtaG9vaycsXG4gICAgcmVzdW1lSG9va1xuICApO1xufVxuIl19
|