@ordojs/dev-tools
Version:
Advanced developer tools for OrdoJS with component inspector, AST explorer, and performance profiling
1 lines • 9.32 kB
Source Map (JSON)
{"version":3,"sources":["../../src/inspector/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Dev Tools - Component Inspector\n *\n * Component inspector for debugging and analyzing component behavior.\n */\n\nimport { EventEmitter } from 'events';\nimport type { ComponentInfo } from '../types/index.js';\n\n/**\n * Component inspector for debugging and analyzing components\n */\nexport class ComponentInspector extends EventEmitter {\n private components: Map<string, ComponentInfo>;\n private isRunning: boolean;\n private port: number;\n\n /**\n * Create a new ComponentInspector instance\n *\n * @param port - WebSocket port for inspector\n */\n constructor(port: number = 24679) {\n super();\n\n this.components = new Map();\n this.isRunning = false;\n this.port = port;\n }\n\n /**\n * Start the component inspector\n */\n async start(): Promise<void> {\n if (this.isRunning) {\n console.warn('Component inspector is already running');\n return;\n }\n\n try {\n // Start WebSocket server for inspector communication\n await this.startWebSocketServer();\n\n this.isRunning = true;\n console.log(`Component inspector started on port ${this.port}`);\n\n this.emit('started');\n } catch (error) {\n console.error('Failed to start component inspector:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Stop the component inspector\n */\n async stop(): Promise<void> {\n if (!this.isRunning) {\n console.warn('Component inspector 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('Component inspector stopped');\n\n this.emit('stopped');\n } catch (error) {\n console.error('Failed to stop component inspector:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Register a component for inspection\n *\n * @param componentInfo - Component information\n */\n registerComponent(componentInfo: ComponentInfo): void {\n this.components.set(componentInfo.name, componentInfo);\n this.emit('componentRegistered', componentInfo);\n }\n\n /**\n * Update component information\n *\n * @param componentName - Component name\n * @param updates - Component updates\n */\n updateComponent(componentName: string, updates: Partial<ComponentInfo>): void {\n const component = this.components.get(componentName);\n if (component) {\n const updatedComponent = { ...component, ...updates };\n this.components.set(componentName, updatedComponent);\n this.emit('componentUpdated', updatedComponent);\n }\n }\n\n /**\n * Get component information\n *\n * @param componentName - Component name\n * @returns Component information or undefined\n */\n getComponent(componentName: string): ComponentInfo | undefined {\n return this.components.get(componentName);\n }\n\n /**\n * Get all components\n *\n * @returns Array of all component information\n */\n getAllComponents(): ComponentInfo[] {\n return Array.from(this.components.values());\n }\n\n /**\n * Get component tree\n *\n * @returns Component tree structure\n */\n getComponentTree(): ComponentInfo[] {\n const rootComponents: ComponentInfo[] = [];\n const componentMap = new Map(this.components);\n\n // Find root components (components without parents)\n for (const component of componentMap.values()) {\n if (!this.hasParent(component, componentMap)) {\n rootComponents.push(component);\n }\n }\n\n return rootComponents;\n }\n\n /**\n * Clear all components\n */\n clearComponents(): void {\n this.components.clear();\n this.emit('componentsCleared');\n }\n\n /**\n * Get inspector statistics\n *\n * @returns Inspector statistics\n */\n getStats(): {\n totalComponents: number;\n totalRenderCount: number;\n averageRenderTime: number;\n peakMemoryUsage: number;\n } {\n const components = Array.from(this.components.values());\n const totalRenderCount = components.reduce((sum, comp) => sum + comp.renderCount, 0);\n const averageRenderTime = components.reduce((sum, comp) => sum + comp.performance.averageRenderTime, 0) / components.length || 0;\n const peakMemoryUsage = Math.max(...components.map(comp => comp.performance.peakMemoryUsage), 0);\n\n return {\n totalComponents: components.length,\n totalRenderCount,\n averageRenderTime,\n peakMemoryUsage\n };\n }\n\n /**\n * Start WebSocket server for inspector 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 component inspector...');\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 component inspector...');\n }\n\n /**\n * Check if component has a parent\n *\n * @param component - Component to check\n * @param componentMap - Map of all components\n * @returns True if component has a parent\n */\n private hasParent(component: ComponentInfo, componentMap: Map<string, ComponentInfo>): boolean {\n for (const otherComponent of componentMap.values()) {\n if (otherComponent.children.some(child => child.name === component.name)) {\n return true;\n }\n }\n return false;\n }\n}\n"]}