@vlian/framework 1.2.1 → 1.2.16
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/dist/analytics/index.cjs +24 -0
- package/dist/analytics/index.cjs.map +1 -0
- package/dist/analytics/index.d.ts +2 -0
- package/dist/analytics/index.js +3 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics.umd.js +2406 -0
- package/dist/analytics.umd.js.map +1 -0
- package/dist/components/LocaleSwitch.cjs +118 -0
- package/dist/components/LocaleSwitch.cjs.map +1 -0
- package/dist/components/LocaleSwitch.d.ts +21 -0
- package/dist/components/LocaleSwitch.js +103 -0
- package/dist/components/LocaleSwitch.js.map +1 -0
- package/dist/components/ThemeSwitch.cjs +117 -0
- package/dist/components/ThemeSwitch.cjs.map +1 -0
- package/dist/components/ThemeSwitch.d.ts +20 -0
- package/dist/components/ThemeSwitch.js +102 -0
- package/dist/components/ThemeSwitch.js.map +1 -0
- package/dist/components/index.cjs +16 -0
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +5 -2
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/persistence.cjs +60 -0
- package/dist/components/persistence.cjs.map +1 -0
- package/dist/components/persistence.d.ts +12 -0
- package/dist/components/persistence.js +39 -0
- package/dist/components/persistence.js.map +1 -0
- package/dist/core/Test.d.ts +0 -1
- package/dist/core/app/AppContext.cjs +36 -30
- package/dist/core/app/AppContext.cjs.map +1 -1
- package/dist/core/app/AppContext.d.ts +9 -6
- package/dist/core/app/AppContext.js +36 -30
- package/dist/core/app/AppContext.js.map +1 -1
- package/dist/core/app/AppContext.types.d.ts +9 -10
- package/dist/core/app/AppContext.types.js.map +1 -1
- package/dist/core/app/BasicLayout.cjs +57 -22
- package/dist/core/app/BasicLayout.cjs.map +1 -1
- package/dist/core/app/BasicLayout.d.ts +7 -5
- package/dist/core/app/BasicLayout.js +57 -22
- package/dist/core/app/BasicLayout.js.map +1 -1
- package/dist/core/app/DefaultApp.cjs +104 -153
- package/dist/core/app/DefaultApp.cjs.map +1 -1
- package/dist/core/app/DefaultApp.d.ts +0 -21
- package/dist/core/app/DefaultApp.js +104 -153
- package/dist/core/app/DefaultApp.js.map +1 -1
- package/dist/core/app/index.d.ts +0 -1
- package/dist/core/config/AppConfig.cjs.map +1 -1
- package/dist/core/config/AppConfig.d.ts +3 -4
- package/dist/core/config/AppConfig.js.map +1 -1
- package/dist/core/config/ConfigLoader.d.ts +0 -1
- package/dist/core/config/ConfigValidator.d.ts +0 -1
- package/dist/core/config/index.d.ts +0 -1
- package/dist/core/dev/DevTools.cjs +141 -287
- package/dist/core/dev/DevTools.cjs.map +1 -1
- package/dist/core/dev/DevTools.d.ts +1 -32
- package/dist/core/dev/DevTools.js +143 -296
- package/dist/core/dev/DevTools.js.map +1 -1
- package/dist/core/error/ErrorBoundary.cjs +72 -14
- package/dist/core/error/ErrorBoundary.cjs.map +1 -1
- package/dist/core/error/ErrorBoundary.d.ts +7 -9
- package/dist/core/error/ErrorBoundary.js +73 -15
- package/dist/core/error/ErrorBoundary.js.map +1 -1
- package/dist/core/error/ErrorHandler.d.ts +0 -1
- package/dist/core/error/index.d.ts +0 -1
- package/dist/core/event/AppEventBus.d.ts +0 -1
- package/dist/core/event/frameworkEvents.d.ts +0 -1
- package/dist/core/event/hooks.d.ts +0 -1
- package/dist/core/event/index.d.ts +0 -1
- package/dist/core/event/types.d.ts +0 -1
- package/dist/core/event/useEventBus.d.ts +0 -1
- package/dist/core/index.cjs +2 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/initialization/InitializationErrorThrower.d.ts +0 -1
- package/dist/core/initialization/index.d.ts +0 -1
- package/dist/core/initialization/initialization.d.ts +0 -1
- package/dist/core/initialization/initializationErrorState.d.ts +0 -1
- package/dist/core/kernel/defaultAdapters.cjs +185 -0
- package/dist/core/kernel/defaultAdapters.cjs.map +1 -0
- package/dist/core/kernel/defaultAdapters.d.ts +2 -0
- package/dist/core/kernel/defaultAdapters.js +175 -0
- package/dist/core/kernel/defaultAdapters.js.map +1 -0
- package/dist/core/kernel/errors.cjs +71 -0
- package/dist/core/kernel/errors.cjs.map +1 -0
- package/dist/core/kernel/errors.d.ts +18 -0
- package/dist/core/kernel/errors.js +53 -0
- package/dist/core/kernel/errors.js.map +1 -0
- package/dist/core/kernel/index.cjs +22 -0
- package/dist/core/kernel/index.cjs.map +1 -0
- package/dist/core/kernel/index.d.ts +3 -0
- package/dist/core/kernel/index.js +4 -0
- package/dist/core/kernel/index.js.map +1 -0
- package/dist/core/kernel/startKernel.cjs +203 -0
- package/dist/core/kernel/startKernel.cjs.map +1 -0
- package/dist/core/kernel/startKernel.d.ts +2 -0
- package/dist/core/kernel/startKernel.js +193 -0
- package/dist/core/kernel/startKernel.js.map +1 -0
- package/dist/core/kernel/types.cjs +6 -0
- package/dist/core/kernel/types.cjs.map +1 -0
- package/dist/core/kernel/types.d.ts +114 -0
- package/dist/core/kernel/types.js +3 -0
- package/dist/core/kernel/types.js.map +1 -0
- package/dist/core/middleware.d.ts +0 -1
- package/dist/core/plugin/PluginEventBus.d.ts +0 -1
- package/dist/core/plugin/PluginSandbox.d.ts +0 -1
- package/dist/core/plugin.cjs +1 -1
- package/dist/core/plugin.cjs.map +1 -1
- package/dist/core/plugin.d.ts +0 -1
- package/dist/core/plugin.js +1 -1
- package/dist/core/plugin.js.map +1 -1
- package/dist/core/router/RouterManager.d.ts +0 -1
- package/dist/core/router/adapter/AdapterManager.d.ts +0 -1
- package/dist/core/router/adapter/index.d.ts +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts +0 -1
- package/dist/core/router/adapter/react-router/index.d.ts +0 -1
- package/dist/core/router/adapter/types.cjs.map +1 -1
- package/dist/core/router/adapter/types.d.ts +1 -2
- package/dist/core/router/adapter/types.js.map +1 -1
- package/dist/core/router/dev/RouterDevTools.cjs +148 -296
- package/dist/core/router/dev/RouterDevTools.cjs.map +1 -1
- package/dist/core/router/dev/RouterDevTools.d.ts +1 -6
- package/dist/core/router/dev/RouterDevTools.js +149 -301
- package/dist/core/router/dev/RouterDevTools.js.map +1 -1
- package/dist/core/router/dev/index.d.ts +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.d.ts +0 -1
- package/dist/core/router/dynamic/index.d.ts +0 -1
- package/dist/core/router/errors/RouterError.d.ts +0 -1
- package/dist/core/router/errors/index.d.ts +0 -1
- package/dist/core/router/index.d.ts +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts +0 -1
- package/dist/core/router/lifecycle/index.d.ts +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.d.ts +0 -1
- package/dist/core/router/middleware/auth.d.ts +0 -1
- package/dist/core/router/middleware/index.d.ts +0 -1
- package/dist/core/router/middleware/types.d.ts +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.d.ts +0 -1
- package/dist/core/router/monitoring/index.d.ts +0 -1
- package/dist/core/router/navigation/RouterNavigation.d.ts +0 -1
- package/dist/core/router/navigation/index.d.ts +0 -1
- package/dist/core/router/performance/RouteCache.d.ts +0 -1
- package/dist/core/router/performance/RoutePreloader.d.ts +0 -1
- package/dist/core/router/performance/index.d.ts +0 -1
- package/dist/core/router/plugin/RouterPluginManager.d.ts +0 -1
- package/dist/core/router/plugin/index.d.ts +0 -1
- package/dist/core/router/plugin/types.d.ts +0 -1
- package/dist/core/router/types.d.ts +1 -2
- package/dist/core/router/types.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +90 -103
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +91 -104
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs +13 -4
- package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.d.ts +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.js +13 -4
- package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
- package/dist/core/router/utils/transform.cjs +1 -1
- package/dist/core/router/utils/transform.cjs.map +1 -1
- package/dist/core/router/utils/transform.d.ts +0 -1
- package/dist/core/router/utils/transform.js +1 -1
- package/dist/core/router/utils/transform.js.map +1 -1
- package/dist/core/router/validation/RouterConfigValidator.d.ts +0 -1
- package/dist/core/router/validation/index.d.ts +0 -1
- package/dist/core/router/validation/schema.d.ts +0 -1
- package/dist/core/router/version/RouteVersionManager.d.ts +0 -1
- package/dist/core/router/version/index.d.ts +0 -1
- package/dist/core/splash/SplashScreen.cjs +101 -15
- package/dist/core/splash/SplashScreen.cjs.map +1 -1
- package/dist/core/splash/SplashScreen.d.ts +0 -1
- package/dist/core/splash/SplashScreen.js +101 -15
- package/dist/core/splash/SplashScreen.js.map +1 -1
- package/dist/core/splash/index.d.ts +0 -1
- package/dist/core/splash/splashScreenUtils.d.ts +0 -1
- package/dist/core/startup/AppInstance.d.ts +0 -1
- package/dist/core/startup/environment.d.ts +0 -1
- package/dist/core/startup/index.d.ts +0 -1
- package/dist/core/startup/initializeServices.d.ts +0 -1
- package/dist/core/startup/performanceTracker.d.ts +0 -1
- package/dist/core/startup/renderApp.cjs +12 -10
- package/dist/core/startup/renderApp.cjs.map +1 -1
- package/dist/core/startup/renderApp.d.ts +0 -1
- package/dist/core/startup/renderApp.js +12 -10
- package/dist/core/startup/renderApp.js.map +1 -1
- package/dist/core/startup/startApp.cjs +118 -13
- package/dist/core/startup/startApp.cjs.map +1 -1
- package/dist/core/startup/startApp.d.ts +0 -1
- package/dist/core/startup/startApp.js +118 -13
- package/dist/core/startup/startApp.js.map +1 -1
- package/dist/core/types.d.ts +34 -21
- package/dist/core/types.js.map +1 -1
- package/dist/core/ui-adapter/adapters.cjs +45 -0
- package/dist/core/ui-adapter/adapters.cjs.map +1 -0
- package/dist/core/ui-adapter/adapters.d.ts +4 -0
- package/dist/core/ui-adapter/adapters.js +27 -0
- package/dist/core/ui-adapter/adapters.js.map +1 -0
- package/dist/core/ui-adapter/index.cjs +21 -0
- package/dist/core/ui-adapter/index.cjs.map +1 -0
- package/dist/core/ui-adapter/index.d.ts +2 -0
- package/dist/core/ui-adapter/index.js +3 -0
- package/dist/core/ui-adapter/index.js.map +1 -0
- package/dist/core/ui-adapter/types.cjs +6 -0
- package/dist/core/ui-adapter/types.cjs.map +1 -0
- package/dist/core/ui-adapter/types.d.ts +24 -0
- package/dist/core/ui-adapter/types.js +3 -0
- package/dist/core/ui-adapter/types.js.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.umd.d.ts +0 -1
- package/dist/index.umd.js +7315 -5936
- package/dist/index.umd.js.map +1 -1
- package/dist/library/index.d.ts +0 -1
- package/dist/library/locale/index.d.ts +0 -1
- package/dist/library/locale/langs/en-us/index.d.ts +0 -1
- package/dist/library/locale/langs/zh-cn/index.d.ts +0 -1
- package/dist/library/locale/types.d.ts +0 -1
- package/dist/library/storage/cache.d.ts +0 -1
- package/dist/library/storage/encryption.d.ts +0 -1
- package/dist/library/storage/index.d.ts +0 -1
- package/dist/request/adapter/RequestAdapter.d.ts +0 -1
- package/dist/request/adapter/axiosAdapter.d.ts +0 -1
- package/dist/request/adapter/fetchAdapter.d.ts +0 -1
- package/dist/request/adapter/index.d.ts +0 -1
- package/dist/request/adapter/kyAdapter.d.ts +0 -1
- package/dist/request/adapter/undiciAdapter.d.ts +0 -1
- package/dist/request/core/RequestClient.d.ts +0 -1
- package/dist/request/core/index.d.ts +0 -1
- package/dist/request/index.d.ts +0 -1
- package/dist/request/plugin/RequestPlugin.d.ts +0 -1
- package/dist/request/plugin/cache.d.ts +0 -1
- package/dist/request/plugin/csrfPlugin.d.ts +0 -1
- package/dist/request/plugin/index.d.ts +0 -1
- package/dist/request/plugin/monitoring.d.ts +0 -1
- package/dist/request/plugin/queue.d.ts +0 -1
- package/dist/request/plugin/retry.d.ts +0 -1
- package/dist/request/plugin/validation.d.ts +0 -1
- package/dist/request/runtime/RequestContext.d.ts +0 -1
- package/dist/request/runtime/index.d.ts +0 -1
- package/dist/request/types.d.ts +0 -1
- package/dist/request/utils/RequestQueueManager.d.ts +0 -1
- package/dist/request/utils/dependencyCheck.d.ts +0 -1
- package/dist/request/utils/index.d.ts +0 -1
- package/dist/request.umd.js +5392 -0
- package/dist/request.umd.js.map +1 -0
- package/dist/state/StateManager.d.ts +0 -1
- package/dist/state/adapters/AdapterFactory.d.ts +0 -1
- package/dist/state/adapters/DefaultAdapter.d.ts +0 -1
- package/dist/state/adapters/ReduxAdapter.d.ts +0 -1
- package/dist/state/adapters/ZustandAdapter.d.ts +0 -1
- package/dist/state/adapters/index.d.ts +0 -1
- package/dist/state/adapters/types.d.ts +0 -1
- package/dist/state/core/DerivedStateInstance.d.ts +0 -1
- package/dist/state/core/StateInstance.d.ts +0 -1
- package/dist/state/core/StateRegistry.d.ts +0 -1
- package/dist/state/core/StateScope.d.ts +0 -1
- package/dist/state/core/index.d.ts +0 -1
- package/dist/state/index.d.ts +0 -1
- package/dist/state/types.d.ts +0 -1
- package/dist/state.umd.js +1414 -0
- package/dist/state.umd.js.map +1 -0
- package/dist/types.d.ts +0 -1
- package/dist/utils/analytics.d.ts +0 -1
- package/dist/utils/configSecurity.d.ts +0 -1
- package/dist/utils/csrf.d.ts +0 -1
- package/dist/utils/errors/ErrorCodes.d.ts +0 -1
- package/dist/utils/errors.cjs +44 -1
- package/dist/utils/errors.cjs.map +1 -1
- package/dist/utils/errors.d.ts +5 -1
- package/dist/utils/errors.js +44 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.types.d.ts +0 -1
- package/dist/utils/monitoring.d.ts +0 -1
- package/dist/utils/performance.d.ts +0 -1
- package/dist/utils/resourceLoader.d.ts +0 -1
- package/dist/utils/runtimeSecurity.d.ts +0 -1
- package/dist/utils/security.d.ts +0 -1
- package/dist/utils/traceId.d.ts +0 -1
- package/dist/utils/validation.d.ts +0 -1
- package/package.json +24 -9
- package/dist/components/index.d.ts.map +0 -1
- package/dist/core/Test.d.ts.map +0 -1
- package/dist/core/app/AppContext.d.ts.map +0 -1
- package/dist/core/app/AppContext.types.d.ts.map +0 -1
- package/dist/core/app/BasicLayout.d.ts.map +0 -1
- package/dist/core/app/DefaultApp.d.ts.map +0 -1
- package/dist/core/app/index.d.ts.map +0 -1
- package/dist/core/config/AppConfig.d.ts.map +0 -1
- package/dist/core/config/ConfigLoader.d.ts.map +0 -1
- package/dist/core/config/ConfigValidator.d.ts.map +0 -1
- package/dist/core/config/index.d.ts.map +0 -1
- package/dist/core/dev/DevTools.d.ts.map +0 -1
- package/dist/core/error/ErrorBoundary.d.ts.map +0 -1
- package/dist/core/error/ErrorHandler.d.ts.map +0 -1
- package/dist/core/error/index.d.ts.map +0 -1
- package/dist/core/event/AppEventBus.d.ts.map +0 -1
- package/dist/core/event/frameworkEvents.d.ts.map +0 -1
- package/dist/core/event/hooks.d.ts.map +0 -1
- package/dist/core/event/index.d.ts.map +0 -1
- package/dist/core/event/types.d.ts.map +0 -1
- package/dist/core/event/useEventBus.d.ts.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/initialization/InitializationErrorThrower.d.ts.map +0 -1
- package/dist/core/initialization/index.d.ts.map +0 -1
- package/dist/core/initialization/initialization.d.ts.map +0 -1
- package/dist/core/initialization/initializationErrorState.d.ts.map +0 -1
- package/dist/core/middleware.d.ts.map +0 -1
- package/dist/core/plugin/PluginEventBus.d.ts.map +0 -1
- package/dist/core/plugin/PluginSandbox.d.ts.map +0 -1
- package/dist/core/plugin.d.ts.map +0 -1
- package/dist/core/router/RouterManager.d.ts.map +0 -1
- package/dist/core/router/adapter/AdapterManager.d.ts.map +0 -1
- package/dist/core/router/adapter/index.d.ts.map +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts.map +0 -1
- package/dist/core/router/adapter/react-router/index.d.ts.map +0 -1
- package/dist/core/router/adapter/types.d.ts.map +0 -1
- package/dist/core/router/dev/RouterDevTools.d.ts.map +0 -1
- package/dist/core/router/dev/index.d.ts.map +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.d.ts.map +0 -1
- package/dist/core/router/dynamic/index.d.ts.map +0 -1
- package/dist/core/router/errors/RouterError.d.ts.map +0 -1
- package/dist/core/router/errors/index.d.ts.map +0 -1
- package/dist/core/router/index.d.ts.map +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts.map +0 -1
- package/dist/core/router/lifecycle/index.d.ts.map +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.d.ts.map +0 -1
- package/dist/core/router/middleware/auth.d.ts.map +0 -1
- package/dist/core/router/middleware/index.d.ts.map +0 -1
- package/dist/core/router/middleware/types.d.ts.map +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.d.ts.map +0 -1
- package/dist/core/router/monitoring/index.d.ts.map +0 -1
- package/dist/core/router/navigation/RouterNavigation.d.ts.map +0 -1
- package/dist/core/router/navigation/index.d.ts.map +0 -1
- package/dist/core/router/performance/RouteCache.d.ts.map +0 -1
- package/dist/core/router/performance/RoutePreloader.d.ts.map +0 -1
- package/dist/core/router/performance/index.d.ts.map +0 -1
- package/dist/core/router/plugin/RouterPluginManager.d.ts.map +0 -1
- package/dist/core/router/plugin/index.d.ts.map +0 -1
- package/dist/core/router/plugin/types.d.ts.map +0 -1
- package/dist/core/router/types.d.ts.map +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts.map +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.d.ts.map +0 -1
- package/dist/core/router/utils/transform.d.ts.map +0 -1
- package/dist/core/router/validation/RouterConfigValidator.d.ts.map +0 -1
- package/dist/core/router/validation/index.d.ts.map +0 -1
- package/dist/core/router/validation/schema.d.ts.map +0 -1
- package/dist/core/router/version/RouteVersionManager.d.ts.map +0 -1
- package/dist/core/router/version/index.d.ts.map +0 -1
- package/dist/core/splash/SplashScreen.d.ts.map +0 -1
- package/dist/core/splash/index.d.ts.map +0 -1
- package/dist/core/splash/splashScreenUtils.d.ts.map +0 -1
- package/dist/core/startup/AppInstance.d.ts.map +0 -1
- package/dist/core/startup/environment.d.ts.map +0 -1
- package/dist/core/startup/index.d.ts.map +0 -1
- package/dist/core/startup/initializeServices.d.ts.map +0 -1
- package/dist/core/startup/performanceTracker.d.ts.map +0 -1
- package/dist/core/startup/renderApp.d.ts.map +0 -1
- package/dist/core/startup/startApp.d.ts.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.umd.d.ts.map +0 -1
- package/dist/library/index.d.ts.map +0 -1
- package/dist/library/locale/index.d.ts.map +0 -1
- package/dist/library/locale/langs/en-us/index.d.ts.map +0 -1
- package/dist/library/locale/langs/zh-cn/index.d.ts.map +0 -1
- package/dist/library/locale/types.d.ts.map +0 -1
- package/dist/library/storage/cache.d.ts.map +0 -1
- package/dist/library/storage/encryption.d.ts.map +0 -1
- package/dist/library/storage/index.d.ts.map +0 -1
- package/dist/request/adapter/RequestAdapter.d.ts.map +0 -1
- package/dist/request/adapter/axiosAdapter.d.ts.map +0 -1
- package/dist/request/adapter/fetchAdapter.d.ts.map +0 -1
- package/dist/request/adapter/index.d.ts.map +0 -1
- package/dist/request/adapter/kyAdapter.d.ts.map +0 -1
- package/dist/request/adapter/undiciAdapter.d.ts.map +0 -1
- package/dist/request/core/RequestClient.d.ts.map +0 -1
- package/dist/request/core/index.d.ts.map +0 -1
- package/dist/request/index.d.ts.map +0 -1
- package/dist/request/plugin/RequestPlugin.d.ts.map +0 -1
- package/dist/request/plugin/cache.d.ts.map +0 -1
- package/dist/request/plugin/csrfPlugin.d.ts.map +0 -1
- package/dist/request/plugin/index.d.ts.map +0 -1
- package/dist/request/plugin/monitoring.d.ts.map +0 -1
- package/dist/request/plugin/queue.d.ts.map +0 -1
- package/dist/request/plugin/retry.d.ts.map +0 -1
- package/dist/request/plugin/validation.d.ts.map +0 -1
- package/dist/request/runtime/RequestContext.d.ts.map +0 -1
- package/dist/request/runtime/index.d.ts.map +0 -1
- package/dist/request/types.d.ts.map +0 -1
- package/dist/request/utils/RequestQueueManager.d.ts.map +0 -1
- package/dist/request/utils/dependencyCheck.d.ts.map +0 -1
- package/dist/request/utils/index.d.ts.map +0 -1
- package/dist/state/StateManager.d.ts.map +0 -1
- package/dist/state/adapters/AdapterFactory.d.ts.map +0 -1
- package/dist/state/adapters/DefaultAdapter.d.ts.map +0 -1
- package/dist/state/adapters/ReduxAdapter.d.ts.map +0 -1
- package/dist/state/adapters/ZustandAdapter.d.ts.map +0 -1
- package/dist/state/adapters/index.d.ts.map +0 -1
- package/dist/state/adapters/types.d.ts.map +0 -1
- package/dist/state/core/DerivedStateInstance.d.ts.map +0 -1
- package/dist/state/core/StateInstance.d.ts.map +0 -1
- package/dist/state/core/StateRegistry.d.ts.map +0 -1
- package/dist/state/core/StateScope.d.ts.map +0 -1
- package/dist/state/core/index.d.ts.map +0 -1
- package/dist/state/index.d.ts.map +0 -1
- package/dist/state/types.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/analytics.d.ts.map +0 -1
- package/dist/utils/configSecurity.d.ts.map +0 -1
- package/dist/utils/csrf.d.ts.map +0 -1
- package/dist/utils/errors/ErrorCodes.d.ts.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.types.d.ts.map +0 -1
- package/dist/utils/monitoring.d.ts.map +0 -1
- package/dist/utils/performance.d.ts.map +0 -1
- package/dist/utils/resourceLoader.d.ts.map +0 -1
- package/dist/utils/runtimeSecurity.d.ts.map +0 -1
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/traceId.d.ts.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
|
@@ -12,6 +12,7 @@ import { getAppInstanceManager } from "./AppInstance";
|
|
|
12
12
|
import { getEnvironmentDetector } from "./environment";
|
|
13
13
|
import { getRouterManager } from "../router/RouterManager";
|
|
14
14
|
import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
15
|
+
import { startKernel } from "../kernel";
|
|
15
16
|
/**
|
|
16
17
|
* 启动应用
|
|
17
18
|
*
|
|
@@ -28,6 +29,7 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
28
29
|
setCurrentTraceId(traceId);
|
|
29
30
|
// 框架事件管理器(在服务初始化后创建)
|
|
30
31
|
let frameworkEventManager = null;
|
|
32
|
+
let kernelTraceId = null;
|
|
31
33
|
try {
|
|
32
34
|
// 1. 环境检测和容器获取
|
|
33
35
|
const container = options.container || envDetector.safeGetElement('#root');
|
|
@@ -37,27 +39,119 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
37
39
|
}, ErrorCode.CONTAINER_NOT_FOUND);
|
|
38
40
|
}
|
|
39
41
|
logger.info('框架启动中...');
|
|
42
|
+
if (options.antd && !options.uiProvider) {
|
|
43
|
+
logger.warn('[deprecated] StartOptions.antd 即将废弃,请迁移到 StartOptions.uiProvider');
|
|
44
|
+
}
|
|
45
|
+
if (options.antdApp && !options.uiApp) {
|
|
46
|
+
logger.warn('[deprecated] StartOptions.antdApp 即将废弃,请迁移到 StartOptions.uiApp');
|
|
47
|
+
}
|
|
40
48
|
// 2. 创建应用实例
|
|
41
49
|
const appInstance = instanceManager.createInstance(instanceId, options);
|
|
42
50
|
const finalInstanceId = appInstance.id;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
let services = null;
|
|
52
|
+
// 使用单次 Promise 防止重复初始化,提升加载速度并保证可观测数据一致。
|
|
53
|
+
let servicesInitPromise = null;
|
|
54
|
+
const ensureServicesInitialized = async ()=>{
|
|
55
|
+
if (services) {
|
|
56
|
+
return services;
|
|
57
|
+
}
|
|
58
|
+
if (!servicesInitPromise) {
|
|
59
|
+
servicesInitPromise = initializeServices({
|
|
60
|
+
...options,
|
|
61
|
+
eventBus: {
|
|
62
|
+
...options.eventBus,
|
|
63
|
+
instanceId: finalInstanceId
|
|
64
|
+
}
|
|
65
|
+
});
|
|
50
66
|
}
|
|
67
|
+
services = await servicesInitPromise;
|
|
68
|
+
return services;
|
|
69
|
+
};
|
|
70
|
+
// 3. 使用无 UI Kernel 管理启动阶段(配置、主题、i18n、服务注入、统一错误处理)
|
|
71
|
+
const kernelRuntime = await startKernel({
|
|
72
|
+
loggerLevel: options.loggerLevel,
|
|
73
|
+
configLoader: options.configStrategy?.loadCriticalConfig,
|
|
74
|
+
configFallback: options.configStrategy?.fallbackConfig,
|
|
75
|
+
locale: {
|
|
76
|
+
locale: (options.locale ? Object.keys(options.locale)[0] : 'zh-CN') || 'zh-CN',
|
|
77
|
+
resources: options.locale
|
|
78
|
+
},
|
|
79
|
+
theme: {
|
|
80
|
+
mode: options.theme?.mode || 'light',
|
|
81
|
+
primaryColor: options.theme?.primaryColor,
|
|
82
|
+
compatibility: {
|
|
83
|
+
antd: options.uiProvider || options.antd
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
adapters: {
|
|
87
|
+
monitoring: {
|
|
88
|
+
initialize: async ()=>{
|
|
89
|
+
await ensureServicesInitialized();
|
|
90
|
+
},
|
|
91
|
+
captureError: (error, metadata)=>{
|
|
92
|
+
if (services) {
|
|
93
|
+
services.monitoring.captureError(error, metadata);
|
|
94
|
+
} else {
|
|
95
|
+
logger.error('Kernel 监控上报失败(服务尚未初始化):', error, metadata);
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
reportMetric: (name, value, tags)=>{
|
|
99
|
+
logger.debug(`[kernel.metric] ${name}`, {
|
|
100
|
+
value,
|
|
101
|
+
tags,
|
|
102
|
+
instanceId: finalInstanceId
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
state: {
|
|
107
|
+
initialize: async ()=>{
|
|
108
|
+
await ensureServicesInitialized();
|
|
109
|
+
},
|
|
110
|
+
getInstance: ()=>services?.stateManager ?? null
|
|
111
|
+
},
|
|
112
|
+
eventBus: {
|
|
113
|
+
initialize: async ()=>{
|
|
114
|
+
await ensureServicesInitialized();
|
|
115
|
+
},
|
|
116
|
+
emit: (event, payload)=>{
|
|
117
|
+
if (services) {
|
|
118
|
+
services.eventBus.emit(event, payload);
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
on: (event, handler)=>{
|
|
122
|
+
if (!services) {
|
|
123
|
+
return ()=>{};
|
|
124
|
+
}
|
|
125
|
+
return services.eventBus.on(event, handler);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
errorHandler: {
|
|
129
|
+
async handle (error) {
|
|
130
|
+
logger.error('Kernel 启动阶段失败:', error);
|
|
131
|
+
return {
|
|
132
|
+
handled: true,
|
|
133
|
+
shouldThrow: true
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
enabledPhases: {
|
|
139
|
+
init: false
|
|
140
|
+
},
|
|
141
|
+
enablePostReady: false
|
|
51
142
|
});
|
|
143
|
+
kernelTraceId = kernelRuntime.traceId;
|
|
144
|
+
const servicesInitStart = performance.now();
|
|
145
|
+
const resolvedServices = await ensureServicesInitialized();
|
|
52
146
|
const servicesInitDuration = performance.now() - servicesInitStart;
|
|
53
147
|
// 创建框架事件管理器
|
|
54
|
-
frameworkEventManager = new FrameworkEventManager(
|
|
148
|
+
frameworkEventManager = new FrameworkEventManager(resolvedServices.eventBus);
|
|
55
149
|
// 触发应用启动事件(使用真实的事件总线)
|
|
56
150
|
frameworkEventManager.emitAppStart(finalInstanceId);
|
|
57
151
|
// 触发实例创建事件
|
|
58
152
|
frameworkEventManager.emitInstanceCreated(finalInstanceId);
|
|
59
153
|
// 4. 初始化应用实例
|
|
60
|
-
appInstance.initialize(container,
|
|
154
|
+
appInstance.initialize(container, resolvedServices);
|
|
61
155
|
// 5. 初始化路由管理器
|
|
62
156
|
const routerManager = getRouterManager();
|
|
63
157
|
if (options.router) {
|
|
@@ -78,7 +172,7 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
78
172
|
if (frameworkEventManager) {
|
|
79
173
|
frameworkEventManager.emitAppRenderStart(finalInstanceId);
|
|
80
174
|
}
|
|
81
|
-
await renderer.renderApp(options,
|
|
175
|
+
await renderer.renderApp(options, resolvedServices, context);
|
|
82
176
|
const renderDuration = performance.now() - renderStart;
|
|
83
177
|
// 触发渲染完成事件
|
|
84
178
|
if (frameworkEventManager) {
|
|
@@ -86,8 +180,8 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
86
180
|
}
|
|
87
181
|
// 优化:在应用渲染完成后,延迟初始化非关键服务
|
|
88
182
|
// 使用 requestIdleCallback 在浏览器空闲时初始化,不影响用户体验
|
|
89
|
-
if (
|
|
90
|
-
|
|
183
|
+
if (resolvedServices.initializeNonCriticalServices) {
|
|
184
|
+
resolvedServices.initializeNonCriticalServices().catch((error)=>{
|
|
91
185
|
logger.warn('非关键服务初始化失败(不影响应用运行):', error);
|
|
92
186
|
});
|
|
93
187
|
}
|
|
@@ -101,6 +195,12 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
101
195
|
if (frameworkEventManager) {
|
|
102
196
|
frameworkEventManager.emitAppStarted(finalInstanceId, performance.now() - startTime);
|
|
103
197
|
}
|
|
198
|
+
// 统一发出 Kernel post-ready 事件,供可观测系统消费。
|
|
199
|
+
kernelRuntime.getEventBus().emit('kernel.postReady', {
|
|
200
|
+
traceId: kernelRuntime.traceId,
|
|
201
|
+
instanceId: finalInstanceId,
|
|
202
|
+
startupDuration: performance.now() - startTime
|
|
203
|
+
});
|
|
104
204
|
// 开发模式下显示开发工具
|
|
105
205
|
if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {
|
|
106
206
|
// 延迟显示开发工具,避免影响首次渲染
|
|
@@ -145,7 +245,7 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
145
245
|
frameworkEventManager.emitAppInitStart(finalInstanceId);
|
|
146
246
|
}
|
|
147
247
|
// 渲染启动页
|
|
148
|
-
renderer.renderSplashScreen(options,
|
|
248
|
+
renderer.renderSplashScreen(options, resolvedServices, onSplashComplete);
|
|
149
249
|
} else {
|
|
150
250
|
// 场景2: 不显示启动页,直接执行初始化
|
|
151
251
|
logger.info('开始执行初始化(无启动页)');
|
|
@@ -194,6 +294,11 @@ import { FrameworkEventManager } from "../event/frameworkEvents";
|
|
|
194
294
|
});
|
|
195
295
|
}
|
|
196
296
|
}
|
|
297
|
+
if (kernelTraceId) {
|
|
298
|
+
logger.error('Kernel Trace 失败上下文', {
|
|
299
|
+
traceId: kernelTraceId
|
|
300
|
+
});
|
|
301
|
+
}
|
|
197
302
|
// 如果容器存在,尝试渲染错误页面
|
|
198
303
|
const container = options.container || envDetector.safeGetElement('#root');
|
|
199
304
|
if (container) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/startup/startApp.ts"],"sourcesContent":["/**\n * 应用启动主函数\n * 重构后的启动逻辑,集成所有新功能\n */\n\nimport { logger } from '../../utils';\nimport { ErrorCode, InitializationError } from '../../utils/errors';\nimport { initTraceIdGenerator, generateTraceId, setCurrentTraceId } from '../../utils/traceId';\nimport type { StartOptions } from '../types';\nimport { shouldShowSplashScreen } from '../splash';\nimport { initialization, initializationErrorState } from '../initialization/index';\nimport { middlewareManager } from '../middleware';\nimport { initializeServices } from './initializeServices';\nimport { AppInstanceManager, getAppInstanceManager } from './AppInstance';\nimport { getEnvironmentDetector } from './environment';\nimport { getRouterManager } from '../router/RouterManager';\nimport { FrameworkEventManager } from '../event/frameworkEvents';\n\n/**\n * 启动应用\n * \n * @param options - 启动配置选项\n * @param instanceId - 应用实例ID(可选,用于多实例场景)\n * @returns 应用实例\n */\nexport async function startApp(\n options: StartOptions = {},\n instanceId?: string\n): Promise<AppInstanceManager> {\n const startTime = performance.now();\n const envDetector = getEnvironmentDetector();\n const instanceManager = getAppInstanceManager();\n\n // 初始化追踪 ID 生成器\n initTraceIdGenerator('app');\n const traceId = generateTraceId();\n setCurrentTraceId(traceId);\n\n // 框架事件管理器(在服务初始化后创建)\n let frameworkEventManager: FrameworkEventManager | null = null;\n\n try {\n // 1. 环境检测和容器获取\n const container = options.container || envDetector.safeGetElement('#root');\n if (!container) {\n throw new InitializationError(\n '未找到挂载容器',\n undefined,\n { container: options.container },\n ErrorCode.CONTAINER_NOT_FOUND\n );\n }\n\n logger.info('框架启动中...');\n\n // 2. 创建应用实例\n const appInstance = instanceManager.createInstance(instanceId, options);\n const finalInstanceId = appInstance.id;\n\n // 3. 初始化服务(并行)\n const servicesInitStart = performance.now();\n const services = await initializeServices({\n ...options,\n eventBus: {\n ...options.eventBus,\n instanceId: finalInstanceId,\n },\n });\n const servicesInitDuration = performance.now() - servicesInitStart;\n\n // 创建框架事件管理器\n frameworkEventManager = new FrameworkEventManager(services.eventBus);\n \n // 触发应用启动事件(使用真实的事件总线)\n frameworkEventManager.emitAppStart(finalInstanceId);\n \n // 触发实例创建事件\n frameworkEventManager.emitInstanceCreated(finalInstanceId);\n\n // 4. 初始化应用实例\n appInstance.initialize(container, services);\n\n // 5. 初始化路由管理器\n const routerManager = getRouterManager();\n if (options.router) {\n await routerManager.initialize(options.router);\n }\n\n // 6. 性能追踪\n const performanceTracker = appInstance.getPerformanceTracker();\n if (performanceTracker) {\n performanceTracker.recordServiceInit(servicesInitDuration);\n }\n\n // 6. 是否显示启动页\n const shouldShowSplash = shouldShowSplashScreen(options.showSplashScreen);\n\n const renderer = appInstance.getRenderer();\n\n // 8. 渲染应用函数\n const renderApp = async (context?: Awaited<ReturnType<typeof initialization>>) => {\n const renderStart = performance.now();\n \n // 触发渲染开始事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppRenderStart(finalInstanceId);\n }\n \n await renderer.renderApp(options, services, context);\n const renderDuration = performance.now() - renderStart;\n\n // 触发渲染完成事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppRenderComplete(finalInstanceId, renderDuration);\n }\n\n // 优化:在应用渲染完成后,延迟初始化非关键服务\n // 使用 requestIdleCallback 在浏览器空闲时初始化,不影响用户体验\n if (services.initializeNonCriticalServices) {\n services.initializeNonCriticalServices().catch((error) => {\n logger.warn('非关键服务初始化失败(不影响应用运行):', error);\n });\n }\n\n if (performanceTracker) {\n performanceTracker.recordFirstRender(renderDuration);\n const totalDuration = performance.now() - startTime;\n performanceTracker.recordTotalStartup(totalDuration);\n performanceTracker.report();\n }\n \n // 触发应用启动完成事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppStarted(finalInstanceId, performance.now() - startTime);\n }\n\n // 开发模式下显示开发工具\n if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n // 延迟显示开发工具,避免影响首次渲染\n setTimeout(() => {\n const devToolsContainer = document.createElement('div');\n devToolsContainer.id = '__framework_dev_tools__';\n document.body.appendChild(devToolsContainer);\n \n // 这里需要动态导入React来渲染开发工具\n // 为了简化,暂时注释掉,后续可以完善\n // import('react-dom/client').then(({ createRoot }) => {\n // const root = createRoot(devToolsContainer);\n // root.render(<DevToolsTrigger appInstance={appInstance} />);\n // });\n }, 1000);\n }\n };\n\n if (shouldShowSplash) {\n // 场景1: 显示启动页,初始化在启动页中完成\n const onSplashComplete = (context: Awaited<ReturnType<typeof initialization>>) => {\n logger.info('启动页初始化完成');\n\n // 触发初始化完成事件\n if (frameworkEventManager) {\n const initDuration = context.duration || 0;\n frameworkEventManager.emitAppInitComplete(finalInstanceId, context, initDuration);\n }\n\n if (options.onSplashComplete) {\n Promise.resolve(\n options.onSplashComplete(() => {\n logger.info('框架加载完成');\n renderApp(context);\n }, context)\n ).catch((error) => {\n logger.error('onSplashComplete 回调执行失败:', error);\n initializationErrorState.setError(error);\n renderApp(context);\n });\n } else {\n logger.info('框架加载完成');\n renderApp(context);\n }\n };\n\n // 触发初始化开始事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitStart(finalInstanceId);\n }\n\n // 渲染启动页\n renderer.renderSplashScreen(options, services, onSplashComplete);\n } else {\n // 场景2: 不显示启动页,直接执行初始化\n logger.info('开始执行初始化(无启动页)');\n\n // 触发初始化开始事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitStart(finalInstanceId);\n }\n\n try {\n const initStart = performance.now();\n\n // 使用中间件包装初始化函数\n const initContext = await middlewareManager.execute(\n options,\n async () => {\n return await initialization(options, (progress, step) => {\n logger.debug(`初始化进度: ${progress}%${step ? ` - ${step}` : ''}`);\n });\n }\n );\n\n const initDuration = performance.now() - initStart;\n \n // 触发初始化完成事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitComplete(finalInstanceId, initContext, initDuration);\n }\n \n if (performanceTracker) {\n performanceTracker.recordInitialization(initDuration);\n }\n\n logger.info('初始化完成(无启动页)', initContext);\n logger.info('框架加载完成');\n renderApp(initContext);\n } catch (error) {\n logger.error('初始化失败:', error);\n \n // 触发初始化错误事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitError(\n finalInstanceId,\n error instanceof Error ? error : new Error(String(error))\n );\n }\n \n initializationErrorState.setError(error);\n renderApp();\n }\n }\n\n return instanceManager;\n } catch (error) {\n logger.error('框架启动失败:', error);\n\n // 触发错误事件\n if (frameworkEventManager) {\n const errorInstanceId = instanceId || instanceManager.getInstance()?.id;\n if (errorInstanceId) {\n frameworkEventManager.emitErrorOccurred(\n error instanceof Error ? error : new Error(String(error)),\n { phase: 'startup' }\n );\n }\n }\n\n // 如果容器存在,尝试渲染错误页面\n const container = options.container || envDetector.safeGetElement('#root');\n if (container) {\n const errorInstance = instanceManager.getInstance();\n if (errorInstance && errorInstance.isInitialized()) {\n const renderer = errorInstance.getRenderer();\n const services = errorInstance.getServices();\n initializationErrorState.setError(error);\n renderer.renderError(options, services);\n }\n }\n\n throw error;\n }\n}\n"],"names":["logger","ErrorCode","InitializationError","initTraceIdGenerator","generateTraceId","setCurrentTraceId","shouldShowSplashScreen","initialization","initializationErrorState","middlewareManager","initializeServices","getAppInstanceManager","getEnvironmentDetector","getRouterManager","FrameworkEventManager","startApp","options","instanceId","startTime","performance","now","envDetector","instanceManager","traceId","frameworkEventManager","container","safeGetElement","undefined","CONTAINER_NOT_FOUND","info","appInstance","createInstance","finalInstanceId","id","servicesInitStart","services","eventBus","servicesInitDuration","emitAppStart","emitInstanceCreated","initialize","routerManager","router","performanceTracker","getPerformanceTracker","recordServiceInit","shouldShowSplash","showSplashScreen","renderer","getRenderer","renderApp","context","renderStart","emitAppRenderStart","renderDuration","emitAppRenderComplete","initializeNonCriticalServices","catch","error","warn","recordFirstRender","totalDuration","recordTotalStartup","report","emitAppStarted","process","env","NODE_ENV","window","setTimeout","devToolsContainer","document","createElement","body","appendChild","onSplashComplete","initDuration","duration","emitAppInitComplete","Promise","resolve","setError","emitAppInitStart","renderSplashScreen","initStart","initContext","execute","progress","step","debug","recordInitialization","emitAppInitError","Error","String","errorInstanceId","getInstance","emitErrorOccurred","phase","errorInstance","isInitialized","getServices","renderError"],"mappings":"AAAA;;;CAGC,GAED,SAASA,MAAM,QAAQ,cAAc;AACrC,SAASC,SAAS,EAAEC,mBAAmB,QAAQ,qBAAqB;AACpE,SAASC,oBAAoB,EAAEC,eAAe,EAAEC,iBAAiB,QAAQ,sBAAsB;AAE/F,SAASC,sBAAsB,QAAQ,YAAY;AACnD,SAASC,cAAc,EAAEC,wBAAwB,QAAQ,0BAA0B;AACnF,SAASC,iBAAiB,QAAQ,gBAAgB;AAClD,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAA6BC,qBAAqB,QAAQ,gBAAgB;AAC1E,SAASC,sBAAsB,QAAQ,gBAAgB;AACvD,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,qBAAqB,QAAQ,2BAA2B;AAEjE;;;;;;CAMC,GACD,OAAO,eAAeC,SACpBC,UAAwB,CAAC,CAAC,EAC1BC,UAAmB;IAEnB,MAAMC,YAAYC,YAAYC,GAAG;IACjC,MAAMC,cAAcT;IACpB,MAAMU,kBAAkBX;IAExB,eAAe;IACfR,qBAAqB;IACrB,MAAMoB,UAAUnB;IAChBC,kBAAkBkB;IAElB,qBAAqB;IACrB,IAAIC,wBAAsD;IAE1D,IAAI;QACF,eAAe;QACf,MAAMC,YAAYT,QAAQS,SAAS,IAAIJ,YAAYK,cAAc,CAAC;QAClE,IAAI,CAACD,WAAW;YACd,MAAM,IAAIvB,oBACR,WACAyB,WACA;gBAAEF,WAAWT,QAAQS,SAAS;YAAC,GAC/BxB,UAAU2B,mBAAmB;QAEjC;QAEA5B,OAAO6B,IAAI,CAAC;QAEZ,YAAY;QACZ,MAAMC,cAAcR,gBAAgBS,cAAc,CAACd,YAAYD;QAC/D,MAAMgB,kBAAkBF,YAAYG,EAAE;QAEtC,eAAe;QACf,MAAMC,oBAAoBf,YAAYC,GAAG;QACzC,MAAMe,WAAW,MAAMzB,mBAAmB;YACxC,GAAGM,OAAO;YACVoB,UAAU;gBACR,GAAGpB,QAAQoB,QAAQ;gBACnBnB,YAAYe;YACd;QACF;QACA,MAAMK,uBAAuBlB,YAAYC,GAAG,KAAKc;QAEjD,YAAY;QACZV,wBAAwB,IAAIV,sBAAsBqB,SAASC,QAAQ;QAEnE,sBAAsB;QACtBZ,sBAAsBc,YAAY,CAACN;QAEnC,WAAW;QACXR,sBAAsBe,mBAAmB,CAACP;QAE1C,aAAa;QACbF,YAAYU,UAAU,CAACf,WAAWU;QAElC,cAAc;QACd,MAAMM,gBAAgB5B;QACtB,IAAIG,QAAQ0B,MAAM,EAAE;YAClB,MAAMD,cAAcD,UAAU,CAACxB,QAAQ0B,MAAM;QAC/C;QAEA,UAAU;QACV,MAAMC,qBAAqBb,YAAYc,qBAAqB;QAC5D,IAAID,oBAAoB;YACtBA,mBAAmBE,iBAAiB,CAACR;QACvC;QAEA,aAAa;QACb,MAAMS,mBAAmBxC,uBAAuBU,QAAQ+B,gBAAgB;QAExE,MAAMC,WAAWlB,YAAYmB,WAAW;QAExC,YAAY;QACZ,MAAMC,YAAY,OAAOC;YACvB,MAAMC,cAAcjC,YAAYC,GAAG;YAEnC,WAAW;YACX,IAAII,uBAAuB;gBACzBA,sBAAsB6B,kBAAkB,CAACrB;YAC3C;YAEA,MAAMgB,SAASE,SAAS,CAAClC,SAASmB,UAAUgB;YAC5C,MAAMG,iBAAiBnC,YAAYC,GAAG,KAAKgC;YAE3C,WAAW;YACX,IAAI5B,uBAAuB;gBACzBA,sBAAsB+B,qBAAqB,CAACvB,iBAAiBsB;YAC/D;YAEA,yBAAyB;YACzB,4CAA4C;YAC5C,IAAInB,SAASqB,6BAA6B,EAAE;gBAC1CrB,SAASqB,6BAA6B,GAAGC,KAAK,CAAC,CAACC;oBAC9C1D,OAAO2D,IAAI,CAAC,wBAAwBD;gBACtC;YACF;YAEA,IAAIf,oBAAoB;gBACtBA,mBAAmBiB,iBAAiB,CAACN;gBACrC,MAAMO,gBAAgB1C,YAAYC,GAAG,KAAKF;gBAC1CyB,mBAAmBmB,kBAAkB,CAACD;gBACtClB,mBAAmBoB,MAAM;YAC3B;YAEA,aAAa;YACb,IAAIvC,uBAAuB;gBACzBA,sBAAsBwC,cAAc,CAAChC,iBAAiBb,YAAYC,GAAG,KAAKF;YAC5E;YAEA,cAAc;YACd,IAAI+C,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiB,OAAOC,WAAW,aAAa;gBAC3E,oBAAoB;gBACpBC,WAAW;oBACT,MAAMC,oBAAoBC,SAASC,aAAa,CAAC;oBACjDF,kBAAkBrC,EAAE,GAAG;oBACvBsC,SAASE,IAAI,CAACC,WAAW,CAACJ;gBAE1B,uBAAuB;gBACvB,oBAAoB;gBACpB,wDAAwD;gBACxD,gDAAgD;gBAChD,gEAAgE;gBAChE,MAAM;gBACR,GAAG;YACL;QACF;QAEA,IAAIxB,kBAAkB;YACpB,wBAAwB;YACxB,MAAM6B,mBAAmB,CAACxB;gBACxBnD,OAAO6B,IAAI,CAAC;gBAEZ,YAAY;gBACZ,IAAIL,uBAAuB;oBACzB,MAAMoD,eAAezB,QAAQ0B,QAAQ,IAAI;oBACzCrD,sBAAsBsD,mBAAmB,CAAC9C,iBAAiBmB,SAASyB;gBACtE;gBAEA,IAAI5D,QAAQ2D,gBAAgB,EAAE;oBAC5BI,QAAQC,OAAO,CACbhE,QAAQ2D,gBAAgB,CAAC;wBACvB3E,OAAO6B,IAAI,CAAC;wBACZqB,UAAUC;oBACZ,GAAGA,UACHM,KAAK,CAAC,CAACC;wBACP1D,OAAO0D,KAAK,CAAC,4BAA4BA;wBACzClD,yBAAyByE,QAAQ,CAACvB;wBAClCR,UAAUC;oBACZ;gBACF,OAAO;oBACLnD,OAAO6B,IAAI,CAAC;oBACZqB,UAAUC;gBACZ;YACF;YAEA,YAAY;YACZ,IAAI3B,uBAAuB;gBACzBA,sBAAsB0D,gBAAgB,CAAClD;YACzC;YAEA,QAAQ;YACRgB,SAASmC,kBAAkB,CAACnE,SAASmB,UAAUwC;QACjD,OAAO;YACL,sBAAsB;YACtB3E,OAAO6B,IAAI,CAAC;YAEZ,YAAY;YACZ,IAAIL,uBAAuB;gBACzBA,sBAAsB0D,gBAAgB,CAAClD;YACzC;YAEA,IAAI;gBACF,MAAMoD,YAAYjE,YAAYC,GAAG;gBAEjC,eAAe;gBACf,MAAMiE,cAAc,MAAM5E,kBAAkB6E,OAAO,CACjDtE,SACA;oBACE,OAAO,MAAMT,eAAeS,SAAS,CAACuE,UAAUC;wBAC9CxF,OAAOyF,KAAK,CAAC,CAAC,OAAO,EAAEF,SAAS,CAAC,EAAEC,OAAO,CAAC,GAAG,EAAEA,MAAM,GAAG,IAAI;oBAC/D;gBACF;gBAGF,MAAMZ,eAAezD,YAAYC,GAAG,KAAKgE;gBAEzC,YAAY;gBACZ,IAAI5D,uBAAuB;oBACzBA,sBAAsBsD,mBAAmB,CAAC9C,iBAAiBqD,aAAaT;gBAC1E;gBAEA,IAAIjC,oBAAoB;oBACtBA,mBAAmB+C,oBAAoB,CAACd;gBAC1C;gBAEA5E,OAAO6B,IAAI,CAAC,eAAewD;gBAC3BrF,OAAO6B,IAAI,CAAC;gBACZqB,UAAUmC;YACZ,EAAE,OAAO3B,OAAO;gBACd1D,OAAO0D,KAAK,CAAC,UAAUA;gBAEvB,YAAY;gBACZ,IAAIlC,uBAAuB;oBACzBA,sBAAsBmE,gBAAgB,CACpC3D,iBACA0B,iBAAiBkC,QAAQlC,QAAQ,IAAIkC,MAAMC,OAAOnC;gBAEtD;gBAEAlD,yBAAyByE,QAAQ,CAACvB;gBAClCR;YACF;QACF;QAEA,OAAO5B;IACT,EAAE,OAAOoC,OAAO;QACd1D,OAAO0D,KAAK,CAAC,WAAWA;QAExB,SAAS;QACT,IAAIlC,uBAAuB;YACzB,MAAMsE,kBAAkB7E,cAAcK,gBAAgByE,WAAW,IAAI9D;YACrE,IAAI6D,iBAAiB;gBACnBtE,sBAAsBwE,iBAAiB,CACrCtC,iBAAiBkC,QAAQlC,QAAQ,IAAIkC,MAAMC,OAAOnC,SAClD;oBAAEuC,OAAO;gBAAU;YAEvB;QACF;QAEA,kBAAkB;QAClB,MAAMxE,YAAYT,QAAQS,SAAS,IAAIJ,YAAYK,cAAc,CAAC;QAClE,IAAID,WAAW;YACb,MAAMyE,gBAAgB5E,gBAAgByE,WAAW;YACjD,IAAIG,iBAAiBA,cAAcC,aAAa,IAAI;gBAClD,MAAMnD,WAAWkD,cAAcjD,WAAW;gBAC1C,MAAMd,WAAW+D,cAAcE,WAAW;gBAC1C5F,yBAAyByE,QAAQ,CAACvB;gBAClCV,SAASqD,WAAW,CAACrF,SAASmB;YAChC;QACF;QAEA,MAAMuB;IACR;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/startup/startApp.ts"],"sourcesContent":["/**\n * 应用启动主函数\n * 重构后的启动逻辑,集成所有新功能\n */\n\nimport { logger } from '../../utils';\nimport { ErrorCode, InitializationError } from '../../utils/errors';\nimport { initTraceIdGenerator, generateTraceId, setCurrentTraceId } from '../../utils/traceId';\nimport type { StartOptions } from '../types';\nimport { shouldShowSplashScreen } from '../splash';\nimport { initialization, initializationErrorState } from '../initialization/index';\nimport { middlewareManager } from '../middleware';\nimport { initializeServices } from './initializeServices';\nimport type { ServicesInitResult } from './initializeServices';\nimport { AppInstanceManager, getAppInstanceManager } from './AppInstance';\nimport { getEnvironmentDetector } from './environment';\nimport { getRouterManager } from '../router/RouterManager';\nimport { FrameworkEventManager } from '../event/frameworkEvents';\nimport { startKernel } from '../kernel';\n\n/**\n * 启动应用\n * \n * @param options - 启动配置选项\n * @param instanceId - 应用实例ID(可选,用于多实例场景)\n * @returns 应用实例\n */\nexport async function startApp(\n options: StartOptions = {},\n instanceId?: string\n): Promise<AppInstanceManager> {\n const startTime = performance.now();\n const envDetector = getEnvironmentDetector();\n const instanceManager = getAppInstanceManager();\n\n // 初始化追踪 ID 生成器\n initTraceIdGenerator('app');\n const traceId = generateTraceId();\n setCurrentTraceId(traceId);\n\n // 框架事件管理器(在服务初始化后创建)\n let frameworkEventManager: FrameworkEventManager | null = null;\n let kernelTraceId: string | null = null;\n\n try {\n // 1. 环境检测和容器获取\n const container = options.container || envDetector.safeGetElement('#root');\n if (!container) {\n throw new InitializationError(\n '未找到挂载容器',\n undefined,\n { container: options.container },\n ErrorCode.CONTAINER_NOT_FOUND\n );\n }\n\n logger.info('框架启动中...');\n\n if (options.antd && !options.uiProvider) {\n logger.warn('[deprecated] StartOptions.antd 即将废弃,请迁移到 StartOptions.uiProvider');\n }\n if (options.antdApp && !options.uiApp) {\n logger.warn('[deprecated] StartOptions.antdApp 即将废弃,请迁移到 StartOptions.uiApp');\n }\n\n // 2. 创建应用实例\n const appInstance = instanceManager.createInstance(instanceId, options);\n const finalInstanceId = appInstance.id;\n let services: ServicesInitResult | null = null;\n\n // 使用单次 Promise 防止重复初始化,提升加载速度并保证可观测数据一致。\n let servicesInitPromise: Promise<ServicesInitResult> | null = null;\n const ensureServicesInitialized = async (): Promise<ServicesInitResult> => {\n if (services) {\n return services;\n }\n if (!servicesInitPromise) {\n servicesInitPromise = initializeServices({\n ...options,\n eventBus: {\n ...options.eventBus,\n instanceId: finalInstanceId,\n },\n });\n }\n services = await servicesInitPromise;\n return services;\n };\n\n // 3. 使用无 UI Kernel 管理启动阶段(配置、主题、i18n、服务注入、统一错误处理)\n const kernelRuntime = await startKernel({\n loggerLevel: options.loggerLevel,\n configLoader: options.configStrategy?.loadCriticalConfig,\n configFallback: options.configStrategy?.fallbackConfig,\n locale: {\n locale: (options.locale ? (Object.keys(options.locale)[0] as any) : 'zh-CN') || 'zh-CN',\n resources: options.locale as any,\n },\n theme: {\n mode: options.theme?.mode || 'light',\n primaryColor: options.theme?.primaryColor,\n compatibility: {\n antd: (options.uiProvider || options.antd) as unknown as Record<string, unknown> | undefined,\n },\n },\n adapters: {\n monitoring: {\n initialize: async () => {\n await ensureServicesInitialized();\n },\n captureError: (error, metadata) => {\n if (services) {\n services.monitoring.captureError(error, metadata);\n } else {\n logger.error('Kernel 监控上报失败(服务尚未初始化):', error, metadata);\n }\n },\n reportMetric: (name, value, tags) => {\n logger.debug(`[kernel.metric] ${name}`, { value, tags, instanceId: finalInstanceId });\n },\n },\n state: {\n initialize: async () => {\n await ensureServicesInitialized();\n },\n getInstance: () => services?.stateManager ?? null,\n },\n eventBus: {\n initialize: async () => {\n await ensureServicesInitialized();\n },\n emit: (event, payload) => {\n if (services) {\n services.eventBus.emit(event as any, payload as any);\n }\n },\n on: (event, handler) => {\n if (!services) {\n return () => {};\n }\n return services.eventBus.on(event as any, handler as any);\n },\n },\n errorHandler: {\n async handle(error) {\n logger.error('Kernel 启动阶段失败:', error);\n return { handled: true, shouldThrow: true };\n },\n },\n },\n enabledPhases: {\n init: false,\n },\n enablePostReady: false,\n });\n kernelTraceId = kernelRuntime.traceId;\n\n const servicesInitStart = performance.now();\n const resolvedServices = await ensureServicesInitialized();\n const servicesInitDuration = performance.now() - servicesInitStart;\n\n // 创建框架事件管理器\n frameworkEventManager = new FrameworkEventManager(resolvedServices.eventBus);\n \n // 触发应用启动事件(使用真实的事件总线)\n frameworkEventManager.emitAppStart(finalInstanceId);\n \n // 触发实例创建事件\n frameworkEventManager.emitInstanceCreated(finalInstanceId);\n\n // 4. 初始化应用实例\n appInstance.initialize(container, resolvedServices);\n\n // 5. 初始化路由管理器\n const routerManager = getRouterManager();\n if (options.router) {\n await routerManager.initialize(options.router);\n }\n\n // 6. 性能追踪\n const performanceTracker = appInstance.getPerformanceTracker();\n if (performanceTracker) {\n performanceTracker.recordServiceInit(servicesInitDuration);\n }\n\n // 6. 是否显示启动页\n const shouldShowSplash = shouldShowSplashScreen(options.showSplashScreen);\n\n const renderer = appInstance.getRenderer();\n\n // 8. 渲染应用函数\n const renderApp = async (context?: Awaited<ReturnType<typeof initialization>>) => {\n const renderStart = performance.now();\n \n // 触发渲染开始事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppRenderStart(finalInstanceId);\n }\n \n await renderer.renderApp(options, resolvedServices, context);\n const renderDuration = performance.now() - renderStart;\n\n // 触发渲染完成事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppRenderComplete(finalInstanceId, renderDuration);\n }\n\n // 优化:在应用渲染完成后,延迟初始化非关键服务\n // 使用 requestIdleCallback 在浏览器空闲时初始化,不影响用户体验\n if (resolvedServices.initializeNonCriticalServices) {\n resolvedServices.initializeNonCriticalServices().catch((error) => {\n logger.warn('非关键服务初始化失败(不影响应用运行):', error);\n });\n }\n\n if (performanceTracker) {\n performanceTracker.recordFirstRender(renderDuration);\n const totalDuration = performance.now() - startTime;\n performanceTracker.recordTotalStartup(totalDuration);\n performanceTracker.report();\n }\n \n // 触发应用启动完成事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppStarted(finalInstanceId, performance.now() - startTime);\n }\n\n // 统一发出 Kernel post-ready 事件,供可观测系统消费。\n kernelRuntime.getEventBus().emit('kernel.postReady', {\n traceId: kernelRuntime.traceId,\n instanceId: finalInstanceId,\n startupDuration: performance.now() - startTime,\n });\n\n // 开发模式下显示开发工具\n if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n // 延迟显示开发工具,避免影响首次渲染\n setTimeout(() => {\n const devToolsContainer = document.createElement('div');\n devToolsContainer.id = '__framework_dev_tools__';\n document.body.appendChild(devToolsContainer);\n \n // 这里需要动态导入React来渲染开发工具\n // 为了简化,暂时注释掉,后续可以完善\n // import('react-dom/client').then(({ createRoot }) => {\n // const root = createRoot(devToolsContainer);\n // root.render(<DevToolsTrigger appInstance={appInstance} />);\n // });\n }, 1000);\n }\n };\n\n if (shouldShowSplash) {\n // 场景1: 显示启动页,初始化在启动页中完成\n const onSplashComplete = (context: Awaited<ReturnType<typeof initialization>>) => {\n logger.info('启动页初始化完成');\n\n // 触发初始化完成事件\n if (frameworkEventManager) {\n const initDuration = context.duration || 0;\n frameworkEventManager.emitAppInitComplete(finalInstanceId, context, initDuration);\n }\n\n if (options.onSplashComplete) {\n Promise.resolve(\n options.onSplashComplete(() => {\n logger.info('框架加载完成');\n renderApp(context);\n }, context)\n ).catch((error) => {\n logger.error('onSplashComplete 回调执行失败:', error);\n initializationErrorState.setError(error);\n renderApp(context);\n });\n } else {\n logger.info('框架加载完成');\n renderApp(context);\n }\n };\n\n // 触发初始化开始事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitStart(finalInstanceId);\n }\n\n // 渲染启动页\n renderer.renderSplashScreen(options, resolvedServices, onSplashComplete);\n } else {\n // 场景2: 不显示启动页,直接执行初始化\n logger.info('开始执行初始化(无启动页)');\n\n // 触发初始化开始事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitStart(finalInstanceId);\n }\n\n try {\n const initStart = performance.now();\n\n // 使用中间件包装初始化函数\n const initContext = await middlewareManager.execute(\n options,\n async () => {\n return await initialization(options, (progress, step) => {\n logger.debug(`初始化进度: ${progress}%${step ? ` - ${step}` : ''}`);\n });\n }\n );\n\n const initDuration = performance.now() - initStart;\n \n // 触发初始化完成事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitComplete(finalInstanceId, initContext, initDuration);\n }\n \n if (performanceTracker) {\n performanceTracker.recordInitialization(initDuration);\n }\n\n logger.info('初始化完成(无启动页)', initContext);\n logger.info('框架加载完成');\n renderApp(initContext);\n } catch (error) {\n logger.error('初始化失败:', error);\n \n // 触发初始化错误事件\n if (frameworkEventManager) {\n frameworkEventManager.emitAppInitError(\n finalInstanceId,\n error instanceof Error ? error : new Error(String(error))\n );\n }\n \n initializationErrorState.setError(error);\n renderApp();\n }\n }\n\n return instanceManager;\n } catch (error) {\n logger.error('框架启动失败:', error);\n\n // 触发错误事件\n if (frameworkEventManager) {\n const errorInstanceId = instanceId || instanceManager.getInstance()?.id;\n if (errorInstanceId) {\n frameworkEventManager.emitErrorOccurred(\n error instanceof Error ? error : new Error(String(error)),\n { phase: 'startup' }\n );\n }\n }\n\n if (kernelTraceId) {\n logger.error('Kernel Trace 失败上下文', { traceId: kernelTraceId });\n }\n\n // 如果容器存在,尝试渲染错误页面\n const container = options.container || envDetector.safeGetElement('#root');\n if (container) {\n const errorInstance = instanceManager.getInstance();\n if (errorInstance && errorInstance.isInitialized()) {\n const renderer = errorInstance.getRenderer();\n const services = errorInstance.getServices();\n initializationErrorState.setError(error);\n renderer.renderError(options, services);\n }\n }\n\n throw error;\n }\n}\n"],"names":["logger","ErrorCode","InitializationError","initTraceIdGenerator","generateTraceId","setCurrentTraceId","shouldShowSplashScreen","initialization","initializationErrorState","middlewareManager","initializeServices","getAppInstanceManager","getEnvironmentDetector","getRouterManager","FrameworkEventManager","startKernel","startApp","options","instanceId","startTime","performance","now","envDetector","instanceManager","traceId","frameworkEventManager","kernelTraceId","container","safeGetElement","undefined","CONTAINER_NOT_FOUND","info","antd","uiProvider","warn","antdApp","uiApp","appInstance","createInstance","finalInstanceId","id","services","servicesInitPromise","ensureServicesInitialized","eventBus","kernelRuntime","loggerLevel","configLoader","configStrategy","loadCriticalConfig","configFallback","fallbackConfig","locale","Object","keys","resources","theme","mode","primaryColor","compatibility","adapters","monitoring","initialize","captureError","error","metadata","reportMetric","name","value","tags","debug","state","getInstance","stateManager","emit","event","payload","on","handler","errorHandler","handle","handled","shouldThrow","enabledPhases","init","enablePostReady","servicesInitStart","resolvedServices","servicesInitDuration","emitAppStart","emitInstanceCreated","routerManager","router","performanceTracker","getPerformanceTracker","recordServiceInit","shouldShowSplash","showSplashScreen","renderer","getRenderer","renderApp","context","renderStart","emitAppRenderStart","renderDuration","emitAppRenderComplete","initializeNonCriticalServices","catch","recordFirstRender","totalDuration","recordTotalStartup","report","emitAppStarted","getEventBus","startupDuration","process","env","NODE_ENV","window","setTimeout","devToolsContainer","document","createElement","body","appendChild","onSplashComplete","initDuration","duration","emitAppInitComplete","Promise","resolve","setError","emitAppInitStart","renderSplashScreen","initStart","initContext","execute","progress","step","recordInitialization","emitAppInitError","Error","String","errorInstanceId","emitErrorOccurred","phase","errorInstance","isInitialized","getServices","renderError"],"mappings":"AAAA;;;CAGC,GAED,SAASA,MAAM,QAAQ,cAAc;AACrC,SAASC,SAAS,EAAEC,mBAAmB,QAAQ,qBAAqB;AACpE,SAASC,oBAAoB,EAAEC,eAAe,EAAEC,iBAAiB,QAAQ,sBAAsB;AAE/F,SAASC,sBAAsB,QAAQ,YAAY;AACnD,SAASC,cAAc,EAAEC,wBAAwB,QAAQ,0BAA0B;AACnF,SAASC,iBAAiB,QAAQ,gBAAgB;AAClD,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,SAA6BC,qBAAqB,QAAQ,gBAAgB;AAC1E,SAASC,sBAAsB,QAAQ,gBAAgB;AACvD,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,qBAAqB,QAAQ,2BAA2B;AACjE,SAASC,WAAW,QAAQ,YAAY;AAExC;;;;;;CAMC,GACD,OAAO,eAAeC,SACpBC,UAAwB,CAAC,CAAC,EAC1BC,UAAmB;IAEnB,MAAMC,YAAYC,YAAYC,GAAG;IACjC,MAAMC,cAAcV;IACpB,MAAMW,kBAAkBZ;IAExB,eAAe;IACfR,qBAAqB;IACrB,MAAMqB,UAAUpB;IAChBC,kBAAkBmB;IAElB,qBAAqB;IACrB,IAAIC,wBAAsD;IAC1D,IAAIC,gBAA+B;IAEnC,IAAI;QACF,eAAe;QACf,MAAMC,YAAYV,QAAQU,SAAS,IAAIL,YAAYM,cAAc,CAAC;QAClE,IAAI,CAACD,WAAW;YACd,MAAM,IAAIzB,oBACR,WACA2B,WACA;gBAAEF,WAAWV,QAAQU,SAAS;YAAC,GAC/B1B,UAAU6B,mBAAmB;QAEjC;QAEA9B,OAAO+B,IAAI,CAAC;QAEZ,IAAId,QAAQe,IAAI,IAAI,CAACf,QAAQgB,UAAU,EAAE;YACvCjC,OAAOkC,IAAI,CAAC;QACd;QACA,IAAIjB,QAAQkB,OAAO,IAAI,CAAClB,QAAQmB,KAAK,EAAE;YACrCpC,OAAOkC,IAAI,CAAC;QACd;QAEA,YAAY;QACZ,MAAMG,cAAcd,gBAAgBe,cAAc,CAACpB,YAAYD;QAC/D,MAAMsB,kBAAkBF,YAAYG,EAAE;QACtC,IAAIC,WAAsC;QAE1C,yCAAyC;QACzC,IAAIC,sBAA0D;QAC9D,MAAMC,4BAA4B;YAChC,IAAIF,UAAU;gBACZ,OAAOA;YACT;YACA,IAAI,CAACC,qBAAqB;gBACxBA,sBAAsBhC,mBAAmB;oBACvC,GAAGO,OAAO;oBACV2B,UAAU;wBACR,GAAG3B,QAAQ2B,QAAQ;wBACnB1B,YAAYqB;oBACd;gBACF;YACF;YACAE,WAAW,MAAMC;YACjB,OAAOD;QACT;QAEA,kDAAkD;QAClD,MAAMI,gBAAgB,MAAM9B,YAAY;YACtC+B,aAAa7B,QAAQ6B,WAAW;YAChCC,cAAc9B,QAAQ+B,cAAc,EAAEC;YACtCC,gBAAgBjC,QAAQ+B,cAAc,EAAEG;YACxCC,QAAQ;gBACNA,QAAQ,AAACnC,CAAAA,QAAQmC,MAAM,GAAIC,OAAOC,IAAI,CAACrC,QAAQmC,MAAM,CAAC,CAAC,EAAE,GAAW,OAAM,KAAM;gBAChFG,WAAWtC,QAAQmC,MAAM;YAC3B;YACAI,OAAO;gBACLC,MAAMxC,QAAQuC,KAAK,EAAEC,QAAQ;gBAC7BC,cAAczC,QAAQuC,KAAK,EAAEE;gBAC7BC,eAAe;oBACb3B,MAAOf,QAAQgB,UAAU,IAAIhB,QAAQe,IAAI;gBAC3C;YACF;YACA4B,UAAU;gBACRC,YAAY;oBACVC,YAAY;wBACV,MAAMnB;oBACR;oBACAoB,cAAc,CAACC,OAAOC;wBACpB,IAAIxB,UAAU;4BACZA,SAASoB,UAAU,CAACE,YAAY,CAACC,OAAOC;wBAC1C,OAAO;4BACLjE,OAAOgE,KAAK,CAAC,2BAA2BA,OAAOC;wBACjD;oBACF;oBACAC,cAAc,CAACC,MAAMC,OAAOC;wBAC1BrE,OAAOsE,KAAK,CAAC,CAAC,gBAAgB,EAAEH,MAAM,EAAE;4BAAEC;4BAAOC;4BAAMnD,YAAYqB;wBAAgB;oBACrF;gBACF;gBACAgC,OAAO;oBACLT,YAAY;wBACV,MAAMnB;oBACR;oBACA6B,aAAa,IAAM/B,UAAUgC,gBAAgB;gBAC/C;gBACA7B,UAAU;oBACRkB,YAAY;wBACV,MAAMnB;oBACR;oBACA+B,MAAM,CAACC,OAAOC;wBACZ,IAAInC,UAAU;4BACZA,SAASG,QAAQ,CAAC8B,IAAI,CAACC,OAAcC;wBACvC;oBACF;oBACAC,IAAI,CAACF,OAAOG;wBACV,IAAI,CAACrC,UAAU;4BACb,OAAO,KAAO;wBAChB;wBACA,OAAOA,SAASG,QAAQ,CAACiC,EAAE,CAACF,OAAcG;oBAC5C;gBACF;gBACAC,cAAc;oBACZ,MAAMC,QAAOhB,KAAK;wBAChBhE,OAAOgE,KAAK,CAAC,kBAAkBA;wBAC/B,OAAO;4BAAEiB,SAAS;4BAAMC,aAAa;wBAAK;oBAC5C;gBACF;YACF;YACAC,eAAe;gBACbC,MAAM;YACR;YACAC,iBAAiB;QACnB;QACA3D,gBAAgBmB,cAAcrB,OAAO;QAErC,MAAM8D,oBAAoBlE,YAAYC,GAAG;QACzC,MAAMkE,mBAAmB,MAAM5C;QAC/B,MAAM6C,uBAAuBpE,YAAYC,GAAG,KAAKiE;QAEjD,YAAY;QACZ7D,wBAAwB,IAAIX,sBAAsByE,iBAAiB3C,QAAQ;QAE3E,sBAAsB;QACtBnB,sBAAsBgE,YAAY,CAAClD;QAEnC,WAAW;QACXd,sBAAsBiE,mBAAmB,CAACnD;QAE1C,aAAa;QACbF,YAAYyB,UAAU,CAACnC,WAAW4D;QAElC,cAAc;QACd,MAAMI,gBAAgB9E;QACtB,IAAII,QAAQ2E,MAAM,EAAE;YAClB,MAAMD,cAAc7B,UAAU,CAAC7C,QAAQ2E,MAAM;QAC/C;QAEA,UAAU;QACV,MAAMC,qBAAqBxD,YAAYyD,qBAAqB;QAC5D,IAAID,oBAAoB;YACtBA,mBAAmBE,iBAAiB,CAACP;QACvC;QAEA,aAAa;QACb,MAAMQ,mBAAmB1F,uBAAuBW,QAAQgF,gBAAgB;QAExE,MAAMC,WAAW7D,YAAY8D,WAAW;QAExC,YAAY;QACZ,MAAMC,YAAY,OAAOC;YACvB,MAAMC,cAAclF,YAAYC,GAAG;YAEnC,WAAW;YACX,IAAII,uBAAuB;gBACzBA,sBAAsB8E,kBAAkB,CAAChE;YAC3C;YAEA,MAAM2D,SAASE,SAAS,CAACnF,SAASsE,kBAAkBc;YACpD,MAAMG,iBAAiBpF,YAAYC,GAAG,KAAKiF;YAE3C,WAAW;YACX,IAAI7E,uBAAuB;gBACzBA,sBAAsBgF,qBAAqB,CAAClE,iBAAiBiE;YAC/D;YAEA,yBAAyB;YACzB,4CAA4C;YAC5C,IAAIjB,iBAAiBmB,6BAA6B,EAAE;gBAClDnB,iBAAiBmB,6BAA6B,GAAGC,KAAK,CAAC,CAAC3C;oBACtDhE,OAAOkC,IAAI,CAAC,wBAAwB8B;gBACtC;YACF;YAEA,IAAI6B,oBAAoB;gBACtBA,mBAAmBe,iBAAiB,CAACJ;gBACrC,MAAMK,gBAAgBzF,YAAYC,GAAG,KAAKF;gBAC1C0E,mBAAmBiB,kBAAkB,CAACD;gBACtChB,mBAAmBkB,MAAM;YAC3B;YAEA,aAAa;YACb,IAAItF,uBAAuB;gBACzBA,sBAAsBuF,cAAc,CAACzE,iBAAiBnB,YAAYC,GAAG,KAAKF;YAC5E;YAEA,sCAAsC;YACtC0B,cAAcoE,WAAW,GAAGvC,IAAI,CAAC,oBAAoB;gBACnDlD,SAASqB,cAAcrB,OAAO;gBAC9BN,YAAYqB;gBACZ2E,iBAAiB9F,YAAYC,GAAG,KAAKF;YACvC;YAEA,cAAc;YACd,IAAIgG,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiB,OAAOC,WAAW,aAAa;gBAC3E,oBAAoB;gBACpBC,WAAW;oBACT,MAAMC,oBAAoBC,SAASC,aAAa,CAAC;oBACjDF,kBAAkBhF,EAAE,GAAG;oBACvBiF,SAASE,IAAI,CAACC,WAAW,CAACJ;gBAE1B,uBAAuB;gBACvB,oBAAoB;gBACpB,wDAAwD;gBACxD,gDAAgD;gBAChD,gEAAgE;gBAChE,MAAM;gBACR,GAAG;YACL;QACF;QAEA,IAAIxB,kBAAkB;YACpB,wBAAwB;YACxB,MAAM6B,mBAAmB,CAACxB;gBACxBrG,OAAO+B,IAAI,CAAC;gBAEZ,YAAY;gBACZ,IAAIN,uBAAuB;oBACzB,MAAMqG,eAAezB,QAAQ0B,QAAQ,IAAI;oBACzCtG,sBAAsBuG,mBAAmB,CAACzF,iBAAiB8D,SAASyB;gBACtE;gBAEA,IAAI7G,QAAQ4G,gBAAgB,EAAE;oBAC5BI,QAAQC,OAAO,CACbjH,QAAQ4G,gBAAgB,CAAC;wBACvB7H,OAAO+B,IAAI,CAAC;wBACZqE,UAAUC;oBACZ,GAAGA,UACHM,KAAK,CAAC,CAAC3C;wBACPhE,OAAOgE,KAAK,CAAC,4BAA4BA;wBACzCxD,yBAAyB2H,QAAQ,CAACnE;wBAClCoC,UAAUC;oBACZ;gBACF,OAAO;oBACLrG,OAAO+B,IAAI,CAAC;oBACZqE,UAAUC;gBACZ;YACF;YAEA,YAAY;YACZ,IAAI5E,uBAAuB;gBACzBA,sBAAsB2G,gBAAgB,CAAC7F;YACzC;YAEA,QAAQ;YACR2D,SAASmC,kBAAkB,CAACpH,SAASsE,kBAAkBsC;QACzD,OAAO;YACL,sBAAsB;YACtB7H,OAAO+B,IAAI,CAAC;YAEZ,YAAY;YACZ,IAAIN,uBAAuB;gBACzBA,sBAAsB2G,gBAAgB,CAAC7F;YACzC;YAEA,IAAI;gBACF,MAAM+F,YAAYlH,YAAYC,GAAG;gBAEjC,eAAe;gBACf,MAAMkH,cAAc,MAAM9H,kBAAkB+H,OAAO,CACjDvH,SACA;oBACE,OAAO,MAAMV,eAAeU,SAAS,CAACwH,UAAUC;wBAC9C1I,OAAOsE,KAAK,CAAC,CAAC,OAAO,EAAEmE,SAAS,CAAC,EAAEC,OAAO,CAAC,GAAG,EAAEA,MAAM,GAAG,IAAI;oBAC/D;gBACF;gBAGF,MAAMZ,eAAe1G,YAAYC,GAAG,KAAKiH;gBAEzC,YAAY;gBACZ,IAAI7G,uBAAuB;oBACzBA,sBAAsBuG,mBAAmB,CAACzF,iBAAiBgG,aAAaT;gBAC1E;gBAEA,IAAIjC,oBAAoB;oBACtBA,mBAAmB8C,oBAAoB,CAACb;gBAC1C;gBAEA9H,OAAO+B,IAAI,CAAC,eAAewG;gBAC3BvI,OAAO+B,IAAI,CAAC;gBACZqE,UAAUmC;YACZ,EAAE,OAAOvE,OAAO;gBACdhE,OAAOgE,KAAK,CAAC,UAAUA;gBAEvB,YAAY;gBACZ,IAAIvC,uBAAuB;oBACzBA,sBAAsBmH,gBAAgB,CACpCrG,iBACAyB,iBAAiB6E,QAAQ7E,QAAQ,IAAI6E,MAAMC,OAAO9E;gBAEtD;gBAEAxD,yBAAyB2H,QAAQ,CAACnE;gBAClCoC;YACF;QACF;QAEA,OAAO7E;IACT,EAAE,OAAOyC,OAAO;QACdhE,OAAOgE,KAAK,CAAC,WAAWA;QAExB,SAAS;QACT,IAAIvC,uBAAuB;YACzB,MAAMsH,kBAAkB7H,cAAcK,gBAAgBiD,WAAW,IAAIhC;YACrE,IAAIuG,iBAAiB;gBACnBtH,sBAAsBuH,iBAAiB,CACrChF,iBAAiB6E,QAAQ7E,QAAQ,IAAI6E,MAAMC,OAAO9E,SAClD;oBAAEiF,OAAO;gBAAU;YAEvB;QACF;QAEA,IAAIvH,eAAe;YACjB1B,OAAOgE,KAAK,CAAC,sBAAsB;gBAAExC,SAASE;YAAc;QAC9D;QAEA,kBAAkB;QAClB,MAAMC,YAAYV,QAAQU,SAAS,IAAIL,YAAYM,cAAc,CAAC;QAClE,IAAID,WAAW;YACb,MAAMuH,gBAAgB3H,gBAAgBiD,WAAW;YACjD,IAAI0E,iBAAiBA,cAAcC,aAAa,IAAI;gBAClD,MAAMjD,WAAWgD,cAAc/C,WAAW;gBAC1C,MAAM1D,WAAWyG,cAAcE,WAAW;gBAC1C5I,yBAAyB2H,QAAQ,CAACnE;gBAClCkC,SAASmD,WAAW,CAACpI,SAASwB;YAChC;QACF;QAEA,MAAMuB;IACR;AACF"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { LogLevel } from '../utils';
|
|
2
2
|
import type { LangType } from '../library/locale/types';
|
|
3
3
|
import { Container, RootOptions } from 'react-dom/client';
|
|
4
|
-
import { type ReactElement, type ReactNode } from 'react';
|
|
4
|
+
import { type ComponentType, type PropsWithChildren, type ReactElement, type ReactNode } from 'react';
|
|
5
5
|
import { type InitializationContext, type ConfigStrategy } from './initialization';
|
|
6
6
|
import type { StorageOptions } from '../types';
|
|
7
|
-
import type { ConfigProviderProps, AppProps } from "antd";
|
|
8
7
|
import type { ThemeConfig } from './app';
|
|
9
8
|
import type { FrameworkError } from '../utils/errors';
|
|
10
9
|
import type { RouterConfig } from './router/types';
|
|
10
|
+
export type UIProviderConfig = Record<string, unknown>;
|
|
11
|
+
export type UIAppConfig = Record<string, unknown>;
|
|
12
|
+
export type GlobalProviderComponent = ComponentType<PropsWithChildren>;
|
|
13
|
+
export type GlobalProviderLoader = () => Promise<{
|
|
14
|
+
default: GlobalProviderComponent;
|
|
15
|
+
}>;
|
|
11
16
|
/**
|
|
12
17
|
* 生命周期钩子函数类型
|
|
13
18
|
*/
|
|
@@ -202,25 +207,37 @@ export interface StartOptions {
|
|
|
202
207
|
*/
|
|
203
208
|
indexedDBTableName?: string;
|
|
204
209
|
/**
|
|
205
|
-
*
|
|
210
|
+
* UI Provider 配置(框架无关)
|
|
211
|
+
* 可由 UI 适配器消费,适配到 antd/shadcn 等实现。
|
|
206
212
|
*/
|
|
207
|
-
|
|
213
|
+
uiProvider?: UIProviderConfig;
|
|
208
214
|
/**
|
|
209
|
-
*
|
|
215
|
+
* UI App 基础配置(框架无关)
|
|
216
|
+
* 可用于通知、弹窗、消息容器等能力的统一注入。
|
|
217
|
+
*/
|
|
218
|
+
uiApp?: UIAppConfig;
|
|
219
|
+
/**
|
|
220
|
+
* 全局 UI 包裹组件懒加载器
|
|
210
221
|
*
|
|
211
|
-
*
|
|
222
|
+
* 组件会在 BasicLayout 中统一包裹 children。
|
|
223
|
+
* 需返回带 default 导出的 React 组件模块。
|
|
212
224
|
*
|
|
213
225
|
* @example
|
|
214
226
|
* ```typescript
|
|
215
227
|
* start({
|
|
216
|
-
*
|
|
217
|
-
* message: { maxCount: 3 },
|
|
218
|
-
* notification: { placement: 'topRight' },
|
|
219
|
-
* },
|
|
228
|
+
* globalProvider: () => import('./components/AntdGlobalProvider'),
|
|
220
229
|
* });
|
|
221
230
|
* ```
|
|
222
231
|
*/
|
|
223
|
-
|
|
232
|
+
globalProvider?: GlobalProviderLoader;
|
|
233
|
+
/**
|
|
234
|
+
* @deprecated 使用 uiProvider 替代
|
|
235
|
+
*/
|
|
236
|
+
antd?: Record<string, unknown>;
|
|
237
|
+
/**
|
|
238
|
+
* @deprecated 使用 uiApp 替代
|
|
239
|
+
*/
|
|
240
|
+
antdApp?: Record<string, unknown>;
|
|
224
241
|
/**
|
|
225
242
|
* 主题配置
|
|
226
243
|
*
|
|
@@ -335,7 +352,7 @@ export interface StartOptions {
|
|
|
335
352
|
/**
|
|
336
353
|
* 自定义错误反馈组件
|
|
337
354
|
*
|
|
338
|
-
* 如果提供,将使用自定义的错误 UI
|
|
355
|
+
* 如果提供,将使用自定义的错误 UI 替代默认错误 UI。
|
|
339
356
|
* 自定义组件将接收错误对象和重置函数作为参数。
|
|
340
357
|
*
|
|
341
358
|
* @param error - 标准化后的框架错误对象
|
|
@@ -345,16 +362,13 @@ export interface StartOptions {
|
|
|
345
362
|
* @example
|
|
346
363
|
* ```typescript
|
|
347
364
|
* import { start } from '@vlian/framework';
|
|
348
|
-
* import { Result, Button } from 'antd';
|
|
349
|
-
*
|
|
350
365
|
* start({
|
|
351
366
|
* errorFallback: (error, reset) => (
|
|
352
|
-
* <
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
*
|
|
356
|
-
*
|
|
357
|
-
* />
|
|
367
|
+
* <div>
|
|
368
|
+
* <h2>自定义错误标题</h2>
|
|
369
|
+
* <p>{error.message}</p>
|
|
370
|
+
* <button onClick={reset}>重试</button>
|
|
371
|
+
* </div>
|
|
358
372
|
* ),
|
|
359
373
|
* });
|
|
360
374
|
* ```
|
|
@@ -489,4 +503,3 @@ export interface SplashScreenCustomProps {
|
|
|
489
503
|
*/
|
|
490
504
|
isInitializing: boolean;
|
|
491
505
|
}
|
|
492
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/types.ts"],"sourcesContent":["import { LogLevel } from '../utils';\nimport type { LangType } from '../library/locale/types';\nimport { Container, RootOptions } from 'react-dom/client';\nimport { type ReactElement, type ReactNode } from 'react';\nimport { type InitializationContext, type ConfigStrategy } from './initialization';\nimport type { StorageOptions } from '../types';\nimport type { ConfigProviderProps, AppProps } from \"antd\";\nimport type { ThemeConfig } from './app';\nimport type { FrameworkError } from '../utils/errors';\nimport type { RouterConfig } from './router/types';\n\n/**\n * 生命周期钩子函数类型\n */\nexport type ManagerLifecycle = {\n /**\n * 在初始化之前执行\n */\n beforeInitialization?: () => Promise<void> | void;\n\n /**\n * 初始化\n */\n initialization?: () => Promise<void> | void;\n\n /**\n * 在初始化之后执行\n * \n * @param context - 初始化上下文,包含配置、进度、耗时等信息\n * \n * @example\n * ```typescript\n * start({\n * lifecycle: {\n * afterInitialization: (context) => {\n * console.log('初始化完成', context);\n * },\n * },\n * });\n * ```\n */\n afterInitialization?: (context: InitializationContext) => Promise<void> | void;\n};\n\n\n/**\n * 启动配置选项\n */\nexport interface StartOptions {\n /**\n * React 应用的挂载容器\n * \n * 用于指定 React 应用渲染的目标 DOM 元素。如果不提供,框架将自动查找页面中\n * 的根元素(通常为 id=\"root\" 的元素)作为默认容器。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * // 使用默认容器(自动查找 id=\"root\" 的元素)\n * start({});\n * \n * // 指定自定义容器\n * const container = document.getElementById('app');\n * start({ container });\n * ```\n */\n container?: Container;\n /**\n * React 根节点的配置选项\n * \n * 用于配置 React 18+ 的 createRoot 方法的选项,包括:\n * - `onRecoverableError`: 错误恢复回调函数\n * - `identifierPrefix`: 用于标识符前缀,用于服务端渲染的 hydration\n * \n * 这些选项将传递给 `react-dom/client` 的 `createRoot` 方法。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * rootOptions: {\n * onRecoverableError: (error) => {\n * console.error('React 错误恢复:', error);\n * },\n * identifierPrefix: 'my-app-',\n * },\n * });\n * ```\n */\n rootOptions?: RootOptions;\n /**\n * 应用根组件\n * \n * 用于指定要渲染的 React 应用根组件。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * import App from './App';\n * \n * start({\n * app: <App />,\n * });\n * ```\n */\n app?: ReactElement;\n /**\n * 是否显示启动页\n * - 'auto': 自动判断(推荐)\n * - 'always': 总是显示\n * - 'never': 从不显示\n * - 'first-time-only': 仅首次加载显示\n * \n * @default 'auto'\n */\n showSplashScreen?: 'auto' | 'always' | 'never' | 'first-time-only';\n\n /**\n * 启动页最小显示时间(毫秒)\n * \n * 用于避免启动页闪烁,确保用户能看到启动过程。\n * 如果初始化完成时间小于此值,将等待至最小时间后再隐藏启动页。\n * \n * @default 500\n * \n * @example\n * ```typescript\n * start({\n * minSplashScreenTime: 1000, // 至少显示 1 秒\n * });\n * ```\n */\n minSplashScreenTime?: number;\n\n /**\n * 路由配置\n * \n * 配置应用的路由系统,支持内置路由、自定义路由和禁用路由三种模式。\n * \n * @example\n * ```typescript\n * start({\n * router: {\n * enabled: true,\n * routes: [\n * {\n * path: '/login',\n * page: LoginPage,\n * },\n * {\n * path: '/',\n * layout: MainLayout,\n * children: [\n * {\n * path: 'dashboard',\n * page: DashboardPage,\n * meta: { title: '仪表盘' },\n * },\n * ],\n * },\n * ],\n * },\n * });\n * ```\n */\n router?: RouterConfig;\n /**\n * 日志级别\n */\n loggerLevel?: LogLevel;\n /**\n * 生命周期钩子\n */\n lifecycle?: ManagerLifecycle;\n /**\n * 国际化\n */\n locale?: Record<LangType, Record<string, unknown>>;\n /**\n * 配置加载策略\n */\n configStrategy?: ConfigStrategy;\n /**\n * 启动页完成回调\n * 仅在显示启动页时,启动页完成初始化后调用\n * 可以在这里执行额外的操作,然后调用 complete() 继续\n * \n * @example\n * ```typescript\n * start({\n * onSplashComplete: (complete, context) => {\n * // 执行额外操作\n * await doSomething();\n * // 完成后继续\n * complete();\n * },\n * });\n * ```\n */\n onSplashComplete?: (\n complete: () => void,\n context: InitializationContext\n ) => Promise<void> | void;\n\n /**\n * 存储配置\n */\n storageOptions?: StorageOptions;\n\n /**\n * IndexedDB 表名\n */\n indexedDBTableName?: string;\n\n /**\n * antd 配置\n */\n antd?: ConfigProviderProps;\n\n /**\n * antd App 组件配置\n * \n * 用于配置 antd 的 App 组件,使 message、modal、notification 等静态方法能够正确使用。\n * \n * @example\n * ```typescript\n * start({\n * antdApp: {\n * message: { maxCount: 3 },\n * notification: { placement: 'topRight' },\n * },\n * });\n * ```\n */\n antdApp?: AppProps;\n\n /**\n * 主题配置\n * \n * @example\n * ```typescript\n * start({\n * theme: {\n * mode: 'dark',\n * primaryColor: '#1890ff',\n * },\n * });\n * ```\n */\n theme?: ThemeConfig;\n\n /**\n * 运行时安全配置\n */\n runtimeSecurity?: import('../utils/runtimeSecurity').RuntimeSecurityOptions;\n\n /**\n * 配置安全选项\n */\n configSecurity?: import('../utils/configSecurity').ConfigSecurityOptions;\n\n /**\n * 性能监控配置\n */\n performanceMonitor?: import('../utils/performance').PerformanceMonitorConfig;\n\n /**\n * 错误监控配置\n */\n errorMonitor?: import('../utils/monitoring').ErrorMonitorConfig;\n\n /**\n * 分析服务配置\n */\n analytics?: import('../utils/analytics').AnalyticsConfig;\n\n /**\n * 状态管理器配置\n * \n * 配置框架的状态管理器,支持自定义适配器和作用域设置。\n * 如果不提供,将使用默认配置创建状态管理器。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * stateManager: {\n * enableRegistry: true,\n * defaultScope: 'app',\n * devMode: true,\n * },\n * });\n * ```\n */\n stateManager?: import('../state').StateManagerOptions;\n\n /**\n * 事件总线配置\n * \n * 配置应用级事件系统,支持事件追踪、性能监控、安全模式等。\n * 如果不提供,将使用默认配置创建事件总线。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * eventBus: {\n * enableTracking: true,\n * maxHistorySize: 200,\n * enablePerformanceMonitoring: true,\n * namespacePrefix: 'my-app:',\n * },\n * });\n * ```\n */\n eventBus?: {\n enableTracking?: boolean;\n maxHistorySize?: number;\n enableValidation?: boolean;\n validator?: (event: string, data: unknown) => boolean;\n enablePerformanceMonitoring?: boolean;\n namespacePrefix?: string;\n instanceId?: string;\n enableSecurityMode?: boolean;\n allowedSources?: string[];\n };\n\n /**\n * 自定义启动屏组件\n * \n * 如果提供,将使用自定义组件替代默认的启动屏 UI。\n * 自定义组件将接收初始化进度、当前步骤和初始化状态作为 props。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * const CustomSplashScreen = ({ progress, currentStep, isInitializing }) => {\n * return (\n * <div>\n * <h1>加载中...</h1>\n * <div>进度: {progress}%</div>\n * <div>步骤: {currentStep}</div>\n * </div>\n * );\n * };\n * \n * start({\n * splashScreen: CustomSplashScreen,\n * });\n * ```\n */\n splashScreen?: React.ComponentType<SplashScreenCustomProps>;\n\n /**\n * 自定义错误反馈组件\n * \n * 如果提供,将使用自定义的错误 UI 替代默认的错误 UI(基于 antd 的 Result 组件)。\n * 自定义组件将接收错误对象和重置函数作为参数。\n * \n * @param error - 标准化后的框架错误对象\n * @param resetError - 重置错误边界的函数,调用后可以尝试重新渲染子组件\n * @returns 错误 UI 的 React 节点\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * import { Result, Button } from 'antd';\n * \n * start({\n * errorFallback: (error, reset) => (\n * <Result\n * status=\"error\"\n * title=\"自定义错误标题\"\n * subTitle={error.message}\n * extra={<Button onClick={reset}>重试</Button>}\n * />\n * ),\n * });\n * ```\n */\n errorFallback?: (error: FrameworkError, resetError: () => void) => ReactNode;\n\n /**\n * 安全配置选项\n * \n * 用于配置框架的安全策略,包括 XSS 防护、配置验证等。\n * 框架默认启用所有安全策略,确保应用安全。\n * \n * @example\n * ```typescript\n * start({\n * security: {\n * enableXSSProtection: true, // 默认启用\n * validateConfig: true, // 默认启用\n * sanitizeUserInput: true, // 默认启用\n * },\n * });\n * ```\n */\n security?: {\n /**\n * 是否启用 XSS 防护\n * @default true\n */\n enableXSSProtection?: boolean;\n /**\n * 是否验证配置项安全性\n * @default true\n */\n validateConfig?: boolean;\n /**\n * 是否清理用户输入\n * @default true\n */\n sanitizeUserInput?: boolean;\n /**\n * CSP(内容安全策略)配置\n */\n csp?: {\n defaultSrc?: string[];\n scriptSrc?: string[];\n styleSrc?: string[];\n imgSrc?: string[];\n connectSrc?: string[];\n fontSrc?: string[];\n frameSrc?: string[];\n allowUnsafeInline?: boolean;\n allowUnsafeEval?: boolean;\n };\n /**\n * CSRF 防护配置\n */\n csrf?: {\n /**\n * 是否启用 CSRF 防护\n * @default true\n */\n enabled?: boolean;\n /**\n * CSRF Token 获取函数\n * 如果不提供,框架会自动从 cookie 或 header 中获取\n */\n getToken?: () => string | Promise<string>;\n /**\n * CSRF Token 验证函数\n * 如果不提供,框架会使用默认验证逻辑\n */\n validateToken?: (token: string) => boolean | Promise<boolean>;\n /**\n * CSRF Token 请求头名称\n * @default 'X-CSRF-Token'\n */\n headerName?: string;\n /**\n * CSRF Token Cookie 名称\n * @default 'csrf-token'\n */\n cookieName?: string;\n };\n };\n \n /**\n * 服务初始化重试配置\n * \n * 用于配置服务初始化失败时的重试策略。\n * \n * @example\n * ```typescript\n * start({\n * serviceRetry: {\n * maxRetries: 3,\n * retryDelay: 1000,\n * exponentialBackoff: true,\n * },\n * });\n * ```\n */\n serviceRetry?: {\n /**\n * 最大重试次数\n * @default 3\n */\n maxRetries?: number;\n /**\n * 重试延迟(毫秒)\n * @default 1000\n */\n retryDelay?: number;\n /**\n * 是否启用指数退避\n * @default true\n */\n exponentialBackoff?: boolean;\n };\n}\n\n/**\n * 自定义启动屏组件的 Props\n */\nexport interface SplashScreenCustomProps {\n /**\n * 初始化进度(0-100)\n */\n progress: number;\n\n /**\n * 当前步骤描述\n */\n currentStep: string;\n\n /**\n * 是否正在初始化\n */\n isInitializing: boolean;\n}"],"names":[],"mappings":"AAqfA;;CAEC,GACD,WAeC"}
|
|
1
|
+
{"version":3,"sources":["../../src/core/types.ts"],"sourcesContent":["import { LogLevel } from '../utils';\nimport type { LangType } from '../library/locale/types';\nimport { Container, RootOptions } from 'react-dom/client';\nimport { type ComponentType, type PropsWithChildren, type ReactElement, type ReactNode } from 'react';\nimport { type InitializationContext, type ConfigStrategy } from './initialization';\nimport type { StorageOptions } from '../types';\nimport type { ThemeConfig } from './app';\nimport type { FrameworkError } from '../utils/errors';\nimport type { RouterConfig } from './router/types';\n\nexport type UIProviderConfig = Record<string, unknown>;\nexport type UIAppConfig = Record<string, unknown>;\nexport type GlobalProviderComponent = ComponentType<PropsWithChildren>;\nexport type GlobalProviderLoader = () => Promise<{ default: GlobalProviderComponent }>;\n\n/**\n * 生命周期钩子函数类型\n */\nexport type ManagerLifecycle = {\n /**\n * 在初始化之前执行\n */\n beforeInitialization?: () => Promise<void> | void;\n\n /**\n * 初始化\n */\n initialization?: () => Promise<void> | void;\n\n /**\n * 在初始化之后执行\n * \n * @param context - 初始化上下文,包含配置、进度、耗时等信息\n * \n * @example\n * ```typescript\n * start({\n * lifecycle: {\n * afterInitialization: (context) => {\n * console.log('初始化完成', context);\n * },\n * },\n * });\n * ```\n */\n afterInitialization?: (context: InitializationContext) => Promise<void> | void;\n};\n\n\n/**\n * 启动配置选项\n */\nexport interface StartOptions {\n /**\n * React 应用的挂载容器\n * \n * 用于指定 React 应用渲染的目标 DOM 元素。如果不提供,框架将自动查找页面中\n * 的根元素(通常为 id=\"root\" 的元素)作为默认容器。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * // 使用默认容器(自动查找 id=\"root\" 的元素)\n * start({});\n * \n * // 指定自定义容器\n * const container = document.getElementById('app');\n * start({ container });\n * ```\n */\n container?: Container;\n /**\n * React 根节点的配置选项\n * \n * 用于配置 React 18+ 的 createRoot 方法的选项,包括:\n * - `onRecoverableError`: 错误恢复回调函数\n * - `identifierPrefix`: 用于标识符前缀,用于服务端渲染的 hydration\n * \n * 这些选项将传递给 `react-dom/client` 的 `createRoot` 方法。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * rootOptions: {\n * onRecoverableError: (error) => {\n * console.error('React 错误恢复:', error);\n * },\n * identifierPrefix: 'my-app-',\n * },\n * });\n * ```\n */\n rootOptions?: RootOptions;\n /**\n * 应用根组件\n * \n * 用于指定要渲染的 React 应用根组件。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * import App from './App';\n * \n * start({\n * app: <App />,\n * });\n * ```\n */\n app?: ReactElement;\n /**\n * 是否显示启动页\n * - 'auto': 自动判断(推荐)\n * - 'always': 总是显示\n * - 'never': 从不显示\n * - 'first-time-only': 仅首次加载显示\n * \n * @default 'auto'\n */\n showSplashScreen?: 'auto' | 'always' | 'never' | 'first-time-only';\n\n /**\n * 启动页最小显示时间(毫秒)\n * \n * 用于避免启动页闪烁,确保用户能看到启动过程。\n * 如果初始化完成时间小于此值,将等待至最小时间后再隐藏启动页。\n * \n * @default 500\n * \n * @example\n * ```typescript\n * start({\n * minSplashScreenTime: 1000, // 至少显示 1 秒\n * });\n * ```\n */\n minSplashScreenTime?: number;\n\n /**\n * 路由配置\n * \n * 配置应用的路由系统,支持内置路由、自定义路由和禁用路由三种模式。\n * \n * @example\n * ```typescript\n * start({\n * router: {\n * enabled: true,\n * routes: [\n * {\n * path: '/login',\n * page: LoginPage,\n * },\n * {\n * path: '/',\n * layout: MainLayout,\n * children: [\n * {\n * path: 'dashboard',\n * page: DashboardPage,\n * meta: { title: '仪表盘' },\n * },\n * ],\n * },\n * ],\n * },\n * });\n * ```\n */\n router?: RouterConfig;\n /**\n * 日志级别\n */\n loggerLevel?: LogLevel;\n /**\n * 生命周期钩子\n */\n lifecycle?: ManagerLifecycle;\n /**\n * 国际化\n */\n locale?: Record<LangType, Record<string, unknown>>;\n /**\n * 配置加载策略\n */\n configStrategy?: ConfigStrategy;\n /**\n * 启动页完成回调\n * 仅在显示启动页时,启动页完成初始化后调用\n * 可以在这里执行额外的操作,然后调用 complete() 继续\n * \n * @example\n * ```typescript\n * start({\n * onSplashComplete: (complete, context) => {\n * // 执行额外操作\n * await doSomething();\n * // 完成后继续\n * complete();\n * },\n * });\n * ```\n */\n onSplashComplete?: (\n complete: () => void,\n context: InitializationContext\n ) => Promise<void> | void;\n\n /**\n * 存储配置\n */\n storageOptions?: StorageOptions;\n\n /**\n * IndexedDB 表名\n */\n indexedDBTableName?: string;\n\n /**\n * UI Provider 配置(框架无关)\n * 可由 UI 适配器消费,适配到 antd/shadcn 等实现。\n */\n uiProvider?: UIProviderConfig;\n\n /**\n * UI App 基础配置(框架无关)\n * 可用于通知、弹窗、消息容器等能力的统一注入。\n */\n uiApp?: UIAppConfig;\n\n /**\n * 全局 UI 包裹组件懒加载器\n * \n * 组件会在 BasicLayout 中统一包裹 children。\n * 需返回带 default 导出的 React 组件模块。\n *\n * @example\n * ```typescript\n * start({\n * globalProvider: () => import('./components/AntdGlobalProvider'),\n * });\n * ```\n */\n globalProvider?: GlobalProviderLoader;\n\n /**\n * @deprecated 使用 uiProvider 替代\n */\n antd?: Record<string, unknown>;\n\n /**\n * @deprecated 使用 uiApp 替代\n */\n antdApp?: Record<string, unknown>;\n\n /**\n * 主题配置\n * \n * @example\n * ```typescript\n * start({\n * theme: {\n * mode: 'dark',\n * primaryColor: '#1890ff',\n * },\n * });\n * ```\n */\n theme?: ThemeConfig;\n\n /**\n * 运行时安全配置\n */\n runtimeSecurity?: import('../utils/runtimeSecurity').RuntimeSecurityOptions;\n\n /**\n * 配置安全选项\n */\n configSecurity?: import('../utils/configSecurity').ConfigSecurityOptions;\n\n /**\n * 性能监控配置\n */\n performanceMonitor?: import('../utils/performance').PerformanceMonitorConfig;\n\n /**\n * 错误监控配置\n */\n errorMonitor?: import('../utils/monitoring').ErrorMonitorConfig;\n\n /**\n * 分析服务配置\n */\n analytics?: import('../utils/analytics').AnalyticsConfig;\n\n /**\n * 状态管理器配置\n * \n * 配置框架的状态管理器,支持自定义适配器和作用域设置。\n * 如果不提供,将使用默认配置创建状态管理器。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * stateManager: {\n * enableRegistry: true,\n * defaultScope: 'app',\n * devMode: true,\n * },\n * });\n * ```\n */\n stateManager?: import('../state').StateManagerOptions;\n\n /**\n * 事件总线配置\n * \n * 配置应用级事件系统,支持事件追踪、性能监控、安全模式等。\n * 如果不提供,将使用默认配置创建事件总线。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * eventBus: {\n * enableTracking: true,\n * maxHistorySize: 200,\n * enablePerformanceMonitoring: true,\n * namespacePrefix: 'my-app:',\n * },\n * });\n * ```\n */\n eventBus?: {\n enableTracking?: boolean;\n maxHistorySize?: number;\n enableValidation?: boolean;\n validator?: (event: string, data: unknown) => boolean;\n enablePerformanceMonitoring?: boolean;\n namespacePrefix?: string;\n instanceId?: string;\n enableSecurityMode?: boolean;\n allowedSources?: string[];\n };\n\n /**\n * 自定义启动屏组件\n * \n * 如果提供,将使用自定义组件替代默认的启动屏 UI。\n * 自定义组件将接收初始化进度、当前步骤和初始化状态作为 props。\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * const CustomSplashScreen = ({ progress, currentStep, isInitializing }) => {\n * return (\n * <div>\n * <h1>加载中...</h1>\n * <div>进度: {progress}%</div>\n * <div>步骤: {currentStep}</div>\n * </div>\n * );\n * };\n * \n * start({\n * splashScreen: CustomSplashScreen,\n * });\n * ```\n */\n splashScreen?: React.ComponentType<SplashScreenCustomProps>;\n\n /**\n * 自定义错误反馈组件\n * \n * 如果提供,将使用自定义的错误 UI 替代默认错误 UI。\n * 自定义组件将接收错误对象和重置函数作为参数。\n * \n * @param error - 标准化后的框架错误对象\n * @param resetError - 重置错误边界的函数,调用后可以尝试重新渲染子组件\n * @returns 错误 UI 的 React 节点\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * start({\n * errorFallback: (error, reset) => (\n * <div>\n * <h2>自定义错误标题</h2>\n * <p>{error.message}</p>\n * <button onClick={reset}>重试</button>\n * </div>\n * ),\n * });\n * ```\n */\n errorFallback?: (error: FrameworkError, resetError: () => void) => ReactNode;\n\n /**\n * 安全配置选项\n * \n * 用于配置框架的安全策略,包括 XSS 防护、配置验证等。\n * 框架默认启用所有安全策略,确保应用安全。\n * \n * @example\n * ```typescript\n * start({\n * security: {\n * enableXSSProtection: true, // 默认启用\n * validateConfig: true, // 默认启用\n * sanitizeUserInput: true, // 默认启用\n * },\n * });\n * ```\n */\n security?: {\n /**\n * 是否启用 XSS 防护\n * @default true\n */\n enableXSSProtection?: boolean;\n /**\n * 是否验证配置项安全性\n * @default true\n */\n validateConfig?: boolean;\n /**\n * 是否清理用户输入\n * @default true\n */\n sanitizeUserInput?: boolean;\n /**\n * CSP(内容安全策略)配置\n */\n csp?: {\n defaultSrc?: string[];\n scriptSrc?: string[];\n styleSrc?: string[];\n imgSrc?: string[];\n connectSrc?: string[];\n fontSrc?: string[];\n frameSrc?: string[];\n allowUnsafeInline?: boolean;\n allowUnsafeEval?: boolean;\n };\n /**\n * CSRF 防护配置\n */\n csrf?: {\n /**\n * 是否启用 CSRF 防护\n * @default true\n */\n enabled?: boolean;\n /**\n * CSRF Token 获取函数\n * 如果不提供,框架会自动从 cookie 或 header 中获取\n */\n getToken?: () => string | Promise<string>;\n /**\n * CSRF Token 验证函数\n * 如果不提供,框架会使用默认验证逻辑\n */\n validateToken?: (token: string) => boolean | Promise<boolean>;\n /**\n * CSRF Token 请求头名称\n * @default 'X-CSRF-Token'\n */\n headerName?: string;\n /**\n * CSRF Token Cookie 名称\n * @default 'csrf-token'\n */\n cookieName?: string;\n };\n };\n \n /**\n * 服务初始化重试配置\n * \n * 用于配置服务初始化失败时的重试策略。\n * \n * @example\n * ```typescript\n * start({\n * serviceRetry: {\n * maxRetries: 3,\n * retryDelay: 1000,\n * exponentialBackoff: true,\n * },\n * });\n * ```\n */\n serviceRetry?: {\n /**\n * 最大重试次数\n * @default 3\n */\n maxRetries?: number;\n /**\n * 重试延迟(毫秒)\n * @default 1000\n */\n retryDelay?: number;\n /**\n * 是否启用指数退避\n * @default true\n */\n exponentialBackoff?: boolean;\n };\n}\n\n/**\n * 自定义启动屏组件的 Props\n */\nexport interface SplashScreenCustomProps {\n /**\n * 初始化进度(0-100)\n */\n progress: number;\n\n /**\n * 当前步骤描述\n */\n currentStep: string;\n\n /**\n * 是否正在初始化\n */\n isInitializing: boolean;\n}\n"],"names":[],"mappings":"AAqgBA;;CAEC,GACD,WAeC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get buildAntdCompatTheme () {
|
|
13
|
+
return buildAntdCompatTheme;
|
|
14
|
+
},
|
|
15
|
+
get buildShadcnCompatTheme () {
|
|
16
|
+
return buildShadcnCompatTheme;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function buildAntdCompatTheme(theme) {
|
|
20
|
+
const token = {
|
|
21
|
+
...theme.tokens || {}
|
|
22
|
+
};
|
|
23
|
+
if (theme.primaryColor) {
|
|
24
|
+
token.colorPrimary = theme.primaryColor;
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
...theme.compatibility?.antd || {},
|
|
28
|
+
token
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function buildShadcnCompatTheme(theme) {
|
|
32
|
+
const cssVariables = {
|
|
33
|
+
...theme.compatibility?.shadcn || {},
|
|
34
|
+
...theme.tokens || {}
|
|
35
|
+
};
|
|
36
|
+
if (theme.primaryColor) {
|
|
37
|
+
cssVariables['app-primary-color'] = theme.primaryColor;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
cssVariables,
|
|
41
|
+
className: theme.mode === 'dark' ? 'dark' : theme.mode === 'light' ? 'light' : 'system'
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ui-adapter/adapters.ts"],"sourcesContent":["import type { ThemeSnapshot } from '../kernel';\nimport type { AntdCompatThemeConfig, ShadcnCompatThemeConfig } from './types';\n\nexport function buildAntdCompatTheme(theme: ThemeSnapshot): AntdCompatThemeConfig {\n const token: Record<string, string | number> = {\n ...(theme.tokens || {}),\n };\n\n if (theme.primaryColor) {\n token.colorPrimary = theme.primaryColor;\n }\n\n return {\n ...(theme.compatibility?.antd || {}),\n token,\n };\n}\n\nexport function buildShadcnCompatTheme(theme: ThemeSnapshot): ShadcnCompatThemeConfig {\n const cssVariables: Record<string, string | number> = {\n ...(theme.compatibility?.shadcn || {}),\n ...(theme.tokens || {}),\n };\n\n if (theme.primaryColor) {\n cssVariables['app-primary-color'] = theme.primaryColor;\n }\n\n return {\n cssVariables,\n className: theme.mode === 'dark' ? 'dark' : theme.mode === 'light' ? 'light' : 'system',\n };\n}\n"],"names":["buildAntdCompatTheme","buildShadcnCompatTheme","theme","token","tokens","primaryColor","colorPrimary","compatibility","antd","cssVariables","shadcn","className","mode"],"mappings":";;;;;;;;;;;QAGgBA;eAAAA;;QAeAC;eAAAA;;;AAfT,SAASD,qBAAqBE,KAAoB;IACvD,MAAMC,QAAyC;QAC7C,GAAID,MAAME,MAAM,IAAI,CAAC,CAAC;IACxB;IAEA,IAAIF,MAAMG,YAAY,EAAE;QACtBF,MAAMG,YAAY,GAAGJ,MAAMG,YAAY;IACzC;IAEA,OAAO;QACL,GAAIH,MAAMK,aAAa,EAAEC,QAAQ,CAAC,CAAC;QACnCL;IACF;AACF;AAEO,SAASF,uBAAuBC,KAAoB;IACzD,MAAMO,eAAgD;QACpD,GAAIP,MAAMK,aAAa,EAAEG,UAAU,CAAC,CAAC;QACrC,GAAIR,MAAME,MAAM,IAAI,CAAC,CAAC;IACxB;IAEA,IAAIF,MAAMG,YAAY,EAAE;QACtBI,YAAY,CAAC,oBAAoB,GAAGP,MAAMG,YAAY;IACxD;IAEA,OAAO;QACLI;QACAE,WAAWT,MAAMU,IAAI,KAAK,SAAS,SAASV,MAAMU,IAAI,KAAK,UAAU,UAAU;IACjF;AACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ThemeSnapshot } from '../kernel';
|
|
2
|
+
import type { AntdCompatThemeConfig, ShadcnCompatThemeConfig } from './types';
|
|
3
|
+
export declare function buildAntdCompatTheme(theme: ThemeSnapshot): AntdCompatThemeConfig;
|
|
4
|
+
export declare function buildShadcnCompatTheme(theme: ThemeSnapshot): ShadcnCompatThemeConfig;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export function buildAntdCompatTheme(theme) {
|
|
2
|
+
const token = {
|
|
3
|
+
...theme.tokens || {}
|
|
4
|
+
};
|
|
5
|
+
if (theme.primaryColor) {
|
|
6
|
+
token.colorPrimary = theme.primaryColor;
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
...theme.compatibility?.antd || {},
|
|
10
|
+
token
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function buildShadcnCompatTheme(theme) {
|
|
14
|
+
const cssVariables = {
|
|
15
|
+
...theme.compatibility?.shadcn || {},
|
|
16
|
+
...theme.tokens || {}
|
|
17
|
+
};
|
|
18
|
+
if (theme.primaryColor) {
|
|
19
|
+
cssVariables['app-primary-color'] = theme.primaryColor;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
cssVariables,
|
|
23
|
+
className: theme.mode === 'dark' ? 'dark' : theme.mode === 'light' ? 'light' : 'system'
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ui-adapter/adapters.ts"],"sourcesContent":["import type { ThemeSnapshot } from '../kernel';\nimport type { AntdCompatThemeConfig, ShadcnCompatThemeConfig } from './types';\n\nexport function buildAntdCompatTheme(theme: ThemeSnapshot): AntdCompatThemeConfig {\n const token: Record<string, string | number> = {\n ...(theme.tokens || {}),\n };\n\n if (theme.primaryColor) {\n token.colorPrimary = theme.primaryColor;\n }\n\n return {\n ...(theme.compatibility?.antd || {}),\n token,\n };\n}\n\nexport function buildShadcnCompatTheme(theme: ThemeSnapshot): ShadcnCompatThemeConfig {\n const cssVariables: Record<string, string | number> = {\n ...(theme.compatibility?.shadcn || {}),\n ...(theme.tokens || {}),\n };\n\n if (theme.primaryColor) {\n cssVariables['app-primary-color'] = theme.primaryColor;\n }\n\n return {\n cssVariables,\n className: theme.mode === 'dark' ? 'dark' : theme.mode === 'light' ? 'light' : 'system',\n };\n}\n"],"names":["buildAntdCompatTheme","theme","token","tokens","primaryColor","colorPrimary","compatibility","antd","buildShadcnCompatTheme","cssVariables","shadcn","className","mode"],"mappings":"AAGA,OAAO,SAASA,qBAAqBC,KAAoB;IACvD,MAAMC,QAAyC;QAC7C,GAAID,MAAME,MAAM,IAAI,CAAC,CAAC;IACxB;IAEA,IAAIF,MAAMG,YAAY,EAAE;QACtBF,MAAMG,YAAY,GAAGJ,MAAMG,YAAY;IACzC;IAEA,OAAO;QACL,GAAIH,MAAMK,aAAa,EAAEC,QAAQ,CAAC,CAAC;QACnCL;IACF;AACF;AAEA,OAAO,SAASM,uBAAuBP,KAAoB;IACzD,MAAMQ,eAAgD;QACpD,GAAIR,MAAMK,aAAa,EAAEI,UAAU,CAAC,CAAC;QACrC,GAAIT,MAAME,MAAM,IAAI,CAAC,CAAC;IACxB;IAEA,IAAIF,MAAMG,YAAY,EAAE;QACtBK,YAAY,CAAC,oBAAoB,GAAGR,MAAMG,YAAY;IACxD;IAEA,OAAO;QACLK;QACAE,WAAWV,MAAMW,IAAI,KAAK,SAAS,SAASX,MAAMW,IAAI,KAAK,UAAU,UAAU;IACjF;AACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get buildAntdCompatTheme () {
|
|
13
|
+
return _adapters.buildAntdCompatTheme;
|
|
14
|
+
},
|
|
15
|
+
get buildShadcnCompatTheme () {
|
|
16
|
+
return _adapters.buildShadcnCompatTheme;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _adapters = require("./adapters");
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ui-adapter/index.ts"],"sourcesContent":["export type {\n UIProviderRuntime,\n UIAdapter,\n AntdCompatThemeConfig,\n ShadcnCompatThemeConfig,\n} from './types';\n\nexport {\n buildAntdCompatTheme,\n buildShadcnCompatTheme,\n} from './adapters';\n"],"names":["buildAntdCompatTheme","buildShadcnCompatTheme"],"mappings":";;;;;;;;;;;QAQEA;eAAAA,8BAAoB;;QACpBC;eAAAA,gCAAsB;;;0BACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ui-adapter/index.ts"],"sourcesContent":["export type {\n UIProviderRuntime,\n UIAdapter,\n AntdCompatThemeConfig,\n ShadcnCompatThemeConfig,\n} from './types';\n\nexport {\n buildAntdCompatTheme,\n buildShadcnCompatTheme,\n} from './adapters';\n"],"names":["buildAntdCompatTheme","buildShadcnCompatTheme"],"mappings":"AAOA,SACEA,oBAAoB,EACpBC,sBAAsB,QACjB,aAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/ui-adapter/types.ts"],"names":[],"mappings":""}
|