@cadence-mq/core
Version:
Modern, type-safe, and performant task queue for Node.js
37 lines (32 loc) • 1.4 kB
text/typescript
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,
};
}