UNPKG

@ordojs/dev-tools

Version:

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

1 lines 8.49 kB
{"version":3,"sources":["../../src/hmr/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Dev Tools - Enhanced HMR\n *\n * Enhanced hot module replacement with state preservation and improved debugging.\n */\n\nimport { EventEmitter } from 'events';\nimport type { HMRUpdate } from '../types/index.js';\n\n/**\n * Enhanced HMR for improved hot module replacement\n */\nexport class EnhancedHMR extends EventEmitter {\n private updates: Map<string, HMRUpdate>;\n private isRunning: boolean;\n private port: number;\n private statePreservation: boolean;\n\n /**\n * Create a new EnhancedHMR instance\n *\n * @param port - WebSocket port for enhanced HMR\n * @param statePreservation - Enable state preservation\n */\n constructor(port: number = 24684, statePreservation: boolean = true) {\n super();\n\n this.updates = new Map();\n this.isRunning = false;\n this.port = port;\n this.statePreservation = statePreservation;\n }\n\n /**\n * Start the enhanced HMR\n */\n async start(): Promise<void> {\n if (this.isRunning) {\n console.warn('Enhanced HMR is already running');\n return;\n }\n\n try {\n // Start WebSocket server for enhanced HMR communication\n await this.startWebSocketServer();\n\n this.isRunning = true;\n console.log(`Enhanced HMR started on port ${this.port}`);\n\n this.emit('started');\n } catch (error) {\n console.error('Failed to start enhanced HMR:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Stop the enhanced HMR\n */\n async stop(): Promise<void> {\n if (!this.isRunning) {\n console.warn('Enhanced HMR 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('Enhanced HMR stopped');\n\n this.emit('stopped');\n } catch (error) {\n console.error('Failed to stop enhanced HMR:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Send an HMR update\n *\n * @param update - HMR update information\n */\n sendUpdate(update: HMRUpdate): void {\n const updateId = this.generateUpdateId(update);\n this.updates.set(updateId, update);\n this.emit('updateSent', { updateId, update });\n }\n\n /**\n * Get update by ID\n *\n * @param updateId - Update identifier\n * @returns HMR update or undefined\n */\n getUpdate(updateId: string): HMRUpdate | undefined {\n return this.updates.get(updateId);\n }\n\n /**\n * Get all updates\n *\n * @returns Array of all updates\n */\n getAllUpdates(): HMRUpdate[] {\n return Array.from(this.updates.values());\n }\n\n /**\n * Clear all updates\n */\n clearUpdates(): void {\n this.updates.clear();\n this.emit('updatesCleared');\n }\n\n /**\n * Get HMR statistics\n *\n * @returns HMR statistics\n */\n getHMRStats(): {\n totalUpdates: number;\n updatesByType: Record<string, number>;\n updatesByFile: Record<string, number>;\n averageUpdateTime: number;\n } {\n const updates = Array.from(this.updates.values());\n const updatesByType: Record<string, number> = {};\n const updatesByFile: Record<string, number> = {};\n let totalUpdateTime = 0;\n\n for (const update of updates) {\n updatesByType[update.type] = (updatesByType[update.type] || 0) + 1;\n updatesByFile[update.filePath] = (updatesByFile[update.filePath] || 0) + 1;\n totalUpdateTime += Date.now() - update.timestamp;\n }\n\n const averageUpdateTime = updates.length > 0 ? totalUpdateTime / updates.length : 0;\n\n return {\n totalUpdates: updates.length,\n updatesByType,\n updatesByFile,\n averageUpdateTime\n };\n }\n\n /**\n * Enable state preservation\n */\n enableStatePreservation(): void {\n this.statePreservation = true;\n this.emit('statePreservationEnabled');\n }\n\n /**\n * Disable state preservation\n */\n disableStatePreservation(): void {\n this.statePreservation = false;\n this.emit('statePreservationDisabled');\n }\n\n /**\n * Check if state preservation is enabled\n *\n * @returns True if state preservation is enabled\n */\n isStatePreservationEnabled(): boolean {\n return this.statePreservation;\n }\n\n /**\n * Generate update ID\n *\n * @param update - HMR update\n * @returns Update ID\n */\n private generateUpdateId(update: HMRUpdate): string {\n return `${update.type}-${update.filePath}-${update.timestamp}`;\n }\n\n /**\n * Start WebSocket server for enhanced HMR 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 enhanced HMR...');\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 enhanced HMR...');\n }\n}\n"]}