{"version":3,"sources":["../src/ast-explorer/index.ts","../src/bundle-analyzer/index.ts","../src/development-server/index.ts","../src/error-overlay/index.ts","../src/hmr/index.ts","../src/inspector/index.ts","../src/profiler/index.ts","../src/index.ts","../src/manager.ts"],"names":["EventEmitter","ComponentInspector","PerformanceProfiler","ASTExplorer","BundleAnalyzer","ErrorOverlay","EnhancedHMR","DevelopmentServer"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Dev Tools - AST Explorer\n *\n * AST explorer for analyzing and visualizing abstract syntax trees.\n */\n\nimport { EventEmitter } from 'events';\nimport type { ASTNode } from '../types/index.js';\n\n/**\n * AST explorer for analyzing abstract syntax trees\n */\nexport class ASTExplorer extends EventEmitter {\n  private astNodes: Map<string, ASTNode>;\n  private isRunning: boolean;\n  private port: number;\n\n  /**\n   * Create a new ASTExplorer instance\n   *\n   * @param port - WebSocket port for AST explorer\n   */\n  constructor(port: number = 24681) {\n    super();\n\n    this.astNodes = new Map();\n    this.isRunning = false;\n    this.port = port;\n  }\n\n  /**\n   * Start the AST explorer\n   */\n  async start(): Promise<void> {\n    if (this.isRunning) {\n      console.warn('AST explorer is already running');\n      return;\n    }\n\n    try {\n      // Start WebSocket server for AST explorer communication\n      await this.startWebSocketServer();\n\n      this.isRunning = true;\n      console.log(`AST explorer started on port ${this.port}`);\n\n      this.emit('started');\n    } catch (error) {\n      console.error('Failed to start AST explorer:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Stop the AST explorer\n   */\n  async stop(): Promise<void> {\n    if (!this.isRunning) {\n      console.warn('AST explorer 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('AST explorer stopped');\n\n      this.emit('stopped');\n    } catch (error) {\n      console.error('Failed to stop AST explorer:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Parse source code and create AST\n   *\n   * @param sourceCode - Source code to parse\n   * @param fileName - File name for the AST\n   * @returns AST root node\n   */\n  parseSourceCode(sourceCode: string, fileName: string): ASTNode {\n    try {\n      // This would integrate with the OrdoJS compiler to get the actual AST\n      // For now, we'll create a placeholder AST structure\n      const astNode: ASTNode = {\n        type: 'Program',\n        position: {\n          start: { line: 1, column: 1 },\n          end: { line: 1, column: sourceCode.length }\n        },\n        children: [],\n        value: sourceCode\n      };\n\n      this.astNodes.set(fileName, astNode);\n      this.emit('astParsed', { fileName, astNode });\n\n      return astNode;\n    } catch (error) {\n      console.error('Failed to parse source code:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Get AST for a file\n   *\n   * @param fileName - File name\n   * @returns AST node or undefined\n   */\n  getAST(fileName: string): ASTNode | undefined {\n    return this.astNodes.get(fileName);\n  }\n\n  /**\n   * Get all ASTs\n   *\n   * @returns Map of all ASTs\n   */\n  getAllASTs(): Map<string, ASTNode> {\n    return new Map(this.astNodes);\n  }\n\n  /**\n   * Find nodes by type\n   *\n   * @param fileName - File name\n   * @param nodeType - Node type to search for\n   * @returns Array of matching nodes\n   */\n  findNodesByType(fileName: string, nodeType: string): ASTNode[] {\n    const ast = this.astNodes.get(fileName);\n    if (!ast) {\n      return [];\n    }\n\n    return this.findNodesRecursive(ast, nodeType);\n  }\n\n  /**\n   * Find nodes by value\n   *\n   * @param fileName - File name\n   * @param value - Value to search for\n   * @returns Array of matching nodes\n   */\n  findNodesByValue(fileName: string, value: string): ASTNode[] {\n    const ast = this.astNodes.get(fileName);\n    if (!ast) {\n      return [];\n    }\n\n    return this.findNodesByValueRecursive(ast, value);\n  }\n\n  /**\n   * Get node path from root\n   *\n   * @param fileName - File name\n   * @param targetNode - Target node\n   * @returns Array of nodes from root to target\n   */\n  getNodePath(fileName: string, targetNode: ASTNode): ASTNode[] {\n    const ast = this.astNodes.get(fileName);\n    if (!ast) {\n      return [];\n    }\n\n    return this.findNodePath(ast, targetNode);\n  }\n\n  /**\n   * Get AST statistics\n   *\n   * @param fileName - File name\n   * @returns AST statistics\n   */\n  getASTStats(fileName: string): {\n    totalNodes: number;\n    nodeTypes: Record<string, number>;\n    maxDepth: number;\n    averageDepth: number;\n  } {\n    const ast = this.astNodes.get(fileName);\n    if (!ast) {\n      return {\n        totalNodes: 0,\n        nodeTypes: {},\n        maxDepth: 0,\n        averageDepth: 0\n      };\n    }\n\n    const stats = this.calculateASTStats(ast);\n    return stats;\n  }\n\n  /**\n   * Clear all ASTs\n   */\n  clearASTs(): void {\n    this.astNodes.clear();\n    this.emit('astsCleared');\n  }\n\n  /**\n   * Recursively find nodes by type\n   *\n   * @param node - Current node\n   * @param nodeType - Node type to search for\n   * @returns Array of matching nodes\n   */\n  private findNodesRecursive(node: ASTNode, nodeType: string): ASTNode[] {\n    const results: ASTNode[] = [];\n\n    if (node.type === nodeType) {\n      results.push(node);\n    }\n\n    if (node.children) {\n      for (const child of node.children) {\n        results.push(...this.findNodesRecursive(child, nodeType));\n      }\n    }\n\n    return results;\n  }\n\n  /**\n   * Recursively find nodes by value\n   *\n   * @param node - Current node\n   * @param value - Value to search for\n   * @returns Array of matching nodes\n   */\n  private findNodesByValueRecursive(node: ASTNode, value: string): ASTNode[] {\n    const results: ASTNode[] = [];\n\n    if (node.value && node.value.includes(value)) {\n      results.push(node);\n    }\n\n    if (node.children) {\n      for (const child of node.children) {\n        results.push(...this.findNodesByValueRecursive(child, value));\n      }\n    }\n\n    return results;\n  }\n\n  /**\n   * Find path from root to target node\n   *\n   * @param node - Current node\n   * @param targetNode - Target node\n   * @param path - Current path\n   * @returns Path to target node or empty array\n   */\n  private findNodePath(node: ASTNode, targetNode: ASTNode, path: ASTNode[] = []): ASTNode[] {\n    const currentPath = [...path, node];\n\n    if (node === targetNode) {\n      return currentPath;\n    }\n\n    if (node.children) {\n      for (const child of node.children) {\n        const result = this.findNodePath(child, targetNode, currentPath);\n        if (result.length > 0) {\n          return result;\n        }\n      }\n    }\n\n    return [];\n  }\n\n  /**\n   * Calculate AST statistics\n   *\n   * @param node - Root node\n   * @param depth - Current depth\n   * @returns AST statistics\n   */\n  private calculateASTStats(node: ASTNode, depth: number = 0): {\n    totalNodes: number;\n    nodeTypes: Record<string, number>;\n    maxDepth: number;\n    averageDepth: number;\n  } {\n    let totalNodes = 1;\n    const nodeTypes: Record<string, number> = { [node.type]: 1 };\n    let maxDepth = depth;\n    let totalDepth = depth;\n\n    if (node.children) {\n      for (const child of node.children) {\n        const childStats = this.calculateASTStats(child, depth + 1);\n        totalNodes += childStats.totalNodes;\n        maxDepth = Math.max(maxDepth, childStats.maxDepth);\n        totalDepth += childStats.totalNodes * (depth + 1);\n\n        for (const [type, count] of Object.entries(childStats.nodeTypes)) {\n          nodeTypes[type] = (nodeTypes[type] || 0) + count;\n        }\n      }\n    }\n\n    return {\n      totalNodes,\n      nodeTypes,\n      maxDepth,\n      averageDepth: totalDepth / totalNodes\n    };\n  }\n\n  /**\n   * Start WebSocket server for AST explorer 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 AST explorer...');\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 AST explorer...');\n  }\n}\n","/**\n * @fileoverview OrdoJS Dev Tools - Bundle Analyzer\n *\n * Bundle analyzer for analyzing bundle size, dependencies, and optimization opportunities.\n */\n\nimport { EventEmitter } from 'events';\nimport type { BundleAnalysis } from '../types/index.js';\n\n/**\n * Bundle analyzer for analyzing bundle size and dependencies\n */\nexport class BundleAnalyzer extends EventEmitter {\n  private analyses: Map<string, BundleAnalysis>;\n  private isRunning: boolean;\n  private port: number;\n\n  /**\n   * Create a new BundleAnalyzer instance\n   *\n   * @param port - WebSocket port for bundle analyzer\n   */\n  constructor(port: number = 24682) {\n    super();\n\n    this.analyses = new Map();\n    this.isRunning = false;\n    this.port = port;\n  }\n\n  /**\n   * Start the bundle analyzer\n   */\n  async start(): Promise<void> {\n    if (this.isRunning) {\n      console.warn('Bundle analyzer is already running');\n      return;\n    }\n\n    try {\n      // Start WebSocket server for bundle analyzer communication\n      await this.startWebSocketServer();\n\n      this.isRunning = true;\n      console.log(`Bundle analyzer started on port ${this.port}`);\n\n      this.emit('started');\n    } catch (error) {\n      console.error('Failed to start bundle analyzer:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Stop the bundle analyzer\n   */\n  async stop(): Promise<void> {\n    if (!this.isRunning) {\n      console.warn('Bundle analyzer 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('Bundle analyzer stopped');\n\n      this.emit('stopped');\n    } catch (error) {\n      console.error('Failed to stop bundle analyzer:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Analyze a bundle file\n   *\n   * @param bundlePath - Path to the bundle file\n   * @param bundleName - Name for the bundle analysis\n   * @returns Bundle analysis result\n   */\n  async analyzeBundle(bundlePath: string, bundleName: string): Promise<BundleAnalysis> {\n    try {\n      // This would integrate with actual bundle analysis tools\n      // For now, we'll create a placeholder analysis\n      const analysis: BundleAnalysis = {\n        size: 0,\n        gzippedSize: 0,\n        modules: [],\n        chunks: [],\n        dependencies: [],\n        warnings: [],\n        errors: []\n      };\n\n      // Simulate bundle analysis\n      await this.simulateBundleAnalysis(bundlePath, analysis);\n\n      this.analyses.set(bundleName, analysis);\n      this.emit('bundleAnalyzed', { bundleName, analysis });\n\n      return analysis;\n    } catch (error) {\n      console.error('Failed to analyze bundle:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Get bundle analysis by name\n   *\n   * @param bundleName - Bundle name\n   * @returns Bundle analysis or undefined\n   */\n  getAnalysis(bundleName: string): BundleAnalysis | undefined {\n    return this.analyses.get(bundleName);\n  }\n\n  /**\n   * Get all bundle analyses\n   *\n   * @returns Array of all bundle analyses\n   */\n  getAllAnalyses(): BundleAnalysis[] {\n    return Array.from(this.analyses.values());\n  }\n\n  /**\n   * Compare two bundle analyses\n   *\n   * @param bundleName1 - First bundle name\n   * @param bundleName2 - Second bundle name\n   * @returns Comparison result\n   */\n  compareBundles(bundleName1: string, bundleName2: string): {\n    sizeDifference: number;\n    sizeDifferencePercent: number;\n    moduleCountDifference: number;\n    dependencyCountDifference: number;\n    newModules: string[];\n    removedModules: string[];\n    newDependencies: string[];\n    removedDependencies: string[];\n  } {\n    const analysis1 = this.analyses.get(bundleName1);\n    const analysis2 = this.analyses.get(bundleName2);\n\n    if (!analysis1 || !analysis2) {\n      throw new Error('One or both bundle analyses not found');\n    }\n\n    const sizeDifference = analysis2.size - analysis1.size;\n    const sizeDifferencePercent = (sizeDifference / analysis1.size) * 100;\n\n    const moduleCountDifference = analysis2.modules.length - analysis1.modules.length;\n    const dependencyCountDifference = analysis2.dependencies.length - analysis1.dependencies.length;\n\n    const modules1 = new Set(analysis1.modules.map(m => m.name));\n    const modules2 = new Set(analysis2.modules.map(m => m.name));\n    const newModules = analysis2.modules.filter(m => !modules1.has(m.name)).map(m => m.name);\n    const removedModules = analysis1.modules.filter(m => !modules2.has(m.name)).map(m => m.name);\n\n    const deps1 = new Set(analysis1.dependencies.map(d => d.name));\n    const deps2 = new Set(analysis2.dependencies.map(d => d.name));\n    const newDependencies = analysis2.dependencies.filter(d => !deps1.has(d.name)).map(d => d.name);\n    const removedDependencies = analysis1.dependencies.filter(d => !deps2.has(d.name)).map(d => d.name);\n\n    return {\n      sizeDifference,\n      sizeDifferencePercent,\n      moduleCountDifference,\n      dependencyCountDifference,\n      newModules,\n      removedModules,\n      newDependencies,\n      removedDependencies\n    };\n  }\n\n  /**\n   * Get bundle optimization suggestions\n   *\n   * @param bundleName - Bundle name\n   * @returns Optimization suggestions\n   */\n  getOptimizationSuggestions(bundleName: string): {\n    duplicateModules: string[];\n    largeModules: string[];\n    unusedDependencies: string[];\n    codeSplittingOpportunities: string[];\n    compressionOpportunities: string[];\n  } {\n    const analysis = this.analyses.get(bundleName);\n    if (!analysis) {\n      throw new Error('Bundle analysis not found');\n    }\n\n    // Find duplicate modules\n    const moduleCounts = new Map<string, number>();\n    for (const module of analysis.modules) {\n      moduleCounts.set(module.name, (moduleCounts.get(module.name) || 0) + 1);\n    }\n    const duplicateModules = Array.from(moduleCounts.entries())\n      .filter(([_, count]) => count > 1)\n      .map(([name, _]) => name);\n\n    // Find large modules (over 100KB)\n    const largeModules = analysis.modules\n      .filter(module => module.size > 100 * 1024)\n      .map(module => module.name);\n\n    // Find unused dependencies (this would require more sophisticated analysis)\n    const unusedDependencies: string[] = [];\n\n    // Code splitting opportunities (modules that could be lazy loaded)\n    const codeSplittingOpportunities = analysis.modules\n      .filter(module => module.size > 50 * 1024 && !module.name.includes('vendor'))\n      .map(module => module.name);\n\n    // Compression opportunities\n    const compressionOpportunities = analysis.modules\n      .filter(module => module.size > 10 * 1024)\n      .map(module => module.name);\n\n    return {\n      duplicateModules,\n      largeModules,\n      unusedDependencies,\n      codeSplittingOpportunities,\n      compressionOpportunities\n    };\n  }\n\n  /**\n   * Get bundle statistics\n   *\n   * @param bundleName - Bundle name\n   * @returns Bundle statistics\n   */\n  getBundleStats(bundleName: string): {\n    totalSize: number;\n    gzippedSize: number;\n    moduleCount: number;\n    dependencyCount: number;\n    averageModuleSize: number;\n    largestModule: string;\n    largestModuleSize: number;\n  } {\n    const analysis = this.analyses.get(bundleName);\n    if (!analysis) {\n      throw new Error('Bundle analysis not found');\n    }\n\n    const totalSize = analysis.size;\n    const gzippedSize = analysis.gzippedSize;\n    const moduleCount = analysis.modules.length;\n    const dependencyCount = analysis.dependencies.length;\n    const averageModuleSize = totalSize / moduleCount || 0;\n\n        const largestModule = analysis.modules.length > 0\n      ? analysis.modules.reduce((largest, current) =>\n          current.size > largest.size ? current : largest\n        )\n      : null;\n    const largestModuleSize = largestModule ? largestModule.size : 0;\n\n    return {\n      totalSize,\n      gzippedSize,\n      moduleCount,\n      dependencyCount,\n      averageModuleSize,\n      largestModule: largestModule ? largestModule.name : '',\n      largestModuleSize\n    };\n  }\n\n  /**\n   * Clear all bundle analyses\n   */\n  clearAnalyses(): void {\n    this.analyses.clear();\n    this.emit('analysesCleared');\n  }\n\n  /**\n   * Simulate bundle analysis (placeholder implementation)\n   *\n   * @param bundlePath - Path to bundle file\n   * @param analysis - Analysis object to populate\n   */\n  private async simulateBundleAnalysis(bundlePath: string, analysis: BundleAnalysis): Promise<void> {\n    // Simulate file reading and analysis\n    const fs = await import('fs/promises');\n\n    try {\n      const stats = await fs.stat(bundlePath);\n      analysis.size = stats.size;\n      analysis.gzippedSize = Math.round(analysis.size * 0.3); // Simulate 30% compression\n\n      // Simulate modules\n      analysis.modules = [\n        {\n          name: 'main.js',\n          size: Math.round(analysis.size * 0.6),\n          dependencies: ['react', 'react-dom'],\n          exports: ['App', 'main'],\n          path: bundlePath\n        },\n        {\n          name: 'vendor.js',\n          size: Math.round(analysis.size * 0.4),\n          dependencies: ['lodash', 'moment'],\n          exports: ['vendor'],\n          path: bundlePath\n        }\n      ];\n\n      // Simulate chunks\n      analysis.chunks = [\n        {\n          name: 'main',\n          size: analysis.modules[0]?.size || 0,\n          modules: ['main.js'],\n          entry: true\n        },\n        {\n          name: 'vendor',\n          size: analysis.modules[1]?.size || 0,\n          modules: ['vendor.js'],\n          entry: false\n        }\n      ];\n\n      // Simulate dependencies\n      analysis.dependencies = [\n        {\n          name: 'react',\n          version: '18.2.0',\n          size: 100 * 1024,\n          type: 'production'\n        },\n        {\n          name: 'react-dom',\n          version: '18.2.0',\n          size: 150 * 1024,\n          type: 'production'\n        },\n        {\n          name: 'lodash',\n          version: '4.17.21',\n          size: 70 * 1024,\n          type: 'production'\n        }\n      ];\n    } catch (error) {\n      analysis.errors.push(`Failed to analyze bundle: ${error instanceof Error ? error.message : String(error)}`);\n    }\n  }\n\n  /**\n   * Start WebSocket server for bundle analyzer 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 bundle analyzer...');\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 bundle analyzer...');\n  }\n}\n","/**\n * @fileoverview OrdoJS Dev Tools - Development Server\n *\n * Enhanced development server with all dev tools integration.\n */\n\nimport { EventEmitter } from 'events';\nimport type { DevServerConfig } from '../types/index.js';\n\n/**\n * Enhanced development server with dev tools integration\n */\nexport class DevelopmentServer extends EventEmitter {\n  private config: DevServerConfig;\n  private isRunning: boolean;\n  private server: any; // Express server instance\n\n  /**\n   * Create a new DevelopmentServer instance\n   *\n   * @param config - Development server configuration\n   */\n  constructor(config: DevServerConfig) {\n    super();\n\n    this.config = config;\n    this.isRunning = false;\n    this.server = null;\n  }\n\n  /**\n   * Start the development server\n   */\n  async start(): Promise<void> {\n    if (this.isRunning) {\n      console.warn('Development server is already running');\n      return;\n    }\n\n    try {\n      // Initialize Express server\n      await this.initializeServer();\n\n      // Start the server\n      await this.startServer();\n\n      this.isRunning = true;\n      console.log(`Development server started on http://${this.config.host}:${this.config.port}`);\n\n      this.emit('started');\n    } catch (error) {\n      console.error('Failed to start development server:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Stop the development server\n   */\n  async stop(): Promise<void> {\n    if (!this.isRunning) {\n      console.warn('Development server is not running');\n      return;\n    }\n\n    try {\n      // Stop the server\n      await this.stopServer();\n\n      this.isRunning = false;\n      console.log('Development server stopped');\n\n      this.emit('stopped');\n    } catch (error) {\n      console.error('Failed to stop development server:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Get server status\n   *\n   * @returns Server status information\n   */\n  getStatus(): {\n    isRunning: boolean;\n    port: number;\n    host: string;\n    config: DevServerConfig;\n  } {\n    return {\n      isRunning: this.isRunning,\n      port: this.config.port,\n      host: this.config.host,\n      config: this.config\n    };\n  }\n\n  /**\n   * Update server configuration\n   *\n   * @param newConfig - New configuration\n   */\n  updateConfig(newConfig: Partial<DevServerConfig>): void {\n    this.config = { ...this.config, ...newConfig };\n    this.emit('configUpdated', this.config);\n  }\n\n  /**\n   * Initialize Express server\n   */\n  private async initializeServer(): Promise<void> {\n    try {\n      const express = await import('express');\n      const cors = await import('cors');\n      const compression = await import('compression');\n      const serveStatic = await import('serve-static');\n      const morgan = await import('morgan');\n      const helmet = await import('helmet');\n\n      const app = express.default();\n\n      // Security middleware\n      if (this.config.cors) {\n        app.use(cors.default());\n      }\n\n      if (this.config.compression) {\n        app.use(compression.default());\n      }\n\n      app.use(helmet.default());\n\n      // Logging middleware\n      app.use(morgan.default('combined'));\n\n      // Static file serving\n      app.use(serveStatic.default(this.config.staticDir));\n\n      // API routes for dev tools\n      this.setupDevToolsRoutes(app);\n\n      // Error handling middleware\n      app.use(this.errorHandler.bind(this));\n\n      this.server = app;\n    } catch (error) {\n      console.error('Failed to initialize Express server:', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Start the server\n   */\n  private async startServer(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (!this.server) {\n        reject(new Error('Server not initialized'));\n        return;\n      }\n\n      const server = this.server.listen(this.config.port, this.config.host, () => {\n        console.log(`Development server listening on http://${this.config.host}:${this.config.port}`);\n        resolve();\n      });\n\n      server.on('error', (error: Error) => {\n        console.error('Server error:', error);\n        reject(error);\n      });\n    });\n  }\n\n  /**\n   * Stop the server\n   */\n  private async stopServer(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (!this.server) {\n        resolve();\n        return;\n      }\n\n      const server = this.server;\n      server.close((error: Error | undefined) => {\n        if (error) {\n          console.error('Error stopping server:', error);\n          reject(error);\n        } else {\n          console.log('Server stopped');\n          resolve();\n        }\n      });\n    });\n  }\n\n  /**\n   * Setup dev tools API routes\n   *\n   * @param app - Express app instance\n   */\n  private setupDevToolsRoutes(app: any): void {\n    // Health check endpoint\n    app.get('/api/dev-tools/health', (req: any, res: any) => {\n      res.json({\n        status: 'healthy',\n        timestamp: new Date().toISOString(),\n        config: this.config\n      });\n    });\n\n    // Component inspector endpoint\n    app.get('/api/dev-tools/inspector', (req: any, res: any) => {\n      res.json({\n        components: [],\n        stats: {\n          totalComponents: 0,\n          totalRenderCount: 0,\n          averageRenderTime: 0,\n          peakMemoryUsage: 0\n        }\n      });\n    });\n\n    // Performance profiler endpoint\n    app.get('/api/dev-tools/profiler', (req: any, res: any) => {\n      res.json({\n        profiles: [],\n        stats: {\n          totalProfiles: 0,\n          activeProfiles: 0,\n          totalMeasurements: 0,\n          averageProfileDuration: 0\n        }\n      });\n    });\n\n    // AST explorer endpoint\n    app.get('/api/dev-tools/ast-explorer', (req: any, res: any) => {\n      res.json({\n        asts: [],\n        stats: {\n          totalASTs: 0,\n          totalNodes: 0,\n          averageDepth: 0\n        }\n      });\n    });\n\n    // Bundle analyzer endpoint\n    app.get('/api/dev-tools/bundle-analyzer', (req: any, res: any) => {\n      res.json({\n        analyses: [],\n        stats: {\n          totalAnalyses: 0,\n          totalSize: 0,\n          averageSize: 0\n        }\n      });\n    });\n\n    // Error overlay endpoint\n    app.get('/api/dev-tools/error-overlay', (req: any, res: any) => {\n      res.json({\n        errors: [],\n        stats: {\n          totalErrors: 0,\n          errorsByType: {},\n          errorsByFile: {}\n        }\n      });\n    });\n\n    // HMR endpoint\n    app.get('/api/dev-tools/hmr', (req: any, res: any) => {\n      res.json({\n        updates: [],\n        stats: {\n          totalUpdates: 0,\n          updatesByType: {},\n          updatesByFile: {},\n          averageUpdateTime: 0\n        }\n      });\n    });\n  }\n\n  /**\n   * Error handling middleware\n   *\n   * @param err - Error object\n   * @param req - Request object\n   * @param res - Response object\n   * @param next - Next function\n   */\n  private errorHandler(err: Error, req: any, res: any, next: any): void {\n    console.error('Server error:', err);\n\n    res.status(500).json({\n      error: {\n        message: err.message,\n        stack: process.env.NODE_ENV === 'development' ? err.stack : undefined\n      }\n    });\n  }\n}\n","/**\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","/**\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","/**\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","/**\n * @fileoverview OrdoJS Dev Tools - Performance Profiler\n *\n * Performance profiler for analyzing and optimizing application performance.\n */\n\nimport { EventEmitter } from 'events';\nimport type { PerformanceMeasurement, PerformanceProfile } from '../types/index.js';\n\n/**\n * Performance profiler for analyzing application performance\n */\nexport class PerformanceProfiler extends EventEmitter {\n  private profiles: Map<string, PerformanceProfile>;\n  private activeProfiles: Map<string, PerformanceProfile>;\n  private measurements: Map<string, PerformanceMeasurement[]>;\n  private isRunning: boolean;\n  private port: number;\n\n  /**\n   * Create a new PerformanceProfiler instance\n   *\n   * @param port - WebSocket port for profiler\n   */\n  constructor(port: number = 24680) {\n    super();\n\n    this.profiles = new Map();\n    this.activeProfiles = new Map();\n    this.measurements = new Map();\n    this.isRunning = false;\n    this.port = port;\n  }\n\n  /**\n   * Start the performance profiler\n   */\n  async start(): Promise<void> {\n    if (this.isRunning) {\n      console.warn('Performance profiler is already running');\n      return;\n    }\n\n    try {\n      // Start WebSocket server for profiler communication\n      await this.startWebSocketServer();\n\n      this.isRunning = true;\n      console.log(`Performance profiler started on port ${this.port}`);\n\n      this.emit('started');\n    } catch (error) {\n      console.error('Failed to start performance profiler:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Stop the performance profiler\n   */\n  async stop(): Promise<void> {\n    if (!this.isRunning) {\n      console.warn('Performance profiler is not running');\n      return;\n    }\n\n    try {\n      // Stop all active profiles\n      for (const [name, profile] of this.activeProfiles) {\n        await this.stopProfile(name);\n      }\n\n      // Clean up WebSocket server\n      await this.stopWebSocketServer();\n\n      this.isRunning = false;\n      console.log('Performance profiler stopped');\n\n      this.emit('stopped');\n    } catch (error) {\n      console.error('Failed to stop performance profiler:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Start a performance profile\n   *\n   * @param name - Profile name\n   * @param metadata - Profile metadata\n   * @returns Profile instance\n   */\n  startProfile(name: string, metadata: Record<string, any> = {}): PerformanceProfile {\n    if (this.activeProfiles.has(name)) {\n      throw new Error(`Profile '${name}' is already active`);\n    }\n\n    const profile: PerformanceProfile = {\n      name,\n      startTime: performance.now(),\n      endTime: 0,\n      duration: 0,\n      measurements: [],\n      metadata\n    };\n\n    this.activeProfiles.set(name, profile);\n    this.emit('profileStarted', profile);\n\n    return profile;\n  }\n\n  /**\n   * Stop a performance profile\n   *\n   * @param name - Profile name\n   * @returns Completed profile\n   */\n  stopProfile(name: string): PerformanceProfile {\n    const profile = this.activeProfiles.get(name);\n    if (!profile) {\n      throw new Error(`Profile '${name}' is not active`);\n    }\n\n    profile.endTime = performance.now();\n    profile.duration = profile.endTime - profile.startTime;\n\n    this.activeProfiles.delete(name);\n    this.profiles.set(name, profile);\n\n    this.emit('profileStopped', profile);\n\n    return profile;\n  }\n\n  /**\n   * Add a performance measurement\n   *\n   * @param profileName - Profile name\n   * @param measurementName - Measurement name\n   * @param category - Measurement category\n   * @param metadata - Measurement metadata\n   * @returns Measurement instance\n   */\n  addMeasurement(\n    profileName: string,\n    measurementName: string,\n    category: string = 'general',\n    metadata: Record<string, any> = {}\n  ): PerformanceMeasurement {\n    const profile = this.activeProfiles.get(profileName);\n    if (!profile) {\n      throw new Error(`Profile '${profileName}' is not active`);\n    }\n\n    const measurement: PerformanceMeasurement = {\n      name: measurementName,\n      startTime: performance.now(),\n      endTime: 0,\n      duration: 0,\n      category,\n      metadata\n    };\n\n    if (!this.measurements.has(profileName)) {\n      this.measurements.set(profileName, []);\n    }\n\n    this.measurements.get(profileName)!.push(measurement);\n    profile.measurements.push(measurement);\n\n    this.emit('measurementAdded', measurement);\n\n    return measurement;\n  }\n\n  /**\n   * End a performance measurement\n   *\n   * @param profileName - Profile name\n   * @param measurementName - Measurement name\n   * @returns Completed measurement\n   */\n  endMeasurement(profileName: string, measurementName: string): PerformanceMeasurement {\n    const profile = this.activeProfiles.get(profileName);\n    if (!profile) {\n      throw new Error(`Profile '${profileName}' is not active`);\n    }\n\n    const measurements = this.measurements.get(profileName);\n    if (!measurements) {\n      throw new Error(`No measurements found for profile '${profileName}'`);\n    }\n\n    const measurement = measurements.find(m => m.name === measurementName);\n    if (!measurement) {\n      throw new Error(`Measurement '${measurementName}' not found in profile '${profileName}'`);\n    }\n\n    measurement.endTime = performance.now();\n    measurement.duration = measurement.endTime - measurement.startTime;\n\n    this.emit('measurementEnded', measurement);\n\n    return measurement;\n  }\n\n  /**\n   * Get a profile by name\n   *\n   * @param name - Profile name\n   * @returns Profile or undefined\n   */\n  getProfile(name: string): PerformanceProfile | undefined {\n    return this.profiles.get(name) || this.activeProfiles.get(name);\n  }\n\n  /**\n   * Get all profiles\n   *\n   * @returns Array of all profiles\n   */\n  getAllProfiles(): PerformanceProfile[] {\n    return Array.from(this.profiles.values());\n  }\n\n  /**\n   * Get active profiles\n   *\n   * @returns Array of active profiles\n   */\n  getActiveProfiles(): PerformanceProfile[] {\n    return Array.from(this.activeProfiles.values());\n  }\n\n  /**\n   * Clear all profiles\n   */\n  clearProfiles(): void {\n    this.profiles.clear();\n    this.activeProfiles.clear();\n    this.measurements.clear();\n    this.emit('profilesCleared');\n  }\n\n  /**\n   * Get profiler statistics\n   *\n   * @returns Profiler statistics\n   */\n  getStats(): {\n    totalProfiles: number;\n    activeProfiles: number;\n    totalMeasurements: number;\n    averageProfileDuration: number;\n  } {\n    const allProfiles = Array.from(this.profiles.values());\n    const totalMeasurements = allProfiles.reduce((sum, profile) => sum + profile.measurements.length, 0);\n    const averageProfileDuration = allProfiles.reduce((sum, profile) => sum + profile.duration, 0) / allProfiles.length || 0;\n\n    return {\n      totalProfiles: allProfiles.length,\n      activeProfiles: this.activeProfiles.size,\n      totalMeasurements,\n      averageProfileDuration\n    };\n  }\n\n  /**\n   * Start WebSocket server for profiler 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 performance profiler...');\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 performance profiler...');\n  }\n}\n","/**\n * @fileoverview OrdoJS Dev Tools - Main Entry Point\n *\n * Advanced developer tools for OrdoJS with component inspector, AST explorer,\n * performance profiling, and enhanced development experience.\n */\n\n// Core dev tools exports\nexport * from './ast-explorer/index.js';\nexport * from './bundle-analyzer/index.js';\nexport * from './development-server/index.js';\nexport * from './error-overlay/index.js';\nexport * from './hmr/index.js';\nexport * from './inspector/index.js';\nexport * from './profiler/index.js';\n\n// Dev tools manager\nexport { DevToolsManager } from './manager.js';\n\n// Types\nexport type * from './types/index.js';\n","/**\n * @fileoverview OrdoJS Dev Tools - Manager\n *\n * Central manager for coordinating all dev tools functionality.\n */\n\nimport { EventEmitter } from 'events';\nimport type { DevToolsConfig } from './types/index.js';\n\n/**\n * Dev tools manager for coordinating all development tools\n */\nexport class DevToolsManager extends EventEmitter {\n  private config: DevToolsConfig;\n  private isRunning: boolean;\n  private tools: Map<string, any>;\n\n  /**\n   * Create a new DevToolsManager instance\n   *\n   * @param config - Dev tools configuration\n   */\n  constructor(config: Partial<DevToolsConfig> = {}) {\n    super();\n\n    this.config = {\n      inspector: true,\n      profiler: true,\n      astExplorer: true,\n      bundleAnalyzer: true,\n      errorOverlay: true,\n      enhancedHMR: true,\n      devServer: {\n        port: 3000,\n        host: 'localhost',\n        hmr: true,\n        https: false,\n        compression: true,\n        cors: true,\n        staticDir: 'dist'\n      },\n      ...config\n    };\n\n    this.isRunning = false;\n    this.tools = new Map();\n  }\n\n  /**\n   * Start all dev tools\n   */\n  async start(): Promise<void> {\n    if (this.isRunning) {\n      console.warn('Dev tools are already running');\n      return;\n    }\n\n    console.log('Starting OrdoJS Dev Tools...');\n\n    try {\n      // Initialize tools based on configuration\n      await this.initializeTools();\n\n      // Start enabled tools\n      await this.startEnabledTools();\n\n      this.isRunning = true;\n      console.log('Dev tools started successfully');\n\n      this.emit('started');\n    } catch (error) {\n      console.error('Failed to start dev tools:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Stop all dev tools\n   */\n  async stop(): Promise<void> {\n    if (!this.isRunning) {\n      console.warn('Dev tools are not running');\n      return;\n    }\n\n    console.log('Stopping OrdoJS Dev Tools...');\n\n    try {\n      // Stop all tools\n      for (const [name, tool] of this.tools) {\n        if (tool && typeof tool.stop === 'function') {\n          await tool.stop();\n        }\n      }\n\n      this.isRunning = false;\n      console.log('Dev tools stopped successfully');\n\n      this.emit('stopped');\n    } catch (error) {\n      console.error('Failed to stop dev tools:', error);\n      this.emit('error', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Get tool by name\n   *\n   * @param name - Tool name\n   * @returns Tool instance or undefined\n   */\n  getTool(name: string): any {\n    return this.tools.get(name);\n  }\n\n  /**\n   * Get all tools\n   *\n   * @returns Map of all tools\n   */\n  getAllTools(): Map<string, any> {\n    return new Map(this.tools);\n  }\n\n  /**\n   * Get dev tools status\n   *\n   * @returns Status information\n   */\n  getStatus(): {\n    isRunning: boolean;\n    tools: string[];\n    config: DevToolsConfig;\n  } {\n    return {\n      isRunning: this.isRunning,\n      tools: Array.from(this.tools.keys()),\n      config: this.config\n    };\n  }\n\n  /**\n   * Update configuration\n   *\n   * @param newConfig - New configuration\n   */\n  updateConfig(newConfig: Partial<DevToolsConfig>): void {\n    this.config = { ...this.config, ...newConfig };\n    this.emit('configUpdated', this.config);\n  }\n\n  /**\n   * Initialize all tools\n   */\n  private async initializeTools(): Promise<void> {\n    // Initialize component inspector\n    if (this.config.inspector) {\n      try {\n        const { ComponentInspector } = await import('./inspector/index.js');\n        this.tools.set('inspector', new ComponentInspector());\n      } catch (error) {\n        console.warn('Failed to initialize component inspector:', error);\n      }\n    }\n\n    // Initialize performance profiler\n    if (this.config.profiler) {\n      try {\n        const { PerformanceProfiler } = await import('./profiler/index.js');\n        this.tools.set('profiler', new PerformanceProfiler());\n      } catch (error) {\n        console.warn('Failed to initialize performance profiler:', error);\n      }\n    }\n\n    // Initialize AST explorer\n    if (this.config.astExplorer) {\n      try {\n        const { ASTExplorer } = await import('./ast-explorer/index.js');\n        this.tools.set('astExplorer', new ASTExplorer());\n      } catch (error) {\n        console.warn('Failed to initialize AST explorer:', error);\n      }\n    }\n\n    // Initialize bundle analyzer\n    if (this.config.bundleAnalyzer) {\n      try {\n        const { BundleAnalyzer } = await import('./bundle-analyzer/index.js');\n        this.tools.set('bundleAnalyzer', new BundleAnalyzer());\n      } catch (error) {\n        console.warn('Failed to initialize bundle analyzer:', error);\n      }\n    }\n\n    // Initialize error overlay\n    if (this.config.errorOverlay) {\n      try {\n        const { ErrorOverlay } = await import('./error-overlay/index.js');\n        this.tools.set('errorOverlay', new ErrorOverlay());\n      } catch (error) {\n        console.warn('Failed to initialize error overlay:', error);\n      }\n    }\n\n    // Initialize enhanced HMR\n    if (this.config.enhancedHMR) {\n      try {\n        const { EnhancedHMR } = await import('./hmr/index.js');\n        this.tools.set('enhancedHMR', new EnhancedHMR());\n      } catch (error) {\n        console.warn('Failed to initialize enhanced HMR:', error);\n      }\n    }\n\n    // Initialize development server\n    try {\n      const { DevelopmentServer } = await import('./development-server/index.js');\n      this.tools.set('devServer', new DevelopmentServer(this.config.devServer));\n    } catch (error) {\n      console.warn('Failed to initialize development server:', error);\n    }\n  }\n\n  /**\n   * Start enabled tools\n   */\n  private async startEnabledTools(): Promise<void> {\n    for (const [name, tool] of this.tools) {\n      if (tool && typeof tool.start === 'function') {\n        try {\n          await tool.start();\n          console.log(`Started ${name}`);\n        } catch (error) {\n          console.warn(`Failed to start ${name}:`, error);\n        }\n      }\n    }\n  }\n}\n"]}