{"version":3,"file":"index.mjs","sources":["../../../src/lib/vdom/index.ts"],"sourcesContent":["/**\n * @file Virtual Modular DOM System\n * @module vdom\n * @description Complete Virtual Modular DOM system for Harbor React Framework.\n * Provides module boundary management, memory-efficient VDOM pooling,\n * security sandboxing, and cross-module communication.\n *\n * @author Agent 5 - PhD Virtual DOM Expert\n * @version 1.0.0\n *\n * @example\n * ```tsx\n * import {\n *   ModuleProvider,\n *   ModuleBoundary,\n *   ModuleSlot,\n *   useModule,\n *   useModuleState,\n * } from '@/lib/vdom';\n *\n * function App() {\n *   return (\n *     <ModuleProvider>\n *       <ModuleBoundary id=\"app\" name=\"Application\">\n *         <Dashboard />\n *       </ModuleBoundary>\n *     </ModuleProvider>\n *   );\n * }\n *\n * function Dashboard() {\n *   const { moduleId, emit } = useModule();\n *   const { state, setState } = useModuleState('counter', { initialValue: 0 });\n *\n *   return (\n *     <ModuleBoundary id=\"dashboard\" name=\"Dashboard\">\n *       <p>Count: {state}</p>\n *       <button onClick={() => setState(s => s + 1)}>Increment</button>\n *     </ModuleBoundary>\n *   );\n * }\n * ```\n */\n\n// =============================================================================\n// Types\n// =============================================================================\nexport type {\n  // Core types\n  ModuleId,\n  VNodeId,\n  SecurityNonce,\n  ModuleEventName,\n  DeepReadonly,\n  Optional,\n\n  // Virtual node types\n  VNodeProps,\n  VirtualNode,\n  VNodeCreateOptions,\n\n  // Module lifecycle types\n  ModuleLifecycleHooks,\n\n  // Hydration types\n  HydrationConfig,\n  HydrationData,\n\n  // Module boundary types\n  ModuleDependency,\n  ModuleSlotDefinition,\n  ModuleBoundaryConfig,\n  ModuleBoundaryState,\n  VirtualModule,\n\n  // Security types\n  CSPDirectives,\n  ModuleSecurityConfig,\n  SecurityContext,\n  SecurityViolation,\n\n  // Event bus types\n  ModuleEventMessage,\n  EventSubscriptionOptions,\n  EventHandler,\n  EventSubscription,\n\n  // Pool types\n  VDOMPoolConfig,\n  VDOMPoolStats,\n\n  // Registry types\n  ModuleRegistryEntry,\n  ModuleQueryOptions,\n\n  // Loader types\n  ModuleLoadOptions,\n  ModuleLoadingState,\n\n  // Performance types\n  ModulePerformanceMetrics,\n  PerformanceBudget,\n\n  // Context types\n  ModuleContextValue,\n  ModuleAction,\n  ModuleProviderConfig,\n\n  // Hook return types\n  UseModuleReturn,\n  UseModuleStateReturn,\n  UseModuleBoundaryReturn,\n  UseModuleHydrationReturn,\n  UseSecureModuleReturn,\n} from './types';\nimport { isDev, devLog } from '@/lib/core/config/env-helper';\n\n// Type enums and constants\nexport {\n  VNodeType,\n  ModuleLifecycleState,\n  ModuleLifecycleEvent,\n  HydrationState,\n  HydrationPriority,\n  HydrationTrigger,\n  EventPriority,\n  LoadingPriority,\n\n  // Factory functions\n  createModuleId,\n  createVNodeId,\n  createSecurityNonce,\n  isModuleId,\n  isVNodeId,\n\n  // Default configurations\n  DEFAULT_HYDRATION_CONFIG,\n  DEFAULT_POOL_CONFIG,\n  DEFAULT_SECURITY_CONFIG,\n} from './types';\n\n// =============================================================================\n// Virtual Module\n// =============================================================================\nexport {\n  VirtualModuleManager,\n  createVirtualModule,\n  createValidatedModuleId,\n  createMinimalConfig,\n} from './virtual-module';\n\n// =============================================================================\n// VDOM Pool\n// =============================================================================\nexport {\n  VDOMPool,\n  getDefaultPool,\n  setDefaultPool,\n  resetDefaultPool,\n  createVDOMPool,\n  acquireNode,\n  releaseNode,\n} from './vdom-pool';\n\n// =============================================================================\n// Module Registry\n// =============================================================================\nexport {\n  ModuleRegistry,\n  getDefaultRegistry,\n  setDefaultRegistry,\n  resetDefaultRegistry,\n  registerModule,\n  getModuleComponent,\n  createModuleRegistration,\n} from './module-registry';\n\nexport type {\n  HMRUpdateHandler,\n  ModuleRegistrationOptions,\n  DependencyResolutionResult,\n} from './module-registry';\n\n// =============================================================================\n// Module Loader\n// =============================================================================\nexport {\n  ModuleLoader,\n  getDefaultLoader,\n  setDefaultLoader,\n  resetDefaultLoader,\n  loadModule,\n  prefetchModule,\n  createLazyLoader,\n} from './module-loader';\n\nexport type { PrefetchHint, LoadingMetrics } from './module-loader';\n\n// =============================================================================\n// Security Sandbox\n// =============================================================================\nexport {\n  SecuritySandbox,\n  ContentSanitizer,\n  CSPManager,\n  EventValidator,\n  createSecuritySandbox,\n  createStrictSecurityConfig,\n  createRelaxedSecurityConfig,\n} from './security-sandbox';\n\n// =============================================================================\n// Event Bus\n// =============================================================================\nexport {\n  ModuleEventBus,\n  getDefaultEventBus,\n  setDefaultEventBus,\n  resetDefaultEventBus,\n  subscribe,\n  publish,\n} from './event-bus';\n\nexport type { EventBusStats, EventBusConfig } from './event-bus';\n\n// =============================================================================\n// React Components\n// =============================================================================\n\n// ModuleProvider\nexport { ModuleProvider } from './ModuleProvider';\n\nexport {\n  useModuleSystem,\n  useModuleHierarchy,\n  ModuleHierarchyProvider,\n  useVDOMPool,\n  useModuleRegistry,\n  useModuleLoader,\n  useEventBus,\n  useDevMode,\n} from './ModuleProviderExports';\n\nexport type { ModuleSystemContextValue, ModuleProviderProps } from './ModuleProviderContext';\n\n// ModuleBoundary\nexport { ModuleBoundary, useModuleContext, useOptionalModuleContext } from './ModuleBoundary';\n\nexport type { ModuleBoundaryProps } from './ModuleBoundary';\n\n// ModuleSlot\nexport {\n  ModuleSlot,\n  DynamicModuleSlot,\n  LazyModuleSlot,\n  ModuleOutlet,\n  ConditionalModuleSlot,\n  ModulePortalSlot,\n} from './ModuleSlot';\n\nexport { useFillSlot, useSlotContent, useIsSlotFilled } from './ModuleSlotExports';\n\nexport type {\n  ModuleSlotProps,\n  DynamicModuleSlotProps,\n  ModuleOutletProps,\n  LazyModuleSlotProps,\n  ConditionalModuleSlotProps,\n  ModulePortalSlotProps,\n} from './ModuleSlot';\n\n// =============================================================================\n// Hooks\n// =============================================================================\nexport {\n  // useModule\n  useModule,\n  useModuleId,\n  useModuleConfig,\n  useIsModuleMounted,\n  useModuleMetrics,\n  useModuleEmit,\n  useModuleSubscribe,\n\n  // useModuleState\n  useModuleState,\n  useSimpleModuleState,\n  useBooleanModuleState,\n  useArrayModuleState,\n  useRecordModuleState,\n\n  // useModuleBoundary\n  useModuleBoundary,\n  useBoundaryDimensions,\n  useBoundaryVisibility,\n  useModuleDepth,\n  useModulePath,\n  useIsNestedModule,\n  useParentModuleId,\n  useSlot,\n  useSlots,\n\n  // useModuleHydration\n  useModuleHydration,\n  useIsHydrated,\n  useHydrateTrigger,\n  useHydrationProgress,\n  useOnHydrated,\n  useOnHydrationError,\n  useHydrationGuard,\n  useHydrationTiming,\n\n  // useSecureModule\n  useSecureModule,\n  useSecurityNonce,\n  useIsSecure,\n  useSanitizer,\n  useContentValidator,\n  useSecurityViolations,\n  useSafeHtml,\n  useSecureUrl,\n  useSecureStyleProps,\n  useSecureScriptProps,\n  useIsEventAllowed,\n  useSecureMessaging,\n} from './hooks';\n\nexport type { UseModuleStateOptions } from './hooks';\n\n// =============================================================================\n// Convenience Re-exports\n// =============================================================================\n\n/**\n * Initialize the Virtual Modular DOM system with default configuration.\n * Call this once at application startup.\n *\n * @param config - Optional provider configuration\n *\n * @example\n * ```tsx\n * import { initializeVDOM } from '@/lib/vdom';\n *\n * // Initialize with defaults\n * initializeVDOM();\n *\n * // Or with custom configuration\n * initializeVDOM({\n *   devMode: true,\n *   enableTelemetry: true,\n * });\n * ```\n */\nexport function initializeVDOM(config?: Partial<import('./types').ModuleProviderConfig>): void {\n  // Initialize default instances\n  const pool = getDefaultPool();\n  const registry = getDefaultRegistry();\n  getDefaultLoader();\n  getDefaultEventBus();\n\n  // Log initialization in development\n  if ((config?.devMode ?? false) || isDev()) {\n    devLog('[VDOM] Virtual Modular DOM System initialized', {\n      poolStats: pool.getStats(),\n      registrySize: registry.size,\n    });\n  }\n}\n\n/**\n * Clean up the Virtual Modular DOM system.\n * Call this when shutting down the application.\n */\nexport function cleanupVDOM(): void {\n  resetDefaultPool();\n  resetDefaultRegistry();\n  resetDefaultLoader();\n  resetDefaultEventBus();\n}\n\n// =============================================================================\n// Module Circuit Breaker\n// =============================================================================\nexport {\n  ModuleCircuitBreaker,\n  ModuleCircuitOpenError,\n  getModuleCircuitBreaker,\n  resetModuleCircuitBreaker,\n  setModuleCircuitBreaker,\n  withModuleCircuitBreaker,\n  withModuleCircuitBreakerFallback,\n  canLoadModules,\n  getModuleCircuitState,\n  type ModuleCircuitBreakerConfig,\n  type ModuleLoadingMetrics as ModuleCircuitBreakerMetrics,\n} from './module-circuit-breaker';\n\n// Re-export helper functions\nimport { getDefaultPool } from './vdom-pool';\nimport { getDefaultRegistry } from './module-registry';\nimport { getDefaultLoader } from './module-loader';\nimport { getDefaultEventBus, resetDefaultEventBus } from './event-bus';\nimport { resetDefaultPool } from './vdom-pool';\nimport { resetDefaultRegistry } from './module-registry';\nimport { resetDefaultLoader } from './module-loader';\n"],"names":["initializeVDOM","config","pool","getDefaultPool","registry","getDefaultRegistry","getDefaultLoader","getDefaultEventBus","isDev","devLog","cleanupVDOM","resetDefaultPool","resetDefaultRegistry","resetDefaultLoader","resetDefaultEventBus"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiWO,SAASA,EAAeC,GAAgE;AAE7F,QAAMC,IAAOC,EAAAA,GACPC,IAAWC,EAAAA;AACjBC,EAAAA,EAAAA,GACAC,EAAAA,KAGKN,GAAQ,WAAW,OAAUO,EAAA,MAChCC,EAAO,iDAAiD;AAAA,IACtD,WAAWP,EAAK,SAAA;AAAA,IAChB,cAAcE,EAAS;AAAA,EAAA,CACxB;AAEL;AAMO,SAASM,IAAoB;AAClCC,EAAAA,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA;AACF;"}