qbo-mcp-ts
Version:
TypeScript QuickBooks Online MCP Server with enhanced features and dual transport support
89 lines • 2.17 kB
TypeScript
/**
* Queue service for managing API rate limits and concurrent requests
*/
import { IQueueService } from '../types';
/**
* Queue service implementation using p-queue
*/
export declare class QueueService implements IQueueService {
private queue;
private readonly rateLimitPerMinute;
constructor();
/**
* Set up queue event listeners for monitoring
*/
private setupEventListeners;
/**
* Add a task to the queue
*/
add<T>(task: () => Promise<T>, priority?: number): Promise<T>;
/**
* Pause the queue
*/
pause(): void;
/**
* Resume the queue
*/
resume(): void;
/**
* Clear all pending tasks
*/
clear(): void;
/**
* Get queue size (waiting tasks)
*/
size(): number;
/**
* Get number of pending tasks (running + waiting)
*/
pending(): number;
/**
* Check if queue is paused
*/
isPaused(): boolean;
/**
* Check if queue is idle
*/
isIdle(): boolean;
/**
* Wait for all tasks to complete
*/
onIdle(): Promise<void>;
/**
* Wait for queue to be empty (no waiting tasks)
*/
onEmpty(): Promise<void>;
/**
* Get queue statistics
*/
getStats(): {
size: number;
pending: number;
isPaused: boolean;
concurrency: number;
rateLimitPerMinute: number;
};
/**
* Add multiple tasks as a batch
*/
addBatch<T>(tasks: Array<() => Promise<T>>, priority?: number): Promise<T[]>;
/**
* Execute a task with retry logic
*/
addWithRetry<T>(task: () => Promise<T>, options?: {
retries?: number;
retryDelay?: number;
priority?: number;
onRetry?: (attempt: number, error: Error) => void;
}): Promise<T>;
/**
* Execute tasks with rate limiting per time window
*/
createRateLimitedExecutor<T>(windowMs: number, maxRequests: number): (task: () => Promise<T>) => Promise<T>;
/**
* Shutdown the queue gracefully
*/
shutdown(): Promise<void>;
}
export declare const queueService: QueueService;
//# sourceMappingURL=queue.d.ts.map