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.
61 lines (60 loc) • 2.04 kB
TypeScript
import { IStateStorageAdapter, ITask, TaskStatus, TaskQueryOptions } from '../interfaces/storage-adapter.interface';
/**
* Redis storage adapter options
*/
export interface RedisStorageOptions {
host?: string;
port?: number;
password?: string;
url?: string;
keyPrefix?: string;
options?: any;
}
/**
* Redis storage adapter
*/
export declare class RedisStorageAdapter implements IStateStorageAdapter {
private options;
private redis;
private keyPrefix;
constructor(options: RedisStorageOptions);
initialize(): Promise<void>;
private getTaskKey;
private getUniquenessKey;
private getRateLimitKey;
private getQueueKey;
private getChainKey;
saveTask(task: ITask): Promise<void>;
private deserializeTask;
getTask(taskId: string): Promise<ITask | null>;
updateTaskStatus(taskId: string, status: TaskStatus, updateData?: Partial<ITask>): Promise<void>;
deleteTask(taskId: string): Promise<boolean>;
createTask(task: ITask): Promise<ITask>;
getTasks(options?: TaskQueryOptions): Promise<ITask[]>;
getTaskCount(options?: TaskQueryOptions): Promise<number>;
isUniquenessKeyActive(key: string): Promise<boolean>;
setUniquenessKeyActive(key: string, taskId: string, ttlSeconds?: number): Promise<void>;
removeUniquenessKey(key: string): Promise<void>;
getRateLimit(key: string): Promise<{
count: number;
resetTime: Date;
} | null>;
incrementRateLimit(key: string, windowMs: number, maxRequests: number): Promise<{
allowed: boolean;
count: number;
resetTime: Date;
}>;
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>;
/**
* Clear all tasks - for testing purposes only
*/
private clearAllTasks;
}