@workflow/core 4.0.1-beta.0 → 4.0.1-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/LICENSE.md +201 -21
- package/dist/define-hook.d.ts +16 -12
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +25 -14
- package/dist/define-hook.js.map +1 -1
- package/dist/global.d.ts +9 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +13 -1
- package/dist/global.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +13 -6
- package/dist/observability.js.map +1 -1
- package/dist/runtime/start.d.ts +5 -1
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js.map +1 -1
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +0 -1
- package/dist/runtime/world.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +90 -13
- package/dist/runtime.js.map +1 -1
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/serialization.d.ts +1 -0
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +4 -2
- package/dist/serialization.js.map +1 -1
- package/dist/sleep.d.ts +33 -0
- package/dist/sleep.d.ts.map +1 -0
- package/dist/sleep.js +10 -0
- package/dist/sleep.js.map +1 -0
- package/dist/step/context-storage.d.ts +1 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js.map +1 -1
- package/dist/step/writable-stream.d.ts +14 -0
- package/dist/step/writable-stream.d.ts.map +1 -0
- package/dist/step/writable-stream.js +29 -0
- package/dist/step/writable-stream.js.map +1 -0
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +21 -9
- package/dist/step.js.map +1 -1
- package/dist/symbols.d.ts +1 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +1 -0
- package/dist/symbols.js.map +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/types.d.ts +0 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -25
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +4 -27
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +19 -41
- package/dist/util.js.map +1 -1
- package/dist/workflow/define-hook.d.ts +3 -3
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js.map +1 -1
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +1 -1
- package/dist/workflow/hook.js.map +1 -1
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +1 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/sleep.d.ts +4 -0
- package/dist/workflow/sleep.d.ts.map +1 -0
- package/dist/workflow/sleep.js +55 -0
- package/dist/workflow/sleep.js.map +1 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +13 -3
- package/dist/workflow.js.map +1 -1
- package/dist/writable-stream.d.ts +5 -4
- package/dist/writable-stream.d.ts.map +1 -1
- package/dist/writable-stream.js +6 -5
- package/dist/writable-stream.js.map +1 -1
- package/package.json +16 -8
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { WorkflowServerWritableStream, getSerializeStream, getExternalReducers, } from '../serialization.js';
|
|
2
|
+
import { getWorkflowRunStreamId } from '../util.js';
|
|
3
|
+
import { contextStorage } from './context-storage.js';
|
|
4
|
+
/**
|
|
5
|
+
* Retrieves a writable stream that is associated with the current workflow.
|
|
6
|
+
*
|
|
7
|
+
* The writable stream is intended to be used within step functions to write
|
|
8
|
+
* data that can be read outside the workflow by using the readable method of getRun.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Optional configuration for the writable stream
|
|
11
|
+
* @returns The writable stream associated with the current workflow run
|
|
12
|
+
* @throws Error if called outside a workflow or step function
|
|
13
|
+
*/
|
|
14
|
+
export function getWritable(options = {}) {
|
|
15
|
+
const ctx = contextStorage.getStore();
|
|
16
|
+
if (!ctx) {
|
|
17
|
+
throw new Error('`getWritable()` can only be called inside a workflow or step function');
|
|
18
|
+
}
|
|
19
|
+
const { namespace } = options;
|
|
20
|
+
const name = getWorkflowRunStreamId(ctx.workflowMetadata.workflowRunId, namespace);
|
|
21
|
+
// Create a transform stream that serializes chunks and pipes to the workflow server
|
|
22
|
+
const serialize = getSerializeStream(getExternalReducers(globalThis, ctx.ops));
|
|
23
|
+
// Pipe the serialized data to the workflow server stream
|
|
24
|
+
// Register this async operation with the runtime's ops array so it's awaited via waitUntil
|
|
25
|
+
ctx.ops.push(serialize.readable.pipeTo(new WorkflowServerWritableStream(name)));
|
|
26
|
+
// Return the writable side of the transform stream
|
|
27
|
+
return serialize.writable;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=writable-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writable-stream.js","sourceRoot":"","sources":["../../src/step/writable-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,UAAyC,EAAE;IAE3C,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,IAAI,GAAG,sBAAsB,CACjC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAClC,SAAS,CACV,CAAC;IAEF,oFAAoF;IACpF,MAAM,SAAS,GAAG,kBAAkB,CAClC,mBAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CACzC,CAAC;IAEF,yDAAyD;IACzD,2FAA2F;IAC3F,GAAG,CAAC,GAAG,CAAC,IAAI,CACV,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAClE,CAAC;IAEF,mDAAmD;IACnD,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC5B,CAAC"}
|
package/dist/step.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,2BAA2B,IACpC,IAAI,SAAS,YAAY,EAAE,EAAE,MAAM,EACzD,UAAU,MAAM,MAER,GAAG,MAAM,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC,CAkH1C"}
|
package/dist/step.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FatalError, WorkflowRuntimeError } from '@workflow/errors';
|
|
2
|
+
import { withResolvers } from '@workflow/utils';
|
|
2
3
|
import { EventConsumerResult } from './events-consumer.js';
|
|
3
4
|
import { WorkflowSuspension } from './global.js';
|
|
4
5
|
import { stepLogger } from './logger.js';
|
|
5
6
|
import { hydrateStepReturnValue } from './serialization.js';
|
|
6
|
-
import { withResolvers } from './util.js';
|
|
7
7
|
export function createUseStep(ctx) {
|
|
8
8
|
return function useStep(stepName) {
|
|
9
9
|
return (...args) => {
|
|
@@ -15,6 +15,10 @@ export function createUseStep(ctx) {
|
|
|
15
15
|
stepName,
|
|
16
16
|
args,
|
|
17
17
|
});
|
|
18
|
+
// Track whether we've already seen a "step_started" event for this step.
|
|
19
|
+
// This is important because after a retryable failure, the step moves back to
|
|
20
|
+
// "pending" status which causes another "step_started" event to be emitted.
|
|
21
|
+
let hasSeenStepStarted = false;
|
|
18
22
|
stepLogger.debug('Step consumer setup', {
|
|
19
23
|
correlationId,
|
|
20
24
|
stepName,
|
|
@@ -44,15 +48,23 @@ export function createUseStep(ctx) {
|
|
|
44
48
|
return EventConsumerResult.NotConsumed;
|
|
45
49
|
}
|
|
46
50
|
if (event.eventType === 'step_started') {
|
|
47
|
-
// Step has started - so remove from the invocations queue
|
|
48
|
-
|
|
49
|
-
invocation.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
// Step has started - so remove from the invocations queue (only on the first "step_started" event)
|
|
52
|
+
if (!hasSeenStepStarted) {
|
|
53
|
+
const invocationsQueueIndex = ctx.invocationsQueue.findIndex((invocation) => invocation.type === 'step' &&
|
|
54
|
+
invocation.correlationId === correlationId);
|
|
55
|
+
if (invocationsQueueIndex !== -1) {
|
|
56
|
+
ctx.invocationsQueue.splice(invocationsQueueIndex, 1);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
reject(new WorkflowRuntimeError(`Corrupted event log: step ${correlationId} (${stepName}) started but not found in invocation queue`));
|
|
61
|
+
}, 0);
|
|
62
|
+
return EventConsumerResult.Finished;
|
|
63
|
+
}
|
|
64
|
+
hasSeenStepStarted = true;
|
|
55
65
|
}
|
|
66
|
+
// If this is a subsequent "step_started" event (after a retry), we just consume it
|
|
67
|
+
// without trying to remove from the queue again or logging a warning
|
|
56
68
|
return EventConsumerResult.Consumed;
|
|
57
69
|
}
|
|
58
70
|
if (event.eventType === 'step_failed') {
|
package/dist/step.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"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"}
|
package/dist/symbols.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const WORKFLOW_USE_STEP: unique symbol;
|
|
2
2
|
export declare const WORKFLOW_CREATE_HOOK: unique symbol;
|
|
3
|
+
export declare const WORKFLOW_SLEEP: unique symbol;
|
|
3
4
|
export declare const WORKFLOW_CONTEXT: unique symbol;
|
|
4
5
|
export declare const WORKFLOW_GET_STREAM_ID: unique symbol;
|
|
5
6
|
export declare const STREAM_NAME_SYMBOL: unique symbol;
|
package/dist/symbols.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAkC,CAAC;AACjE,eAAO,MAAM,oBAAoB,eAAqC,CAAC;AACvE,eAAO,MAAM,gBAAgB,eAAiC,CAAC;AAC/D,eAAO,MAAM,sBAAsB,eAAuC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,gBAAgB,eAA0B,CAAC;AACxD,eAAO,MAAM,yBAAyB,eAErC,CAAC"}
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAkC,CAAC;AACjE,eAAO,MAAM,oBAAoB,eAAqC,CAAC;AACvE,eAAO,MAAM,cAAc,eAA+B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,eAAiC,CAAC;AAC/D,eAAO,MAAM,sBAAsB,eAAuC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,kBAAkB,eAAqC,CAAC;AACrE,eAAO,MAAM,gBAAgB,eAA0B,CAAC;AACxD,eAAO,MAAM,yBAAyB,eAErC,CAAC"}
|
package/dist/symbols.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const WORKFLOW_USE_STEP = Symbol.for('WORKFLOW_USE_STEP');
|
|
2
2
|
export const WORKFLOW_CREATE_HOOK = Symbol.for('WORKFLOW_CREATE_HOOK');
|
|
3
|
+
export const WORKFLOW_SLEEP = Symbol.for('WORKFLOW_SLEEP');
|
|
3
4
|
export const WORKFLOW_CONTEXT = Symbol.for('WORKFLOW_CONTEXT');
|
|
4
5
|
export const WORKFLOW_GET_STREAM_ID = Symbol.for('WORKFLOW_GET_STREAM_ID');
|
|
5
6
|
export const STREAM_NAME_SYMBOL = Symbol.for('WORKFLOW_STREAM_NAME');
|
package/dist/symbols.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CACjD,2BAA2B,CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CACjD,2BAA2B,CAC5B,CAAC"}
|
package/dist/telemetry.js
CHANGED
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
export declare function getConstructorName(obj: unknown): string | null;
|
|
2
|
-
export declare function getConstructorNames(obj: unknown): string[];
|
|
3
|
-
/**
|
|
4
|
-
* `instanceof` operator that works across different `vm` contexts,
|
|
5
|
-
* based on the `name` property of the constructors of the prototype chain.
|
|
6
|
-
*/
|
|
7
|
-
export declare function isInstanceOf<T>(v: unknown, ctor: new (...args: any[]) => T): v is T;
|
|
8
1
|
export declare function getErrorName(v: unknown): string;
|
|
9
2
|
export declare function getErrorStack(v: unknown): string;
|
|
10
3
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAK/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKhD"}
|
package/dist/types.js
CHANGED
|
@@ -1,29 +1,4 @@
|
|
|
1
1
|
import { types } from 'node:util';
|
|
2
|
-
export function getConstructorName(obj) {
|
|
3
|
-
if (obj === null || obj === undefined) {
|
|
4
|
-
return null;
|
|
5
|
-
}
|
|
6
|
-
const ctor = obj.constructor;
|
|
7
|
-
if (!ctor || ctor.name === 'Object') {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
return ctor.name;
|
|
11
|
-
}
|
|
12
|
-
export function getConstructorNames(obj) {
|
|
13
|
-
const proto = Object.getPrototypeOf(obj);
|
|
14
|
-
const name = getConstructorName(proto);
|
|
15
|
-
if (name === null) {
|
|
16
|
-
return [];
|
|
17
|
-
}
|
|
18
|
-
return [name, ...getConstructorNames(proto)];
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* `instanceof` operator that works across different `vm` contexts,
|
|
22
|
-
* based on the `name` property of the constructors of the prototype chain.
|
|
23
|
-
*/
|
|
24
|
-
export function isInstanceOf(v, ctor) {
|
|
25
|
-
return getConstructorNames(v).includes(ctor.name);
|
|
26
|
-
}
|
|
27
2
|
export function getErrorName(v) {
|
|
28
3
|
if (types.isNativeError(v)) {
|
|
29
4
|
return v.name;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,35 +1,12 @@
|
|
|
1
|
-
export interface PromiseWithResolvers<T> {
|
|
2
|
-
promise: Promise<T>;
|
|
3
|
-
resolve: (value: T) => void;
|
|
4
|
-
reject: (reason?: any) => void;
|
|
5
|
-
}
|
|
6
1
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers
|
|
10
|
-
*/
|
|
11
|
-
export declare function withResolvers<T>(): PromiseWithResolvers<T>;
|
|
12
|
-
/**
|
|
13
|
-
* Creates a lazily-evaluated, memoized version of the provided function.
|
|
14
|
-
*
|
|
15
|
-
* The returned object exposes a `value` getter that calls `fn` only once,
|
|
16
|
-
* caches its result, and returns the cached value on subsequent accesses.
|
|
17
|
-
*
|
|
18
|
-
* @typeParam T - The return type of the provided function.
|
|
19
|
-
* @param fn - The function to be called once and whose result will be cached.
|
|
20
|
-
* @returns An object with a `value` property that returns the memoized result of `fn`.
|
|
21
|
-
*/
|
|
22
|
-
export declare function once<T>(fn: () => T): {
|
|
23
|
-
readonly value: T;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Builds a workflow suspension log message based on the counts of steps and hooks.
|
|
2
|
+
* Builds a workflow suspension log message based on the counts of steps, hooks, and waits.
|
|
27
3
|
* @param runId - The workflow run ID
|
|
28
4
|
* @param stepCount - Number of steps to be enqueued
|
|
29
5
|
* @param hookCount - Number of hooks to be enqueued
|
|
30
|
-
* @
|
|
6
|
+
* @param waitCount - Number of waits to be enqueued
|
|
7
|
+
* @returns The formatted log message or null if all counts are 0
|
|
31
8
|
*/
|
|
32
|
-
export declare function buildWorkflowSuspensionMessage(runId: string, stepCount: number, hookCount: number): string | null;
|
|
9
|
+
export declare function buildWorkflowSuspensionMessage(runId: string, stepCount: number, hookCount: number, waitCount: number): string | null;
|
|
33
10
|
/**
|
|
34
11
|
* Generates a stream ID for a workflow run.
|
|
35
12
|
* User-defined streams include a "user" segment for isolation from future system-defined streams.
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,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"}
|
package/dist/util.js
CHANGED
|
@@ -1,46 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers
|
|
5
|
-
*/
|
|
6
|
-
export function withResolvers() {
|
|
7
|
-
let resolve;
|
|
8
|
-
let reject;
|
|
9
|
-
const promise = new Promise((_resolve, _reject) => {
|
|
10
|
-
resolve = _resolve;
|
|
11
|
-
reject = _reject;
|
|
12
|
-
});
|
|
13
|
-
return { promise, resolve, reject };
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Creates a lazily-evaluated, memoized version of the provided function.
|
|
17
|
-
*
|
|
18
|
-
* The returned object exposes a `value` getter that calls `fn` only once,
|
|
19
|
-
* caches its result, and returns the cached value on subsequent accesses.
|
|
20
|
-
*
|
|
21
|
-
* @typeParam T - The return type of the provided function.
|
|
22
|
-
* @param fn - The function to be called once and whose result will be cached.
|
|
23
|
-
* @returns An object with a `value` property that returns the memoized result of `fn`.
|
|
24
|
-
*/
|
|
25
|
-
export function once(fn) {
|
|
26
|
-
const result = {
|
|
27
|
-
get value() {
|
|
28
|
-
const value = fn();
|
|
29
|
-
Object.defineProperty(result, 'value', { value });
|
|
30
|
-
return value;
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Builds a workflow suspension log message based on the counts of steps and hooks.
|
|
2
|
+
* Builds a workflow suspension log message based on the counts of steps, hooks, and waits.
|
|
37
3
|
* @param runId - The workflow run ID
|
|
38
4
|
* @param stepCount - Number of steps to be enqueued
|
|
39
5
|
* @param hookCount - Number of hooks to be enqueued
|
|
40
|
-
* @
|
|
6
|
+
* @param waitCount - Number of waits to be enqueued
|
|
7
|
+
* @returns The formatted log message or null if all counts are 0
|
|
41
8
|
*/
|
|
42
|
-
export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount) {
|
|
43
|
-
if (stepCount === 0 && hookCount === 0) {
|
|
9
|
+
export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount, waitCount) {
|
|
10
|
+
if (stepCount === 0 && hookCount === 0 && waitCount === 0) {
|
|
44
11
|
return null;
|
|
45
12
|
}
|
|
46
13
|
const parts = [];
|
|
@@ -50,9 +17,20 @@ export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount) {
|
|
|
50
17
|
if (hookCount > 0) {
|
|
51
18
|
parts.push(`${hookCount} ${hookCount === 1 ? 'hook' : 'hooks'}`);
|
|
52
19
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
20
|
+
if (waitCount > 0) {
|
|
21
|
+
parts.push(`${waitCount} ${waitCount === 1 ? 'timer' : 'timers'}`);
|
|
22
|
+
}
|
|
23
|
+
const resumeMsgParts = [];
|
|
24
|
+
if (stepCount > 0) {
|
|
25
|
+
resumeMsgParts.push('steps are completed');
|
|
26
|
+
}
|
|
27
|
+
if (hookCount > 0) {
|
|
28
|
+
resumeMsgParts.push('hooks are received');
|
|
29
|
+
}
|
|
30
|
+
if (waitCount > 0) {
|
|
31
|
+
resumeMsgParts.push('timers have elapsed');
|
|
32
|
+
}
|
|
33
|
+
const resumeMsg = resumeMsgParts.join(' and ');
|
|
56
34
|
return `[Workflows] "${runId}" - ${parts.join(' and ')} to be enqueued\n Workflow will suspend and resume when ${resumeMsg}`;
|
|
57
35
|
}
|
|
58
36
|
/**
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,SAAiB;IAEjB,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,gBAAgB,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,4DAA4D,SAAS,EAAE,CAAC;AAChI,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,SAAkB;IACtE,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,iGAAiG;IACjG,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAC/D,WAAW,CACZ,CAAC;IACF,OAAO,GAAG,QAAQ,IAAI,gBAAgB,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -3,8 +3,8 @@ import type { Hook, HookOptions } from '../create-hook.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* NOTE: This is the implementation of `defineHook()` that is used in workflow contexts.
|
|
5
5
|
*/
|
|
6
|
-
export declare function defineHook<
|
|
7
|
-
create(options?: HookOptions): Hook<
|
|
8
|
-
resume(_token: string, _payload:
|
|
6
|
+
export declare function defineHook<TInput, TOutput = TInput>(): {
|
|
7
|
+
create(options?: HookOptions): Hook<TOutput>;
|
|
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;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,UAAU,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;AAC1D,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;mBAI7B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;EAMvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-hook.js","sourceRoot":"","sources":["../../src/workflow/define-hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,MAAM,CAAC,OAAqB;YAC1B,OAAO,UAAU,
|
|
1
|
+
{"version":3,"file":"define-hook.js","sourceRoot":"","sources":["../../src/workflow/define-hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,MAAM,CAAC,OAAqB;YAC1B,OAAO,UAAU,CAAU,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,CAAC,MAAc,EAAE,QAAgB;YACrC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAGjE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,2BAA2B,IAChC,CAAC,GAAG,GAAG,EAAE,UAAS,WAAgB,KAAG,IAAI,CAAC,CAAC,CAAC,CAiI5E"}
|
package/dist/workflow/hook.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { withResolvers } from '@workflow/utils';
|
|
1
2
|
import { EventConsumerResult } from '../events-consumer.js';
|
|
2
3
|
import { WorkflowSuspension } from '../global.js';
|
|
3
4
|
import { webhookLogger } from '../logger.js';
|
|
4
5
|
import { hydrateStepReturnValue } from '../serialization.js';
|
|
5
|
-
import { withResolvers } from '../util.js';
|
|
6
6
|
export function createCreateHook(ctx) {
|
|
7
7
|
return function createHookImpl(options = {}) {
|
|
8
8
|
// Generate hook ID and token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type { Hook, HookOptions } from '../create-hook.js';
|
|
|
4
4
|
export { createHook, createWebhook } from './create-hook.js';
|
|
5
5
|
export { defineHook } from './define-hook.js';
|
|
6
6
|
export { getWorkflowMetadata } from './get-workflow-metadata.js';
|
|
7
|
+
export { sleep } from '../sleep.js';
|
|
7
8
|
export { getWritable } from './writable-stream.js';
|
|
8
9
|
export declare function getStepMetadata(): StepMetadata;
|
|
9
10
|
export declare function resumeHook(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,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,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,CAI9C;AACD,wBAAgB,UAAU,SAIzB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,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,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,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD,wBAAgB,eAAe,IAAI,YAAY,CAI9C;AACD,wBAAgB,UAAU,SAIzB"}
|
package/dist/workflow/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export { FatalError, RetryableError, } from '@workflow/errors';
|
|
|
2
2
|
export { createHook, createWebhook } from './create-hook.js';
|
|
3
3
|
export { defineHook } from './define-hook.js';
|
|
4
4
|
export { getWorkflowMetadata } from './get-workflow-metadata.js';
|
|
5
|
+
export { sleep } from '../sleep.js';
|
|
5
6
|
export { getWritable } from './writable-stream.js';
|
|
6
7
|
// workflows can't use these functions, but we still need to provide
|
|
7
8
|
// the export so bundling doesn't fail when step and workflow are in same file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAE1B,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;AAEnD,oEAAoE;AACpE,8EAA8E;AAC9E,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAE1B,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,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,oEAAoE;AACpE,8EAA8E;AAC9E,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/workflow/sleep.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAGtC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,wBAAgB,WAAW,CAAC,GAAG,EAAE,2BAA2B,IAExD,OAAO,WAAW,GAAG,IAAI,GAAG,MAAM,KACjC,OAAO,CAAC,IAAI,CAAC,CAmEjB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { parseDurationToDate, withResolvers } from '@workflow/utils';
|
|
2
|
+
import { EventConsumerResult } from '../events-consumer.js';
|
|
3
|
+
import { WorkflowSuspension } from '../global.js';
|
|
4
|
+
export function createSleep(ctx) {
|
|
5
|
+
return async function sleepImpl(param) {
|
|
6
|
+
const { promise, resolve } = withResolvers();
|
|
7
|
+
const correlationId = `wait_${ctx.generateUlid()}`;
|
|
8
|
+
// Calculate the resume time
|
|
9
|
+
const resumeAt = parseDurationToDate(param);
|
|
10
|
+
// Add wait to invocations queue
|
|
11
|
+
ctx.invocationsQueue.push({
|
|
12
|
+
type: 'wait',
|
|
13
|
+
correlationId,
|
|
14
|
+
resumeAt,
|
|
15
|
+
});
|
|
16
|
+
ctx.eventsConsumer.subscribe((event) => {
|
|
17
|
+
// If there are no events and we're waiting for wait_completed,
|
|
18
|
+
// suspend the workflow until the wait fires
|
|
19
|
+
if (!event) {
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
ctx.onWorkflowError(new WorkflowSuspension(ctx.invocationsQueue, ctx.globalThis));
|
|
22
|
+
}, 0);
|
|
23
|
+
return EventConsumerResult.NotConsumed;
|
|
24
|
+
}
|
|
25
|
+
// Check for wait_created event to mark this wait as having the event created
|
|
26
|
+
if (event?.eventType === 'wait_created' &&
|
|
27
|
+
event.correlationId === correlationId) {
|
|
28
|
+
// Mark this wait as having the created event, but keep it in the queue
|
|
29
|
+
const waitItem = ctx.invocationsQueue.find((item) => item.type === 'wait' && item.correlationId === correlationId);
|
|
30
|
+
if (waitItem) {
|
|
31
|
+
waitItem.hasCreatedEvent = true;
|
|
32
|
+
waitItem.resumeAt = event.eventData.resumeAt;
|
|
33
|
+
}
|
|
34
|
+
return EventConsumerResult.Consumed;
|
|
35
|
+
}
|
|
36
|
+
// Check for wait_completed event
|
|
37
|
+
if (event?.eventType === 'wait_completed' &&
|
|
38
|
+
event.correlationId === correlationId) {
|
|
39
|
+
// Remove this wait from the invocations queue
|
|
40
|
+
const index = ctx.invocationsQueue.findIndex((item) => item.type === 'wait' && item.correlationId === correlationId);
|
|
41
|
+
if (index !== -1) {
|
|
42
|
+
ctx.invocationsQueue.splice(index, 1);
|
|
43
|
+
}
|
|
44
|
+
// Wait has elapsed, resolve the sleep
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
resolve();
|
|
47
|
+
}, 0);
|
|
48
|
+
return EventConsumerResult.Finished;
|
|
49
|
+
}
|
|
50
|
+
return EventConsumerResult.NotConsumed;
|
|
51
|
+
});
|
|
52
|
+
return promise;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=sleep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/workflow/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAgC,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGhF,MAAM,UAAU,WAAW,CAAC,GAAgC;IAC1D,OAAO,KAAK,UAAU,SAAS,CAC7B,KAAkC;QAElC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,EAAQ,CAAC;QACnD,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;QAEnD,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE5C,gCAAgC;QAChC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,MAAM;YACZ,aAAa;YACb,QAAQ;SACT,CAAC,CAAC;QAEH,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,+DAA+D;YAC/D,4CAA4C;YAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,UAAU,CAAC,GAAG,EAAE;oBACd,GAAG,CAAC,eAAe,CACjB,IAAI,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC,CAC7D,CAAC;gBACJ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,OAAO,mBAAmB,CAAC,WAAW,CAAC;YACzC,CAAC;YAED,6EAA6E;YAC7E,IACE,KAAK,EAAE,SAAS,KAAK,cAAc;gBACnC,KAAK,CAAC,aAAa,KAAK,aAAa,EACrC,CAAC;gBACD,uEAAuE;gBACvE,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAChC,CAAC;gBACzC,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;oBAChC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC/C,CAAC;gBACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC;YACtC,CAAC;YAED,iCAAiC;YACjC,IACE,KAAK,EAAE,SAAS,KAAK,gBAAgB;gBACrC,KAAK,CAAC,aAAa,KAAK,aAAa,EACrC,CAAC;gBACD,8CAA8C;gBAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CACvE,CAAC;gBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC;gBAED,sCAAsC;gBACtC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,OAAO,mBAAmB,CAAC,QAAQ,CAAC;YACtC,CAAC;YAED,OAAO,mBAAmB,CAAC,WAAW,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/workflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA2B1D,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,KAAK,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CA+hBlB"}
|
package/dist/workflow.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { runInContext } from 'node:vm';
|
|
2
2
|
import { ERROR_SLUGS } from '@workflow/errors';
|
|
3
|
+
import { withResolvers } from '@workflow/utils';
|
|
4
|
+
import { getPort } from '@workflow/utils/get-port';
|
|
3
5
|
import * as nanoid from 'nanoid';
|
|
4
6
|
import { monotonicFactory } from 'ulid';
|
|
5
7
|
import { EventConsumerResult, EventsConsumer } from './events-consumer.js';
|
|
6
8
|
import { ENOTSUP } from './global.js';
|
|
7
9
|
import { dehydrateWorkflowReturnValue, hydrateWorkflowArguments, } from './serialization.js';
|
|
8
10
|
import { createUseStep } from './step.js';
|
|
9
|
-
import { BODY_INIT_SYMBOL, WORKFLOW_CREATE_HOOK, WORKFLOW_GET_STREAM_ID, WORKFLOW_USE_STEP, } from './symbols.js';
|
|
11
|
+
import { BODY_INIT_SYMBOL, WORKFLOW_CREATE_HOOK, WORKFLOW_GET_STREAM_ID, WORKFLOW_SLEEP, WORKFLOW_USE_STEP, } from './symbols.js';
|
|
10
12
|
import * as Attribute from './telemetry/semantic-conventions.js';
|
|
11
13
|
import { trace } from './telemetry.js';
|
|
12
|
-
import { getWorkflowRunStreamId
|
|
14
|
+
import { getWorkflowRunStreamId } from './util.js';
|
|
13
15
|
import { createContext } from './vm/index.js';
|
|
14
16
|
import { WORKFLOW_CONTEXT_SYMBOL } from './workflow/get-workflow-metadata.js';
|
|
15
17
|
import { createCreateHook } from './workflow/hook.js';
|
|
18
|
+
import { createSleep } from './workflow/sleep.js';
|
|
16
19
|
export async function runWorkflow(workflowCode, workflowRun, events) {
|
|
17
20
|
return trace(`WORKFLOW.run ${workflowRun.workflowName}`, async (span) => {
|
|
18
21
|
span?.setAttributes({
|
|
@@ -25,6 +28,9 @@ export async function runWorkflow(workflowCode, workflowRun, events) {
|
|
|
25
28
|
if (!startedAt) {
|
|
26
29
|
throw new Error(`Workflow run "${workflowRun.runId}" has no "startedAt" timestamp (should not happen)`);
|
|
27
30
|
}
|
|
31
|
+
// Get the port before creating VM context to avoid async operations
|
|
32
|
+
// affecting the deterministic timestamp
|
|
33
|
+
const port = await getPort();
|
|
28
34
|
const { context, globalThis: vmGlobalThis, updateTimestamp, } = createContext({
|
|
29
35
|
seed: workflowRun.runId,
|
|
30
36
|
fixedTimestamp: +startedAt,
|
|
@@ -51,17 +57,20 @@ export async function runWorkflow(workflowCode, workflowRun, events) {
|
|
|
51
57
|
});
|
|
52
58
|
const useStep = createUseStep(workflowContext);
|
|
53
59
|
const createHook = createCreateHook(workflowContext);
|
|
60
|
+
const sleep = createSleep(workflowContext);
|
|
54
61
|
// @ts-expect-error - `@types/node` says symbol is not valid, but it does work
|
|
55
62
|
vmGlobalThis[WORKFLOW_USE_STEP] = useStep;
|
|
56
63
|
// @ts-expect-error - `@types/node` says symbol is not valid, but it does work
|
|
57
64
|
vmGlobalThis[WORKFLOW_CREATE_HOOK] = createHook;
|
|
58
65
|
// @ts-expect-error - `@types/node` says symbol is not valid, but it does work
|
|
66
|
+
vmGlobalThis[WORKFLOW_SLEEP] = sleep;
|
|
67
|
+
// @ts-expect-error - `@types/node` says symbol is not valid, but it does work
|
|
59
68
|
vmGlobalThis[WORKFLOW_GET_STREAM_ID] = (namespace) => getWorkflowRunStreamId(workflowRun.runId, namespace);
|
|
60
69
|
// TODO: there should be a getUrl method on the world interface itself. This
|
|
61
70
|
// solution only works for vercel + embedded worlds.
|
|
62
71
|
const url = process.env.VERCEL_URL
|
|
63
72
|
? `https://${process.env.VERCEL_URL}`
|
|
64
|
-
: `http://localhost:${
|
|
73
|
+
: `http://localhost:${port ?? 3000}`;
|
|
65
74
|
// For the workflow VM, we store the context in a symbol on the `globalThis` object
|
|
66
75
|
const ctx = {
|
|
67
76
|
workflowRunId: workflowRun.runId,
|
|
@@ -176,6 +185,7 @@ export async function runWorkflow(workflowCode, workflowRun, events) {
|
|
|
176
185
|
else if (typeof this.credentials !== 'string') {
|
|
177
186
|
this.credentials = 'same-origin';
|
|
178
187
|
}
|
|
188
|
+
// `any` cast here because @types/node v22 does not yet have `cache`
|
|
179
189
|
if (init?.cache !== undefined) {
|
|
180
190
|
this.cache = init.cache;
|
|
181
191
|
}
|