UNPKG

flemo

Version:

A modern React router library with built-in motion animations and smooth transitions

63 lines (62 loc) 1.8 kB
interface TaskResult<T> { success: boolean; error?: Error; result?: T; taskId?: string; timestamp?: number; instanceId?: string; } type TaskStatus = "PENDING" | "MANUAL_PENDING" | "SIGNAL_PENDING" | "PROCESSING" | "COMPLETED" | "FAILED" | "ROLLEDBACK"; interface Control { manual?: boolean; delay?: number; condition?: () => Promise<boolean>; signal?: string; } interface Task<T> { id: string; execute: (abortController: AbortController) => Promise<T>; validate?: () => Promise<boolean>; rollback?: () => Promise<void>; control?: Control; timestamp: number; retryCount: number; status: TaskStatus; dependencies: string[]; instanceId: string; abortController?: AbortController; manualResolver?: { resolve: (value: TaskResult<T>) => void; reject: (error: Error) => void; result: T; }; } declare class TaskManager { private tasks; private readonly instanceId; private isLocked; private currentTaskId; private taskQueue; private signalListeners; private pendingTaskQueue; private isProcessingPending; private acquireLock; private releaseLock; generateTaskId(): string; emitSignal(signalName: string): void; private processPendingTasks; private waitForPendingTasks; private onTaskStatusChange; addTask<T>(execute: Task<T>["execute"], options?: { id?: string; delay?: number; validate?: () => Promise<boolean>; rollback?: () => Promise<void>; dependencies?: string[]; control?: Control; }): Promise<TaskResult<T>>; resolveTask(taskId: string): Promise<boolean>; resolveAllPending(): Promise<void>; } declare const instance: TaskManager; export default instance;