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
TypeScript
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>;
}