snes-disassembler
Version:
A Super Nintendo (SNES) ROM disassembler for 65816 assembly
133 lines • 3.95 kB
TypeScript
/**
* Error and Warning Consolidation Manager
*
* Implements a comprehensive system to consolidate error and warning messages
* into summaries, reducing repetition and providing users with clear overviews
* of issues that occurred during their session.
*/
export declare enum MessageSeverity {
FATAL = "fatal",
ERROR = "error",
WARNING = "warning",
INFO = "info",
DEBUG = "debug"
}
export declare enum MessageCategory {
ROM_PARSING = "rom_parsing",
INSTRUCTION_DECODE = "instruction_decode",
MEMORY_ACCESS = "memory_access",
ASSET_EXTRACTION = "asset_extraction",
OUTPUT_GENERATION = "output_generation",
VALIDATION = "validation",
CONFIGURATION = "configuration",
PERFORMANCE = "performance",
AUDIO_PROCESSING = "audio_processing",
AI_ANALYSIS = "ai_analysis"
}
export interface ConsolidatedMessage {
id: string;
severity: MessageSeverity;
category: MessageCategory;
title: string;
message: string;
count: number;
firstOccurrence: Date;
lastOccurrence: Date;
context: Array<{
timestamp: Date;
location?: string;
address?: number;
additionalData?: any;
}>;
suggestions?: string[];
relatedMessages?: string[];
}
export interface SessionSummary {
sessionId: string;
startTime: Date;
endTime?: Date;
totalMessages: number;
severityCounts: Record<MessageSeverity, number>;
categoryCounts: Record<MessageCategory, number>;
consolidatedMessages: ConsolidatedMessage[];
criticalIssues: ConsolidatedMessage[];
recommendations: string[];
performanceMetrics?: {
processingTime: number;
memoryUsage: number;
operationsCompleted: number;
};
}
export declare class ErrorWarningManager {
private logger;
private sessionId;
private sessionStartTime;
private rawMessages;
private consolidatedMessages;
private messageCounter;
private performanceMetrics;
constructor(sessionId?: string);
private generateSessionId;
/**
* Add a message to the manager for consolidation
*/
addMessage(severity: MessageSeverity, category: MessageCategory, message: string, context?: {
location?: string;
address?: number;
additionalData?: any;
}): void;
/**
* Add an error (convenience method)
*/
addError(category: MessageCategory, message: string, context?: any): void;
/**
* Add a warning (convenience method)
*/
addWarning(category: MessageCategory, message: string, context?: any): void;
/**
* Add a fatal error (convenience method)
*/
addFatalError(category: MessageCategory, message: string, context?: any): void;
private generateMessageId;
private consolidateMessage;
private findMatchingPattern;
private getSeverityWeight;
private generateTitle;
private generateSuggestions;
/**
* Generate a comprehensive session summary
*/
generateSessionSummary(): SessionSummary;
private generateRecommendations;
/**
* Get messages by severity
*/
getMessagesBySeverity(severity: MessageSeverity): ConsolidatedMessage[];
/**
* Get messages by category
*/
getMessagesByCategory(category: MessageCategory): ConsolidatedMessage[];
/**
* Get critical issues that need immediate attention
*/
getCriticalIssues(): ConsolidatedMessage[];
/**
* Update performance metrics
*/
updatePerformanceMetrics(metrics: Partial<typeof this.performanceMetrics>): void;
/**
* Clear all messages and reset the session
*/
reset(): void;
/**
* Get session statistics
*/
getSessionStats(): {
sessionId: string;
duration: number;
totalMessages: number;
uniqueMessages: number;
mostCommonIssue?: ConsolidatedMessage;
};
}
//# sourceMappingURL=error-warning-manager.d.ts.map