queue-manager-pro
Version:
A flexible, TypeScript-first queue/task manager with pluggable backends ,dynamic persistence storage and event hooks.
20 lines (19 loc) • 1.14 kB
TypeScript
import type { EmitMethod, HandlerMap, LoggerLike, Task } from '../types/index.js';
import type { QueueRepository } from './repository.interface.js';
export declare abstract class BaseQueueRepository implements QueueRepository {
logger?: LoggerLike;
emitEvent?: EmitMethod;
MAX_RETRIES: number;
MAX_PROCESSING_TIME: number;
readonly id: string;
protected dequeueLock: boolean;
constructor(maxRetries: number, maxProcessingTime: number);
abstract loadTasks(status?: Task<HandlerMap>['status']): Promise<Task<HandlerMap>[]>;
abstract saveTasks(tasks: Task<HandlerMap>[], status?: Task<HandlerMap>['status']): Promise<Task<HandlerMap>[]>;
abstract enqueue(task: Task<HandlerMap>): Promise<void>;
abstract deleteTask(id: string, hardDelete?: boolean): Promise<Task<HandlerMap> | undefined>;
updateTask(id: string, obj: Partial<Task<HandlerMap>>): Promise<Task<HandlerMap> | undefined>;
sortTasksToDequeue(taskA: Task<HandlerMap>, taskB: Task<HandlerMap>): number;
dequeue(): Promise<Task<HandlerMap> | null>;
protected checkAndHandleStuckTasks(tasks: Task<HandlerMap>[]): Promise<void>;
}