@voyant-travel/workflows 0.107.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 +201 -0
- package/NOTICE +52 -0
- package/README.md +79 -0
- package/dist/auth/index.d.ts +125 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +352 -0
- package/dist/bindings.d.ts +119 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +19 -0
- package/dist/client.d.ts +135 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +305 -0
- package/dist/conditions.d.ts +29 -0
- package/dist/conditions.d.ts.map +1 -0
- package/dist/conditions.js +5 -0
- package/dist/config.d.ts +93 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +7 -0
- package/dist/driver.d.ts +237 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +53 -0
- package/dist/errors.d.ts +58 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +76 -0
- package/dist/events/compile.d.ts +34 -0
- package/dist/events/compile.d.ts.map +1 -0
- package/dist/events/compile.js +204 -0
- package/dist/events/index.d.ts +8 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +11 -0
- package/dist/events/input-mapper.d.ts +24 -0
- package/dist/events/input-mapper.d.ts.map +1 -0
- package/dist/events/input-mapper.js +169 -0
- package/dist/events/manifest-builder.d.ts +42 -0
- package/dist/events/manifest-builder.d.ts.map +1 -0
- package/dist/events/manifest-builder.js +313 -0
- package/dist/events/payload-hash.d.ts +46 -0
- package/dist/events/payload-hash.d.ts.map +1 -0
- package/dist/events/payload-hash.js +98 -0
- package/dist/events/predicate.d.ts +77 -0
- package/dist/events/predicate.d.ts.map +1 -0
- package/dist/events/predicate.js +347 -0
- package/dist/events/registry.d.ts +37 -0
- package/dist/events/registry.d.ts.map +1 -0
- package/dist/events/registry.js +47 -0
- package/dist/handler/index.d.ts +114 -0
- package/dist/handler/index.d.ts.map +1 -0
- package/dist/handler/index.js +267 -0
- package/dist/handler/resume.d.ts +41 -0
- package/dist/handler/resume.d.ts.map +1 -0
- package/dist/handler/resume.js +44 -0
- package/dist/http-ingest.d.ts +54 -0
- package/dist/http-ingest.d.ts.map +1 -0
- package/dist/http-ingest.js +214 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/protocol/index.d.ts +345 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +110 -0
- package/dist/rate-limit/index.d.ts +40 -0
- package/dist/rate-limit/index.d.ts.map +1 -0
- package/dist/rate-limit/index.js +139 -0
- package/dist/runtime/ctx.d.ts +111 -0
- package/dist/runtime/ctx.d.ts.map +1 -0
- package/dist/runtime/ctx.js +624 -0
- package/dist/runtime/determinism.d.ts +19 -0
- package/dist/runtime/determinism.d.ts.map +1 -0
- package/dist/runtime/determinism.js +61 -0
- package/dist/runtime/errors.d.ts +21 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +45 -0
- package/dist/runtime/executor.d.ts +166 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +226 -0
- package/dist/runtime/journal.d.ts +56 -0
- package/dist/runtime/journal.d.ts.map +1 -0
- package/dist/runtime/journal.js +28 -0
- package/dist/testing/index.d.ts +117 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +599 -0
- package/dist/trigger.d.ts +37 -0
- package/dist/trigger.d.ts.map +1 -0
- package/dist/trigger.js +11 -0
- package/dist/types.d.ts +63 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/workflow.d.ts +222 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +55 -0
- package/package.json +120 -0
- package/src/auth/index.ts +398 -0
- package/src/bindings.ts +135 -0
- package/src/client.ts +498 -0
- package/src/conditions.ts +43 -0
- package/src/config.ts +114 -0
- package/src/driver.ts +277 -0
- package/src/errors.ts +109 -0
- package/src/events/compile.ts +268 -0
- package/src/events/index.ts +42 -0
- package/src/events/input-mapper.ts +201 -0
- package/src/events/manifest-builder.ts +372 -0
- package/src/events/payload-hash.ts +110 -0
- package/src/events/predicate.ts +390 -0
- package/src/events/registry.ts +86 -0
- package/src/handler/index.ts +413 -0
- package/src/handler/resume.ts +100 -0
- package/src/http-ingest.ts +299 -0
- package/src/index.ts +18 -0
- package/src/protocol/index.ts +483 -0
- package/src/rate-limit/index.ts +181 -0
- package/src/runtime/ctx.ts +876 -0
- package/src/runtime/determinism.ts +75 -0
- package/src/runtime/errors.ts +58 -0
- package/src/runtime/executor.ts +442 -0
- package/src/runtime/journal.ts +80 -0
- package/src/testing/index.ts +796 -0
- package/src/trigger.ts +63 -0
- package/src/types.ts +80 -0
- package/src/workflow.ts +328 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { SerializedError } from "../protocol/index.js";
|
|
2
|
+
import { type CompensationReport, type StreamChunk, type WaitpointRegistration } from "../runtime/executor.js";
|
|
3
|
+
import type { JournalSlice } from "../runtime/journal.js";
|
|
4
|
+
import type { RunStatus } from "../types.js";
|
|
5
|
+
import type { EnvironmentContext, MetadataValue, StepContext, WorkflowHandle } from "../workflow.js";
|
|
6
|
+
export interface TestOptions<_TIn> {
|
|
7
|
+
/** Map of stepId → function run in place of the real step body. */
|
|
8
|
+
steps?: Record<string, (stepCtx: StepContext) => unknown | Promise<unknown>>;
|
|
9
|
+
/**
|
|
10
|
+
* Map of eventType → payload (or payload array). First
|
|
11
|
+
* match-per-eventType wins.
|
|
12
|
+
*/
|
|
13
|
+
waitForEvent?: Record<string, unknown | unknown[]>;
|
|
14
|
+
/** Map of signalName → payload. */
|
|
15
|
+
waitForSignal?: Record<string, unknown>;
|
|
16
|
+
/** Map of tokenId → payload. */
|
|
17
|
+
waitForToken?: Record<string, unknown>;
|
|
18
|
+
/** Workflow invoke stubs keyed by child workflow id. */
|
|
19
|
+
invoke?: Record<string, unknown>;
|
|
20
|
+
/** Fake env bindings, passed through to `ctx.environment` for tests. */
|
|
21
|
+
env?: Record<string, unknown>;
|
|
22
|
+
environment?: Partial<EnvironmentContext>;
|
|
23
|
+
/** Fixed wall-clock basis for the run. Defaults to Date.now(). */
|
|
24
|
+
now?: () => number;
|
|
25
|
+
random?: () => number;
|
|
26
|
+
/** Max resumption cycles. Defaults to 16 — guards runaway loops. */
|
|
27
|
+
maxInvocations?: number;
|
|
28
|
+
/**
|
|
29
|
+
* When true, the harness stops and returns a "waiting" TestResult as
|
|
30
|
+
* soon as any registered waitpoint has no fixture resolution (instead
|
|
31
|
+
* of throwing). Callers can then persist the run and resume it later
|
|
32
|
+
* via `resumeWorkflowForTest` once the waitpoint is resolved from a
|
|
33
|
+
* live source (e.g. a dashboard HTTP injection).
|
|
34
|
+
*
|
|
35
|
+
* DATETIME waitpoints (sleeps) are always auto-resolved regardless of
|
|
36
|
+
* this flag, since a local dev loop is not the right place to
|
|
37
|
+
* synthesize wall-clock delays.
|
|
38
|
+
*/
|
|
39
|
+
pauseOnWait?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface TestResult<TOut> {
|
|
42
|
+
status: Extract<RunStatus, "completed" | "failed" | "cancelled" | "compensated" | "compensation_failed" | "waiting">;
|
|
43
|
+
output?: TOut;
|
|
44
|
+
error?: {
|
|
45
|
+
category: SerializedError["category"];
|
|
46
|
+
code: string;
|
|
47
|
+
message: string;
|
|
48
|
+
};
|
|
49
|
+
steps: {
|
|
50
|
+
id: string;
|
|
51
|
+
status: "ok" | "err" | "skipped";
|
|
52
|
+
duration: number;
|
|
53
|
+
output?: unknown;
|
|
54
|
+
}[];
|
|
55
|
+
events: {
|
|
56
|
+
type: string;
|
|
57
|
+
at: number;
|
|
58
|
+
data: unknown;
|
|
59
|
+
}[];
|
|
60
|
+
metadata: Record<string, MetadataValue>;
|
|
61
|
+
compensations: CompensationReport[];
|
|
62
|
+
/** Chunks emitted via `ctx.stream()` / `ctx.stream.{text,json,bytes}`, grouped by streamId in emission order. */
|
|
63
|
+
streams: Record<string, StreamChunk[]>;
|
|
64
|
+
invocations: number;
|
|
65
|
+
/**
|
|
66
|
+
* Populated when `status === "waiting"`. Holds the persisted executor
|
|
67
|
+
* state needed to resume the run via `resumeWorkflowForTest`.
|
|
68
|
+
*/
|
|
69
|
+
pause?: {
|
|
70
|
+
journal: JournalSlice;
|
|
71
|
+
pendingWaitpoints: WaitpointRegistration[];
|
|
72
|
+
startedAt: number;
|
|
73
|
+
invocationCount: number;
|
|
74
|
+
metadataAppliedCount: number;
|
|
75
|
+
fixtureCursors: {
|
|
76
|
+
event: Record<string, number>;
|
|
77
|
+
signal: Record<string, number>;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export declare function runWorkflowForTest<TIn, TOut>(workflow: WorkflowHandle<TIn, TOut>, input: TIn, opts?: TestOptions<TIn>): Promise<TestResult<TOut>>;
|
|
82
|
+
/**
|
|
83
|
+
* A single injected waitpoint resolution — the tenant-side analogue of
|
|
84
|
+
* the orchestrator delivering an event, signal, or token payload to a
|
|
85
|
+
* parked run. The matcher (`kind` + `key`) identifies which pending
|
|
86
|
+
* waitpoint to resolve; `payload` is the value surfaced to the body.
|
|
87
|
+
*/
|
|
88
|
+
export type WaitpointInjection = {
|
|
89
|
+
kind: "EVENT";
|
|
90
|
+
eventType: string;
|
|
91
|
+
payload?: unknown;
|
|
92
|
+
} | {
|
|
93
|
+
kind: "SIGNAL";
|
|
94
|
+
name: string;
|
|
95
|
+
payload?: unknown;
|
|
96
|
+
} | {
|
|
97
|
+
kind: "MANUAL";
|
|
98
|
+
tokenId: string;
|
|
99
|
+
payload?: unknown;
|
|
100
|
+
};
|
|
101
|
+
export interface ResumeOptions<TIn> extends TestOptions<TIn> {
|
|
102
|
+
/** Persisted pause state returned from a previous `runWorkflowForTest` or `resumeWorkflowForTest`. */
|
|
103
|
+
pause: NonNullable<TestResult<unknown>["pause"]>;
|
|
104
|
+
/** The single waitpoint resolution to inject on resume. */
|
|
105
|
+
injection: WaitpointInjection;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Resume a parked run. Matches the injection against one of the
|
|
109
|
+
* `pause.pendingWaitpoints`, records it in the journal, and re-enters
|
|
110
|
+
* the executor loop until the next pause or terminal state.
|
|
111
|
+
*/
|
|
112
|
+
export declare function resumeWorkflowForTest<TIn, TOut>(workflow: WorkflowHandle<TIn, TOut>, input: TIn, opts: ResumeOptions<TIn>): Promise<TestResult<TOut>>;
|
|
113
|
+
export interface FixtureCursors {
|
|
114
|
+
event: Map<string, number>;
|
|
115
|
+
signal: Map<string, number>;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
|