@tachui/devtools 0.8.1-alpha → 0.8.8
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/README.md +2 -2
- package/dist/debug/index.d.ts +1 -0
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +0 -1
- package/dist/import-guide.d.ts +50 -0
- package/dist/import-guide.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +741 -1
- package/dist/index.prod.js +0 -1
- package/dist/inspector/index.js +0 -1
- package/dist/modifier-metadata.d.ts +4 -0
- package/dist/modifier-metadata.d.ts.map +1 -0
- package/dist/modifier-parameter-system.d.ts +69 -0
- package/dist/modifier-parameter-system.d.ts.map +1 -0
- package/dist/profiler/index.js +0 -1
- package/dist/runtime-modifier-validation.d.ts +72 -0
- package/dist/runtime-modifier-validation.d.ts.map +1 -0
- package/dist/testing/index.js +0 -1
- package/dist/vite-plugin-import-optimizer.d.ts +33 -0
- package/dist/vite-plugin-import-optimizer.d.ts.map +1 -0
- package/dist/vscode-extension/modifier-intellisense.d.ts +36 -0
- package/dist/vscode-extension/modifier-intellisense.d.ts.map +1 -0
- package/package.json +9 -4
- package/dist/debug/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.prod.js.map +0 -1
- package/dist/inspector/index.js.map +0 -1
- package/dist/profiler/index.js.map +0 -1
- package/dist/testing/index.js.map +0 -1
package/dist/index.prod.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.prod.js","sources":["../src/index.prod.ts"],"sourcesContent":["/**\n * @tachui/devtools - Production Stubs\n *\n * Lightweight production stubs that get tree-shaken away.\n * This file provides no-op implementations of all devtools exports\n * to prevent devtools code from being included in production bundles.\n */\n\n// Core debugging system - lightweight stubs\nexport const enableDebug = () => {}\nexport const debugManager = {\n enable: () => {},\n disable: () => {},\n log: () => {},\n warn: () => {},\n error: () => {},\n group: () => {},\n groupEnd: () => {},\n time: () => {},\n timeEnd: () => {},\n clear: () => {},\n isEnabled: () => false,\n}\n\n// Component inspection system - no-ops\nexport const Inspector = {\n create: () => ({}),\n destroy: () => {},\n inspect: () => ({}),\n highlight: () => {},\n unhighlight: () => {},\n}\n\n// Profiler - no-ops\nexport const Profiler = {\n start: () => {},\n stop: () => {},\n mark: () => {},\n measure: () => {},\n getEntries: () => [],\n}\n\n// Testing utilities - no-ops\nexport const TestingUtils = {\n createTestRenderer: () => ({}),\n waitFor: async () => {},\n fireEvent: () => {},\n}\n\n// Build-time validation - no-ops\nexport const BuildTimeValidator = {\n validate: () => true,\n getErrors: () => [],\n getWarnings: () => [],\n}\n\n// Error handling system - minimal stubs\nexport const ErrorBoundary = () => null\nexport const ErrorRecovery = {\n recover: () => {},\n reset: () => {},\n}\nexport const ErrorReporting = {\n report: () => {},\n subscribe: () => () => {},\n}\n\n// Development warnings - no-op\nexport const DevelopmentWarnings = {\n warn: () => {},\n suppress: () => {},\n enable: () => {},\n disable: () => {},\n}\n\n// Validation debugging - no-ops\nexport const ValidationDebugger = {\n log: () => {},\n track: () => {},\n getSnapshot: () => ({}),\n}\nexport const ValidationDebugUtils = {\n formatError: (err: any) => err?.message || 'Unknown error',\n getComponentInfo: () => ({}),\n}\nexport const validationDebugger = ValidationDebugger\n\n// Performance monitoring - no-ops\nexport const PerformanceMonitor = {\n start: () => {},\n stop: () => {},\n measure: () => {},\n getMetrics: () => ({}),\n}\n\n// Types (empty objects for compatibility)\nexport type ValidationDebugEventType = string\nexport type ComponentDebugInfo = Record<string, any>\nexport type PerformanceSnapshot = Record<string, any>\nexport type ValidationDebugEvent = Record<string, any>\nexport type ValidationDebugSession = Record<string, any>\n\n// Version\nexport const VERSION = '0.8.0-alpha'\n"],"names":[],"mappings":"AASO,MAAM,cAAc,MAAM;AAAC;AAC3B,MAAM,eAAe;AAAA,EAC1B,QAAQ,MAAM;AAAA,EAAC;AAAA,EACf,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,KAAK,MAAM;AAAA,EAAC;AAAA,EACZ,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,WAAW,MAAM;AACnB;AAGO,MAAM,YAAY;AAAA,EACvB,QAAQ,OAAO,CAAA;AAAA,EACf,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,SAAS,OAAO,CAAA;AAAA,EAChB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,aAAa,MAAM;AAAA,EAAC;AACtB;AAGO,MAAM,WAAW;AAAA,EACtB,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,YAAY,MAAM,CAAA;AACpB;AAGO,MAAM,eAAe;AAAA,EAC1B,oBAAoB,OAAO,CAAA;AAAA,EAC3B,SAAS,YAAY;AAAA,EAAC;AAAA,EACtB,WAAW,MAAM;AAAA,EAAC;AACpB;AAGO,MAAM,qBAAqB;AAAA,EAChC,UAAU,MAAM;AAAA,EAChB,WAAW,MAAM,CAAA;AAAA,EACjB,aAAa,MAAM,CAAA;AACrB;AAGO,MAAM,gBAAgB,MAAM;AAC5B,MAAM,gBAAgB;AAAA,EAC3B,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,OAAO,MAAM;AAAA,EAAC;AAChB;AACO,MAAM,iBAAiB;AAAA,EAC5B,QAAQ,MAAM;AAAA,EAAC;AAAA,EACf,WAAW,MAAM,MAAM;AAAA,EAAC;AAC1B;AAGO,MAAM,sBAAsB;AAAA,EACjC,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,QAAQ,MAAM;AAAA,EAAC;AAAA,EACf,SAAS,MAAM;AAAA,EAAC;AAClB;AAGO,MAAM,qBAAqB;AAAA,EAChC,KAAK,MAAM;AAAA,EAAC;AAAA,EACZ,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,aAAa,OAAO,CAAA;AACtB;AACO,MAAM,uBAAuB;AAAA,EAClC,aAAa,CAAC,QAAa,KAAK,WAAW;AAAA,EAC3C,kBAAkB,OAAO,CAAA;AAC3B;AACO,MAAM,qBAAqB;AAG3B,MAAM,qBAAqB;AAAA,EAChC,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,YAAY,OAAO,CAAA;AACrB;AAUO,MAAM,UAAU;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/inspector/index.ts"],"sourcesContent":["/**\n * Development Tools System\n *\n * Comprehensive debugging and development tools for TachUI.\n * Provides component tree inspection, performance analysis,\n * and runtime debugging capabilities.\n */\n\nimport { createSignal } from '@tachui/core'\nimport type { ComponentInstance } from '@tachui/core'\n\n/**\n * Component tree node for debugging\n */\nexport interface ComponentTreeNode {\n id: string\n name: string\n type: 'component' | 'element' | 'text' | 'fragment'\n props: Record<string, any>\n children: ComponentTreeNode[]\n parent: ComponentTreeNode | null\n depth: number\n renderCount: number\n lastRenderTime: number\n memoryUsage: number\n warnings: string[]\n errors: string[]\n}\n\n/**\n * Development environment state\n */\nexport interface DevState {\n enabled: boolean\n performanceTracking: boolean\n componentInspection: boolean\n reactiveDebugging: boolean\n memoryTracking: boolean\n warningsEnabled: boolean\n logLevel: 'error' | 'warn' | 'info' | 'debug'\n}\n\n/**\n * Development tools configuration\n */\nexport interface DevToolsConfig {\n autoEnable: boolean\n trackAllComponents: boolean\n trackMemoryUsage: boolean\n enableWarnings: boolean\n enableErrors: boolean\n maxTreeDepth: number\n updateInterval: number\n}\n\n/**\n * Runtime debugging event\n */\nexport interface DebugEvent {\n type:\n | 'component_mount'\n | 'component_unmount'\n | 'component_update'\n | 'reactive_create'\n | 'reactive_update'\n | 'context_change'\n | 'performance_warning'\n | 'error'\n timestamp: number\n componentId?: string\n componentName?: string\n data: any\n stack?: string\n}\n\n/**\n * Development tools manager\n */\nexport class DevTools {\n private static instance: DevTools\n\n private config: DevToolsConfig = {\n autoEnable: false,\n trackAllComponents: true,\n trackMemoryUsage: true,\n enableWarnings: true,\n enableErrors: true,\n maxTreeDepth: 50,\n updateInterval: 100,\n }\n\n private state: DevState = {\n enabled: false,\n performanceTracking: false,\n componentInspection: false,\n reactiveDebugging: false,\n memoryTracking: false,\n warningsEnabled: true,\n logLevel: 'warn',\n }\n\n private componentTree = new Map<string, ComponentTreeNode>()\n private componentRegistry = new Map<string, ComponentInstance>()\n private debugEvents: DebugEvent[] = []\n private activeComponents = new Set<string>()\n\n // Reactive signals for real-time updates\n private treeSignal: () => Map<string, ComponentTreeNode>\n private setTree: (value: Map<string, ComponentTreeNode>) => void\n private eventsSignal: () => DebugEvent[]\n private setEvents: (value: DebugEvent[]) => void\n private stateSignal: () => DevState\n private setState: (value: DevState) => void\n\n // Update timer\n private updateTimer: number | null = null\n\n constructor() {\n // Initialize reactive signals\n const [treeSignal, setTree] = createSignal<Map<string, ComponentTreeNode>>(\n new Map()\n )\n const [eventsSignal, setEvents] = createSignal<DebugEvent[]>([])\n const [stateSignal, setState] = createSignal<DevState>({ ...this.state })\n\n this.treeSignal = treeSignal\n this.setTree = setTree\n this.eventsSignal = eventsSignal\n this.setEvents = setEvents\n this.stateSignal = stateSignal\n this.setState = setState\n }\n\n static getInstance(): DevTools {\n if (!DevTools.instance) {\n DevTools.instance = new DevTools()\n }\n return DevTools.instance\n }\n\n /**\n * Configure development tools\n */\n configure(config: Partial<DevToolsConfig>): void {\n this.config = { ...this.config, ...config }\n\n if (config.autoEnable) {\n this.enable()\n }\n }\n\n /**\n * Enable development tools\n */\n enable(): void {\n this.state.enabled = true\n this.state.performanceTracking = true\n this.state.componentInspection = true\n this.state.reactiveDebugging = true\n this.state.memoryTracking = this.config.trackMemoryUsage\n this.setState({ ...this.state })\n\n // Start update timer\n this.startUpdateTimer()\n\n this.addDebugEvent({\n type: 'component_mount',\n timestamp: performance.now(),\n data: { message: 'DevTools enabled' },\n })\n\n console.log('🛠️ TachUI DevTools enabled')\n }\n\n /**\n * Disable development tools\n */\n disable(): void {\n this.state.enabled = false\n this.setState({ ...this.state })\n\n this.stopUpdateTimer()\n\n console.log('🛠️ TachUI DevTools disabled')\n }\n\n /**\n * Check if dev tools are enabled\n */\n isEnabled(): boolean {\n return this.state.enabled\n }\n\n /**\n * Register a component instance\n */\n registerComponent(\n componentId: string,\n instance: ComponentInstance,\n parentId?: string\n ): void {\n if (!this.state.enabled || !this.state.componentInspection) return\n\n this.componentRegistry.set(componentId, instance)\n this.activeComponents.add(componentId)\n\n // Find parent node\n const parent = parentId ? this.componentTree.get(parentId) || null : null\n const depth = parent ? parent.depth + 1 : 0\n\n // Create tree node\n const treeNode: ComponentTreeNode = {\n id: componentId,\n name: this.getComponentName(instance),\n type: instance.type || 'component',\n props: instance.props || {},\n children: [],\n parent,\n depth,\n renderCount: 0,\n lastRenderTime: 0,\n memoryUsage: 0,\n warnings: [],\n errors: [],\n }\n\n // Add to parent's children\n if (parent) {\n parent.children.push(treeNode)\n }\n\n this.componentTree.set(componentId, treeNode)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'component_mount',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { props: instance.props, parentId, depth },\n })\n }\n\n /**\n * Unregister a component instance\n */\n unregisterComponent(componentId: string): void {\n if (!this.state.enabled) return\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n // Remove from parent's children\n if (treeNode.parent) {\n const childIndex = treeNode.parent.children.indexOf(treeNode)\n if (childIndex !== -1) {\n treeNode.parent.children.splice(childIndex, 1)\n }\n }\n\n // Remove all descendants\n this.removeNodeAndDescendants(treeNode)\n\n this.addDebugEvent({\n type: 'component_unmount',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: {\n lifetime:\n performance.now() - treeNode.renderCount * treeNode.lastRenderTime,\n },\n })\n }\n\n this.componentRegistry.delete(componentId)\n this.componentTree.delete(componentId)\n this.activeComponents.delete(componentId)\n this.setTree(new Map(this.componentTree))\n }\n\n /**\n * Update component data\n */\n updateComponent(\n componentId: string,\n updates: Partial<ComponentTreeNode>\n ): void {\n if (!this.state.enabled) return\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n Object.assign(treeNode, updates)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'component_update',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: updates,\n })\n }\n }\n\n /**\n * Track reactive operation\n */\n trackReactiveOperation(\n type: string,\n operation: string,\n componentId?: string\n ): void {\n if (!this.state.enabled || !this.state.reactiveDebugging) return\n\n this.addDebugEvent({\n type: 'reactive_update',\n timestamp: performance.now(),\n componentId,\n data: { type, operation },\n })\n }\n\n /**\n * Track context changes\n */\n trackContextChange(\n contextName: string,\n newValue: any,\n componentId?: string\n ): void {\n if (!this.state.enabled) return\n\n this.addDebugEvent({\n type: 'context_change',\n timestamp: performance.now(),\n componentId,\n data: { contextName, newValue },\n })\n }\n\n /**\n * Add warning to component\n */\n addWarning(componentId: string, message: string): void {\n if (!this.state.enabled || !this.state.warningsEnabled) return\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n treeNode.warnings.push(message)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'performance_warning',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { message },\n })\n\n if (this.state.logLevel === 'warn' || this.state.logLevel === 'debug') {\n console.warn(`⚠️ [${treeNode.name}] ${message}`)\n }\n }\n }\n\n /**\n * Add error to component\n */\n addError(componentId: string, error: Error | string): void {\n if (!this.state.enabled) return\n\n const message = error instanceof Error ? error.message : error\n const stack = error instanceof Error ? error.stack : undefined\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n treeNode.errors.push(message)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'error',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { message, error: error instanceof Error ? error : undefined },\n stack,\n })\n\n console.error(`❌ [${treeNode.name}] ${message}`, error)\n }\n }\n\n /**\n * Get component tree\n */\n getComponentTree(): Map<string, ComponentTreeNode> {\n return new Map(this.componentTree)\n }\n\n /**\n * Get component tree signal\n */\n getComponentTreeSignal(): () => Map<string, ComponentTreeNode> {\n return this.treeSignal\n }\n\n /**\n * Get root components\n */\n getRootComponents(): ComponentTreeNode[] {\n return Array.from(this.componentTree.values()).filter(\n node => node.parent === null\n )\n }\n\n /**\n * Get component by ID\n */\n getComponent(componentId: string): ComponentTreeNode | undefined {\n return this.componentTree.get(componentId)\n }\n\n /**\n * Find components by name\n */\n findComponentsByName(name: string): ComponentTreeNode[] {\n return Array.from(this.componentTree.values()).filter(node =>\n node.name.toLowerCase().includes(name.toLowerCase())\n )\n }\n\n /**\n * Get debug events\n */\n getDebugEvents(): DebugEvent[] {\n return [...this.debugEvents]\n }\n\n /**\n * Get debug events signal\n */\n getDebugEventsSignal(): () => DebugEvent[] {\n return this.eventsSignal\n }\n\n /**\n * Get development state\n */\n getDevState(): DevState {\n return { ...this.state }\n }\n\n /**\n * Get development state signal\n */\n getDevStateSignal(): () => DevState {\n return this.stateSignal\n }\n\n /**\n * Get performance summary\n */\n getPerformanceSummary(): {\n componentCount: number\n averageRenderTime: number\n memoryUsage: number\n warningCount: number\n errorCount: number\n slowComponents: { id: string; name: string; renderTime: number }[]\n } {\n const components = Array.from(this.componentTree.values())\n const totalRenderTime = components.reduce(\n (sum, c) => sum + c.lastRenderTime,\n 0\n )\n const averageRenderTime =\n components.length > 0 ? totalRenderTime / components.length : 0\n const totalMemory = components.reduce((sum, c) => sum + c.memoryUsage, 0)\n const warningCount = components.reduce(\n (sum, c) => sum + c.warnings.length,\n 0\n )\n const errorCount = components.reduce((sum, c) => sum + c.errors.length, 0)\n\n // Find slow components (>5ms render time)\n const slowComponents = components\n .filter(c => c.lastRenderTime > 5)\n .map(c => ({ id: c.id, name: c.name, renderTime: c.lastRenderTime }))\n .sort((a, b) => b.renderTime - a.renderTime)\n .slice(0, 10)\n\n return {\n componentCount: components.length,\n averageRenderTime,\n memoryUsage: totalMemory,\n warningCount,\n errorCount,\n slowComponents,\n }\n }\n\n /**\n * Export debug data\n */\n exportDebugData(): string {\n return JSON.stringify(\n {\n componentTree: Array.from(this.componentTree.entries()),\n debugEvents: [...this.debugEvents],\n timestamp: Date.now(),\n },\n null,\n 2\n )\n }\n\n /**\n * Clear debug data\n */\n clear(): void {\n this.componentTree.clear()\n this.componentRegistry.clear()\n this.debugEvents.length = 0\n this.activeComponents.clear()\n\n this.setTree(new Map())\n this.setEvents([])\n }\n\n // Private helper methods\n\n private getComponentName(instance: ComponentInstance): string {\n // Check for displayName first\n if ('displayName' in instance && typeof instance.displayName === 'string') {\n return instance.displayName\n }\n\n // Check component type first (this should be the primary source)\n if (instance.type && typeof instance.type === 'string') {\n return instance.type\n }\n\n // Check for HTML tag\n if ((instance as any).tag) {\n return (instance as any).tag || 'Element'\n }\n\n // Check for text content\n if ((instance as any).text) {\n return 'Text'\n }\n\n // Check for fragment\n if ((instance as any).fragment) {\n return 'Fragment'\n }\n\n // Fallback to id or generic name (only if nothing else works)\n return instance.id || 'Component'\n }\n\n private removeNodeAndDescendants(node: ComponentTreeNode): void {\n // Remove all children recursively\n for (const child of node.children) {\n this.removeNodeAndDescendants(child)\n this.componentTree.delete(child.id)\n this.componentRegistry.delete(child.id)\n this.activeComponents.delete(child.id)\n }\n }\n\n private addDebugEvent(event: DebugEvent): void {\n this.debugEvents.push(event)\n\n // Limit events array size\n if (this.debugEvents.length > 1000) {\n this.debugEvents.shift()\n }\n\n // Update reactive signal if available\n try {\n this.setEvents([...this.debugEvents])\n } catch (_error) {\n // In test environments, the signal might not work properly\n }\n }\n\n private startUpdateTimer(): void {\n if (this.updateTimer) return\n\n this.updateTimer = window.setInterval(() => {\n this.updateComponentMetrics()\n }, this.config.updateInterval)\n }\n\n private stopUpdateTimer(): void {\n if (this.updateTimer) {\n clearInterval(this.updateTimer)\n this.updateTimer = null\n }\n }\n\n private updateComponentMetrics(): void {\n if (!this.state.enabled) return\n\n for (const [componentId, treeNode] of this.componentTree) {\n // Update render count and timing (simplified for now)\n treeNode.renderCount += 1\n treeNode.lastRenderTime = Math.random() * 10 // Placeholder\n\n // Check for performance warnings\n if (treeNode.lastRenderTime > 16) {\n this.addWarning(\n componentId,\n `Slow render: ${treeNode.lastRenderTime.toFixed(2)}ms`\n )\n }\n\n if (treeNode.memoryUsage > 1024 * 1024) {\n // 1MB\n this.addWarning(\n componentId,\n `High memory usage: ${(treeNode.memoryUsage / (1024 * 1024)).toFixed(2)}MB`\n )\n }\n }\n\n this.setTree(new Map(this.componentTree))\n }\n}\n\n/**\n * Global dev tools instance\n */\nexport const globalDevTools = DevTools.getInstance()\n\n/**\n * Enable performance tracking\n */\nexport function enablePerformanceTracking(): void {\n globalDevTools.enable()\n}\n\n/**\n * Get component tree\n */\nexport function getComponentTree(): Map<string, ComponentTreeNode> {\n return globalDevTools.getComponentTree()\n}\n\n/**\n * Enable development mode with full debugging\n */\nexport function enableDevelopmentMode(config?: Partial<DevToolsConfig>): void {\n globalDevTools.configure({\n autoEnable: true,\n trackAllComponents: true,\n trackMemoryUsage: true,\n enableWarnings: true,\n enableErrors: true,\n ...config,\n })\n\n console.log('🚀 TachUI Development Mode enabled')\n}\n\n/**\n * Get development tools instance\n */\nexport function getDevTools(): DevTools {\n return globalDevTools\n}\n\n/**\n * Development utilities\n */\nexport const devUtils = {\n /**\n * Log component tree to console\n */\n logComponentTree(): void {\n const roots = globalDevTools.getRootComponents()\n\n function logNode(node: ComponentTreeNode, indent = 0): void {\n const prefix = ' '.repeat(indent)\n const warnings =\n node.warnings.length > 0 ? ` ⚠️(${node.warnings.length})` : ''\n const errors = node.errors.length > 0 ? ` ❌(${node.errors.length})` : ''\n const renderTime =\n node.lastRenderTime > 0 ? ` ${node.lastRenderTime.toFixed(2)}ms` : ''\n\n console.log(\n `${prefix}${node.name}#${node.id}${renderTime}${warnings}${errors}`\n )\n\n for (const child of node.children) {\n logNode(child, indent + 1)\n }\n }\n\n console.group('🌳 Component Tree')\n for (const root of roots) {\n logNode(root)\n }\n console.groupEnd()\n },\n\n /**\n * Log performance summary\n */\n logPerformanceSummary(): void {\n const summary = globalDevTools.getPerformanceSummary()\n\n console.group('📊 Performance Summary')\n console.log(`Components: ${summary.componentCount}`)\n console.log(\n `Average Render Time: ${summary.averageRenderTime.toFixed(2)}ms`\n )\n console.log(\n `Memory Usage: ${(summary.memoryUsage / (1024 * 1024)).toFixed(2)}MB`\n )\n console.log(`Warnings: ${summary.warningCount}`)\n console.log(`Errors: ${summary.errorCount}`)\n\n if (summary.slowComponents.length > 0) {\n console.group('🐌 Slow Components')\n for (const comp of summary.slowComponents) {\n console.log(`${comp.name}: ${comp.renderTime.toFixed(2)}ms`)\n }\n console.groupEnd()\n }\n\n console.groupEnd()\n },\n\n /**\n * Find component by name\n */\n findComponent(name: string): ComponentTreeNode[] {\n return globalDevTools.findComponentsByName(name)\n },\n\n /**\n * Inspect component\n */\n inspectComponent(componentId: string): ComponentTreeNode | undefined {\n const component = globalDevTools.getComponent(componentId)\n if (component) {\n console.group(`🔍 Component: ${component.name}`)\n console.log('Props:', component.props)\n console.log('Children:', component.children.length)\n console.log('Warnings:', component.warnings)\n console.log('Errors:', component.errors)\n console.groupEnd()\n }\n return component\n },\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/profiler/performance-optimizer.ts","../../src/profiler/production-monitoring.ts","../../src/profiler/index.ts"],"sourcesContent":["/**\n * Performance Optimization System - Phase 1C\n *\n * Advanced performance optimizations to reduce validation overhead\n * to <5% impact in development mode with smart caching and batching.\n */\n\n// Note: ProductionModeManager import will need to be handled differently in devtools\n// For now, we'll create a local interface\ninterface ProductionModeManager {\n isEnabled: () => boolean\n}\n\n// Simple production mode check - in devtools we assume development mode\nconst ProductionModeManager: ProductionModeManager = {\n isEnabled: () => false,\n}\n\n// Debug tools are available in devtools package\nconst validationDebugger = {\n logEvent: (type: string, message: string, data?: any) => {\n if (typeof console !== 'undefined') {\n console.log(`[ValidationDebugger] ${type}: ${message}`, data)\n }\n },\n}\n\n/**\n * Performance optimization configuration\n */\nexport interface PerformanceOptimizerConfig {\n enabled: boolean\n targetOverhead: number // percentage (5 = 5%)\n batchSize: number\n cacheStrategy: 'aggressive' | 'moderate' | 'conservative'\n asyncValidation: boolean\n throttleMs: number\n skipFrames: number // Skip validation every N frames\n}\n\n/**\n * Validation operation metrics\n */\nexport interface ValidationMetrics {\n operationCount: number\n totalTime: number\n averageTime: number\n maxTime: number\n cacheHitRate: number\n skipRate: number\n}\n\n/**\n * Performance optimization engine\n */\nexport class PerformanceOptimizer {\n private static instance: PerformanceOptimizer\n private config: PerformanceOptimizerConfig\n private metrics = new Map<string, ValidationMetrics>()\n private operationQueue: Array<() => void> = []\n private frameCounter = 0\n private lastBatchTime = 0\n private throttleTimers = new Map<string, number>()\n\n private defaultConfig: PerformanceOptimizerConfig = {\n enabled: true,\n targetOverhead: 5, // 5% overhead target\n batchSize: 10,\n cacheStrategy: 'moderate',\n asyncValidation: true,\n throttleMs: 16, // ~60fps\n skipFrames: 0,\n }\n\n constructor(config: Partial<PerformanceOptimizerConfig> = {}) {\n this.config = { ...this.defaultConfig, ...config }\n\n // Disable in production\n if (ProductionModeManager.isEnabled()) {\n this.config.enabled = false\n }\n }\n\n static getInstance(\n config?: Partial<PerformanceOptimizerConfig>\n ): PerformanceOptimizer {\n if (!this.instance) {\n this.instance = new PerformanceOptimizer(config)\n }\n return this.instance\n }\n\n configure(config: Partial<PerformanceOptimizerConfig>): void {\n this.config = { ...this.config, ...config }\n }\n\n /**\n * Optimize a validation operation with smart batching and caching\n */\n optimizeValidation<T>(\n key: string,\n operation: () => T,\n _skipCache = false\n ): T {\n if (!this.config.enabled) {\n return operation()\n }\n\n // Skip validation based on frame counting\n if (this.shouldSkipFrame()) {\n return operation() // Still run but don't optimize\n }\n\n // Check throttling\n if (this.isThrottled(key)) {\n return operation() // Return cached result or run operation\n }\n\n const startTime = performance.now()\n\n try {\n const result = operation()\n this.recordMetrics(key, performance.now() - startTime, true)\n return result\n } catch (error) {\n this.recordMetrics(key, performance.now() - startTime, false)\n throw error\n }\n }\n\n /**\n * Batch validation operations for better performance\n */\n batchValidations(operations: Array<() => void>): void {\n if (!this.config.enabled) {\n operations.forEach(op => op())\n return\n }\n\n // Add to queue\n this.operationQueue.push(...operations)\n\n // Process if batch size reached or enough time passed\n const now = Date.now()\n if (\n this.operationQueue.length >= this.config.batchSize ||\n now - this.lastBatchTime > this.config.throttleMs\n ) {\n this.processBatch()\n this.lastBatchTime = now\n }\n }\n\n /**\n * Process queued validation operations\n */\n private processBatch(): void {\n const batch = this.operationQueue.splice(0, this.config.batchSize)\n\n if (this.config.asyncValidation) {\n // Process asynchronously to avoid blocking\n setTimeout(() => {\n batch.forEach(op => {\n try {\n op()\n } catch (error) {\n console.warn('Batch validation error:', error)\n }\n })\n }, 0)\n } else {\n // Process synchronously\n batch.forEach(op => {\n try {\n op()\n } catch (error) {\n console.warn('Batch validation error:', error)\n }\n })\n }\n }\n\n /**\n * Check if validation should be skipped this frame\n */\n private shouldSkipFrame(): boolean {\n if (this.config.skipFrames === 0) return false\n\n this.frameCounter++\n return this.frameCounter % (this.config.skipFrames + 1) !== 0\n }\n\n /**\n * Check if operation is currently throttled\n */\n private isThrottled(key: string): boolean {\n const lastTime = this.throttleTimers.get(key)\n const now = Date.now()\n\n if (!lastTime || now - lastTime > this.config.throttleMs) {\n this.throttleTimers.set(key, now)\n return false\n }\n\n return true\n }\n\n /**\n * Record performance metrics\n */\n private recordMetrics(\n key: string,\n duration: number,\n _success: boolean\n ): void {\n const existing = this.metrics.get(key) || {\n operationCount: 0,\n totalTime: 0,\n averageTime: 0,\n maxTime: 0,\n cacheHitRate: 0,\n skipRate: 0,\n }\n\n existing.operationCount++\n existing.totalTime += duration\n existing.averageTime = existing.totalTime / existing.operationCount\n existing.maxTime = Math.max(existing.maxTime, duration)\n\n this.metrics.set(key, existing)\n }\n\n /**\n * Get performance metrics for a specific operation\n */\n getMetrics(key: string): ValidationMetrics | undefined {\n return this.metrics.get(key)\n }\n\n /**\n * Get all performance metrics\n */\n getAllMetrics(): Map<string, ValidationMetrics> {\n return new Map(this.metrics)\n }\n\n /**\n * Reset all metrics\n */\n resetMetrics(): void {\n this.metrics.clear()\n this.throttleTimers.clear()\n this.frameCounter = 0\n }\n\n /**\n * Auto-optimize based on current performance\n */\n autoOptimize(currentOverhead: number): void {\n if (currentOverhead > this.config.targetOverhead * 1.5) {\n // Aggressive optimization\n this.configure({\n batchSize: Math.max(this.config.batchSize * 2, 50),\n cacheStrategy: 'aggressive',\n skipFrames: Math.min(this.config.skipFrames + 1, 3),\n })\n } else if (currentOverhead < this.config.targetOverhead * 0.5) {\n // Relax optimization\n this.configure({\n batchSize: Math.max(Math.floor(this.config.batchSize / 2), 5),\n cacheStrategy: 'moderate',\n skipFrames: Math.max(this.config.skipFrames - 1, 0),\n })\n }\n }\n\n /**\n * Measure validation overhead\n */\n measureOverhead(validationFn: () => void, iterations = 100): number {\n // Baseline measurement (no validation)\n const baselineStart = performance.now()\n for (let i = 0; i < iterations; i++) {\n // Empty loop\n }\n const baselineTime = performance.now() - baselineStart\n\n // Validation measurement\n const validationStart = performance.now()\n for (let i = 0; i < iterations; i++) {\n validationFn()\n }\n const validationTime = performance.now() - validationStart\n\n // Calculate overhead percentage\n const overhead = validationTime - baselineTime\n const overheadPercentage = (overhead / validationTime) * 100\n\n return Math.max(overheadPercentage, 0)\n }\n\n /**\n * Monitor and report performance continuously\n */\n startPerformanceMonitoring(intervalMs = 5000): () => void {\n const interval = setInterval(() => {\n const overhead = this.measureOverhead(() => {\n // Simulate typical validation operations\n this.optimizeValidation('monitor-test', () => {\n return Math.random() > 0.5\n })\n })\n\n if (overhead > this.config.targetOverhead) {\n // Automatically adjust optimization settings\n this.autoOptimize(overhead)\n\n validationDebugger.logEvent(\n 'performance-warning',\n `Validation overhead: ${overhead.toFixed(1)}% (target: ${this.config.targetOverhead}%)`,\n { overhead, target: this.config.targetOverhead, actual: overhead }\n )\n }\n }, intervalMs)\n\n return () => clearInterval(interval)\n }\n}\n\n/**\n * Global performance optimizer instance\n */\nexport const performanceOptimizer = PerformanceOptimizer.getInstance()\n\n/**\n * Performance optimization utilities\n */\nexport const PerformanceOptimizationUtils = {\n configure: (config: Partial<PerformanceOptimizerConfig>) =>\n performanceOptimizer.configure(config),\n\n getMetrics: (key?: string) =>\n key\n ? performanceOptimizer.getMetrics(key)\n : performanceOptimizer.getAllMetrics(),\n\n resetMetrics: () => performanceOptimizer.resetMetrics(),\n\n measureOverhead: (validationFn: () => void, iterations?: number) =>\n performanceOptimizer.measureOverhead(validationFn, iterations),\n\n startMonitoring: (intervalMs?: number) =>\n performanceOptimizer.startPerformanceMonitoring(intervalMs),\n\n getStats: () => ({\n enabled: performanceOptimizer['config'].enabled,\n targetOverhead: performanceOptimizer['config'].targetOverhead,\n batchSize: performanceOptimizer['config'].batchSize,\n cacheStrategy: performanceOptimizer['config'].cacheStrategy,\n metricsCount: performanceOptimizer.getAllMetrics().size,\n }),\n}\n","/**\n * Production Mode Monitoring and Analysis\n *\n * Development tools for monitoring production optimization effectiveness,\n * performance tracking, and bundle analysis.\n *\n * Moved from @tachui/core for proper separation of dev vs production concerns.\n */\n\n/**\n * Enhanced production configuration with debugging\n */\nexport interface EnhancedProductionConfig {\n enabled: boolean\n mode: 'development' | 'production' | 'test'\n optimizationLevel: 'none' | 'basic' | 'aggressive'\n debugInfo: boolean\n}\n\n/**\n * Performance statistics for production optimization\n */\ninterface PerformanceStats {\n bypassCount: number\n performanceGain: number\n averageOverhead: number\n slowValidations: Array<{ component: string; time: number }>\n}\n\n/**\n * Bundle analysis report\n */\ninterface BundleOptimizationReport {\n validationCodeSize: number\n performanceGain: number\n optimization: string\n recommendations: string[]\n}\n\n/**\n * Production monitoring and analysis\n */\nexport class ProductionMonitor {\n private static instance: ProductionMonitor\n private bypassCount = 0\n private performanceGain = 0\n private validationTimes: number[] = []\n private slowValidations: Array<{ component: string; time: number }> = []\n\n static getInstance(): ProductionMonitor {\n if (!this.instance) {\n this.instance = new ProductionMonitor()\n }\n return this.instance\n }\n\n /**\n * Record a validation bypass for performance tracking\n */\n recordBypass(timesSaved: number): void {\n this.bypassCount++\n this.performanceGain += timesSaved\n }\n\n /**\n * Record validation performance\n */\n recordValidationTime(componentType: string, duration: number): void {\n this.validationTimes.push(duration)\n\n if (duration > 5) {\n // More than 5ms is concerning\n this.slowValidations.push({ component: componentType, time: duration })\n console.warn(\n `⚠️ Validation overhead: ${duration.toFixed(2)}ms for ${componentType}`\n )\n }\n\n // Keep only recent measurements\n if (this.validationTimes.length > 100) {\n this.validationTimes = this.validationTimes.slice(-50)\n }\n\n if (this.slowValidations.length > 20) {\n this.slowValidations = this.slowValidations.slice(-10)\n }\n }\n\n /**\n * Get performance statistics\n */\n getStats(): PerformanceStats {\n const averageOverhead =\n this.validationTimes.length > 0\n ? this.validationTimes.reduce((sum, time) => sum + time, 0) /\n this.validationTimes.length\n : 0\n\n return {\n bypassCount: this.bypassCount,\n performanceGain: this.performanceGain,\n averageOverhead,\n slowValidations: [...this.slowValidations],\n }\n }\n\n /**\n * Reset monitoring statistics\n */\n reset(): void {\n this.bypassCount = 0\n this.performanceGain = 0\n this.validationTimes = []\n this.slowValidations = []\n }\n\n /**\n * Generate optimization recommendations\n */\n getRecommendations(): string[] {\n const recommendations: string[] = []\n const stats = this.getStats()\n\n if (stats.averageOverhead > 3) {\n recommendations.push(\n 'Consider reducing validation complexity - average overhead is high'\n )\n }\n\n if (stats.slowValidations.length > 5) {\n recommendations.push(\n 'Multiple slow validation operations detected - review component validators'\n )\n }\n\n if (stats.bypassCount === 0 && process.env.NODE_ENV === 'production') {\n recommendations.push(\n 'Validation bypass not working - check production build configuration'\n )\n }\n\n return recommendations\n }\n}\n\n/**\n * Bundle size analysis\n */\nexport class BundleAnalysis {\n /**\n * Estimate validation code size in bundle\n */\n static getValidationCodeSize(): number {\n // This is a rough estimate - in practice this would be more sophisticated\n if (process.env.NODE_ENV === 'production') {\n return 0 // Should be tree-shaken in production\n }\n\n // Rough estimate of validation code size in development\n return 15000 // ~15KB estimated validation code size\n }\n\n /**\n * Generate optimization report\n */\n static getOptimizationReport(): BundleOptimizationReport {\n const monitor = ProductionMonitor.getInstance()\n const stats = monitor.getStats()\n const codeSize = this.getValidationCodeSize()\n\n return {\n validationCodeSize: codeSize,\n performanceGain: stats.performanceGain,\n optimization:\n codeSize === 0 ? 'Fully optimized (tree-shaken)' : 'Development mode',\n recommendations: monitor.getRecommendations(),\n }\n }\n}\n\n/**\n * Development-only assertion macro with detailed reporting\n */\nexport function devAssert(\n condition: boolean,\n message: string,\n context?: any\n): void {\n if (typeof window !== 'undefined' && (window as any).__TACHUI_DEV_MODE__) {\n if (!condition) {\n console.error('TachUI Dev Assertion Failed:', message, context)\n if (context) {\n console.trace('Assertion context:', context)\n }\n throw new Error(`TachUI Dev Assertion: ${message}`)\n }\n }\n}\n\n/**\n * Development-only warning macro with enhanced reporting\n */\nexport function devWarn(\n condition: boolean,\n message: string,\n context?: any\n): void {\n if (typeof window !== 'undefined' && (window as any).__TACHUI_DEV_MODE__) {\n if (!condition) {\n console.warn(`TachUI Dev Warning: ${message}`, context)\n if (context) {\n console.trace('Warning context:', context)\n }\n }\n }\n}\n\n/**\n * Enhanced performance monitoring wrapper\n */\nexport function withPerformanceMonitoring<T extends (...args: any[]) => any>(\n fn: T,\n name: string,\n options: {\n threshold?: number\n logSlow?: boolean\n trackStats?: boolean\n } = {}\n): T {\n const { threshold = 10, logSlow = true, trackStats = true } = options\n\n return function monitoredFunction(...args: any[]): ReturnType<T> {\n const start = performance.now()\n const result = fn(...args)\n const end = performance.now()\n\n const duration = end - start\n\n if (trackStats) {\n ProductionMonitor.getInstance().recordValidationTime(name, duration)\n }\n\n if (logSlow && duration > threshold) {\n console.info(`⏱️ ${name}: ${duration.toFixed(2)}ms`)\n }\n\n return result\n } as T\n}\n\n/**\n * Component validation wrapper with performance monitoring\n */\nexport function withMonitoredValidation<T extends (...args: any[]) => any>(\n originalConstructor: T,\n componentType: string,\n validator?: (args: unknown[]) => void\n): T {\n return function monitoredComponent(this: any, ...args: unknown[]): T {\n const startTime = performance.now()\n\n // Run validation with monitoring\n if (validator) {\n try {\n validator(args)\n } catch (error) {\n console.error(`Validation failed for ${componentType}:`, error)\n throw error\n }\n }\n\n const result = originalConstructor.apply(this, args as any)\n const endTime = performance.now()\n\n // Record performance\n const duration = endTime - startTime\n ProductionMonitor.getInstance().recordValidationTime(\n componentType,\n duration\n )\n\n return result\n } as T\n}\n\n/**\n * Development build constants (for tree-shaking)\n */\nexport const DevConstants = {\n __DEVELOPMENT_ONLY__: process.env.NODE_ENV !== 'production',\n __TACHUI_VERSION__: '0.1.0',\n\n // Define globals for bundlers to replace\n defineGlobals: {\n __TACHUI_PRODUCTION_MODE__: process.env.NODE_ENV === 'production',\n __TACHUI_DEBUG_INFO__: process.env.NODE_ENV !== 'production',\n },\n}\n\n/**\n * Production optimization utilities with monitoring\n */\nexport const ProductionOptimizationUtils = {\n /**\n * Get detailed performance statistics\n */\n getDetailedStats: () => {\n const monitor = ProductionMonitor.getInstance()\n return {\n ...monitor.getStats(),\n recommendations: monitor.getRecommendations(),\n bundleReport: BundleAnalysis.getOptimizationReport(),\n }\n },\n\n /**\n * Reset monitoring data\n */\n resetStats: () => ProductionMonitor.getInstance().reset(),\n\n /**\n * Get bundle optimization report\n */\n getBundleReport: BundleAnalysis.getOptimizationReport,\n\n /**\n * Test production optimization with detailed reporting\n */\n test(): void {\n console.group('🚀 Production Optimization Analysis')\n\n const stats = ProductionMonitor.getInstance().getStats()\n const report = BundleAnalysis.getOptimizationReport()\n\n console.info('📊 Performance Statistics:')\n console.info(' • Validation bypasses:', stats.bypassCount)\n console.info(\n ' • Performance gain:',\n `${stats.performanceGain.toFixed(2)}ms`\n )\n console.info(\n ' • Average overhead:',\n `${stats.averageOverhead.toFixed(2)}ms`\n )\n console.info(' • Slow validations:', stats.slowValidations.length)\n\n console.info('📦 Bundle Optimization:')\n console.info(' • Bundle status:', report.optimization)\n console.info(\n ' • Validation code size:',\n report.validationCodeSize === 0\n ? 'Tree-shaken ✅'\n : `${report.validationCodeSize} bytes`\n )\n\n if (report.recommendations.length > 0) {\n console.info('💡 Optimization Recommendations:')\n report.recommendations.forEach(rec => console.info(` • ${rec}`))\n } else {\n console.info(\n '✅ No optimization recommendations - system is running efficiently'\n )\n }\n\n if (stats.slowValidations.length > 0) {\n console.info('⚠️ Slow Validations:')\n stats.slowValidations.forEach(slow =>\n console.info(` • ${slow.component}: ${slow.time.toFixed(2)}ms`)\n )\n }\n\n console.groupEnd()\n },\n\n /**\n * Start continuous monitoring\n */\n startMonitoring(intervalMs = 30000): () => void {\n const monitor = ProductionMonitor.getInstance()\n\n const interval = setInterval(() => {\n const stats = monitor.getStats()\n if (stats.slowValidations.length > 0) {\n console.warn(\n '⚠️ TachUI Performance Alert: Slow validation operations detected'\n )\n }\n }, intervalMs)\n\n console.info('🔍 TachUI production monitoring started')\n\n return () => {\n clearInterval(interval)\n console.info('🔍 TachUI production monitoring stopped')\n }\n },\n}\n","/**\n * Performance Profiling System\n *\n * Provides runtime performance monitoring, component render profiling,\n * memory usage tracking, and bundle size analysis.\n */\n\n// Placeholder implementation - to be expanded based on design document\nexport const PerformanceProfiler = {\n initialize: (config: any) => {\n console.log('PerformanceProfiler initialized with config:', config)\n },\n}\n\nexport const RenderProfiler = {\n wrap: (component: any, _config: any) => component,\n}\n\nexport const MemoryProfiler = {\n startMonitoring: (config: any) => {\n console.log('MemoryProfiler started with config:', config)\n },\n}\n\nexport const BundleAnalyzer = {\n analyze: () => {\n console.log('Bundle analysis started')\n },\n}\n\n// Export the performance optimizer that was moved from core\nexport * from './performance-optimizer'\n\n// Export production monitoring tools\nexport * from './production-monitoring'\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/testing/index.ts"],"sourcesContent":["/**\n * Testing Utilities\n *\n * Provides component testing helpers, mock data providers,\n * visual regression testing, and accessibility testing.\n */\n\n// Placeholder implementation - to be expanded based on design document\nexport const ComponentTester = {\n create: (component: any) => ({\n withProps: function (props: any) {\n return ComponentTester.create({\n ...component,\n props: { ...component.props, ...props },\n })\n },\n withMocks: function (mocks: any) {\n return ComponentTester.create({ ...component, mocks })\n },\n withBreakpoint: function (breakpoint: string) {\n return ComponentTester.create({ ...component, breakpoint })\n },\n withTheme: function (theme: string) {\n return ComponentTester.create({ ...component, theme })\n },\n test: (name: string, fn: Function) => {\n console.log(`Running test: ${name}`)\n fn(component)\n },\n }),\n}\n\nexport const MockProvider = {\n create: (mocks: any) => mocks,\n}\n\nexport const SnapshotTester = {\n create: (_config: any) => ({\n snapshot: (name: string, _component: any) => {\n console.log(`Creating snapshot: ${name}`)\n },\n }),\n}\n\nexport const A11yTester = {\n create: (_config: any) => ({\n test: (_component: any) => {\n console.log('Running accessibility tests')\n },\n }),\n}\n"],"names":[],"mappings":"AAQO,MAAM,kBAAkB;AAAA,EAC7B,QAAQ,CAAC,eAAoB;AAAA,IAC3B,WAAW,SAAU,OAAY;AAC/B,aAAO,gBAAgB,OAAO;AAAA,QAC5B,GAAG;AAAA,QACH,OAAO,EAAE,GAAG,UAAU,OAAO,GAAG,MAAA;AAAA,MAAM,CACvC;AAAA,IACH;AAAA,IACA,WAAW,SAAU,OAAY;AAC/B,aAAO,gBAAgB,OAAO,EAAE,GAAG,WAAW,OAAO;AAAA,IACvD;AAAA,IACA,gBAAgB,SAAU,YAAoB;AAC5C,aAAO,gBAAgB,OAAO,EAAE,GAAG,WAAW,YAAY;AAAA,IAC5D;AAAA,IACA,WAAW,SAAU,OAAe;AAClC,aAAO,gBAAgB,OAAO,EAAE,GAAG,WAAW,OAAO;AAAA,IACvD;AAAA,IACA,MAAM,CAAC,MAAc,OAAiB;AACpC,cAAQ,IAAI,iBAAiB,IAAI,EAAE;AACnC,SAAG,SAAS;AAAA,IACd;AAAA,EAAA;AAEJ;AAEO,MAAM,eAAe;AAAA,EAC1B,QAAQ,CAAC,UAAe;AAC1B;AAEO,MAAM,iBAAiB;AAAA,EAC5B,QAAQ,CAAC,aAAkB;AAAA,IACzB,UAAU,CAAC,MAAc,eAAoB;AAC3C,cAAQ,IAAI,sBAAsB,IAAI,EAAE;AAAA,IAC1C;AAAA,EAAA;AAEJ;AAEO,MAAM,aAAa;AAAA,EACxB,QAAQ,CAAC,aAAkB;AAAA,IACzB,MAAM,CAAC,eAAoB;AACzB,cAAQ,IAAI,6BAA6B;AAAA,IAC3C;AAAA,EAAA;AAEJ;"}
|