polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
134 lines • 4.3 kB
TypeScript
import { EventEmitter } from 'events';
export interface ErrorRecoveryConfig {
enableAutoRecovery: boolean;
maxRetryAttempts: number;
baseRetryDelay: number;
retryDelayMultiplier: number;
maxRetryDelay: number;
errorHistorySize: number;
criticalErrorThreshold: number;
recoveryTimeout: number;
enableErrorLogging: boolean;
enableUserNotifications: boolean;
fallbackModeTimeout: number;
}
export type ErrorType = 'network' | 'api' | 'render' | 'memory' | 'configuration' | 'validation' | 'timeout' | 'permission' | 'unknown';
export type ErrorSeverity = 'low' | 'medium' | 'high' | 'critical';
export type RecoveryStrategy = 'retry' | 'fallback' | 'reset' | 'ignore' | 'escalate' | 'restart';
export interface ErrorRecord {
id: string;
type: ErrorType;
severity: ErrorSeverity;
message: string;
stack?: string;
context: {
component: string;
operation: string;
parameters?: Record<string, any>;
timestamp: number;
};
recoveryAttempts: number;
maxRetries: number;
recovered: boolean;
recoveryStrategy?: RecoveryStrategy;
recoveryTime?: number;
firstOccurrence: number;
lastOccurrence: number;
occurrenceCount: number;
}
export interface ErrorPattern {
id: string;
description: string;
errorType: ErrorType;
componentPattern: string;
messagePattern: RegExp;
recoveryStrategy: RecoveryStrategy;
confidence: number;
occurrences: number;
lastSeen: number;
}
export interface RecoveryResult {
success: boolean;
strategy: RecoveryStrategy;
recoveryTime: number;
error: ErrorRecord;
details?: string;
newError?: Error;
}
export interface ErrorStatistics {
totalErrors: number;
errorsByType: Record<ErrorType, number>;
errorsBySeverity: Record<ErrorSeverity, number>;
errorsByComponent: Record<string, number>;
recoverySuccessRate: number;
averageRecoveryTime: number;
commonPatterns: ErrorPattern[];
trends: {
errorRate: number;
recoveryRate: number;
criticalErrors: number;
recentErrors: number;
};
}
export interface UserErrorMessage {
id: string;
title: string;
description: string;
suggestedActions: string[];
severity: 'info' | 'warning' | 'error';
recoverable: boolean;
recoveryStatus: 'pending' | 'in-progress' | 'completed' | 'failed';
}
export declare class ErrorRecoveryManager extends EventEmitter {
private config;
private errorHistory;
private errorPatterns;
private recoveryStrategies;
private errorIdCounter;
private patternIdCounter;
private isRunning;
private criticalErrorCount;
private fallbackModeActive;
private fallbackModeTimer?;
constructor(config?: Partial<ErrorRecoveryConfig>);
start(): void;
stop(): void;
reportError(error: Error, context: {
component: string;
operation: string;
parameters?: Record<string, any>;
}): Promise<void>;
attemptRecovery(errorRecord: ErrorRecord): Promise<RecoveryResult>;
getStatistics(): ErrorStatistics;
getErrorHistory(timeRange?: {
start: number;
end: number;
}): ErrorRecord[];
getUserErrorMessage(errorRecord: ErrorRecord): UserErrorMessage;
clearErrorHistory(): void;
updateConfig(newConfig: Partial<ErrorRecoveryConfig>): void;
registerRecoveryStrategy(name: string, strategy: (error: ErrorRecord) => Promise<RecoveryResult>): void;
activateFallbackMode(): void;
deactivateFallbackMode(): void;
isFallbackModeActive(): boolean;
private createErrorRecord;
private classifyError;
private determineSeverity;
private getMaxRetries;
private findExistingError;
private learnErrorPattern;
private updateErrorPattern;
private determineRecoveryStrategy;
private initializeRecoveryStrategies;
private initializeErrorPatterns;
private createTimeoutPromise;
private logError;
private mapSeverityToUser;
private isErrorRecoverable;
private getRecoveryStatus;
private generateUserFriendlyTitle;
private generateUserFriendlyDescription;
private generateUserActions;
private setupEventHandlers;
}
//# sourceMappingURL=error-recovery-manager.d.ts.map