durabull
Version:
A durable workflow engine built on top of BullMQ and Redis
37 lines (36 loc) • 1.01 kB
TypeScript
import { Workflow } from '../Workflow';
import { WorkflowRecord, HistoryEvent } from './history';
export interface ReplayResult {
workflow: Workflow<unknown[], unknown>;
result?: unknown;
error?: unknown;
status: 'completed' | 'failed' | 'running' | 'waiting' | 'continued';
newWorkflowId?: string;
signalCursor?: Record<string, number>;
}
export interface ReplayOptions {
workflowId: string;
workflow: Workflow<unknown[], unknown>;
record: WorkflowRecord;
history: {
events: HistoryEvent[];
cursor: number;
};
signals: Array<{
ts: number;
name: string;
payload: unknown;
}>;
isResume: boolean;
getHistory?: () => Promise<{
events: HistoryEvent[];
cursor: number;
}>;
onStep?: (cursor: number, history: {
events: HistoryEvent[];
cursor: number;
}) => Promise<void>;
}
export declare class ReplayEngine {
static run(options: ReplayOptions): Promise<ReplayResult>;
}