UNPKG

@cadence-mq/core

Version:

Modern, type-safe, and performant task queue for Node.js

97 lines (96 loc) 2.18 kB
//#region src/jobs/jobs.types.d.ts type JsonSerializable = string | number | boolean | null | undefined | JsonSerializable[] | { [key: string]: JsonSerializable; }; type JobData = JsonSerializable; type JobResult = JsonSerializable; type JobStatus = 'pending' | 'processing' | 'completed' | 'failed'; type Job = { id: string; taskName: string; status: JobStatus; error?: string; startedAt?: Date; completedAt?: Date; maxRetries?: number; data?: JobData; result?: JobResult; scheduleAt: Date; }; type JobRepositoryDriver = { saveJob: (arg: { job: Job; now?: Date; }) => Promise<void>; fetchNextJob: (arg: { processingTimeoutMs: number; }) => Promise<{ job: Job; }>; markJobAsCompleted: (arg: { jobId: string; now?: Date; result?: JobResult; }) => Promise<void>; markJobAsFailed: (arg: { jobId: string; now?: Date; error: string; }) => Promise<void>; }; //#endregion //#region src/tasks/tasks.types.d.ts type TaskOptions = { maxRetries?: number; retryBackoff?: 'linear' | 'exponential' | ((args: { attempt: number; }) => number); }; type TaskDefinition<TData = JobData, TResult = JobResult> = { name: string; options?: TaskOptions; handler: (args: { data: TData; context: TaskContext; }) => Promise<TResult | undefined | void>; }; type TaskContext = { workerId: string; }; //# sourceMappingURL=tasks.types.d.ts.map //#endregion //#region src/queue.d.ts declare function createQueue({ driver, processingTimeoutMs, generateJobId }: { driver: JobRepositoryDriver; processingTimeoutMs?: number; generateJobId?: () => string; }): { registerTask: (taskDefinition: TaskDefinition) => void; scheduleJob({ taskName, data, now, scheduleAt, maxRetries }: { taskName: string; data: JobData; scheduleAt?: Date; now?: Date; maxRetries?: number; }): Promise<void>; startWorker({ workerId: _ }: { workerId: string; }): void; stopWorker(): Promise<void>; }; //# sourceMappingURL=queue.d.ts.map //#endregion export { Job, JobData, JobRepositoryDriver, JobStatus, createQueue }; //# sourceMappingURL=index.d.ts.map