UNPKG

@cadence-mq/core

Version:

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

37 lines (32 loc) 1.4 kB
import type { JobRepositoryDriver } from '../jobs/jobs.types'; import type { CadenceLogger } from '../logger/logger.types'; import type { TaskDefinitionRegistry } from '../tasks/task-definition.registry'; import { createPeriodicJobScheduler, createScheduler } from '../scheduler/scheduler'; import { createTaskRegistry } from '../tasks/task-definition.registry'; import { createWorkerFactory } from '../workers/workers.factory'; export type CadenceInstance = ReturnType<typeof createCadence>; // The Cadence instance is a collection of functions that are used to interact with the Cadence system. // It is used to conveniently register tasks, create workers, and schedule jobs export function createCadence({ driver, generateJobId, taskRegistry = createTaskRegistry(), logger, }: { driver: JobRepositoryDriver; generateJobId?: () => string; taskRegistry?: TaskDefinitionRegistry; logger?: Partial<CadenceLogger>; }) { return { createWorker: createWorkerFactory({ driver, taskRegistry, logger }), scheduleJob: createScheduler({ driver, taskRegistry, generateJobId }), schedulePeriodicJob: createPeriodicJobScheduler({ driver, taskRegistry }), registerTask: taskRegistry.registerTask, getJob: driver.getJob, getJobCount: driver.getJobCount, deleteJob: driver.deleteJob, getTaskRegistry: () => taskRegistry, getDriver: () => driver, }; }