@coherent.js/runtime 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1119 -0
- package/dist/coherent-browser.cjs +304 -0
- package/dist/coherent-browser.cjs.map +7 -0
- package/dist/coherent-browser.js +279 -0
- package/dist/coherent-browser.js.map +7 -0
- package/dist/coherent-edge.cjs +458 -0
- package/dist/coherent-edge.cjs.map +7 -0
- package/dist/coherent-edge.js +430 -0
- package/dist/coherent-edge.js.map +7 -0
- package/dist/coherent-node.cjs +330 -0
- package/dist/coherent-node.cjs.map +7 -0
- package/dist/coherent-node.js +304 -0
- package/dist/coherent-node.js.map +7 -0
- package/dist/coherent-standalone.esm.js +279 -0
- package/dist/coherent-standalone.esm.js.map +7 -0
- package/dist/coherent-standalone.js +2 -0
- package/dist/coherent-standalone.js.map +7 -0
- package/dist/coherent-static.cjs +356 -0
- package/dist/coherent-static.cjs.map +7 -0
- package/dist/coherent-static.js +331 -0
- package/dist/coherent-static.js.map +7 -0
- package/dist/coherent-universal.cjs +3294 -0
- package/dist/coherent-universal.cjs.map +7 -0
- package/dist/coherent-universal.js +3254 -0
- package/dist/coherent-universal.js.map +7 -0
- package/dist/coherent-universal.min.js +2 -0
- package/dist/coherent-universal.min.js.map +7 -0
- package/package.json +92 -0
- package/types/browser.d.ts +2 -0
- package/types/edge.d.ts +2 -0
- package/types/index.d.ts +118 -0
- package/types/static.d.ts +2 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtimes/browser.js", "../src/runtimes/edge.js", "../src/runtimes/static.js", "../src/runtimes/node.js", "../src/index.js", "../src/runtimes/desktop.js", "../src/loaders/universal-loader.js", "../src/loaders/component-loader.js", "../src/runtime-factory.js", "../src/utils/runtime-detector.js", "../src/utils/module-resolver.js", "../src/utils/asset-manager.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * Browser Runtime - Full client-side Coherent.js runtime\n * Works in browsers, Electron, and Tauri\n */\n\nimport { render, withState, memo } from '@coherent.js/core';\nimport { hydrate, autoHydrate, makeHydratable } from '@coherent.js/client';\nimport { integrateWithWebComponents, defineCoherentElement } from '@coherent.js/web-components';\n\nexport class BrowserRuntime {\n constructor(options = {}) {\n this.options = {\n autoHydrate: true,\n enableWebComponents: true,\n enablePerformanceMonitoring: true,\n routingMode: 'hash', // 'hash', 'history', or 'memory'\n ...options\n };\n \n this.componentRegistry = new Map();\n this.routeRegistry = new Map();\n this.currentRoute = null;\n this.isInitialized = false;\n \n // Performance tracking\n this.renderMetrics = [];\n this.startTime = Date.now();\n }\n\n async initialize() {\n if (this.isInitialized) return;\n\n // Wait for DOM to be ready\n if (document.readyState === 'loading') {\n await new Promise(resolve => {\n document.addEventListener('DOMContentLoaded', resolve);\n });\n }\n\n // Initialize Web Components integration\n if (this.options.enableWebComponents) {\n await this.initializeWebComponents();\n }\n\n // Initialize routing\n if (this.options.routingMode !== 'none') {\n this.initializeRouting();\n }\n\n // Auto-hydrate existing components\n if (this.options.autoHydrate) {\n await this.autoHydrate();\n }\n\n // Initialize performance monitoring\n if (this.options.enablePerformanceMonitoring) {\n this.initializePerformanceMonitoring();\n }\n\n this.isInitialized = true;\n }\n\n async initializeWebComponents() {\n try {\n await integrateWithWebComponents(\n Object.fromEntries(this.componentRegistry), \n this.options.webComponents || {}\n );\n } catch (error) {\n console.warn('Failed to initialize Web Components:', error);\n }\n }\n\n initializeRouting() {\n const handleRouteChange = () => {\n const newRoute = this.getCurrentRoute();\n if (newRoute !== this.currentRoute) {\n this.handleRouteChange(this.currentRoute, newRoute);\n this.currentRoute = newRoute;\n }\n };\n\n if (this.options.routingMode === 'hash') {\n window.addEventListener('hashchange', handleRouteChange);\n } else if (this.options.routingMode === 'history') {\n window.addEventListener('popstate', handleRouteChange);\n }\n\n // Handle initial route\n this.currentRoute = this.getCurrentRoute();\n handleRouteChange();\n }\n\n getCurrentRoute() {\n if (this.options.routingMode === 'hash') {\n return window.location.hash.slice(1) || '/';\n } else if (this.options.routingMode === 'history') {\n return window.location.pathname;\n }\n return '/';\n }\n\n handleRouteChange(oldRoute, newRoute) {\n const handler = this.routeRegistry.get(newRoute) || this.routeRegistry.get('*');\n \n if (handler) {\n try {\n handler({ route: newRoute, oldRoute, params: this.parseRouteParams(newRoute) });\n } catch (error) {\n console.error('Route handler error:', error);\n }\n }\n }\n\n parseRouteParams(route) {\n // Simple parameter parsing - can be enhanced\n const params = {};\n const parts = route.split('/').filter(Boolean);\n \n parts.forEach((part, index) => {\n if (part.startsWith(':')) {\n const key = part.slice(1);\n const value = parts[index];\n if (value && !value.startsWith(':')) {\n params[key] = value;\n }\n }\n });\n \n return params;\n }\n\n initializePerformanceMonitoring() {\n // Monitor render performance\n if (typeof window === 'undefined' || typeof window.PerformanceObserver === 'undefined') return;\n const observer = new window.PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (entry.name.includes('coherent')) {\n this.renderMetrics.push({\n name: entry.name,\n duration: entry.duration,\n startTime: entry.startTime,\n timestamp: Date.now()\n });\n }\n }\n });\n\n try {\n observer.observe({ entryTypes: ['measure', 'mark'] });\n } catch (error) {\n console.warn('Performance monitoring not available:', error);\n }\n\n // Clean up old metrics periodically\n setInterval(() => {\n const cutoff = Date.now() - 300000; // 5 minutes\n this.renderMetrics = this.renderMetrics.filter(m => m.timestamp > cutoff);\n }, 60000); // Every minute\n }\n\n // Component management\n registerComponent(name, component, options = {}) {\n // Make component hydratable\n const hydratableComponent = makeHydratable(component, {\n componentName: name,\n ...options\n });\n\n this.componentRegistry.set(name, hydratableComponent);\n\n // Register as Web Component if enabled\n if (this.options.enableWebComponents && this.isInitialized) {\n try {\n defineCoherentElement(name, hydratableComponent, options);\n } catch (error) {\n console.warn(`Failed to register Web Component ${name}:`, error);\n }\n }\n\n return hydratableComponent;\n }\n\n getComponent(name) {\n return this.componentRegistry.get(name);\n }\n\n // Routing\n addRoute(path, handler) {\n this.routeRegistry.set(path, handler);\n }\n\n navigate(path) {\n if (this.options.routingMode === 'hash') {\n window.location.hash = path;\n } else if (this.options.routingMode === 'history') {\n window.history.pushState({}, '', path);\n this.handleRouteChange(this.currentRoute, path);\n this.currentRoute = path;\n }\n }\n\n // Rendering\n async render(component, props = {}, target = null) {\n const startMark = `coherent-render-start-${Date.now()}`;\n const endMark = `coherent-render-end-${Date.now()}`;\n \n try {\n performance.mark(startMark);\n\n // Resolve component\n const resolvedComponent = typeof component === 'string' \n ? this.getComponent(component) \n : component;\n\n if (!resolvedComponent) {\n throw new Error(`Component not found: ${component}`);\n }\n\n // Render component\n const vdom = resolvedComponent(props);\n const html = render(vdom);\n\n // Find or create target element\n let targetElement = target;\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n }\n if (!targetElement) {\n targetElement = document.body;\n }\n\n // Update DOM\n targetElement.innerHTML = html;\n\n // Hydrate the rendered component\n const instance = await hydrate(targetElement.firstElementChild, resolvedComponent, props);\n\n performance.mark(endMark);\n performance.measure(`coherent-render-${resolvedComponent.name || 'anonymous'}`, startMark, endMark);\n\n return instance;\n } catch (error) {\n performance.mark(endMark);\n console.error('Render error:', error);\n throw error;\n }\n }\n\n // Create a complete app\n async createApp(_options = {}) {\n await this.initialize();\n \n return {\n // Component management\n component: (name, component, opts) => this.registerComponent(name, component, opts),\n \n // Routing\n route: (path, handler) => this.addRoute(path, handler),\n navigate: (path) => this.navigate(path),\n \n // Rendering\n render: (component, props, target) => this.render(component, props, target),\n \n // State management\n state: withState,\n memo: memo,\n \n // Hydration\n hydrate: (element, component, props) => hydrate(element, component, props),\n \n // Utilities\n getRuntime: () => this,\n getCurrentRoute: () => this.currentRoute,\n getPerformanceMetrics: () => [...this.renderMetrics],\n \n // Lifecycle\n mount: async (component, target = '#app') => {\n const app = await this.render(component, {}, target);\n return app;\n },\n \n unmount: (target = '#app') => {\n const element = typeof target === 'string' ? document.querySelector(target) : target;\n if (element) {\n element.innerHTML = '';\n }\n }\n };\n }\n\n // Auto-hydration\n async autoHydrate() {\n const componentMap = Object.fromEntries(this.componentRegistry);\n await autoHydrate(componentMap);\n }\n\n // Static methods for quick setup\n static async createQuickApp(components = {}, options = {}) {\n const runtime = new BrowserRuntime(options);\n \n // Register all components\n Object.entries(components).forEach(([name, component]) => {\n runtime.registerComponent(name, component);\n });\n \n return await runtime.createApp(options);\n }\n\n static async renderToPage(component, props = {}, target = '#app') {\n const runtime = new BrowserRuntime({ autoHydrate: false });\n await runtime.initialize();\n return await runtime.render(component, props, target);\n }\n\n // Performance utilities\n getPerformanceReport() {\n const now = Date.now();\n const uptime = now - this.startTime;\n const recentMetrics = this.renderMetrics.filter(m => m.timestamp >= now - 60000);\n \n const averageRenderTime = recentMetrics.length > 0\n ? recentMetrics.reduce((sum, m) => sum + m.duration, 0) / recentMetrics.length\n : 0;\n\n return {\n uptime,\n totalRenders: this.renderMetrics.length,\n recentRenders: recentMetrics.length,\n averageRenderTime: Math.round(averageRenderTime * 100) / 100,\n registeredComponents: this.componentRegistry.size,\n registeredRoutes: this.routeRegistry.size,\n currentRoute: this.currentRoute,\n memoryUsage: this.getMemoryUsage()\n };\n }\n\n getMemoryUsage() {\n if (typeof performance !== 'undefined' && performance.memory) {\n return {\n used: Math.round(performance.memory.usedJSHeapSize / 1024 / 1024),\n total: Math.round(performance.memory.totalJSHeapSize / 1024 / 1024),\n limit: Math.round(performance.memory.jsHeapSizeLimit / 1024 / 1024)\n };\n }\n return null;\n }\n\n // Development utilities\n debug() {\n return {\n runtime: this,\n components: Array.from(this.componentRegistry.keys()),\n routes: Array.from(this.routeRegistry.keys()),\n performance: this.getPerformanceReport(),\n options: this.options\n };\n }\n}\n", "/**\n * Edge Runtime - For Cloudflare Workers, Deno, Bun, and other edge environments\n * Provides server-side rendering without Node.js dependencies\n */\n\nimport { render } from '@coherent.js/core';\n\nexport class EdgeRuntime {\n constructor(options = {}) {\n this.options = {\n caching: true,\n streaming: false,\n headers: {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Cache-Control': 'public, max-age=3600',\n ...options.headers\n },\n ...options\n };\n \n this.componentRegistry = new Map();\n this.routeRegistry = new Map();\n this.cache = new Map();\n this.middleware = [];\n this.renderCount = 0;\n \n // Initialize cache cleanup if caching is enabled\n if (this.options.caching) {\n this.initializeCacheCleanup();\n }\n }\n\n initializeCacheCleanup() {\n // Simple LRU-style cleanup\n if (typeof setInterval !== 'undefined') {\n setInterval(() => {\n if (this.cache.size > 1000) {\n const entries = Array.from(this.cache.entries());\n const toDelete = entries.slice(0, entries.length - 500);\n toDelete.forEach(([key]) => this.cache.delete(key));\n }\n }, 300000); // Every 5 minutes\n }\n }\n\n // Component management\n registerComponent(name, component) {\n this.componentRegistry.set(name, component);\n return component;\n }\n\n getComponent(name) {\n return this.componentRegistry.get(name);\n }\n\n // Route management\n addRoute(pattern, handler) {\n this.routeRegistry.set(pattern, handler);\n }\n\n matchRoute(pathname) {\n for (const [pattern, handler] of this.routeRegistry) {\n const match = this.matchPattern(pattern, pathname);\n if (match) {\n return { handler, params: match.params };\n }\n }\n return null;\n }\n\n matchPattern(pattern, pathname) {\n // Simple pattern matching - supports :param and * wildcards\n if (pattern === '*' || pattern === pathname) {\n return { params: {} };\n }\n\n const patternParts = pattern.split('/').filter(Boolean);\n const pathParts = pathname.split('/').filter(Boolean);\n\n if (patternParts.length !== pathParts.length) {\n return null;\n }\n\n const params = {};\n \n for (let i = 0; i < patternParts.length; i++) {\n const patternPart = patternParts[i];\n const pathPart = pathParts[i];\n\n if (patternPart.startsWith(':')) {\n // Parameter\n params[patternPart.slice(1)] = pathPart;\n } else if (patternPart !== pathPart) {\n // Literal mismatch\n return null;\n }\n }\n\n return { params };\n }\n\n // Rendering\n async renderComponent(component, props = {}, options = {}) {\n const _startTime = Date.now();\n \n try {\n // Resolve component\n const resolvedComponent = typeof component === 'string' \n ? this.getComponent(component) \n : component;\n\n if (!resolvedComponent) {\n throw new Error(`Component not found: ${component}`);\n }\n\n // Check cache\n const cacheKey = this.generateCacheKey(resolvedComponent, props);\n if (this.options.caching && this.cache.has(cacheKey)) {\n const cached = this.cache.get(cacheKey);\n if (Date.now() - cached.timestamp < (options.cacheMaxAge || 300000)) { // 5 min default\n return cached.html;\n }\n this.cache.delete(cacheKey);\n }\n\n // Render component\n const vdom = resolvedComponent(props);\n const html = render(vdom);\n\n // Cache result\n if (this.options.caching && options.cacheable !== false) {\n this.cache.set(cacheKey, {\n html,\n timestamp: Date.now()\n });\n }\n\n this.renderCount++;\n \n return html;\n } catch (error) {\n console.error('Edge render error:', error);\n throw error;\n } finally {\n // Track render time\n if (typeof performance !== 'undefined' && performance.mark) {\n performance.mark(`coherent-edge-render-${Date.now()}`);\n }\n }\n }\n\n generateCacheKey(component, props) {\n const componentName = component.name || 'anonymous';\n const propsHash = this.hashObject(props);\n return `${componentName}-${propsHash}`;\n }\n\n hashObject(obj) {\n const str = JSON.stringify(obj, Object.keys(obj).sort());\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash.toString(36);\n }\n\n // HTTP Request handling\n async handleRequest(request) {\n try {\n const url = new URL(request.url);\n const pathname = url.pathname;\n \n // Create context\n const context = {\n request,\n url,\n pathname,\n params: {},\n searchParams: Object.fromEntries(url.searchParams),\n method: request.method,\n headers: Object.fromEntries(request.headers),\n runtime: this,\n state: {} // Shared state for middleware\n };\n\n // Execute middleware chain\n let middlewareIndex = 0;\n const next = async () => {\n if (middlewareIndex < this.middleware.length) {\n const middleware = this.middleware[middlewareIndex++];\n return await middleware(context, next);\n }\n };\n\n // Run middleware\n if (this.middleware.length > 0) {\n await next();\n }\n\n // Check if middleware already sent a response\n if (context.response) {\n return context.response;\n }\n \n // Find matching route\n const match = this.matchRoute(pathname);\n \n if (!match) {\n return this.createErrorResponse(404, 'Not Found');\n }\n\n // Add route params to context\n context.params = match.params;\n\n // Execute route handler\n const result = await match.handler(context);\n \n // Handle different response types\n if (result instanceof Response) {\n return result;\n }\n\n if (typeof result === 'string') {\n return this.createHtmlResponse(result);\n }\n\n if (result && typeof result === 'object') {\n if (result.component) {\n // Render component\n const html = await this.renderComponent(\n result.component, \n result.props || {}, \n result.options || {}\n );\n return this.createHtmlResponse(html, result.status, result.headers);\n }\n\n if (result.json) {\n return this.createJsonResponse(result.json, result.status, result.headers);\n }\n\n if (result.redirect) {\n return Response.redirect(result.redirect, result.status || 302);\n }\n }\n\n // Default JSON response\n return this.createJsonResponse(result);\n\n } catch (error) {\n console.error('Request handling error:', error);\n return this.createErrorResponse(500, 'Internal Server Error');\n }\n }\n\n createHtmlResponse(html, status = 200, customHeaders = {}) {\n return new Response(html, {\n status,\n headers: {\n ...this.options.headers,\n ...customHeaders\n }\n });\n }\n\n createJsonResponse(data, status = 200, customHeaders = {}) {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n ...customHeaders\n }\n });\n }\n\n createErrorResponse(status, message) {\n const errorHtml = `\n <!DOCTYPE html>\n <html>\n <head>\n <title>Error ${status}</title>\n <style>\n body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }\n h1 { color: #e74c3c; }\n </style>\n </head>\n <body>\n <h1>Error ${status}</h1>\n <p>${message}</p>\n </body>\n </html>\n `;\n \n return new Response(errorHtml, {\n status,\n headers: { 'Content-Type': 'text/html; charset=utf-8' }\n });\n }\n\n // API Routes\n async handleApiRequest(request, handler) {\n try {\n const url = new URL(request.url);\n const context = {\n request,\n url,\n method: request.method,\n headers: Object.fromEntries(request.headers),\n searchParams: Object.fromEntries(url.searchParams),\n runtime: this\n };\n\n // Parse body for POST/PUT requests\n if (request.method === 'POST' || request.method === 'PUT') {\n const contentType = request.headers.get('content-type') || '';\n \n if (contentType.includes('application/json')) {\n context.body = await request.json();\n } else if (contentType.includes('application/x-www-form-urlencoded')) {\n const formData = await request.formData();\n context.body = Object.fromEntries(formData);\n } else {\n context.body = await request.text();\n }\n }\n\n const result = await handler(context);\n \n if (result instanceof Response) {\n return result;\n }\n \n return this.createJsonResponse(result);\n \n } catch (error) {\n console.error('API request error:', error);\n return this.createJsonResponse({ error: error.message }, 500);\n }\n }\n\n // Streaming support (for environments that support it)\n async renderStream(component, props = {}) {\n if (!this.options.streaming) {\n return await this.renderComponent(component, props);\n }\n\n // Implement streaming rendering with chunked output\n const encoder = new TextEncoder();\n let buffer = '';\n const chunkSize = this.options.streamChunkSize || 1024;\n\n // Create a readable stream\n const stream = new ReadableStream({\n async start(controller) {\n try {\n // Helper to flush buffer\n const flush = () => {\n if (buffer.length > 0) {\n controller.enqueue(encoder.encode(buffer));\n buffer = '';\n }\n };\n\n // Render component tree recursively with streaming\n const renderNode = async (node) => {\n if (!node || typeof node !== 'object') {\n if (node !== null && node !== undefined) {\n buffer += String(node);\n if (buffer.length >= chunkSize) {\n flush();\n }\n }\n return;\n }\n\n // Handle arrays\n if (Array.isArray(node)) {\n for (const child of node) {\n await renderNode(child);\n }\n return;\n }\n\n // Handle component objects\n for (const [tag, content] of Object.entries(node)) {\n if (typeof content === 'object' && content !== null) {\n // Opening tag\n buffer += `<${tag}`;\n \n // Attributes\n for (const [key, value] of Object.entries(content)) {\n if (key !== 'children' && key !== 'text' && value !== undefined) {\n buffer += ` ${key}=\"${String(value)}\"`;\n }\n }\n buffer += '>';\n \n // Flush if buffer is large\n if (buffer.length >= chunkSize) {\n flush();\n }\n\n // Text content\n if (content.text) {\n buffer += String(content.text);\n if (buffer.length >= chunkSize) {\n flush();\n }\n }\n\n // Children\n if (content.children) {\n await renderNode(content.children);\n }\n\n // Closing tag\n buffer += `</${tag}>`;\n if (buffer.length >= chunkSize) {\n flush();\n }\n } else {\n // Simple text content\n buffer += `<${tag}>${String(content)}</${tag}>`;\n if (buffer.length >= chunkSize) {\n flush();\n }\n }\n }\n };\n\n // Start rendering\n await renderNode(component);\n \n // Flush remaining buffer\n flush();\n \n // Close stream\n controller.close();\n } catch (error) {\n controller.error(error);\n }\n }\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Transfer-Encoding': 'chunked'\n }\n });\n }\n\n // Create app factory\n createApp() {\n const app = {\n // Component registration\n component: (name, component, opts) => this.registerComponent(name, component, opts),\n \n // Routing\n get: (pattern, handler) => this.addRoute(pattern, handler),\n post: (pattern, handler) => this.addRoute(pattern, handler),\n put: (pattern, handler) => this.addRoute(pattern, handler),\n delete: (pattern, handler) => this.addRoute(pattern, handler),\n route: (pattern, handler) => this.addRoute(pattern, handler),\n \n // API endpoints\n api: (pattern, handler) => {\n this.addRoute(pattern, (context) => this.handleApiRequest(context.request, handler));\n },\n \n // Static file serving (basic)\n static: (pattern) => {\n this.addRoute(pattern, async () => {\n // Basic static file handling\n // In a real implementation, this would serve actual files\n return this.createErrorResponse(404, 'Static file serving not implemented');\n });\n },\n \n // Middleware support\n use: (middleware) => {\n if (typeof middleware !== 'function') {\n throw new Error('Middleware must be a function');\n }\n this.middleware.push(middleware);\n return app;\n },\n \n // Request handler\n fetch: (request) => this.handleRequest(request),\n \n // Utilities\n render: (component, props, options) => this.renderComponent(component, props, options),\n getRuntime: () => this,\n getStats: () => ({\n renderCount: this.renderCount,\n cacheSize: this.cache.size,\n componentCount: this.componentRegistry.size,\n routeCount: this.routeRegistry.size\n })\n };\n\n return app;\n }\n\n // Static factory methods\n static createApp(options = {}) {\n const runtime = new EdgeRuntime(options);\n return runtime.createApp(options);\n }\n\n static async handleRequest(request, components = {}, routes = {}) {\n const runtime = new EdgeRuntime();\n \n // Register components\n Object.entries(components).forEach(([name, component]) => {\n runtime.registerComponent(name, component);\n });\n \n // Register routes\n Object.entries(routes).forEach(([pattern, handler]) => {\n runtime.addRoute(pattern, handler);\n });\n \n return await runtime.handleRequest(request);\n }\n}\n\n// Helper functions for common edge runtime patterns\n\nexport function createCloudflareWorker(app) {\n return {\n async fetch(request, _env, _ctx) {\n return await app.fetch(request);\n }\n };\n}\n\nexport function createDenoHandler(app) {\n return async (request) => {\n return await app.fetch(request);\n };\n}\n\nexport function createBunHandler(app) {\n return {\n async fetch(request) {\n return await app.fetch(request);\n },\n port: 3000\n };\n}\n", "/**\n * Static Runtime - For static site generation\n * Pre-renders components to static HTML files\n */\n\nimport { render } from '@coherent.js/core';\n\nexport class StaticRuntime {\n constructor(options = {}) {\n this.options = {\n outputDir: 'dist',\n baseUrl: '',\n generateSitemap: true,\n generateManifest: true,\n minifyHtml: true,\n inlineCSS: false,\n ...options\n };\n \n this.componentRegistry = new Map();\n this.pageRegistry = new Map();\n this.staticAssets = new Map();\n this.generatedPages = new Map();\n \n // Track build statistics\n this.buildStats = {\n startTime: Date.now(),\n pagesGenerated: 0,\n assetsProcessed: 0,\n totalSize: 0,\n errors: []\n };\n }\n\n // Component management\n registerComponent(name, component, options = {}) {\n this.componentRegistry.set(name, {\n component,\n options\n });\n return component;\n }\n\n getComponent(name) {\n const registration = this.componentRegistry.get(name);\n return registration ? registration.component : null;\n }\n\n // Page registration\n addPage(route, component, options = {}) {\n this.pageRegistry.set(route, {\n component: typeof component === 'string' ? this.getComponent(component) : component,\n options: {\n title: options.title || 'Page',\n description: options.description || '',\n keywords: options.keywords || '',\n generatePath: options.generatePath || this.routeToPath(route),\n props: options.props || {},\n ...options\n }\n });\n }\n\n routeToPath(route) {\n // Convert route pattern to static path\n // /users/:id -> /users/[id] (or similar static pattern)\n if (route === '/') return '/index.html';\n \n // Handle dynamic routes\n if (route.includes(':')) {\n // For static generation, dynamic routes need explicit paths\n console.warn(`Dynamic route ${route} requires explicit generatePath`);\n return null;\n }\n \n return route.endsWith('/') ? `${route}index.html` : `${route}.html`;\n }\n\n // Static asset management\n addAsset(path, content, options = {}) {\n this.staticAssets.set(path, {\n content,\n type: options.type || this.inferContentType(path),\n minify: options.minify !== false,\n ...options\n });\n }\n\n inferContentType(path) {\n const ext = path.split('.').pop().toLowerCase();\n const contentTypes = {\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'json': 'application/json',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'ico': 'image/x-icon'\n };\n return contentTypes[ext] || 'text/plain';\n }\n\n // HTML template generation\n generateHtmlDocument(content, options = {}) {\n const {\n title = 'Coherent.js App',\n description = '',\n keywords = '',\n lang = 'en',\n charset = 'utf-8',\n viewport = 'width=device-width, initial-scale=1',\n favicon = '/favicon.ico',\n styles = [],\n scripts = [],\n meta = [],\n bodyClass = '',\n hydrate = false,\n componentName = null,\n componentProps = {}\n } = options;\n\n const metaTags = [\n `<meta charset=\"${charset}\">`,\n `<meta name=\"viewport\" content=\"${viewport}\">`,\n description && `<meta name=\"description\" content=\"${description}\">`,\n keywords && `<meta name=\"keywords\" content=\"${keywords}\">`,\n ...meta.map(m => typeof m === 'string' ? m : `<meta ${Object.entries(m).map(([k, v]) => `${k}=\"${v}\"`).join(' ')}>`)\n ].filter(Boolean).join('\\n ');\n\n const styleTags = styles.map(style => \n typeof style === 'string' \n ? style.startsWith('<') ? style : `<link rel=\"stylesheet\" href=\"${style}\">`\n : `<style>${style.content}</style>`\n ).join('\\n ');\n\n const scriptTags = [\n ...scripts.map(script => \n typeof script === 'string' \n ? script.startsWith('<') ? script : `<script src=\"${script}\"></script>`\n : `<script>${script.content}</script>`\n ),\n // Add hydration script if enabled\n hydrate && this.generateHydrationScript(componentName, componentProps)\n ].filter(Boolean).join('\\n ');\n\n return `<!DOCTYPE html>\n<html lang=\"${lang}\">\n<head>\n ${metaTags}\n <title>${this.escapeHtml(title)}</title>\n <link rel=\"icon\" href=\"${favicon}\">\n ${styleTags}\n</head>\n<body${bodyClass ? ` class=\"${bodyClass}\"` : ''}>\n ${content}\n ${scriptTags}\n</body>\n</html>`;\n }\n\n generateHydrationScript(componentName) {\n if (!componentName) return '';\n \n return `\n <script type=\"module\">\n import { autoHydrate } from '/coherent-client.js';\n \n // Auto-hydrate on page load\n document.addEventListener('DOMContentLoaded', () => {\n autoHydrate({\n '${componentName}': window.components?.['${componentName}']\n });\n });\n </script>`;\n }\n\n escapeHtml(text) {\n if (typeof text !== 'string') return text;\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n\n // Build process\n async build() {\n this.buildStats.startTime = Date.now();\n console.log('\uD83C\uDFD7\uFE0F Starting static site generation...');\n\n try {\n // Generate all pages\n await this.generatePages();\n \n // Process static assets\n await this.processAssets();\n \n // Generate additional files\n if (this.options.generateSitemap) {\n await this.generateSitemap();\n }\n \n if (this.options.generateManifest) {\n await this.generateManifest();\n }\n \n // Generate build report\n const buildTime = Date.now() - this.buildStats.startTime;\n console.log(`\u2705 Build completed in ${buildTime}ms`);\n console.log(`\uD83D\uDCC4 Generated ${this.buildStats.pagesGenerated} pages`);\n console.log(`\uD83D\uDCE6 Processed ${this.buildStats.assetsProcessed} assets`);\n \n return this.getBuildResult();\n \n } catch (error) {\n this.buildStats.errors.push(error);\n console.error('\u274C Build failed:', error);\n throw error;\n }\n }\n\n async generatePages() {\n for (const [route, pageConfig] of this.pageRegistry) {\n try {\n await this.generatePage(route, pageConfig);\n this.buildStats.pagesGenerated++;\n } catch (error) {\n console.error(`Failed to generate page ${route}:`, error);\n this.buildStats.errors.push({ route, error });\n }\n }\n }\n\n async generatePage(route, pageConfig) {\n const { component, options } = pageConfig;\n \n if (!component) {\n throw new Error(`No component found for route: ${route}`);\n }\n\n // Render component to HTML\n const vdom = component(options.props || {});\n const content = render(vdom);\n \n // Wrap in HTML document\n const html = this.generateHtmlDocument(content, {\n title: options.title,\n description: options.description,\n keywords: options.keywords,\n styles: options.styles || [],\n scripts: options.scripts || [],\n meta: options.meta || [],\n hydrate: options.hydrate,\n componentName: options.componentName,\n componentProps: options.props || {},\n ...options.htmlOptions\n });\n\n // Minify if enabled\n const finalHtml = this.options.minifyHtml ? this.minifyHtml(html) : html;\n \n // Store generated page\n const outputPath = options.generatePath || this.routeToPath(route);\n if (outputPath) {\n this.generatedPages.set(outputPath, {\n html: finalHtml,\n size: finalHtml.length,\n route,\n options\n });\n \n this.buildStats.totalSize += finalHtml.length;\n }\n }\n\n minifyHtml(html) {\n // Basic HTML minification\n return html\n .replace(/\\s+/g, ' ')\n .replace(/>\\s+</g, '><')\n .replace(/\\s+>/g, '>')\n .replace(/<\\s+/g, '<')\n .trim();\n }\n\n async processAssets() {\n for (const [path, asset] of this.staticAssets) {\n try {\n let content = asset.content;\n \n // Process asset based on type\n if (asset.minify) {\n content = this.minifyAsset(content, asset.type);\n }\n \n // Store processed asset\n this.generatedPages.set(path, {\n content,\n type: asset.type,\n size: content.length\n });\n \n this.buildStats.assetsProcessed++;\n this.buildStats.totalSize += content.length;\n \n } catch (error) {\n console.error(`Failed to process asset ${path}:`, error);\n this.buildStats.errors.push({ path, error });\n }\n }\n }\n\n minifyAsset(content, type) {\n switch (type) {\n case 'text/css':\n return content\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/;\\s*}/g, '}')\n .replace(/\\s*{\\s*/g, '{')\n .replace(/;\\s*/g, ';')\n .trim();\n \n case 'application/javascript':\n // Basic JS minification (in production, use a proper minifier)\n return content\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\/\\/.*$/gm, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([{}();,])\\s*/g, '$1')\n .trim();\n \n default:\n return content;\n }\n }\n\n async generateSitemap() {\n const pages = Array.from(this.generatedPages.keys())\n .filter(path => path.endsWith('.html'));\n \n const sitemap = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${pages.map(path => ` <url>\n <loc>${this.options.baseUrl}${path.replace('/index.html', '/')}</loc>\n <lastmod>${new Date().toISOString().split('T')[0]}</lastmod>\n </url>`).join('\\n')}\n</urlset>`;\n\n this.generatedPages.set('/sitemap.xml', {\n content: sitemap,\n type: 'application/xml',\n size: sitemap.length\n });\n }\n\n async generateManifest() {\n const manifest = {\n name: this.options.name || 'Coherent.js App',\n short_name: this.options.shortName || 'App',\n description: this.options.description || '',\n start_url: '/',\n display: 'standalone',\n theme_color: this.options.themeColor || '#000000',\n background_color: this.options.backgroundColor || '#ffffff',\n icons: this.options.icons || []\n };\n\n const manifestJson = JSON.stringify(manifest, null, 2);\n \n this.generatedPages.set('/manifest.json', {\n content: manifestJson,\n type: 'application/json',\n size: manifestJson.length\n });\n }\n\n getBuildResult() {\n return {\n pages: this.generatedPages,\n stats: {\n ...this.buildStats,\n buildTime: Date.now() - this.buildStats.startTime\n },\n success: this.buildStats.errors.length === 0\n };\n }\n\n // Create static app factory\n createApp() {\n return {\n // Component registration\n component: (name, component, opts) => this.registerComponent(name, component, opts),\n \n // Page registration\n page: (route, component, opts) => this.addPage(route, component, opts),\n \n // Asset management\n asset: (path, content, opts) => this.addAsset(path, content, opts),\n \n // Build process\n build: () => this.build(),\n \n // Utilities\n getRuntime: () => this,\n getStats: () => this.buildStats,\n getPages: () => Array.from(this.pageRegistry.keys()),\n getAssets: () => Array.from(this.staticAssets.keys())\n };\n }\n\n // Static factory methods\n static createApp(options = {}) {\n const runtime = new StaticRuntime(options);\n return runtime.createApp(options);\n }\n\n static async buildSite(pages = {}, components = {}, options = {}) {\n const runtime = new StaticRuntime(options);\n \n // Register components\n Object.entries(components).forEach(([name, component]) => {\n runtime.registerComponent(name, component);\n });\n \n // Register pages\n Object.entries(pages).forEach(([route, config]) => {\n runtime.addPage(route, config.component, config.options);\n });\n \n return await runtime.build();\n }\n}\n", "/**\n * Node.js Runtime - For Node.js with framework integrations\n * Provides server-side rendering with Express, Fastify, Koa support\n */\n\nimport { render } from '@coherent.js/core';\nimport { createServer } from 'http';\n\nexport class NodeRuntime {\n constructor(options = {}) {\n this.options = {\n port: 3000,\n host: 'localhost',\n caching: true,\n framework: null, // 'express', 'fastify', 'koa', or null for standalone\n headers: {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Cache-Control': 'public, max-age=3600',\n ...options.headers\n },\n ...options\n };\n \n this.componentRegistry = new Map();\n this.routeRegistry = new Map();\n this.middleware = [];\n this.cache = new Map();\n this.renderCount = 0;\n this.server = null;\n \n // Initialize cache cleanup if caching is enabled\n if (this.options.caching) {\n this.initializeCacheCleanup();\n }\n }\n\n initializeCacheCleanup() {\n // Simple LRU-style cleanup\n setInterval(() => {\n if (this.cache.size > 1000) {\n const entries = Array.from(this.cache.entries());\n const toDelete = entries.slice(0, entries.length - 500);\n toDelete.forEach(([key]) => this.cache.delete(key));\n }\n }, 300000); // Every 5 minutes\n }\n\n // Component management\n registerComponent(name, component) {\n this.componentRegistry.set(name, component);\n return component;\n }\n\n getComponent(name) {\n return this.componentRegistry.get(name);\n }\n\n // Route management\n addRoute(pattern, handler) {\n this.routeRegistry.set(pattern, handler);\n }\n\n matchRoute(pathname) {\n for (const [pattern, handler] of this.routeRegistry.entries()) {\n const match = this.matchPattern(pattern, pathname);\n if (match) {\n return { handler, params: match.params };\n }\n }\n return null;\n }\n\n matchPattern(pattern, pathname) {\n const patternParts = pattern.split('/').filter(Boolean);\n const pathParts = pathname.split('/').filter(Boolean);\n\n if (patternParts.length !== pathParts.length) {\n return null;\n }\n\n const params = {};\n \n for (let i = 0; i < patternParts.length; i++) {\n const patternPart = patternParts[i];\n const pathPart = pathParts[i];\n\n if (patternPart.startsWith(':')) {\n params[patternPart.slice(1)] = pathPart;\n } else if (patternPart !== pathPart) {\n return null;\n }\n }\n\n return { params };\n }\n\n // Rendering\n async renderComponent(component, props = {}, options = {}) {\n \n try {\n // Resolve component\n const resolvedComponent = typeof component === 'string' \n ? this.getComponent(component) \n : component;\n\n if (!resolvedComponent) {\n throw new Error(`Component not found: ${component}`);\n }\n\n // Check cache\n const cacheKey = this.generateCacheKey(resolvedComponent, props);\n if (this.options.caching && this.cache.has(cacheKey)) {\n const cached = this.cache.get(cacheKey);\n if (Date.now() - cached.timestamp < (options.cacheMaxAge || 300000)) {\n return cached.html;\n }\n this.cache.delete(cacheKey);\n }\n\n // Render component\n const vdom = resolvedComponent(props);\n const html = render(vdom);\n\n // Cache result\n if (this.options.caching && options.cacheable !== false) {\n this.cache.set(cacheKey, {\n html,\n timestamp: Date.now()\n });\n }\n\n this.renderCount++;\n \n return html;\n } catch (error) {\n console.error('Node render error:', error);\n throw error;\n }\n }\n\n generateCacheKey(component, props) {\n const componentName = component.name || 'anonymous';\n const propsHash = this.hashObject(props);\n return `${componentName}-${propsHash}`;\n }\n\n hashObject(obj) {\n const str = JSON.stringify(obj, Object.keys(obj).sort());\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash.toString(36);\n }\n\n // HTTP Request handling (for standalone mode)\n async handleRequest(req, res) {\n try {\n const url = new URL(req.url, `http://${req.headers.host}`);\n const pathname = url.pathname;\n \n // Create context\n const context = {\n req,\n res,\n url,\n pathname,\n params: {},\n query: Object.fromEntries(url.searchParams),\n method: req.method,\n headers: req.headers,\n runtime: this,\n state: {}\n };\n\n // Execute middleware chain\n let middlewareIndex = 0;\n const next = async () => {\n if (middlewareIndex < this.middleware.length) {\n const middleware = this.middleware[middlewareIndex++];\n return await middleware(context, next);\n }\n };\n\n // Run middleware\n if (this.middleware.length > 0) {\n await next();\n }\n\n // Check if middleware already sent a response\n if (res.headersSent) {\n return;\n }\n \n // Find matching route\n const match = this.matchRoute(pathname);\n \n if (!match) {\n res.writeHead(404, { 'Content-Type': 'text/html' });\n res.end('<h1>404 Not Found</h1>');\n return;\n }\n\n // Add route params to context\n context.params = match.params;\n\n // Execute route handler\n const result = await match.handler(context);\n \n // Handle different response types\n if (res.headersSent) {\n return; // Handler already sent response\n }\n\n if (typeof result === 'string') {\n res.writeHead(200, this.options.headers);\n res.end(result);\n return;\n }\n\n if (result && typeof result === 'object') {\n if (result.component) {\n const html = await this.renderComponent(\n result.component, \n result.props || {}, \n result.options || {}\n );\n res.writeHead(result.status || 200, {\n ...this.options.headers,\n ...result.headers\n });\n res.end(html);\n return;\n }\n\n if (result.json !== undefined) {\n res.writeHead(result.status || 200, {\n 'Content-Type': 'application/json',\n ...result.headers\n });\n res.end(JSON.stringify(result.json));\n return;\n }\n\n if (result.redirect) {\n res.writeHead(result.status || 302, {\n 'Location': result.redirect\n });\n res.end();\n return;\n }\n\n // Default: send as JSON\n res.writeHead(200, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify(result));\n return;\n }\n\n // Fallback\n res.writeHead(200, this.options.headers);\n res.end(String(result));\n\n } catch (error) {\n console.error('Request handling error:', error);\n \n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: error.message }));\n }\n }\n }\n\n // Create app factory\n createApp() {\n const app = {\n // Component registration\n component: (name, component) => this.registerComponent(name, component),\n \n // Routing\n get: (pattern, handler) => this.addRoute(pattern, handler),\n post: (pattern, handler) => this.addRoute(pattern, handler),\n put: (pattern, handler) => this.addRoute(pattern, handler),\n delete: (pattern, handler) => this.addRoute(pattern, handler),\n route: (pattern, handler) => this.addRoute(pattern, handler),\n \n // Middleware support\n use: (middleware) => {\n if (typeof middleware !== 'function') {\n throw new Error('Middleware must be a function');\n }\n this.middleware.push(middleware);\n return app;\n },\n \n // Server control\n listen: (port, callback) => {\n const serverPort = port || this.options.port;\n this.server = createServer((req, res) => this.handleRequest(req, res));\n \n this.server.listen(serverPort, this.options.host, () => {\n console.log(`Coherent.js Node runtime listening on http://${this.options.host}:${serverPort}`);\n if (callback) callback();\n });\n \n return this.server;\n },\n \n close: (callback) => {\n if (this.server) {\n this.server.close(callback);\n }\n },\n \n // Utilities\n render: (component, props, options) => this.renderComponent(component, props, options),\n getRuntime: () => this,\n getStats: () => ({\n renderCount: this.renderCount,\n cacheSize: this.cache.size,\n componentCount: this.componentRegistry.size,\n routeCount: this.routeRegistry.size,\n middlewareCount: this.middleware.length\n })\n };\n\n return app;\n }\n\n // Framework integration helpers\n expressMiddleware() {\n return async (req, res, next) => {\n req.coherent = {\n render: async (component, props, options) => {\n const html = await this.renderComponent(component, props, options);\n res.send(html);\n },\n runtime: this\n };\n next();\n };\n }\n\n fastifyPlugin() {\n return async (fastify) => {\n fastify.decorate('coherent', {\n render: async (component, props, renderOptions) => {\n return await this.renderComponent(component, props, renderOptions);\n },\n runtime: this\n });\n };\n }\n\n koaMiddleware() {\n return async (ctx, next) => {\n ctx.coherent = {\n render: async (component, props, options) => {\n const html = await this.renderComponent(component, props, options);\n ctx.type = 'html';\n ctx.body = html;\n },\n runtime: this\n };\n await next();\n };\n }\n}\n\n/**\n * Create a Node.js runtime instance\n */\nexport function createNodeRuntime(options = {}) {\n return new NodeRuntime(options);\n}\n\nexport default NodeRuntime;\n", "/**\n * Coherent.js Universal Runtime\n * Complete standalone runtime that works in any JavaScript environment\n */\n\n// Re-export everything from core packages\nexport * from '@coherent.js/core';\nexport * from '@coherent.js/client';\nexport * from '@coherent.js/web-components';\n\n// Universal runtime components\nexport { BrowserRuntime } from './runtimes/browser.js';\nexport { EdgeRuntime } from './runtimes/edge.js';\nexport { StaticRuntime } from './runtimes/static.js';\nexport { DesktopRuntime } from './runtimes/desktop.js';\n\n// Module loaders\nexport { UniversalLoader } from './loaders/universal-loader.js';\nexport { ComponentLoader } from './loaders/component-loader.js';\n\n// Main runtime factory\nexport { createRuntime, detectRuntime, RuntimeEnvironment } from './runtime-factory.js';\nimport { createRuntime, detectRuntime } from './runtime-factory.js';\n\n// Utilities\nexport { RuntimeDetector } from './utils/runtime-detector.js';\nexport { ModuleResolver } from './utils/module-resolver.js';\nexport { AssetManager } from './utils/asset-manager.js';\n\n// Main universal entry point\nexport async function createCoherentApp(options = {}) {\n const runtime = await createRuntime(options);\n return runtime.createApp(options);\n}\n\n// Simple standalone rendering for quick start \nexport function renderApp(component, props = {}, target = null) {\n const runtime = detectRuntime();\n // If runtime is an object with renderApp method (mocked in tests), use it\n if (typeof runtime === 'object' && runtime.renderApp) {\n return runtime.renderApp(component, props, target);\n }\n // Otherwise detectRuntime returns a string, so we'd need to create a runtime\n // This is a simplified version for the actual use case\n throw new Error('renderApp requires a proper runtime implementation');\n}\n\n// Global initialization for script tag usage\nif (typeof window !== 'undefined') {\n window.Coherent = {\n // Core functionality\n render: async (obj) => {\n const { render } = await import('@coherent.js/core');\n return render(obj);\n },\n \n // Hydration\n hydrate: async (element, component, props) => {\n const { hydrate } = await import('@coherent.js/client');\n return hydrate(element, component, props);\n },\n \n // Web Components\n defineComponent: async (name, component, options) => {\n const { defineComponent } = await import('@coherent.js/web-components');\n return defineComponent(name, component, options);\n },\n \n // Universal app creation\n createApp: createCoherentApp,\n renderApp,\n \n // Version info\n VERSION: '1.1.1'\n };\n \n // Auto-initialize if data-coherent-auto is present\n if (document.querySelector('[data-coherent-auto]')) {\n document.addEventListener('DOMContentLoaded', async () => {\n const { autoHydrate } = await import('@coherent.js/client');\n autoHydrate(window.componentRegistry || {});\n });\n }\n}\n\nexport const VERSION = '1.1.1';\n", "/**\n * Desktop Runtime - For Electron and Tauri applications\n * Extends browser runtime with desktop-specific capabilities\n */\n\nimport { BrowserRuntime } from './browser.js';\n\nexport class DesktopRuntime extends BrowserRuntime {\n constructor(options = {}) {\n super({\n enableFileSystem: true,\n enableNativeAPIs: true,\n ...options\n });\n \n this.desktopAPI = null;\n this.isElectron = typeof window !== 'undefined' && !!window.require;\n this.isTauri = typeof window !== 'undefined' && !!window.__TAURI__;\n }\n\n async initialize() {\n await super.initialize();\n \n // Initialize desktop APIs\n if (this.isElectron) {\n this.initializeElectron();\n } else if (this.isTauri) {\n this.initializeTauri();\n }\n }\n\n initializeElectron() {\n try {\n // Access Electron APIs if available\n this.desktopAPI = {\n platform: 'electron',\n fs: window.require ? window.require('fs') : null,\n path: window.require ? window.require('path') : null,\n ipcRenderer: window.require ? window.require('electron').ipcRenderer : null\n };\n } catch (error) {\n console.warn('Failed to initialize Electron APIs:', error);\n }\n }\n\n async initializeTauri() {\n try {\n // Access Tauri APIs if available\n if (window.__TAURI__) {\n this.desktopAPI = {\n platform: 'tauri',\n fs: window.__TAURI__.fs,\n path: window.__TAURI__.path,\n invoke: window.__TAURI__.invoke\n };\n }\n } catch (error) {\n console.warn('Failed to initialize Tauri APIs:', error);\n }\n }\n\n // Desktop-specific methods\n async readFile(path) {\n if (this.desktopAPI?.fs) {\n return await this.desktopAPI.fs.readTextFile(path);\n }\n throw new Error('File system access not available');\n }\n\n async writeFile(path, content) {\n if (this.desktopAPI?.fs) {\n return await this.desktopAPI.fs.writeTextFile(path, content);\n }\n throw new Error('File system access not available');\n }\n\n async showDialog(options) {\n if (this.isElectron && this.desktopAPI?.ipcRenderer) {\n return await this.desktopAPI.ipcRenderer.invoke('show-dialog', options);\n } else if (this.isTauri && this.desktopAPI?.invoke) {\n return await this.desktopAPI.invoke('show_dialog', options);\n }\n // No fallback dialog available in desktop environment\n console.warn('Desktop dialog not available, rejecting by default');\n return Promise.resolve(false);\n }\n\n static createApp(options = {}) {\n const runtime = new DesktopRuntime(options);\n return runtime.createApp(options);\n }\n}", "/**\n * Universal Module Loader - Loads modules across different JavaScript environments\n * Provides dynamic module loading for browser, Node.js, Deno, Bun, and edge environments\n */\n\nexport class UniversalLoader {\n constructor(options = {}) {\n this.options = {\n baseUrl: '',\n moduleMap: {},\n fallbackUrls: [],\n cache: true,\n ...options\n };\n \n this.moduleCache = new Map();\n this.loadingPromises = new Map();\n this.environment = this.detectEnvironment();\n }\n\n detectEnvironment() {\n if (typeof Deno !== 'undefined') return 'deno';\n if (typeof Bun !== 'undefined') return 'bun'; \n if (typeof window !== 'undefined') return 'browser';\n if (typeof global !== 'undefined' && typeof require !== 'undefined') return 'node';\n if (typeof WorkerGlobalScope !== 'undefined') return 'worker';\n return 'unknown';\n }\n\n // Universal module loading\n async load(modulePath, options = {}) {\n const resolvedPath = this.resolvePath(modulePath, options);\n const cacheKey = resolvedPath + JSON.stringify(options);\n \n // Return cached module if available\n if (this.options.cache && this.moduleCache.has(cacheKey)) {\n return this.moduleCache.get(cacheKey);\n }\n\n // Return existing loading promise to avoid duplicate loads\n if (this.loadingPromises.has(cacheKey)) {\n return this.loadingPromises.get(cacheKey);\n }\n\n // Create loading promise\n const loadingPromise = this.loadModule(resolvedPath, options);\n this.loadingPromises.set(cacheKey, loadingPromise);\n\n try {\n const module = await loadingPromise;\n \n if (this.options.cache) {\n this.moduleCache.set(cacheKey, module);\n }\n \n return module;\n } finally {\n this.loadingPromises.delete(cacheKey);\n }\n }\n\n async loadModule(modulePath, options = {}) {\n switch (this.environment) {\n case 'browser':\n return await this.loadBrowserModule(modulePath, options);\n \n case 'node':\n return await this.loadNodeModule(modulePath, options);\n \n case 'deno':\n return await this.loadDenoModule(modulePath, options);\n \n case 'bun':\n return await this.loadBunModule(modulePath, options);\n \n case 'worker':\n return await this.loadWorkerModule(modulePath, options);\n \n default:\n return await this.loadGenericModule(modulePath, options);\n }\n }\n\n async loadBrowserModule(modulePath, options = {}) {\n if (modulePath.startsWith('http') || modulePath.startsWith('/')) {\n // ES module import\n try {\n return await import(modulePath);\n } catch {\n // Fallback to script tag loading\n return await this.loadScript(modulePath, options);\n }\n } else {\n // Try CDN loading for npm packages\n const cdnUrl = this.toCdnUrl(modulePath);\n return await import(cdnUrl);\n }\n }\n\n async loadNodeModule(modulePath) {\n if (typeof require !== 'undefined') {\n try {\n return require(modulePath);\n } catch {\n // Try dynamic import for ES modules\n return await import(modulePath);\n }\n } else {\n return await import(modulePath);\n }\n }\n\n async loadDenoModule(modulePath) {\n // Deno supports direct URLs and npm: specifier\n if (modulePath.startsWith('npm:')) {\n return await import(modulePath);\n } else if (modulePath.startsWith('http')) {\n return await import(modulePath);\n } else {\n // Convert to npm: specifier\n return await import(`npm:${modulePath}`);\n }\n }\n\n async loadBunModule(modulePath) {\n // Bun supports both require and import\n try {\n return await import(modulePath);\n } catch (error) {\n if (typeof require !== 'undefined') {\n return require(modulePath);\n }\n throw error;\n }\n }\n\n async loadWorkerModule(modulePath) {\n // Worker environments typically support import\n return await import(modulePath);\n }\n\n async loadGenericModule(modulePath) {\n // Generic fallback using dynamic import\n return await import(modulePath);\n }\n\n async loadScript(src, options = {}) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n \n script.onload = () => {\n // For script tags, we need to get the module from window or a registry\n const moduleName = options.globalName || this.getModuleNameFromPath(src);\n const module = window[moduleName] || {};\n resolve(module);\n };\n \n script.onerror = () => reject(new Error(`Failed to load script: ${src}`));\n \n document.head.appendChild(script);\n });\n }\n\n resolvePath(modulePath, options = {}) {\n // Handle absolute URLs\n if (modulePath.startsWith('http://') || modulePath.startsWith('https://')) {\n return modulePath;\n }\n\n // Handle relative paths\n if (modulePath.startsWith('./') || modulePath.startsWith('../')) {\n return this.resolveRelativePath(modulePath, options.baseUrl || this.options.baseUrl);\n }\n\n // Check module map\n if (this.options.moduleMap[modulePath]) {\n return this.options.moduleMap[modulePath];\n }\n\n // Default resolution\n return this.options.baseUrl + modulePath;\n }\n\n resolveRelativePath(relativePath, baseUrl) {\n if (!baseUrl) return relativePath;\n \n const base = new URL(baseUrl, location?.href || 'file:///');\n const resolved = new URL(relativePath, base);\n return resolved.href;\n }\n\n toCdnUrl(packageName, version = 'latest') {\n // Convert npm package to CDN URL\n const _cleanName = packageName.replace(/^@/, '').replace('/', '-');\n return `https://unpkg.com/${packageName}@${version}/dist/index.js`;\n }\n\n getModuleNameFromPath(path) {\n const filename = path.split('/').pop().split('.')[0];\n return filename.replace(/[-_]/g, '');\n }\n\n // Batch loading\n async loadAll(modulePaths, options = {}) {\n const loadPromises = modulePaths.map(path => \n this.load(path, options).catch(error => ({ error, path }))\n );\n \n return await Promise.all(loadPromises);\n }\n\n // Preloading\n async preload(modulePaths, options = {}) {\n const preloadPromises = modulePaths.map(async path => {\n try {\n await this.load(path, { ...options, preload: true });\n return { success: true, path };\n } catch (error) {\n return { success: false, path, error };\n }\n });\n \n return await Promise.all(preloadPromises);\n }\n\n // Cache management\n clearCache() {\n this.moduleCache.clear();\n }\n\n getCacheStats() {\n return {\n size: this.moduleCache.size,\n modules: Array.from(this.moduleCache.keys())\n };\n }\n\n // Environment detection helpers\n static isSupported() {\n return (() => { try { return typeof Function('return import(\"\")') === 'function'; } catch { return false; } })() || typeof require !== 'undefined';\n }\n\n static getCapabilities() {\n return {\n dynamicImport: (() => { try { return typeof Function('return import(\"\")') === 'function'; } catch { return false; } })(),\n require: typeof require !== 'undefined',\n fetch: typeof fetch !== 'undefined',\n worker: typeof Worker !== 'undefined',\n environment: new UniversalLoader().environment\n };\n }\n}\n\n// Factory function\nexport function createLoader(options = {}) {\n return new UniversalLoader(options);\n}\n\n// Default instance\nexport const universalLoader = new UniversalLoader();\n", "/**\n * Component Loader - Specialized loader for Coherent.js components\n * Handles component registration, lazy loading, and dependency resolution\n */\n\nimport { universalLoader } from './universal-loader.js';\n\nexport class ComponentLoader {\n constructor(options = {}) {\n this.options = {\n componentRegistry: new Map(),\n lazyLoad: true,\n preloadComponents: [],\n componentPaths: {},\n ...options\n };\n \n this.loader = universalLoader;\n this.loadingQueue = new Map();\n this.dependencyGraph = new Map();\n this.loadedComponents = new Set();\n }\n\n // Register a component with its metadata\n registerComponent(name, componentOrPath, options = {}) {\n const registration = {\n name,\n path: typeof componentOrPath === 'string' ? componentOrPath : null,\n component: typeof componentOrPath === 'function' ? componentOrPath : null,\n loaded: typeof componentOrPath === 'function',\n dependencies: options.dependencies || [],\n lazy: options.lazy !== false,\n preload: options.preload || false,\n metadata: options.metadata || {},\n ...options\n };\n\n this.options.componentRegistry.set(name, registration);\n\n // Build dependency graph\n if (registration.dependencies.length > 0) {\n this.dependencyGraph.set(name, registration.dependencies);\n }\n\n // Auto-load if not lazy\n if (!registration.lazy && registration.path && !registration.loaded) {\n this.loadComponent(name);\n }\n\n return registration;\n }\n\n // Load a component by name\n async loadComponent(name, options = {}) {\n const registration = this.options.componentRegistry.get(name);\n \n if (!registration) {\n throw new Error(`Component '${name}' not found in registry`);\n }\n\n // Return already loaded component\n if (registration.loaded && registration.component) {\n return registration.component;\n }\n\n // Return existing loading promise\n if (this.loadingQueue.has(name)) {\n return this.loadingQueue.get(name);\n }\n\n // Create loading promise\n const loadingPromise = this.doLoadComponent(registration, options);\n this.loadingQueue.set(name, loadingPromise);\n\n try {\n const component = await loadingPromise;\n \n // Update registration\n registration.component = component;\n registration.loaded = true;\n this.loadedComponents.add(name);\n \n return component;\n } finally {\n this.loadingQueue.delete(name);\n }\n }\n\n async doLoadComponent(registration, options = {}) {\n const { name, path, dependencies } = registration;\n\n try {\n // Load dependencies first\n if (dependencies.length > 0) {\n await this.loadDependencies(dependencies, options);\n }\n\n // Load the component module\n let component;\n if (path) {\n const module = await this.loader.load(path, options);\n \n // Extract component from module\n component = this.extractComponent(module, name);\n } else if (registration.component) {\n component = registration.component;\n } else {\n throw new Error(`No component or path specified for '${name}'`);\n }\n\n // Process component (add metadata, wrap, etc.)\n return this.processComponent(component, registration, options);\n\n } catch (error) {\n console.error(`Failed to load component '${name}':`, error);\n throw error;\n }\n }\n\n extractComponent(module, componentName) {\n // Try different export patterns\n if (module.default && typeof module.default === 'function') {\n return module.default;\n }\n \n if (module[componentName] && typeof module[componentName] === 'function') {\n return module[componentName];\n }\n \n // Look for the first function export\n for (const [key, value] of Object.entries(module)) {\n if (typeof value === 'function' && key !== 'default') {\n return value;\n }\n }\n \n throw new Error(`No valid component function found in module for '${componentName}'`);\n }\n\n processComponent(component, registration, options = {}) {\n // Add component metadata\n if (registration.metadata) {\n Object.assign(component, {\n $meta: registration.metadata,\n $name: registration.name\n });\n }\n\n // Wrap component with additional functionality if needed\n if (options.wrapper) {\n return options.wrapper(component, registration);\n }\n\n return component;\n }\n\n async loadDependencies(dependencies, options = {}) {\n const dependencyPromises = dependencies.map(depName => {\n return this.loadComponent(depName, options);\n });\n\n await Promise.all(dependencyPromises);\n }\n\n // Batch component loading\n async loadComponents(componentNames, options = {}) {\n const loadPromises = componentNames.map(name => \n this.loadComponent(name, options).catch(error => ({ error, name }))\n );\n \n const results = await Promise.all(loadPromises);\n \n // Separate successful loads from errors\n const loaded = {};\n const errors = [];\n \n results.forEach((result, index) => {\n const name = componentNames[index];\n if (result && result.error) {\n errors.push({ name, error: result.error });\n } else {\n loaded[name] = result;\n }\n });\n\n return { loaded, errors };\n }\n\n // Preload components\n async preloadComponents(componentNames = null) {\n const toPreload = componentNames || this.getPreloadableComponents();\n \n const preloadResults = await Promise.allSettled(\n toPreload.map(name => this.loadComponent(name, { preload: true }))\n );\n\n const results = {\n successful: [],\n failed: []\n };\n\n preloadResults.forEach((result, index) => {\n const name = toPreload[index];\n if (result.status === 'fulfilled') {\n results.successful.push(name);\n } else {\n results.failed.push({ name, error: result.reason });\n }\n });\n\n return results;\n }\n\n getPreloadableComponents() {\n return Array.from(this.options.componentRegistry.values())\n .filter(reg => reg.preload && !reg.loaded)\n .map(reg => reg.name);\n }\n\n // Component discovery\n async discoverComponents(basePath, options = {}) {\n // This would scan directories/modules for component files\n // Implementation depends on the environment\n const discovered = [];\n \n try {\n if (typeof fetch !== 'undefined') {\n // Browser-based discovery (limited)\n discovered.push(...await this.discoverFromManifest(basePath, options));\n } else if (typeof require !== 'undefined') {\n // Node.js-based discovery\n discovered.push(...await this.discoverFromFileSystem(basePath, options));\n }\n } catch (error) {\n console.warn('Component discovery failed:', error);\n }\n\n return discovered;\n }\n\n async discoverFromManifest(basePath, _options = {}) {\n try {\n const manifestUrl = `${basePath}/components.json`;\n const response = await fetch(manifestUrl);\n const manifest = await response.json();\n \n return manifest.components || [];\n } catch {\n return [];\n }\n }\n\n async discoverFromFileSystem(basePath, _options = {}) {\n // This would require file system access\n // Placeholder for Node.js implementation\n return [];\n }\n\n // Auto-registration from patterns\n registerComponentPattern(pattern, options = {}) {\n // Register components matching a pattern\n // e.g., './components/*.js' -> register all JS files as components\n this.componentPatterns = this.componentPatterns || [];\n this.componentPatterns.push({ pattern, options });\n }\n\n // Dependency analysis\n analyzeDependencies() {\n const analysis = {\n circular: [],\n missing: [],\n unused: [],\n depth: new Map()\n };\n\n // Check for circular dependencies\n analysis.circular = this.findCircularDependencies();\n \n // Check for missing dependencies\n analysis.missing = this.findMissingDependencies();\n \n // Find unused components\n analysis.unused = this.findUnusedComponents();\n \n // Calculate dependency depths\n analysis.depth = this.calculateDependencyDepths();\n\n return analysis;\n }\n\n findCircularDependencies() {\n const circular = [];\n const visited = new Set();\n const recursionStack = new Set();\n\n const visit = (componentName, path = []) => {\n if (recursionStack.has(componentName)) {\n circular.push([...path, componentName]);\n return;\n }\n \n if (visited.has(componentName)) return;\n \n visited.add(componentName);\n recursionStack.add(componentName);\n \n const dependencies = this.dependencyGraph.get(componentName) || [];\n dependencies.forEach(dep => {\n visit(dep, [...path, componentName]);\n });\n \n recursionStack.delete(componentName);\n };\n\n Array.from(this.dependencyGraph.keys()).forEach(visit);\n return circular;\n }\n\n findMissingDependencies() {\n const missing = [];\n \n for (const [component, dependencies] of this.dependencyGraph) {\n for (const dep of dependencies) {\n if (!this.options.componentRegistry.has(dep)) {\n missing.push({ component, dependency: dep });\n }\n }\n }\n \n return missing;\n }\n\n findUnusedComponents() {\n const used = new Set();\n \n // Mark all dependencies as used\n for (const dependencies of this.dependencyGraph.values()) {\n dependencies.forEach(dep => used.add(dep));\n }\n \n // Find registered components not marked as used\n const unused = [];\n for (const name of this.options.componentRegistry.keys()) {\n if (!used.has(name)) {\n unused.push(name);\n }\n }\n \n return unused;\n }\n\n calculateDependencyDepths() {\n const depths = new Map();\n \n const calculateDepth = (componentName, visited = new Set()) => {\n if (depths.has(componentName)) {\n return depths.get(componentName);\n }\n \n if (visited.has(componentName)) {\n return Infinity; // Circular dependency\n }\n \n visited.add(componentName);\n \n const dependencies = this.dependencyGraph.get(componentName) || [];\n const maxDepth = dependencies.length === 0 \n ? 0 \n : Math.max(...dependencies.map(dep => calculateDepth(dep, new Set(visited)))) + 1;\n \n depths.set(componentName, maxDepth);\n return maxDepth;\n };\n\n for (const componentName of this.options.componentRegistry.keys()) {\n calculateDepth(componentName);\n }\n \n return depths;\n }\n\n // Utilities\n getRegisteredComponents() {\n return Array.from(this.options.componentRegistry.keys());\n }\n\n getLoadedComponents() {\n return Array.from(this.loadedComponents);\n }\n\n getComponentInfo(name) {\n return this.options.componentRegistry.get(name);\n }\n\n isComponentLoaded(name) {\n return this.loadedComponents.has(name);\n }\n\n clearCache() {\n this.loader.clearCache();\n this.loadingQueue.clear();\n }\n\n getStats() {\n return {\n registered: this.options.componentRegistry.size,\n loaded: this.loadedComponents.size,\n loading: this.loadingQueue.size,\n dependencies: this.dependencyGraph.size\n };\n }\n}\n\n// Factory function\nexport function createComponentLoader(options = {}) {\n return new ComponentLoader(options);\n}\n\n// Default instance\nexport const componentLoader = new ComponentLoader();\n", "/**\n * Runtime Factory - Detects environment and creates appropriate runtime\n */\n\nexport const RuntimeEnvironment = {\n BROWSER: 'browser',\n NODE: 'node', \n EDGE: 'edge',\n CLOUDFLARE: 'cloudflare',\n DENO: 'deno',\n BUN: 'bun',\n ELECTRON: 'electron',\n TAURI: 'tauri',\n STATIC: 'static'\n};\n\n/**\n * Detect the current runtime environment\n */\nexport function detectRuntime() {\n // Browser environments\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Electron detection\n if (typeof window.require !== 'undefined' || \n typeof window.process !== 'undefined' && window.process.versions?.electron) {\n return RuntimeEnvironment.ELECTRON;\n }\n \n // Tauri detection\n if (typeof window.__TAURI__ !== 'undefined') {\n return RuntimeEnvironment.TAURI;\n }\n \n return RuntimeEnvironment.BROWSER;\n }\n \n // Server-side environments\n if (typeof process !== 'undefined') {\n // Node.js detection\n if (process.versions?.node) {\n return RuntimeEnvironment.NODE;\n }\n }\n \n // Edge runtime detection\n if (typeof EdgeRuntime !== 'undefined') {\n return RuntimeEnvironment.EDGE;\n }\n \n // Cloudflare Workers\n if (typeof caches !== 'undefined' && \n typeof Request !== 'undefined' && \n typeof Response !== 'undefined' &&\n typeof addEventListener !== 'undefined') {\n return RuntimeEnvironment.CLOUDFLARE;\n }\n \n // Deno detection\n if (typeof Deno !== 'undefined') {\n return RuntimeEnvironment.DENO;\n }\n \n // Bun detection\n if (typeof Bun !== 'undefined') {\n return RuntimeEnvironment.BUN;\n }\n \n // Fallback to browser\n return RuntimeEnvironment.BROWSER;\n}\n\n/**\n * Create runtime instance based on environment\n */\nexport async function createRuntime(options = {}) {\n const environment = options.environment || detectRuntime();\n \n switch (environment) {\n case RuntimeEnvironment.BROWSER:\n case RuntimeEnvironment.ELECTRON:\n case RuntimeEnvironment.TAURI: {\n const { BrowserRuntime } = await import('./runtimes/browser.js');\n return new BrowserRuntime(options);\n }\n \n case RuntimeEnvironment.EDGE:\n case RuntimeEnvironment.CLOUDFLARE:\n case RuntimeEnvironment.DENO:\n case RuntimeEnvironment.BUN: {\n const { EdgeRuntime } = await import('./runtimes/edge.js');\n return new EdgeRuntime(options);\n }\n \n case RuntimeEnvironment.NODE: {\n // Use Node.js runtime for Node.js environments\n const { NodeRuntime } = await import('./runtimes/node.js');\n return new NodeRuntime(options);\n }\n \n case RuntimeEnvironment.STATIC: {\n const { StaticRuntime } = await import('./runtimes/static.js');\n return new StaticRuntime(options);\n }\n \n default:\n throw new Error(`Unsupported runtime environment: ${environment}`);\n }\n}\n\n/**\n * Runtime capabilities detection\n */\nexport function getRuntimeCapabilities(environment = null) {\n const env = environment || detectRuntime();\n \n const capabilities = {\n dom: false,\n ssr: false,\n filesystem: false,\n fetch: false,\n websockets: false,\n workers: false,\n storage: false,\n crypto: false,\n streams: false\n };\n \n switch (env) {\n case RuntimeEnvironment.BROWSER:\n return {\n ...capabilities,\n dom: true,\n fetch: true,\n websockets: true,\n workers: true,\n storage: true,\n crypto: true,\n streams: true\n };\n \n case RuntimeEnvironment.ELECTRON:\n return {\n ...capabilities,\n dom: true,\n filesystem: true,\n fetch: true,\n websockets: true,\n storage: true,\n crypto: true,\n streams: true\n };\n \n case RuntimeEnvironment.TAURI:\n return {\n ...capabilities,\n dom: true,\n filesystem: true,\n fetch: true,\n websockets: true,\n storage: true,\n crypto: true\n };\n \n case RuntimeEnvironment.NODE:\n return {\n ...capabilities,\n ssr: true,\n filesystem: true,\n fetch: true,\n websockets: true,\n crypto: true,\n streams: true\n };\n \n case RuntimeEnvironment.EDGE:\n case RuntimeEnvironment.CLOUDFLARE:\n return {\n ...capabilities,\n ssr: true,\n fetch: true,\n crypto: true,\n streams: true,\n storage: true\n };\n \n case RuntimeEnvironment.DENO:\n return {\n ...capabilities,\n ssr: true,\n filesystem: true,\n fetch: true,\n websockets: true,\n crypto: true,\n streams: true\n };\n \n case RuntimeEnvironment.BUN:\n return {\n ...capabilities,\n ssr: true,\n filesystem: true,\n fetch: true,\n websockets: true,\n crypto: true,\n streams: true\n };\n \n case RuntimeEnvironment.STATIC:\n return {\n ...capabilities,\n ssr: true,\n filesystem: false\n };\n \n default:\n return capabilities;\n }\n}\n\n/**\n * Runtime information\n */\nexport function getRuntimeInfo() {\n const environment = detectRuntime();\n const capabilities = getRuntimeCapabilities(environment);\n \n return {\n environment,\n capabilities,\n version: getEnvironmentVersion(),\n features: getAvailableFeatures(),\n userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : null,\n platform: getPlatform()\n };\n}\n\nfunction getEnvironmentVersion() {\n const env = detectRuntime();\n \n switch (env) {\n case RuntimeEnvironment.NODE:\n return typeof process !== 'undefined' ? process.version : null;\n case RuntimeEnvironment.DENO:\n return typeof Deno !== 'undefined' ? Deno.version.deno : null;\n case RuntimeEnvironment.BUN:\n return typeof Bun !== 'undefined' ? Bun.version : null;\n case RuntimeEnvironment.BROWSER:\n case RuntimeEnvironment.ELECTRON:\n case RuntimeEnvironment.TAURI:\n return typeof navigator !== 'undefined' ? navigator.userAgent : null;\n default:\n return null;\n }\n}\n\nfunction getAvailableFeatures() {\n const features = [];\n \n // Check for various Web APIs and features\n if (typeof fetch !== 'undefined') features.push('fetch');\n if (typeof WebSocket !== 'undefined') features.push('websockets');\n if (typeof Worker !== 'undefined') features.push('workers');\n if (typeof localStorage !== 'undefined') features.push('localStorage');\n if (typeof sessionStorage !== 'undefined') features.push('sessionStorage');\n if (typeof indexedDB !== 'undefined') features.push('indexedDB');\n if (typeof crypto !== 'undefined') features.push('crypto');\n if (typeof ReadableStream !== 'undefined') features.push('streams');\n if (typeof customElements !== 'undefined') features.push('customElements');\n if (typeof ShadowRoot !== 'undefined') features.push('shadowDOM');\n if (typeof IntersectionObserver !== 'undefined') features.push('intersectionObserver');\n if (typeof MutationObserver !== 'undefined') features.push('mutationObserver');\n if (typeof requestAnimationFrame !== 'undefined') features.push('animationFrame');\n if (typeof requestIdleCallback !== 'undefined') features.push('idleCallback');\n \n return features;\n}\n\nfunction getPlatform() {\n if (typeof navigator !== 'undefined') {\n return {\n platform: navigator.platform,\n userAgent: navigator.userAgent,\n language: navigator.language,\n cookieEnabled: navigator.cookieEnabled,\n onLine: navigator.onLine\n };\n }\n \n if (typeof process !== 'undefined') {\n return {\n platform: process.platform,\n arch: process.arch,\n version: process.version,\n versions: process.versions\n };\n }\n \n if (typeof Deno !== 'undefined') {\n return {\n platform: Deno.build.os,\n arch: Deno.build.arch,\n version: Deno.version.deno\n };\n }\n \n return null;\n}", "/**\n * Runtime Detector - Detects and analyzes JavaScript runtime environments\n * Provides detailed capability analysis for universal applications\n */\n\n// Runtime environment constants\nexport const RuntimeEnvironment = {\n BROWSER: 'browser',\n NODE: 'node',\n DENO: 'deno',\n BUN: 'bun',\n EDGE: 'edge',\n CLOUDFLARE: 'cloudflare',\n ELECTRON: 'electron',\n TAURI: 'tauri',\n WEBVIEW: 'webview',\n STATIC: 'static',\n UNKNOWN: 'unknown'\n};\n\nexport class RuntimeDetector {\n constructor() {\n this.detectionResult = null;\n this.capabilities = null;\n }\n\n // Reset detection cache (useful for testing)\n reset() {\n this.detectionResult = null;\n this.capabilities = null;\n }\n\n // Main detection method\n detect() {\n if (this.detectionResult) {\n return this.detectionResult;\n }\n\n this.detectionResult = this.performDetection();\n return this.detectionResult;\n }\n\n performDetection() {\n // Desktop app frameworks (check first as they may have browser-like globals)\n if (this.isTauri()) return RuntimeEnvironment.TAURI;\n if (this.isElectron()) return RuntimeEnvironment.ELECTRON;\n if (this.isWebView()) return RuntimeEnvironment.WEBVIEW;\n\n // JavaScript runtimes\n if (this.isDeno()) return RuntimeEnvironment.DENO;\n if (this.isBun()) return RuntimeEnvironment.BUN;\n \n // Edge environments\n if (this.isCloudflareWorkers()) return RuntimeEnvironment.CLOUDFLARE;\n if (this.isEdgeRuntime()) return RuntimeEnvironment.EDGE;\n \n // Browser and Node.js\n if (this.isBrowser()) return RuntimeEnvironment.BROWSER;\n if (this.isNodeJS()) return RuntimeEnvironment.NODE;\n\n return RuntimeEnvironment.UNKNOWN;\n }\n\n // Environment-specific detection methods\n isBrowser() {\n return typeof window !== 'undefined' && \n typeof document !== 'undefined' &&\n typeof navigator !== 'undefined';\n }\n\n isNodeJS() {\n return typeof process !== 'undefined' && \n process.versions && \n process.versions.node &&\n typeof require !== 'undefined';\n }\n\n isDeno() {\n return typeof Deno !== 'undefined' && \n typeof Deno.version !== 'undefined';\n }\n\n isBun() {\n return typeof Bun !== 'undefined' || \n (typeof process !== 'undefined' && \n process.versions && \n process.versions.bun);\n }\n\n isElectron() {\n return typeof window !== 'undefined' && \n typeof window.require !== 'undefined' &&\n typeof window.require('electron') !== 'undefined';\n }\n\n isTauri() {\n return typeof window !== 'undefined' && \n typeof window.__TAURI__ !== 'undefined';\n }\n\n isWebView() {\n return typeof window !== 'undefined' && \n (typeof window.webkit !== 'undefined' || \n typeof window.external !== 'undefined') &&\n !this.isElectron() && \n !this.isTauri();\n }\n\n isCloudflareWorkers() {\n return typeof caches !== 'undefined' && \n typeof fetch !== 'undefined' &&\n typeof Response !== 'undefined' &&\n typeof addEventListener !== 'undefined' &&\n typeof window === 'undefined';\n }\n\n isEdgeRuntime() {\n return typeof EdgeRuntime !== 'undefined' ||\n (typeof globalThis !== 'undefined' && \n typeof globalThis.EdgeRuntime !== 'undefined') ||\n this.isVercelEdge() ||\n this.isNetlifyEdge();\n }\n\n isVercelEdge() {\n return typeof process !== 'undefined' && \n process.env && \n process.env.VERCEL === '1' &&\n typeof EdgeRuntime !== 'undefined';\n }\n\n isNetlifyEdge() {\n return typeof Netlify !== 'undefined' || \n (typeof process !== 'undefined' && \n process.env && \n process.env.NETLIFY === 'true');\n }\n\n // Detailed capability analysis\n getCapabilities(environment = null) {\n const env = environment || this.detect();\n \n if (this.capabilities && !environment) {\n return this.capabilities;\n }\n\n const capabilities = this.analyzeCapabilities(env);\n \n if (!environment) {\n this.capabilities = capabilities;\n }\n \n return capabilities;\n }\n\n analyzeCapabilities(environment) {\n const base = {\n environment,\n dom: false,\n ssr: false,\n filesystem: false,\n fetch: false,\n websockets: false,\n workers: false,\n storage: false,\n crypto: false,\n streams: false,\n modules: {\n esm: false,\n commonjs: false,\n dynamicImport: false\n },\n apis: {\n console: false,\n timers: false,\n events: false,\n url: false,\n base64: false\n }\n };\n\n switch (environment) {\n case RuntimeEnvironment.BROWSER:\n return {\n ...base,\n dom: true,\n fetch: typeof fetch !== 'undefined',\n websockets: typeof WebSocket !== 'undefined',\n workers: typeof Worker !== 'undefined',\n storage: typeof localStorage !== 'undefined',\n crypto: typeof crypto !== 'undefined',\n streams: typeof ReadableStream !== 'undefined',\n modules: {\n esm: true,\n commonjs: false,\n dynamicImport: (() => { try { return typeof Function('return import(\"\")') === 'function'; } catch { return false; } })()\n },\n apis: {\n console: typeof console !== 'undefined',\n timers: typeof setTimeout !== 'undefined',\n events: typeof EventTarget !== 'undefined',\n url: typeof URL !== 'undefined',\n base64: typeof btoa !== 'undefined'\n }\n };\n\n case RuntimeEnvironment.NODE:\n return {\n ...base,\n ssr: true,\n filesystem: true,\n fetch: typeof fetch !== 'undefined',\n websockets: true,\n crypto: true,\n streams: true,\n modules: {\n esm: true,\n commonjs: true,\n dynamicImport: (() => { try { return typeof Function('return import(\"\")') === 'function'; } catch { return false; } })()\n },\n apis: {\n console: true,\n timers: true,\n events: true,\n url: typeof URL !== 'undefined',\n base64: typeof Buffer !== 'undefined'\n }\n };\n\n case RuntimeEnvironment.DENO:\n return {\n ...base,\n ssr: true,\n filesystem: typeof Deno.readTextFile !== 'undefined',\n fetch: typeof fetch !== 'undefined',\n websockets: typeof WebSocket !== 'undefined',\n crypto: typeof crypto !== 'undefined',\n streams: typeof ReadableStream !== 'undefined',\n modules: {\n esm: true,\n commonjs: false,\n dynamicImport: true\n },\n apis: {\n console: true,\n timers: true,\n events: true,\n url: typeof URL !== 'undefined',\n base64: typeof btoa !== 'undefined'\n }\n };\n\n case RuntimeEnvironment.BUN:\n return {\n ...base,\n ssr: true,\n filesystem: true,\n fetch: typeof fetch !== 'undefined',\n websockets: typeof WebSocket !== 'undefined',\n crypto: typeof crypto !== 'undefined',\n streams: typeof ReadableStream !== 'undefined',\n modules: {\n esm: true,\n commonjs: true,\n dynamicImport: true\n },\n apis: {\n console: true,\n timers: true,\n events: true,\n url: typeof URL !== 'undefined',\n base64: typeof btoa !== 'undefined'\n }\n };\n\n case RuntimeEnvironment.CLOUDFLARE:\n return {\n ...base,\n ssr: true,\n fetch: typeof fetch !== 'undefined',\n websockets: typeof WebSocket !== 'undefined',\n storage: typeof caches !== 'undefined',\n crypto: typeof crypto !== 'undefined',\n streams: typeof ReadableStream !== 'undefined',\n modules: {\n esm: true,\n commonjs: false,\n dynamicImport: true\n },\n apis: {\n console: true,\n timers: true,\n events: true,\n url: typeof URL !== 'undefined',\n base64: typeof btoa !== 'undefined'\n }\n };\n\n case RuntimeEnvironment.ELECTRON:\n return {\n ...base,\n dom: true,\n ssr: true,\n filesystem: true,\n fetch: typeof fetch !== 'undefined',\n websockets: typeof WebSocket !== 'undefined',\n workers: typeof Worker !== 'undefined',\n storage: typeof localStorage !== 'undefined',\n crypto: typeof crypto !== 'undefined',\n streams: typeof ReadableStream !== 'undefined',\n modules: {\n esm: true,\n commonjs: true,\n dynamicImport: true\n },\n apis: {\n console: true,\n timers: true,\n events: true,\n url: typeof URL !== 'undefined',\n base64: typeof btoa !== 'undefined'\n }\n };\n\n case RuntimeEnvironment.TAURI:\n return {\n ...base,\n dom: true,\n ssr: true,\n filesystem: typeof window !== 'undefined' && \n typeof window.__TAURI__ !== 'undefined',\n fetch: typeof fetch !== 'undefined',\n websockets: typeof WebSocket !== 'undefined',\n storage: typeof localStorage !== 'undefined',\n crypto: typeof crypto !== 'undefined',\n streams: typeof ReadableStream !== 'undefined',\n modules: {\n esm: true,\n commonjs: false,\n dynamicImport: true\n },\n apis: {\n console: true,\n timers: true,\n events: true,\n url: typeof URL !== 'undefined',\n base64: typeof btoa !== 'undefined'\n }\n };\n\n default:\n return base;\n }\n }\n\n // Get detailed runtime information\n getRuntimeInfo() {\n const environment = this.detect();\n const capabilities = this.getCapabilities(environment);\n \n return {\n environment,\n capabilities,\n version: this.getRuntimeVersion(environment),\n features: this.getAvailableFeatures(),\n userAgent: this.getUserAgent(),\n platform: this.getPlatformInfo()\n };\n }\n\n // Alias method for backward compatibility\n getEnvironmentInfo() {\n return this.getRuntimeInfo();\n }\n\n getRuntimeVersion(environment) {\n switch (environment) {\n case RuntimeEnvironment.NODE:\n return typeof process !== 'undefined' ? process.version : null;\n \n case RuntimeEnvironment.DENO:\n return typeof Deno !== 'undefined' ? Deno.version.deno : null;\n \n case RuntimeEnvironment.BUN:\n return typeof Bun !== 'undefined' ? Bun.version : \n (typeof process !== 'undefined' ? process.versions.bun : null);\n \n case RuntimeEnvironment.BROWSER:\n return typeof navigator !== 'undefined' ? navigator.userAgent : null;\n \n default:\n return null;\n }\n }\n\n getAvailableFeatures() {\n const features = [];\n \n if (typeof fetch !== 'undefined') features.push('fetch');\n if (typeof WebSocket !== 'undefined') features.push('websockets');\n if (typeof Worker !== 'undefined') features.push('workers');\n if (typeof crypto !== 'undefined') features.push('crypto');\n if (typeof localStorage !== 'undefined') features.push('localStorage');\n if (typeof sessionStorage !== 'undefined') features.push('sessionStorage');\n if (typeof IndexedDB !== 'undefined') features.push('indexedDB');\n if (typeof WebAssembly !== 'undefined') features.push('webassembly');\n if (typeof SharedArrayBuffer !== 'undefined') features.push('sharedArrayBuffer');\n if (typeof BigInt !== 'undefined') features.push('bigint');\n if ((() => { try { return typeof Function('return import(\"\")') === 'function'; } catch { return false; } })()) features.push('dynamicImport');\n \n return features;\n }\n\n getUserAgent() {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n return navigator.userAgent;\n }\n return null;\n }\n\n getPlatformInfo() {\n // Browser platform info\n if (typeof navigator !== 'undefined') {\n return {\n platform: navigator.platform,\n language: navigator.language,\n cookieEnabled: navigator.cookieEnabled,\n onLine: navigator.onLine\n };\n }\n \n // Node.js platform info\n if (typeof process !== 'undefined') {\n return {\n platform: process.platform,\n arch: process.arch,\n version: process.version,\n pid: process.pid\n };\n }\n \n // Deno platform info\n if (typeof Deno !== 'undefined') {\n return {\n os: Deno.build.os,\n arch: Deno.build.arch,\n version: Deno.version\n };\n }\n \n return null;\n }\n\n // Compatibility checking\n isCompatible(requirements) {\n const capabilities = this.getCapabilities();\n \n for (const [feature, required] of Object.entries(requirements)) {\n if (required && !capabilities[feature]) {\n return false;\n }\n }\n \n return true;\n }\n\n getIncompatibilities(requirements) {\n const capabilities = this.getCapabilities();\n const incompatibilities = [];\n \n for (const [feature, required] of Object.entries(requirements)) {\n if (required && !capabilities[feature]) {\n incompatibilities.push(feature);\n }\n }\n \n return incompatibilities;\n }\n\n // Static methods for quick access\n static detect() {\n return new RuntimeDetector().detect();\n }\n\n static getCapabilities(environment = null) {\n return new RuntimeDetector().getCapabilities(environment);\n }\n\n static getRuntimeInfo() {\n return new RuntimeDetector().getRuntimeInfo();\n }\n\n static isCompatible(requirements) {\n return new RuntimeDetector().isCompatible(requirements);\n }\n}\n\n// Convenience functions\nexport function detectRuntime() {\n return RuntimeDetector.detect();\n}\n\nexport function getRuntimeCapabilities(environment = null) {\n return RuntimeDetector.getCapabilities(environment);\n}\n\nexport function getRuntimeInfo() {\n return RuntimeDetector.getRuntimeInfo();\n}\n\nexport function isRuntimeCompatible(requirements) {\n return RuntimeDetector.isCompatible(requirements);\n}\n\n// Default detector instance\nexport const runtimeDetector = new RuntimeDetector();", "/**\n * Module Resolver - Universal module path resolution and mapping\n * Handles different module systems and environments\n */\n\nimport { detectRuntime, RuntimeEnvironment } from './runtime-detector.js';\n\nexport class ModuleResolver {\n constructor(options = {}) {\n this.options = {\n baseUrl: '',\n paths: {},\n aliases: {},\n extensions: ['.js', '.mjs', '.cjs', '.ts', '.jsx', '.tsx'],\n moduleMap: {},\n cdnTemplate: 'https://unpkg.com/{name}@{version}/{path}',\n fallbacks: [],\n ...options\n };\n \n this.environment = detectRuntime();\n this.resolutionCache = new Map();\n }\n\n // Main resolution method\n resolve(modulePath, context = {}) {\n const cacheKey = this.getCacheKey(modulePath, context);\n \n if (this.resolutionCache.has(cacheKey)) {\n return this.resolutionCache.get(cacheKey);\n }\n\n const resolved = this.doResolve(modulePath, context);\n this.resolutionCache.set(cacheKey, resolved);\n \n return resolved;\n }\n\n doResolve(modulePath, context = {}) {\n // Handle different module path types\n const pathInfo = this.analyzePath(modulePath);\n \n switch (pathInfo.type) {\n case 'absolute':\n return this.resolveAbsolute(pathInfo, context);\n case 'relative':\n return this.resolveRelative(pathInfo, context);\n case 'package':\n return this.resolvePackage(pathInfo, context);\n case 'alias':\n return this.resolveAlias(pathInfo, context);\n case 'mapped':\n return this.resolveMapped(pathInfo, context);\n default:\n throw new Error(`Unable to resolve module: ${modulePath}`);\n }\n }\n\n analyzePath(modulePath) {\n // Absolute URLs\n if (/^https?:\\/\\//.test(modulePath)) {\n return { type: 'absolute', path: modulePath, original: modulePath };\n }\n\n // File protocol\n if (modulePath.startsWith('file://')) {\n return { type: 'absolute', path: modulePath, original: modulePath };\n }\n\n // Relative paths\n if (modulePath.startsWith('./') || modulePath.startsWith('../')) {\n return { type: 'relative', path: modulePath, original: modulePath };\n }\n\n // Check for mapped paths\n if (this.options.moduleMap[modulePath]) {\n return { \n type: 'mapped', \n path: modulePath, \n mapped: this.options.moduleMap[modulePath],\n original: modulePath \n };\n }\n\n // Check for aliases\n const aliasKey = Object.keys(this.options.aliases).find(alias => \n modulePath.startsWith(`${alias }/`) || modulePath === alias\n );\n \n if (aliasKey) {\n return { \n type: 'alias', \n path: modulePath, \n alias: aliasKey,\n remainder: modulePath.slice(aliasKey.length + 1),\n original: modulePath \n };\n }\n\n // Package imports\n return { type: 'package', path: modulePath, original: modulePath };\n }\n\n resolveAbsolute(pathInfo) {\n return {\n resolved: pathInfo.path,\n type: 'absolute',\n original: pathInfo.original\n };\n }\n\n resolveRelative(pathInfo, context) {\n let baseUrl = context.baseUrl || this.options.baseUrl || '';\n \n // Use current location in browsers\n if (this.environment === RuntimeEnvironment.BROWSER && !baseUrl) {\n baseUrl = window.location.href;\n }\n\n if (!baseUrl) {\n throw new Error(`Cannot resolve relative path \"${pathInfo.path}\" without base URL`);\n }\n\n const resolved = new URL(pathInfo.path, baseUrl).href;\n \n return {\n resolved,\n type: 'relative',\n original: pathInfo.original,\n baseUrl\n };\n }\n\n resolvePackage(pathInfo, context) {\n const packageName = this.parsePackageName(pathInfo.path);\n \n // Try different resolution strategies based on environment\n switch (this.environment) {\n case RuntimeEnvironment.BROWSER:\n return this.resolveBrowserPackage(packageName, context);\n \n case RuntimeEnvironment.NODE:\n return this.resolveNodePackage(packageName, context);\n \n case RuntimeEnvironment.DENO:\n return this.resolveDenoPackage(packageName, context);\n \n case RuntimeEnvironment.BUN:\n return this.resolveBunPackage(packageName, context);\n \n case RuntimeEnvironment.CLOUDFLARE:\n case RuntimeEnvironment.EDGE:\n return this.resolveEdgePackage(packageName, context);\n \n default:\n return this.resolveGenericPackage(packageName, context);\n }\n }\n\n parsePackageName(modulePath) {\n const parts = modulePath.split('/');\n \n if (modulePath.startsWith('@')) {\n // Scoped package\n return {\n name: `${parts[0]}/${parts[1]}`,\n subpath: parts.slice(2).join('/'),\n scope: parts[0],\n packageName: parts[1]\n };\n } else {\n // Regular package\n return {\n name: parts[0],\n subpath: parts.slice(1).join('/'),\n scope: null,\n packageName: parts[0]\n };\n }\n }\n\n resolveBrowserPackage(packageInfo, context) {\n // Try CDN resolution first\n const cdnUrl = this.resolveToCdn(packageInfo, context);\n \n return {\n resolved: cdnUrl,\n type: 'package',\n strategy: 'cdn',\n original: packageInfo.name + (packageInfo.subpath ? `/${ packageInfo.subpath}` : ''),\n package: packageInfo\n };\n }\n\n resolveNodePackage(packageInfo) {\n // Node.js resolution - return as-is for require/import to handle\n const modulePath = packageInfo.name + (packageInfo.subpath ? `/${ packageInfo.subpath}` : '');\n \n return {\n resolved: modulePath,\n type: 'package',\n strategy: 'node',\n original: modulePath,\n package: packageInfo\n };\n }\n\n resolveDenoPackage(packageInfo) {\n // Use npm: specifier for Deno\n const modulePath = `npm:${ packageInfo.name }${packageInfo.subpath ? `/${ packageInfo.subpath}` : ''}`;\n \n return {\n resolved: modulePath,\n type: 'package',\n strategy: 'deno-npm',\n original: packageInfo.name + (packageInfo.subpath ? `/${ packageInfo.subpath}` : ''),\n package: packageInfo\n };\n }\n\n resolveBunPackage(packageInfo) {\n // Bun can handle npm packages directly\n const modulePath = packageInfo.name + (packageInfo.subpath ? `/${ packageInfo.subpath}` : '');\n \n return {\n resolved: modulePath,\n type: 'package',\n strategy: 'bun',\n original: modulePath,\n package: packageInfo\n };\n }\n\n resolveEdgePackage(packageInfo, context) {\n // Edge environments typically use CDN or bundled modules\n const cdnUrl = this.resolveToCdn(packageInfo, context);\n \n return {\n resolved: cdnUrl,\n type: 'package',\n strategy: 'edge-cdn',\n original: packageInfo.name + (packageInfo.subpath ? `/${ packageInfo.subpath}` : ''),\n package: packageInfo\n };\n }\n\n resolveGenericPackage(packageInfo) {\n // Generic fallback\n const modulePath = packageInfo.name + (packageInfo.subpath ? `/${ packageInfo.subpath}` : '');\n \n return {\n resolved: modulePath,\n type: 'package',\n strategy: 'generic',\n original: modulePath,\n package: packageInfo\n };\n }\n\n resolveToCdn(packageInfo, context = {}) {\n const version = context.version || 'latest';\n const subpath = packageInfo.subpath || 'dist/index.js';\n \n return this.options.cdnTemplate\n .replace('{name}', packageInfo.name)\n .replace('{version}', version)\n .replace('{path}', subpath);\n }\n\n resolveAlias(pathInfo, context) {\n const aliasTarget = this.options.aliases[pathInfo.alias];\n const resolvedPath = pathInfo.remainder \n ? `${aliasTarget}/${pathInfo.remainder}`\n : aliasTarget;\n \n // Recursively resolve the aliased path\n const resolved = this.doResolve(resolvedPath, context);\n \n return {\n ...resolved,\n type: 'alias',\n alias: pathInfo.alias,\n aliasTarget,\n original: pathInfo.original\n };\n }\n\n resolveMapped(pathInfo, context) {\n const mapped = pathInfo.mapped;\n \n // If mapped value is a function, call it\n if (typeof mapped === 'function') {\n const result = mapped(pathInfo.path, context);\n return {\n resolved: result,\n type: 'mapped',\n original: pathInfo.original,\n mapFunction: true\n };\n }\n \n // Static mapping\n return {\n resolved: mapped,\n type: 'mapped',\n original: pathInfo.original\n };\n }\n\n // Path utilities\n addExtension(path, extensions = null) {\n const exts = extensions || this.options.extensions;\n \n // Already has extension\n if (exts.some(ext => path.endsWith(ext))) {\n return path;\n }\n \n // Add default extension\n return path + exts[0];\n }\n\n stripExtension(path) {\n const ext = this.options.extensions.find(e => path.endsWith(e));\n return ext ? path.slice(0, -ext.length) : path;\n }\n\n isRelative(path) {\n return path.startsWith('./') || path.startsWith('../');\n }\n\n isAbsolute(path) {\n return /^https?:\\/\\//.test(path) || path.startsWith('file://');\n }\n\n // Configuration methods\n addAlias(alias, target) {\n this.options.aliases[alias] = target;\n this.clearCache();\n }\n\n addMapping(from, to) {\n this.options.moduleMap[from] = to;\n this.clearCache();\n }\n\n setBaseUrl(baseUrl) {\n this.options.baseUrl = baseUrl;\n this.clearCache();\n }\n\n setCdnTemplate(template) {\n this.options.cdnTemplate = template;\n this.clearCache();\n }\n\n // Path patterns and wildcards\n resolvePattern(pattern, replacements = {}) {\n let resolved = pattern;\n \n Object.entries(replacements).forEach(([key, value]) => {\n resolved = resolved.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value);\n });\n \n return resolved;\n }\n\n // Batch resolution\n resolveAll(modulePaths, context = {}) {\n return modulePaths.map(path => {\n try {\n return { path, resolution: this.resolve(path, context), success: true };\n } catch (error) {\n return { path, error, success: false };\n }\n });\n }\n\n // Cache management\n getCacheKey(modulePath, context) {\n return `${modulePath}::${JSON.stringify(context)}`;\n }\n\n clearCache() {\n this.resolutionCache.clear();\n }\n\n getCacheStats() {\n return {\n size: this.resolutionCache.size,\n keys: Array.from(this.resolutionCache.keys())\n };\n }\n\n // Validation\n validateResolution(resolution) {\n if (!resolution || !resolution.resolved) {\n return { valid: false, error: 'Invalid resolution object' };\n }\n \n // Additional validation based on type\n switch (resolution.type) {\n case 'absolute':\n if (!this.isAbsolute(resolution.resolved)) {\n return { valid: false, error: 'Absolute resolution must be a valid URL' };\n }\n break;\n \n case 'relative':\n if (!resolution.baseUrl) {\n return { valid: false, error: 'Relative resolution must include baseUrl' };\n }\n break;\n }\n \n return { valid: true };\n }\n\n // Debug utilities\n debug(modulePath, context = {}) {\n const pathInfo = this.analyzePath(modulePath);\n const resolution = this.resolve(modulePath, context);\n const validation = this.validateResolution(resolution);\n \n return {\n input: modulePath,\n context,\n pathInfo,\n resolution,\n validation,\n environment: this.environment,\n options: this.options\n };\n }\n}\n\n// Factory function\nexport function createModuleResolver(options = {}) {\n return new ModuleResolver(options);\n}\n\n// Default resolver instance\nexport const moduleResolver = new ModuleResolver();\n\n// Convenience functions\nexport function resolveModule(modulePath, context = {}) {\n return moduleResolver.resolve(modulePath, context);\n}\n\nexport function addAlias(alias, target) {\n return moduleResolver.addAlias(alias, target);\n}\n\nexport function addMapping(from, to) {\n return moduleResolver.addMapping(from, to);\n}\n", "/**\n * Asset Manager - Universal asset loading and management\n * Handles CSS, images, fonts, and other static assets across environments\n */\n\nimport { detectRuntime, RuntimeEnvironment } from './runtime-detector.js';\n\nexport class AssetManager {\n constructor(options = {}) {\n this.options = {\n baseUrl: '',\n assetPaths: {},\n preloadAssets: [],\n lazyLoad: true,\n cacheAssets: true,\n optimizeImages: true,\n inlineThreshold: 1024, // Inline assets smaller than this (bytes)\n supportedFormats: {\n images: ['png', 'jpg', 'jpeg', 'gif', 'svg', 'webp', 'avif'],\n styles: ['css'],\n fonts: ['woff', 'woff2', 'ttf', 'otf'],\n scripts: ['js', 'mjs']\n },\n ...options\n };\n \n this.environment = detectRuntime();\n this.loadedAssets = new Map();\n this.loadingAssets = new Map();\n this.assetCache = new Map();\n }\n\n // Main asset loading method\n async loadAsset(assetPath, options = {}) {\n const resolvedPath = this.resolvePath(assetPath, options);\n const assetType = this.getAssetType(resolvedPath);\n const cacheKey = this.getCacheKey(resolvedPath, options);\n\n // Return cached asset if available\n if (this.options.cacheAssets && this.loadedAssets.has(cacheKey)) {\n return this.loadedAssets.get(cacheKey);\n }\n\n // Return existing loading promise\n if (this.loadingAssets.has(cacheKey)) {\n return this.loadingAssets.get(cacheKey);\n }\n\n // Create loading promise\n const loadingPromise = this.doLoadAsset(resolvedPath, assetType, options);\n this.loadingAssets.set(cacheKey, loadingPromise);\n\n try {\n const asset = await loadingPromise;\n \n if (this.options.cacheAssets) {\n this.loadedAssets.set(cacheKey, asset);\n }\n \n return asset;\n } finally {\n this.loadingAssets.delete(cacheKey);\n }\n }\n\n async doLoadAsset(assetPath, assetType, options = {}) {\n switch (assetType) {\n case 'css':\n return await this.loadStylesheet(assetPath, options);\n case 'image':\n return await this.loadImage(assetPath, options);\n case 'font':\n return await this.loadFont(assetPath, options);\n case 'script':\n return await this.loadScript(assetPath, options);\n case 'data':\n return await this.loadData(assetPath, options);\n default:\n return await this.loadGeneric(assetPath, options);\n }\n }\n\n // CSS loading\n async loadStylesheet(cssPath, options = {}) {\n if (this.environment === RuntimeEnvironment.BROWSER) {\n return await this.loadBrowserStylesheet(cssPath, options);\n } else {\n return await this.loadServerStylesheet(cssPath, options);\n }\n }\n\n async loadBrowserStylesheet(cssPath, options = {}) {\n return new Promise((resolve, reject) => {\n // Check if already loaded\n const existing = document.querySelector(`link[href=\"${cssPath}\"]`);\n if (existing) {\n resolve({ element: existing, cached: true });\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = cssPath;\n \n if (options.media) link.media = options.media;\n if (options.crossorigin) link.crossOrigin = options.crossorigin;\n\n link.onload = () => {\n resolve({ element: link, loaded: true });\n };\n\n link.onerror = () => {\n reject(new Error(`Failed to load stylesheet: ${cssPath}`));\n };\n\n document.head.appendChild(link);\n });\n }\n\n async loadServerStylesheet(cssPath) {\n try {\n const response = await fetch(cssPath);\n const content = await response.text();\n \n return {\n content,\n path: cssPath,\n inline: true\n };\n } catch (error) {\n throw new Error(`Failed to load stylesheet: ${cssPath} - ${error.message}`);\n }\n }\n\n // Image loading\n async loadImage(imagePath, options = {}) {\n if (this.environment === RuntimeEnvironment.BROWSER) {\n return await this.loadBrowserImage(imagePath, options);\n } else {\n return await this.loadServerImage(imagePath, options);\n }\n }\n\n async loadBrowserImage(imagePath, options = {}) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n \n if (options.crossorigin) img.crossOrigin = options.crossorigin;\n if (options.loading) img.loading = options.loading; // lazy, eager\n if (options.sizes) img.sizes = options.sizes;\n if (options.srcset) img.srcset = options.srcset;\n\n img.onload = () => {\n resolve({\n element: img,\n width: img.naturalWidth,\n height: img.naturalHeight,\n path: imagePath\n });\n };\n\n img.onerror = () => {\n reject(new Error(`Failed to load image: ${imagePath}`));\n };\n\n img.src = imagePath;\n });\n }\n\n async loadServerImage(imagePath) {\n try {\n const response = await fetch(imagePath);\n const blob = await response.blob();\n \n return {\n blob,\n size: blob.size,\n type: blob.type,\n path: imagePath\n };\n } catch (error) {\n throw new Error(`Failed to load image: ${imagePath} - ${error.message}`);\n }\n }\n\n // Font loading\n async loadFont(fontPath, options = {}) {\n if (this.environment === RuntimeEnvironment.BROWSER && 'fonts' in document) {\n return await this.loadBrowserFont(fontPath, options);\n } else {\n return await this.loadGeneric(fontPath, options);\n }\n }\n\n async loadBrowserFont(fontPath, options = {}) {\n try {\n const fontFace = new FontFace(\n options.family || 'CustomFont',\n `url(${fontPath})`,\n {\n style: options.style || 'normal',\n weight: options.weight || 'normal',\n stretch: options.stretch || 'normal'\n }\n );\n\n await fontFace.load();\n document.fonts.add(fontFace);\n\n return {\n fontFace,\n family: options.family,\n loaded: true\n };\n } catch (error) {\n throw new Error(`Failed to load font: ${fontPath} - ${error.message}`);\n }\n }\n\n // Script loading\n async loadScript(scriptPath, options = {}) {\n if (this.environment === RuntimeEnvironment.BROWSER) {\n return await this.loadBrowserScript(scriptPath, options);\n } else {\n return await this.loadServerScript(scriptPath, options);\n }\n }\n\n async loadBrowserScript(scriptPath, options = {}) {\n return new Promise((resolve, reject) => {\n // Check if already loaded\n const existing = document.querySelector(`script[src=\"${scriptPath}\"]`);\n if (existing) {\n resolve({ element: existing, cached: true });\n return;\n }\n\n const script = document.createElement('script');\n script.src = scriptPath;\n \n if (options.type) script.type = options.type;\n if (options.async !== undefined) script.async = options.async;\n if (options.defer !== undefined) script.defer = options.defer;\n if (options.crossorigin) script.crossOrigin = options.crossorigin;\n\n script.onload = () => {\n resolve({ element: script, loaded: true });\n };\n\n script.onerror = () => {\n reject(new Error(`Failed to load script: ${scriptPath}`));\n };\n\n document.head.appendChild(script);\n });\n }\n\n async loadServerScript(scriptPath, options = {}) {\n try {\n const response = await fetch(scriptPath);\n const content = await response.text();\n \n return {\n content,\n path: scriptPath,\n type: options.type || 'text/javascript'\n };\n } catch (error) {\n throw new Error(`Failed to load script: ${scriptPath} - ${error.message}`);\n }\n }\n\n // Data loading (JSON, XML, etc.)\n async loadData(dataPath) {\n try {\n const response = await fetch(dataPath);\n \n const contentType = response.headers.get('content-type') || '';\n let data;\n\n if (contentType.includes('application/json')) {\n data = await response.json();\n } else if (contentType.includes('text/xml') || contentType.includes('application/xml')) {\n const text = await response.text();\n data = this.parseXML(text);\n } else {\n data = await response.text();\n }\n\n return {\n data,\n contentType,\n path: dataPath\n };\n } catch (error) {\n throw new Error(`Failed to load data: ${dataPath} - ${error.message}`);\n }\n }\n\n parseXML(xmlString) {\n if (typeof DOMParser !== 'undefined') {\n const parser = new DOMParser();\n return parser.parseFromString(xmlString, 'text/xml');\n }\n return xmlString;\n }\n\n // Generic loading\n async loadGeneric(assetPath) {\n try {\n const response = await fetch(assetPath);\n const blob = await response.blob();\n \n return {\n blob,\n size: blob.size,\n type: blob.type,\n path: assetPath\n };\n } catch (error) {\n throw new Error(`Failed to load asset: ${assetPath} - ${error.message}`);\n }\n }\n\n // Path resolution\n resolvePath(assetPath, options = {}) {\n // Ensure assetPath is a string\n if (typeof assetPath !== 'string') {\n throw new Error(`Expected string path, got ${typeof assetPath}: ${assetPath}`);\n }\n \n // Absolute URLs\n if (assetPath.startsWith('http://') || assetPath.startsWith('https://')) {\n return assetPath;\n }\n\n // Data URLs\n if (assetPath.startsWith('data:')) {\n return assetPath;\n }\n\n // Blob URLs\n if (assetPath.startsWith('blob:')) {\n return assetPath;\n }\n\n // Check asset path mappings\n if (this.options.assetPaths[assetPath]) {\n return this.options.assetPaths[assetPath];\n }\n\n // Resolve relative to base URL\n const baseUrl = options.baseUrl || this.options.baseUrl;\n if (baseUrl) {\n return new URL(assetPath, baseUrl).href;\n }\n\n return assetPath;\n }\n\n // Asset type detection\n getAssetType(assetPath) {\n const extension = this.getFileExtension(assetPath).toLowerCase();\n \n if (this.options.supportedFormats.images.includes(extension)) {\n return 'image';\n }\n \n if (this.options.supportedFormats.styles.includes(extension)) {\n return 'css';\n }\n \n if (this.options.supportedFormats.fonts.includes(extension)) {\n return 'font';\n }\n \n if (this.options.supportedFormats.scripts.includes(extension)) {\n return 'script';\n }\n\n if (['json', 'xml'].includes(extension)) {\n return 'data';\n }\n\n return 'generic';\n }\n\n getFileExtension(path) {\n // Remove query parameters and hash\n const cleanPath = path.split('?')[0].split('#')[0];\n const parts = cleanPath.split('.');\n return parts.length > 1 ? parts.pop() : '';\n }\n\n // Batch operations\n async loadAssets(assetPaths, options = {}) {\n const loadPromises = assetPaths.map(path => \n this.loadAsset(path, options).catch(error => ({ error, path }))\n );\n \n const results = await Promise.all(loadPromises);\n \n return {\n successful: results.filter(r => !r.error),\n failed: results.filter(r => r.error)\n };\n }\n\n // Preloading\n async preloadAssets(assetPaths = null) {\n const toPreload = assetPaths || this.options.preloadAssets;\n \n if (this.environment === RuntimeEnvironment.BROWSER) {\n return await this.preloadBrowserAssets(toPreload);\n } else {\n return await this.loadAssets(toPreload, { preload: true });\n }\n }\n\n async preloadBrowserAssets(assetPaths) {\n const preloadPromises = assetPaths.map(async (assetPath) => {\n try {\n const link = document.createElement('link');\n link.rel = 'preload';\n link.href = this.resolvePath(assetPath);\n \n const assetType = this.getAssetType(assetPath);\n switch (assetType) {\n case 'css':\n link.as = 'style';\n break;\n case 'script':\n link.as = 'script';\n break;\n case 'font':\n link.as = 'font';\n link.crossOrigin = 'anonymous';\n break;\n case 'image':\n link.as = 'image';\n break;\n }\n\n document.head.appendChild(link);\n return { success: true, path: assetPath };\n } catch (error) {\n return { success: false, path: assetPath, error };\n }\n });\n\n return await Promise.all(preloadPromises);\n }\n\n // Cache management\n getCacheKey(assetPath, options) {\n return `${assetPath}::${JSON.stringify(options)}`;\n }\n\n clearCache() {\n this.loadedAssets.clear();\n this.assetCache.clear();\n }\n\n getCacheStats() {\n return {\n loaded: this.loadedAssets.size,\n loading: this.loadingAssets.size,\n cached: this.assetCache.size\n };\n }\n\n // Asset optimization\n shouldInline(assetPath, size = null) {\n if (size && size <= this.options.inlineThreshold) {\n return true;\n }\n return false;\n }\n\n async optimizeImage(imagePath, options = {}) {\n // Placeholder for image optimization\n // In a real implementation, this might compress images, convert formats, etc.\n return await this.loadImage(imagePath, options);\n }\n\n // Utilities\n addAssetPath(alias, path) {\n this.options.assetPaths[alias] = path;\n }\n\n setBaseUrl(baseUrl) {\n this.options.baseUrl = baseUrl;\n }\n\n isAssetLoaded(assetPath) {\n const resolvedPath = this.resolvePath(assetPath);\n return this.loadedAssets.has(this.getCacheKey(resolvedPath, {}));\n }\n\n getLoadedAssets() {\n return Array.from(this.loadedAssets.keys());\n }\n}\n\n// Factory function\nexport function createAssetManager(options = {}) {\n return new AssetManager(options);\n}\n\n// Default asset manager instance\nexport const assetManager = new AssetManager();\n\n// Convenience functions\nexport async function loadAsset(assetPath, options = {}) {\n return await assetManager.loadAsset(assetPath, options);\n}\n\nexport async function loadStylesheet(cssPath, options = {}) {\n return await assetManager.loadStylesheet(cssPath, options);\n}\n\nexport async function loadImage(imagePath, options = {}) {\n return await assetManager.loadImage(imagePath, options);\n}\n\nexport async function preloadAssets(assetPaths) {\n return await assetManager.preloadAssets(assetPaths);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["EdgeRuntime", "render", "render", "hydrate", "render", "BrowserRuntime", "EdgeRuntime", "NodeRuntime", "StaticRuntime", "RuntimeEnvironment", "detectRuntime", "detectRuntime", "RuntimeEnvironment", "detectRuntime", "RuntimeEnvironment", "render", "hydrate", "autoHydrate"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var Coherent=(()=>{var d=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var p=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var M=(o,e)=>{for(var t in e)d(o,t,{get:e[t],enumerable:!0})},C=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of w(e))!R.call(o,n)&&n!==t&&d(o,n,{get:()=>e[n],enumerable:!(r=y(e,n))||r.enumerable});return o};var b=o=>C(d({},"__esModule",{value:!0}),o);var z={};M(z,{BrowserRuntime:()=>l});var c=p("@coherent.js/core"),a=p("@coherent.js/client"),m=p("@coherent.js/web-components"),l=class o{constructor(e={}){this.options={autoHydrate:!0,enableWebComponents:!0,enablePerformanceMonitoring:!0,routingMode:"hash",...e},this.componentRegistry=new Map,this.routeRegistry=new Map,this.currentRoute=null,this.isInitialized=!1,this.renderMetrics=[],this.startTime=Date.now()}async initialize(){this.isInitialized||(document.readyState==="loading"&&await new Promise(e=>{document.addEventListener("DOMContentLoaded",e)}),this.options.enableWebComponents&&await this.initializeWebComponents(),this.options.routingMode!=="none"&&this.initializeRouting(),this.options.autoHydrate&&await this.autoHydrate(),this.options.enablePerformanceMonitoring&&this.initializePerformanceMonitoring(),this.isInitialized=!0)}async initializeWebComponents(){try{await(0,m.integrateWithWebComponents)(Object.fromEntries(this.componentRegistry),this.options.webComponents||{})}catch(e){console.warn("Failed to initialize Web Components:",e)}}initializeRouting(){let e=()=>{let t=this.getCurrentRoute();t!==this.currentRoute&&(this.handleRouteChange(this.currentRoute,t),this.currentRoute=t)};this.options.routingMode==="hash"?window.addEventListener("hashchange",e):this.options.routingMode==="history"&&window.addEventListener("popstate",e),this.currentRoute=this.getCurrentRoute(),e()}getCurrentRoute(){return this.options.routingMode==="hash"?window.location.hash.slice(1)||"/":this.options.routingMode==="history"?window.location.pathname:"/"}handleRouteChange(e,t){let r=this.routeRegistry.get(t)||this.routeRegistry.get("*");if(r)try{r({route:t,oldRoute:e,params:this.parseRouteParams(t)})}catch(n){console.error("Route handler error:",n)}}parseRouteParams(e){let t={},r=e.split("/").filter(Boolean);return r.forEach((n,i)=>{if(n.startsWith(":")){let s=n.slice(1),h=r[i];h&&!h.startsWith(":")&&(t[s]=h)}}),t}initializePerformanceMonitoring(){if(typeof window>"u"||typeof window.PerformanceObserver>"u")return;let e=new window.PerformanceObserver(t=>{for(let r of t.getEntries())r.name.includes("coherent")&&this.renderMetrics.push({name:r.name,duration:r.duration,startTime:r.startTime,timestamp:Date.now()})});try{e.observe({entryTypes:["measure","mark"]})}catch(t){console.warn("Performance monitoring not available:",t)}setInterval(()=>{let t=Date.now()-3e5;this.renderMetrics=this.renderMetrics.filter(r=>r.timestamp>t)},6e4)}registerComponent(e,t,r={}){let n=(0,a.makeHydratable)(t,{componentName:e,...r});if(this.componentRegistry.set(e,n),this.options.enableWebComponents&&this.isInitialized)try{(0,m.defineCoherentElement)(e,n,r)}catch(i){console.warn(`Failed to register Web Component ${e}:`,i)}return n}getComponent(e){return this.componentRegistry.get(e)}addRoute(e,t){this.routeRegistry.set(e,t)}navigate(e){this.options.routingMode==="hash"?window.location.hash=e:this.options.routingMode==="history"&&(window.history.pushState({},"",e),this.handleRouteChange(this.currentRoute,e),this.currentRoute=e)}async render(e,t={},r=null){let n=`coherent-render-start-${Date.now()}`,i=`coherent-render-end-${Date.now()}`;try{performance.mark(n);let s=typeof e=="string"?this.getComponent(e):e;if(!s)throw new Error(`Component not found: ${e}`);let h=s(t),f=(0,c.render)(h),u=r;typeof r=="string"&&(u=document.querySelector(r)),u||(u=document.body),u.innerHTML=f;let g=await(0,a.hydrate)(u.firstElementChild,s,t);return performance.mark(i),performance.measure(`coherent-render-${s.name||"anonymous"}`,n,i),g}catch(s){throw performance.mark(i),console.error("Render error:",s),s}}async createApp(e={}){return await this.initialize(),{component:(t,r,n)=>this.registerComponent(t,r,n),route:(t,r)=>this.addRoute(t,r),navigate:t=>this.navigate(t),render:(t,r,n)=>this.render(t,r,n),state:c.withState,memo:c.memo,hydrate:(t,r,n)=>(0,a.hydrate)(t,r,n),getRuntime:()=>this,getCurrentRoute:()=>this.currentRoute,getPerformanceMetrics:()=>[...this.renderMetrics],mount:async(t,r="#app")=>await this.render(t,{},r),unmount:(t="#app")=>{let r=typeof t=="string"?document.querySelector(t):t;r&&(r.innerHTML="")}}}async autoHydrate(){let e=Object.fromEntries(this.componentRegistry);await(0,a.autoHydrate)(e)}static async createQuickApp(e={},t={}){let r=new o(t);return Object.entries(e).forEach(([n,i])=>{r.registerComponent(n,i)}),await r.createApp(t)}static async renderToPage(e,t={},r="#app"){let n=new o({autoHydrate:!1});return await n.initialize(),await n.render(e,t,r)}getPerformanceReport(){let e=Date.now(),t=e-this.startTime,r=this.renderMetrics.filter(i=>i.timestamp>=e-6e4),n=r.length>0?r.reduce((i,s)=>i+s.duration,0)/r.length:0;return{uptime:t,totalRenders:this.renderMetrics.length,recentRenders:r.length,averageRenderTime:Math.round(n*100)/100,registeredComponents:this.componentRegistry.size,registeredRoutes:this.routeRegistry.size,currentRoute:this.currentRoute,memoryUsage:this.getMemoryUsage()}}getMemoryUsage(){return typeof performance<"u"&&performance.memory?{used:Math.round(performance.memory.usedJSHeapSize/1024/1024),total:Math.round(performance.memory.totalJSHeapSize/1024/1024),limit:Math.round(performance.memory.jsHeapSizeLimit/1024/1024)}:null}debug(){return{runtime:this,components:Array.from(this.componentRegistry.keys()),routes:Array.from(this.routeRegistry.keys()),performance:this.getPerformanceReport(),options:this.options}}};return b(z);})();
|
|
2
|
+
//# sourceMappingURL=coherent-universal.min.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtimes/browser.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * Browser Runtime - Full client-side Coherent.js runtime\n * Works in browsers, Electron, and Tauri\n */\n\nimport { render, withState, memo } from '@coherent.js/core';\nimport { hydrate, autoHydrate, makeHydratable } from '@coherent.js/client';\nimport { integrateWithWebComponents, defineCoherentElement } from '@coherent.js/web-components';\n\nexport class BrowserRuntime {\n constructor(options = {}) {\n this.options = {\n autoHydrate: true,\n enableWebComponents: true,\n enablePerformanceMonitoring: true,\n routingMode: 'hash', // 'hash', 'history', or 'memory'\n ...options\n };\n \n this.componentRegistry = new Map();\n this.routeRegistry = new Map();\n this.currentRoute = null;\n this.isInitialized = false;\n \n // Performance tracking\n this.renderMetrics = [];\n this.startTime = Date.now();\n }\n\n async initialize() {\n if (this.isInitialized) return;\n\n // Wait for DOM to be ready\n if (document.readyState === 'loading') {\n await new Promise(resolve => {\n document.addEventListener('DOMContentLoaded', resolve);\n });\n }\n\n // Initialize Web Components integration\n if (this.options.enableWebComponents) {\n await this.initializeWebComponents();\n }\n\n // Initialize routing\n if (this.options.routingMode !== 'none') {\n this.initializeRouting();\n }\n\n // Auto-hydrate existing components\n if (this.options.autoHydrate) {\n await this.autoHydrate();\n }\n\n // Initialize performance monitoring\n if (this.options.enablePerformanceMonitoring) {\n this.initializePerformanceMonitoring();\n }\n\n this.isInitialized = true;\n }\n\n async initializeWebComponents() {\n try {\n await integrateWithWebComponents(\n Object.fromEntries(this.componentRegistry), \n this.options.webComponents || {}\n );\n } catch (error) {\n console.warn('Failed to initialize Web Components:', error);\n }\n }\n\n initializeRouting() {\n const handleRouteChange = () => {\n const newRoute = this.getCurrentRoute();\n if (newRoute !== this.currentRoute) {\n this.handleRouteChange(this.currentRoute, newRoute);\n this.currentRoute = newRoute;\n }\n };\n\n if (this.options.routingMode === 'hash') {\n window.addEventListener('hashchange', handleRouteChange);\n } else if (this.options.routingMode === 'history') {\n window.addEventListener('popstate', handleRouteChange);\n }\n\n // Handle initial route\n this.currentRoute = this.getCurrentRoute();\n handleRouteChange();\n }\n\n getCurrentRoute() {\n if (this.options.routingMode === 'hash') {\n return window.location.hash.slice(1) || '/';\n } else if (this.options.routingMode === 'history') {\n return window.location.pathname;\n }\n return '/';\n }\n\n handleRouteChange(oldRoute, newRoute) {\n const handler = this.routeRegistry.get(newRoute) || this.routeRegistry.get('*');\n \n if (handler) {\n try {\n handler({ route: newRoute, oldRoute, params: this.parseRouteParams(newRoute) });\n } catch (error) {\n console.error('Route handler error:', error);\n }\n }\n }\n\n parseRouteParams(route) {\n // Simple parameter parsing - can be enhanced\n const params = {};\n const parts = route.split('/').filter(Boolean);\n \n parts.forEach((part, index) => {\n if (part.startsWith(':')) {\n const key = part.slice(1);\n const value = parts[index];\n if (value && !value.startsWith(':')) {\n params[key] = value;\n }\n }\n });\n \n return params;\n }\n\n initializePerformanceMonitoring() {\n // Monitor render performance\n if (typeof window === 'undefined' || typeof window.PerformanceObserver === 'undefined') return;\n const observer = new window.PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (entry.name.includes('coherent')) {\n this.renderMetrics.push({\n name: entry.name,\n duration: entry.duration,\n startTime: entry.startTime,\n timestamp: Date.now()\n });\n }\n }\n });\n\n try {\n observer.observe({ entryTypes: ['measure', 'mark'] });\n } catch (error) {\n console.warn('Performance monitoring not available:', error);\n }\n\n // Clean up old metrics periodically\n setInterval(() => {\n const cutoff = Date.now() - 300000; // 5 minutes\n this.renderMetrics = this.renderMetrics.filter(m => m.timestamp > cutoff);\n }, 60000); // Every minute\n }\n\n // Component management\n registerComponent(name, component, options = {}) {\n // Make component hydratable\n const hydratableComponent = makeHydratable(component, {\n componentName: name,\n ...options\n });\n\n this.componentRegistry.set(name, hydratableComponent);\n\n // Register as Web Component if enabled\n if (this.options.enableWebComponents && this.isInitialized) {\n try {\n defineCoherentElement(name, hydratableComponent, options);\n } catch (error) {\n console.warn(`Failed to register Web Component ${name}:`, error);\n }\n }\n\n return hydratableComponent;\n }\n\n getComponent(name) {\n return this.componentRegistry.get(name);\n }\n\n // Routing\n addRoute(path, handler) {\n this.routeRegistry.set(path, handler);\n }\n\n navigate(path) {\n if (this.options.routingMode === 'hash') {\n window.location.hash = path;\n } else if (this.options.routingMode === 'history') {\n window.history.pushState({}, '', path);\n this.handleRouteChange(this.currentRoute, path);\n this.currentRoute = path;\n }\n }\n\n // Rendering\n async render(component, props = {}, target = null) {\n const startMark = `coherent-render-start-${Date.now()}`;\n const endMark = `coherent-render-end-${Date.now()}`;\n \n try {\n performance.mark(startMark);\n\n // Resolve component\n const resolvedComponent = typeof component === 'string' \n ? this.getComponent(component) \n : component;\n\n if (!resolvedComponent) {\n throw new Error(`Component not found: ${component}`);\n }\n\n // Render component\n const vdom = resolvedComponent(props);\n const html = render(vdom);\n\n // Find or create target element\n let targetElement = target;\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n }\n if (!targetElement) {\n targetElement = document.body;\n }\n\n // Update DOM\n targetElement.innerHTML = html;\n\n // Hydrate the rendered component\n const instance = await hydrate(targetElement.firstElementChild, resolvedComponent, props);\n\n performance.mark(endMark);\n performance.measure(`coherent-render-${resolvedComponent.name || 'anonymous'}`, startMark, endMark);\n\n return instance;\n } catch (error) {\n performance.mark(endMark);\n console.error('Render error:', error);\n throw error;\n }\n }\n\n // Create a complete app\n async createApp(_options = {}) {\n await this.initialize();\n \n return {\n // Component management\n component: (name, component, opts) => this.registerComponent(name, component, opts),\n \n // Routing\n route: (path, handler) => this.addRoute(path, handler),\n navigate: (path) => this.navigate(path),\n \n // Rendering\n render: (component, props, target) => this.render(component, props, target),\n \n // State management\n state: withState,\n memo: memo,\n \n // Hydration\n hydrate: (element, component, props) => hydrate(element, component, props),\n \n // Utilities\n getRuntime: () => this,\n getCurrentRoute: () => this.currentRoute,\n getPerformanceMetrics: () => [...this.renderMetrics],\n \n // Lifecycle\n mount: async (component, target = '#app') => {\n const app = await this.render(component, {}, target);\n return app;\n },\n \n unmount: (target = '#app') => {\n const element = typeof target === 'string' ? document.querySelector(target) : target;\n if (element) {\n element.innerHTML = '';\n }\n }\n };\n }\n\n // Auto-hydration\n async autoHydrate() {\n const componentMap = Object.fromEntries(this.componentRegistry);\n await autoHydrate(componentMap);\n }\n\n // Static methods for quick setup\n static async createQuickApp(components = {}, options = {}) {\n const runtime = new BrowserRuntime(options);\n \n // Register all components\n Object.entries(components).forEach(([name, component]) => {\n runtime.registerComponent(name, component);\n });\n \n return await runtime.createApp(options);\n }\n\n static async renderToPage(component, props = {}, target = '#app') {\n const runtime = new BrowserRuntime({ autoHydrate: false });\n await runtime.initialize();\n return await runtime.render(component, props, target);\n }\n\n // Performance utilities\n getPerformanceReport() {\n const now = Date.now();\n const uptime = now - this.startTime;\n const recentMetrics = this.renderMetrics.filter(m => m.timestamp >= now - 60000);\n \n const averageRenderTime = recentMetrics.length > 0\n ? recentMetrics.reduce((sum, m) => sum + m.duration, 0) / recentMetrics.length\n : 0;\n\n return {\n uptime,\n totalRenders: this.renderMetrics.length,\n recentRenders: recentMetrics.length,\n averageRenderTime: Math.round(averageRenderTime * 100) / 100,\n registeredComponents: this.componentRegistry.size,\n registeredRoutes: this.routeRegistry.size,\n currentRoute: this.currentRoute,\n memoryUsage: this.getMemoryUsage()\n };\n }\n\n getMemoryUsage() {\n if (typeof performance !== 'undefined' && performance.memory) {\n return {\n used: Math.round(performance.memory.usedJSHeapSize / 1024 / 1024),\n total: Math.round(performance.memory.totalJSHeapSize / 1024 / 1024),\n limit: Math.round(performance.memory.jsHeapSizeLimit / 1024 / 1024)\n };\n }\n return null;\n }\n\n // Development utilities\n debug() {\n return {\n runtime: this,\n components: Array.from(this.componentRegistry.keys()),\n routes: Array.from(this.routeRegistry.keys()),\n performance: this.getPerformanceReport(),\n options: this.options\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["browser_exports", "__export", "BrowserRuntime", "import_core", "import_client", "import_web_components", "_BrowserRuntime", "options", "resolve", "error", "handleRouteChange", "newRoute", "oldRoute", "handler", "route", "params", "parts", "part", "index", "key", "value", "observer", "list", "entry", "cutoff", "m", "name", "component", "hydratableComponent", "path", "props", "target", "startMark", "endMark", "resolvedComponent", "vdom", "html", "targetElement", "instance", "_options", "opts", "element", "componentMap", "components", "runtime", "now", "uptime", "recentMetrics", "averageRenderTime", "sum"]
|
|
7
|
+
}
|