durabull
Version:
A durable workflow engine built on top of BullMQ and Redis
47 lines (46 loc) • 1.6 kB
TypeScript
import { Workflow } from '../Workflow';
type WorkflowConstructor = new () => Workflow<unknown[], unknown>;
export interface AuthStrategy {
authenticate(request: WebhookRequest): Promise<boolean>;
}
export interface WebhookRequest {
method: string;
path: string;
headers: Record<string, string>;
body: unknown;
}
export interface WebhookResponse {
statusCode: number;
body: unknown;
headers?: Record<string, string>;
}
export declare class NoneAuthStrategy implements AuthStrategy {
authenticate(_request: WebhookRequest): Promise<boolean>;
}
export declare class TokenAuthStrategy implements AuthStrategy {
private token;
private header;
constructor(token: string, header?: string);
authenticate(request: WebhookRequest): Promise<boolean>;
}
export declare class SignatureAuthStrategy implements AuthStrategy {
private secret;
private header;
constructor(secret: string, header?: string);
authenticate(request: WebhookRequest): Promise<boolean>;
}
export interface WebhookRouterConfig {
authStrategy?: AuthStrategy;
workflowRegistry?: Map<string, WorkflowConstructor>;
}
export declare function registerWebhookWorkflow(name: string, WorkflowClass: WorkflowConstructor): void;
export declare class WebhookRouter {
private authStrategy;
private registry;
constructor(config?: WebhookRouterConfig);
handle(request: WebhookRequest): Promise<WebhookResponse>;
private handleStart;
private handleSignal;
}
export declare function createWebhookRouter(config?: WebhookRouterConfig): WebhookRouter;
export {};