You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

29 lines
774 B

import log4js from "logger";
const logger = log4js.getLogger("SCHEDULER");
export type TaskHandler = (
payload?: Record<string, unknown>
) => Promise<{ success: boolean; message: string }>;
const registry = new Map<string, TaskHandler>();
export function registerTask(name: string, handler: TaskHandler): void {
if (registry.has(name)) {
logger.warn("Task '%s' is already registered, overwriting", name);
}
registry.set(name, handler);
logger.info("Registered task: %s", name);
}
export function hasTask(name: string): boolean {
return registry.has(name);
}
export function listRegisteredTasks(): string[] {
return Array.from(registry.keys());
}
export function getTaskHandler(name: string): TaskHandler | undefined {
return registry.get(name);
}