UNPKG

durabull

Version:

A durable workflow engine built on top of BullMQ and Redis

72 lines (71 loc) 2.88 kB
import type { Workflow } from '../Workflow'; import type { Activity } from '../Activity'; export interface WorkflowLifecycleHooks { onStart?: (workflowId: string, workflowName: string, args: unknown[]) => void | Promise<void>; onComplete?: (workflowId: string, workflowName: string, output: unknown) => void | Promise<void>; onFailed?: (workflowId: string, workflowName: string, error: Error) => void | Promise<void>; onWaiting?: (workflowId: string, workflowName: string) => void | Promise<void>; onContinued?: (workflowId: string, workflowName: string, newWorkflowId: string) => void | Promise<void>; } export interface ActivityLifecycleHooks { onStart?: (workflowId: string, activityId: string, activityName: string, args: unknown[]) => void | Promise<void>; onComplete?: (workflowId: string, activityId: string, activityName: string, result: unknown) => void | Promise<void>; onFailed?: (workflowId: string, activityId: string, activityName: string, error: Error) => void | Promise<void>; } export type QueueRouter = (workflowName: string, context?: Record<string, unknown>) => { workflow?: string; activity?: string; }; export interface DurabullGlobalConfig { redisUrl: string; queues?: { workflow?: string; activity?: string; }; queueRouter?: QueueRouter; serializer?: 'json' | 'base64'; pruneAge?: string; webhooks?: { route?: string; auth?: { method: 'none' | 'token' | 'signature' | 'custom'; header?: string; token?: string; secret?: string; }; }; logger?: DurabullLogger; lifecycleHooks?: { workflow?: WorkflowLifecycleHooks; activity?: ActivityLifecycleHooks; }; } export interface DurabullLogger { info?: (...args: unknown[]) => void; warn?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void; debug?: (...args: unknown[]) => void; } export interface ResolvedDurabullConfig extends DurabullGlobalConfig { queues: { workflow: string; activity: string; }; } export declare class Durabull { private config; private workflowRegistry; private activityRegistry; constructor(config: DurabullGlobalConfig); getConfig(): ResolvedDurabullConfig; registerWorkflow(name: string, WorkflowClass: new () => Workflow<unknown[], unknown>): void; resolveWorkflow(name: string): (new () => Workflow<unknown[], unknown>) | null; registerActivity(name: string, ActivityClass: new () => Activity<unknown[], unknown>): void; resolveActivity(name: string): (new () => Activity<unknown[], unknown>) | null; getQueues(workflowName?: string, context?: Record<string, unknown>): { workflow: string; activity: string; }; setActive(): void; static getActive(): Durabull | null; }