UNPKG

@ordojs/dev-tools

Version:

Advanced developer tools for OrdoJS with component inspector, AST explorer, and performance profiling

1 lines 12.1 kB
{"version":3,"sources":["../../src/error-overlay/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Dev Tools - Error Overlay\n *\n * Error overlay for displaying compilation and runtime errors with helpful suggestions.\n */\n\nimport { EventEmitter } from 'events';\nimport type { ErrorInfo } from '../types/index.js';\n\n/**\n * Error overlay for displaying errors with helpful suggestions\n */\nexport class ErrorOverlay extends EventEmitter {\n private errors: Map<string, ErrorInfo>;\n private isRunning: boolean;\n private port: number;\n\n /**\n * Create a new ErrorOverlay instance\n *\n * @param port - WebSocket port for error overlay\n */\n constructor(port: number = 24683) {\n super();\n\n this.errors = new Map();\n this.isRunning = false;\n this.port = port;\n }\n\n /**\n * Start the error overlay\n */\n async start(): Promise<void> {\n if (this.isRunning) {\n console.warn('Error overlay is already running');\n return;\n }\n\n try {\n // Start WebSocket server for error overlay communication\n await this.startWebSocketServer();\n\n this.isRunning = true;\n console.log(`Error overlay started on port ${this.port}`);\n\n this.emit('started');\n } catch (error) {\n console.error('Failed to start error overlay:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Stop the error overlay\n */\n async stop(): Promise<void> {\n if (!this.isRunning) {\n console.warn('Error overlay is not running');\n return;\n }\n\n try {\n // Clean up WebSocket server\n await this.stopWebSocketServer();\n\n this.isRunning = false;\n console.log('Error overlay stopped');\n\n this.emit('stopped');\n } catch (error) {\n console.error('Failed to stop error overlay:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Add an error to the overlay\n *\n * @param errorId - Unique error identifier\n * @param errorInfo - Error information\n */\n addError(errorId: string, errorInfo: ErrorInfo): void {\n this.errors.set(errorId, errorInfo);\n this.emit('errorAdded', { errorId, errorInfo });\n }\n\n /**\n * Update an error\n *\n * @param errorId - Error identifier\n * @param updates - Error updates\n */\n updateError(errorId: string, updates: Partial<ErrorInfo>): void {\n const error = this.errors.get(errorId);\n if (error) {\n const updatedError = { ...error, ...updates };\n this.errors.set(errorId, updatedError);\n this.emit('errorUpdated', { errorId, errorInfo: updatedError });\n }\n }\n\n /**\n * Remove an error\n *\n * @param errorId - Error identifier\n */\n removeError(errorId: string): void {\n const error = this.errors.get(errorId);\n if (error) {\n this.errors.delete(errorId);\n this.emit('errorRemoved', { errorId, errorInfo: error });\n }\n }\n\n /**\n * Get error by ID\n *\n * @param errorId - Error identifier\n * @returns Error information or undefined\n */\n getError(errorId: string): ErrorInfo | undefined {\n return this.errors.get(errorId);\n }\n\n /**\n * Get all errors\n *\n * @returns Array of all errors\n */\n getAllErrors(): ErrorInfo[] {\n return Array.from(this.errors.values());\n }\n\n /**\n * Clear all errors\n */\n clearErrors(): void {\n this.errors.clear();\n this.emit('errorsCleared');\n }\n\n /**\n * Get error statistics\n *\n * @returns Error statistics\n */\n getErrorStats(): {\n totalErrors: number;\n errorsByType: Record<string, number>;\n errorsByFile: Record<string, number>;\n } {\n const errors = Array.from(this.errors.values());\n const errorsByType: Record<string, number> = {};\n const errorsByFile: Record<string, number> = {};\n\n for (const error of errors) {\n const errorType = this.getErrorType(error);\n errorsByType[errorType] = (errorsByType[errorType] || 0) + 1;\n\n if (error.filePath) {\n errorsByFile[error.filePath] = (errorsByFile[error.filePath] || 0) + 1;\n }\n }\n\n return {\n totalErrors: errors.length,\n errorsByType,\n errorsByFile\n };\n }\n\n /**\n * Generate error suggestions\n *\n * @param errorId - Error identifier\n * @returns Array of suggestions\n */\n generateSuggestions(errorId: string): string[] {\n const error = this.errors.get(errorId);\n if (!error) {\n return [];\n }\n\n const suggestions: string[] = [];\n\n // Common error patterns and suggestions\n if (error.message.includes('Cannot find module')) {\n suggestions.push('Check if the module is installed and imported correctly');\n suggestions.push('Verify the module path is correct');\n suggestions.push('Try running npm install or pnpm install');\n }\n\n if (error.message.includes('Unexpected token')) {\n suggestions.push('Check for syntax errors in your code');\n suggestions.push('Verify all brackets, parentheses, and quotes are properly closed');\n suggestions.push('Check for missing semicolons or commas');\n }\n\n if (error.message.includes('TypeError')) {\n suggestions.push('Check if the variable or property exists');\n suggestions.push('Verify the data type is correct');\n suggestions.push('Add proper null/undefined checks');\n }\n\n if (error.message.includes('ReferenceError')) {\n suggestions.push('Check if the variable is declared before use');\n suggestions.push('Verify the variable name is spelled correctly');\n suggestions.push('Check the scope of the variable');\n }\n\n // Add general suggestions\n suggestions.push('Check the browser console for more details');\n suggestions.push('Try refreshing the page');\n suggestions.push('Check the documentation for the correct usage');\n\n return suggestions;\n }\n\n /**\n * Get error type from error message\n *\n * @param error - Error information\n * @returns Error type\n */\n private getErrorType(error: ErrorInfo): string {\n if (error.message.includes('Cannot find module')) {\n return 'ModuleNotFound';\n }\n if (error.message.includes('Unexpected token')) {\n return 'SyntaxError';\n }\n if (error.message.includes('TypeError')) {\n return 'TypeError';\n }\n if (error.message.includes('ReferenceError')) {\n return 'ReferenceError';\n }\n if (error.message.includes('RangeError')) {\n return 'RangeError';\n }\n return 'Unknown';\n }\n\n /**\n * Start WebSocket server for error overlay communication\n */\n private async startWebSocketServer(): Promise<void> {\n // Implementation for WebSocket server\n // This would handle communication with the browser extension\n console.log('Starting WebSocket server for error overlay...');\n }\n\n /**\n * Stop WebSocket server\n */\n private async stopWebSocketServer(): Promise<void> {\n // Implementation for stopping WebSocket server\n console.log('Stopping WebSocket server for error overlay...');\n }\n}\n"]}