UNPKG

durabull

Version:

A durable workflow engine built on top of BullMQ and Redis

43 lines (42 loc) 1.86 kB
/** * ActivityStub - interface for executing activities from workflows */ import { Activity } from './Activity'; type AnyActivity = Activity<unknown[], unknown>; type ActivityConstructor<T extends AnyActivity = AnyActivity> = new () => T; type ActivityArgs<T extends AnyActivity> = Parameters<T['execute']>; type ActivityResult<T extends AnyActivity> = Awaited<ReturnType<T['execute']>>; /** * Options for activity execution with per-invocation overrides */ export interface ActivityOptions { tries?: number; timeout?: number; backoff?: number[]; activityId?: string; } /** * Promise-like wrapper around activity execution */ export declare class ActivityPromise<T = unknown> implements PromiseLike<T> { private promise; constructor(promise: Promise<T>); then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>; } export declare class ActivityStub { /** * Execute an activity - queues to BullMQ in durable mode, executes inline in test mode */ static make<T extends AnyActivity>(activityClassOrName: ActivityConstructor<T> | string, ...argsWithOptions: [...args: ActivityArgs<T>, options?: ActivityOptions] | ActivityArgs<T>): ActivityPromise<ActivityResult<T>>; /** * Execute multiple activities in parallel */ static all<T extends readonly ActivityPromise<unknown>[]>(promises: T): ActivityPromise<{ [K in keyof T]: T[K] extends ActivityPromise<infer U> ? U : never; }>; /** * Execute an async generator helper (mini sub-workflow) */ static async<T>(genFn: () => AsyncGenerator<unknown, T, unknown> | Generator<unknown, T, unknown>): ActivityPromise<T>; } export {};