@casoon/auditmysite
Version:
A comprehensive command-line tool for automated accessibility, security, performance, and SEO testing using Playwright and pa11y, based on sitemap URLs
81 lines • 2.42 kB
TypeScript
export interface PriorityItem<T = any> {
id: string;
data: T;
priority: number;
timestamp: Date;
attempts: number;
maxAttempts: number;
status: 'pending' | 'processing' | 'completed' | 'failed' | 'retrying';
error?: string;
result?: any;
startedAt?: Date;
completedAt?: Date;
duration?: number;
}
export interface PriorityQueueOptions {
maxSize?: number;
defaultPriority?: number;
maxAttempts?: number;
retryDelay?: number;
enablePriorityBoost?: boolean;
priorityBoostThreshold?: number;
priorityBoostAmount?: number;
}
export interface QueueStats {
total: number;
pending: number;
processing: number;
completed: number;
failed: number;
retrying: number;
averagePriority: number;
averageWaitTime: number;
averageProcessingTime: number;
oldestItem?: PriorityItem;
newestItem?: PriorityItem;
}
export declare class PriorityQueue<T = any> {
private queue;
private processing;
private completed;
private failed;
private options;
private itemIdCounter;
constructor(options?: PriorityQueueOptions);
enqueue(data: T, priority?: number, id?: string): string;
dequeue(): PriorityItem<T> | null;
peek(): PriorityItem<T> | null;
complete(id: string, result?: any): boolean;
fail(id: string, error?: string): boolean;
retry(id: string): boolean;
remove(id: string): boolean;
clear(): void;
getById(id: string): PriorityItem<T> | null;
updatePriority(id: string, newPriority: number): boolean;
getStats(): QueueStats;
getPendingItems(): PriorityItem<T>[];
getProcessingItems(): PriorityItem<T>[];
getCompletedItems(): PriorityItem<T>[];
getFailedItems(): PriorityItem<T>[];
getRetryingItems(): PriorityItem<T>[];
isEmpty(): boolean;
isFull(): boolean;
size(): number;
processingSize(): number;
private findItem;
private sortQueue;
private applyPriorityBoost;
getMaxSize(): number;
setMaxSize(maxSize: number): void;
getDefaultPriority(): number;
setDefaultPriority(priority: number): void;
getMaxAttempts(): number;
setMaxAttempts(maxAttempts: number): void;
enqueueBatch(items: Array<{
data: T;
priority?: number;
id?: string;
}>): string[];
dequeueBatch(count: number): PriorityItem<T>[];
}
//# sourceMappingURL=priority-queue.d.ts.map