UNPKG

nodejs-cloud-taskmq

Version:

Node.js TypeScript library for integrating Google Cloud Tasks with MongoDB/Redis/Memory/Custom for a BullMQ-like queue system. Compatible with NestJS but framework-agnostic.

62 lines (61 loc) 2.33 kB
import { IStateStorageAdapter, ITask, TaskStatus, TaskQueryOptions } from '../interfaces/storage-adapter.interface'; /** * In-memory storage adapter for development and testing */ export declare class MemoryStorageAdapter implements IStateStorageAdapter { private tasks; private uniquenessKeys; private rateLimit; private rateLimitLocks; initialize(): Promise<void>; saveTask(task: ITask): Promise<void>; getTask(taskId: string): Promise<ITask | null>; updateTaskStatus(taskId: string, status: TaskStatus, updateData?: Partial<ITask>): Promise<void>; deleteTask(taskId: string): Promise<boolean>; getTasks(options?: TaskQueryOptions): Promise<ITask[]>; getTaskCount(options?: TaskQueryOptions): Promise<number>; hasUniquenessKey(key: string): Promise<boolean>; addUniquenessKey(key: string, taskId: string, ttlSeconds?: number): Promise<boolean>; getUniquenessKeyInfo(key: string): Promise<{ taskId: string; expiresAt: Date; } | null>; removeUniquenessKey(key: string): Promise<void>; isUniquenessKeyActive(key: string): Promise<boolean>; setUniquenessKeyActive(key: string, taskId: string, ttlSeconds?: number): Promise<void>; incrementRateLimit(key: string, windowMs: number, maxRequests: number): Promise<{ allowed: boolean; count: number; resetTime: Date; }>; private _doIncrementRateLimit; getRateLimit(key: string): Promise<{ count: number; resetTime: Date; } | null>; deleteRateLimit(key: string): Promise<void>; /** * Check if there are active tasks in chain */ hasActiveTaskInChain(chainId: string): Promise<boolean>; getNextChainIndex(chainId: string): Promise<number>; cleanup(options?: { olderThan?: Date; statuses?: TaskStatus[]; removeCompleted?: boolean; removeFailed?: boolean; }): Promise<number>; close(): Promise<void>; /** * Get all tasks in a chain */ getChainTasks(chainId: string): Promise<ITask[]>; /** * Get the next task in a chain after the current step */ getNextTaskInChain(chainId: string, currentStep: number): Promise<ITask | null>; /** * Create a new task (alias for saveTask) */ createTask(task: ITask): Promise<ITask>; }