@vlian/framework 1.2.57 → 1.2.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/dist/analytics/index.cjs +1 -24
- package/dist/analytics/index.js +1 -3
- package/dist/analytics.umd.js +8 -208
- package/dist/components/LocaleSwitch.cjs +1 -118
- package/dist/components/LocaleSwitch.js +1 -103
- package/dist/components/ThemeSwitch.cjs +1 -117
- package/dist/components/ThemeSwitch.js +1 -102
- package/dist/components/index.cjs +1 -22
- package/dist/components/index.js +1 -4
- package/dist/components/persistence.cjs +1 -60
- package/dist/components/persistence.js +1 -39
- package/dist/core/Test.cjs +1 -66
- package/dist/core/Test.js +1 -15
- package/dist/core/app/AppContext.cjs +1 -350
- package/dist/core/app/AppContext.js +1 -339
- package/dist/core/app/AppContext.types.cjs +1 -6
- package/dist/core/app/AppContext.types.js +1 -5
- package/dist/core/app/BasicLayout.cjs +1 -124
- package/dist/core/app/BasicLayout.js +1 -74
- package/dist/core/app/DefaultApp.cjs +1 -152
- package/dist/core/app/DefaultApp.js +1 -143
- package/dist/core/app/index.cjs +1 -43
- package/dist/core/app/index.js +1 -7
- package/dist/core/config/AppConfig.cjs +1 -141
- package/dist/core/config/AppConfig.js +1 -133
- package/dist/core/config/ConfigLoader.cjs +1 -325
- package/dist/core/config/ConfigLoader.js +1 -311
- package/dist/core/config/ConfigValidator.cjs +2 -135
- package/dist/core/config/ConfigValidator.js +2 -121
- package/dist/core/config/index.cjs +1 -30
- package/dist/core/config/index.js +1 -7
- package/dist/core/dev/DevTools.cjs +1 -228
- package/dist/core/dev/DevTools.js +1 -210
- package/dist/core/error/ErrorBoundary.cjs +1 -403
- package/dist/core/error/ErrorBoundary.js +1 -399
- package/dist/core/error/ErrorHandler.cjs +1 -277
- package/dist/core/error/ErrorHandler.js +1 -261
- package/dist/core/error/index.cjs +1 -36
- package/dist/core/error/index.js +1 -6
- package/dist/core/event/AppEventBus.cjs +1 -446
- package/dist/core/event/AppEventBus.js +1 -438
- package/dist/core/event/frameworkEvents.cjs +1 -143
- package/dist/core/event/frameworkEvents.js +1 -135
- package/dist/core/event/hooks.cjs +1 -71
- package/dist/core/event/hooks.js +1 -95
- package/dist/core/event/index.cjs +1 -43
- package/dist/core/event/index.js +1 -10
- package/dist/core/event/types.cjs +1 -64
- package/dist/core/event/types.js +1 -56
- package/dist/core/event/useEventBus.cjs +1 -27
- package/dist/core/event/useEventBus.js +1 -39
- package/dist/core/index.cjs +1 -142
- package/dist/core/index.js +1 -69
- package/dist/core/initialization/InitializationErrorThrower.cjs +1 -77
- package/dist/core/initialization/InitializationErrorThrower.js +1 -30
- package/dist/core/initialization/index.cjs +1 -28
- package/dist/core/initialization/index.js +1 -7
- package/dist/core/initialization/initialization.cjs +1 -66
- package/dist/core/initialization/initialization.js +1 -78
- package/dist/core/initialization/initializationErrorState.cjs +1 -68
- package/dist/core/initialization/initializationErrorState.js +1 -60
- package/dist/core/kernel/defaultAdapters.cjs +1 -186
- package/dist/core/kernel/defaultAdapters.js +1 -176
- package/dist/core/kernel/errors.cjs +1 -71
- package/dist/core/kernel/errors.js +1 -53
- package/dist/core/kernel/index.cjs +1 -22
- package/dist/core/kernel/index.js +1 -4
- package/dist/core/kernel/startKernel.cjs +1 -202
- package/dist/core/kernel/startKernel.js +1 -192
- package/dist/core/kernel/types.cjs +1 -6
- package/dist/core/kernel/types.js +1 -3
- package/dist/core/middleware.cjs +1 -75
- package/dist/core/middleware.js +1 -61
- package/dist/core/plugin/PluginEventBus.cjs +1 -300
- package/dist/core/plugin/PluginEventBus.js +1 -286
- package/dist/core/plugin/PluginSandbox.cjs +1 -139
- package/dist/core/plugin/PluginSandbox.js +1 -125
- package/dist/core/plugin.cjs +1 -496
- package/dist/core/plugin.js +1 -438
- package/dist/core/router/RouterManager.cjs +1 -288
- package/dist/core/router/RouterManager.js +1 -272
- package/dist/core/router/adapter/AdapterManager.cjs +1 -237
- package/dist/core/router/adapter/AdapterManager.js +1 -221
- package/dist/core/router/adapter/index.cjs +1 -24
- package/dist/core/router/adapter/index.js +1 -7
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -130
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -116
- package/dist/core/router/adapter/react-router/index.cjs +1 -22
- package/dist/core/router/adapter/react-router/index.js +1 -5
- package/dist/core/router/adapter/types.cjs +1 -8
- package/dist/core/router/adapter/types.js +1 -7
- package/dist/core/router/dev/RouterDevTools.cjs +1 -262
- package/dist/core/router/dev/RouterDevTools.js +1 -211
- package/dist/core/router/dev/index.cjs +1 -22
- package/dist/core/router/dev/index.js +1 -5
- package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -195
- package/dist/core/router/dynamic/DynamicRouteManager.js +1 -179
- package/dist/core/router/dynamic/index.cjs +1 -22
- package/dist/core/router/dynamic/index.js +1 -5
- package/dist/core/router/errors/RouterError.cjs +1 -63
- package/dist/core/router/errors/RouterError.js +1 -48
- package/dist/core/router/errors/index.cjs +1 -22
- package/dist/core/router/errors/index.js +1 -5
- package/dist/core/router/index.cjs +1 -38
- package/dist/core/router/index.js +1 -32
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -146
- package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -130
- package/dist/core/router/lifecycle/index.cjs +1 -22
- package/dist/core/router/lifecycle/index.js +1 -5
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -195
- package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -179
- package/dist/core/router/middleware/auth.cjs +1 -68
- package/dist/core/router/middleware/auth.js +1 -63
- package/dist/core/router/middleware/index.cjs +1 -24
- package/dist/core/router/middleware/index.js +1 -7
- package/dist/core/router/middleware/types.cjs +1 -8
- package/dist/core/router/middleware/types.js +1 -7
- package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -229
- package/dist/core/router/monitoring/RouterMonitoring.js +1 -213
- package/dist/core/router/monitoring/index.cjs +1 -22
- package/dist/core/router/monitoring/index.js +1 -5
- package/dist/core/router/navigation/RouterNavigation.cjs +1 -241
- package/dist/core/router/navigation/RouterNavigation.js +1 -192
- package/dist/core/router/navigation/index.cjs +1 -22
- package/dist/core/router/navigation/index.js +1 -5
- package/dist/core/router/performance/RouteCache.cjs +1 -307
- package/dist/core/router/performance/RouteCache.js +1 -291
- package/dist/core/router/performance/RoutePreloader.cjs +1 -294
- package/dist/core/router/performance/RoutePreloader.js +1 -277
- package/dist/core/router/performance/index.cjs +1 -23
- package/dist/core/router/performance/index.js +1 -6
- package/dist/core/router/plugin/RouterPluginManager.cjs +1 -264
- package/dist/core/router/plugin/RouterPluginManager.js +1 -248
- package/dist/core/router/plugin/index.cjs +1 -23
- package/dist/core/router/plugin/index.js +1 -6
- package/dist/core/router/plugin/types.cjs +1 -41
- package/dist/core/router/plugin/types.js +1 -33
- package/dist/core/router/types.cjs +1 -6
- package/dist/core/router/types.js +1 -5
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -131
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +1 -121
- package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -252
- package/dist/core/router/utils/adapters/react-router/transform.js +1 -242
- package/dist/core/router/utils/transform.cjs +1 -782
- package/dist/core/router/utils/transform.js +1 -791
- package/dist/core/router/validation/RouterConfigValidator.cjs +2 -85
- package/dist/core/router/validation/RouterConfigValidator.js +2 -77
- package/dist/core/router/validation/index.cjs +1 -23
- package/dist/core/router/validation/index.js +1 -6
- package/dist/core/router/validation/schema.cjs +1 -161
- package/dist/core/router/validation/schema.js +1 -151
- package/dist/core/router/version/RouteVersionManager.cjs +1 -207
- package/dist/core/router/version/RouteVersionManager.js +1 -191
- package/dist/core/router/version/index.cjs +1 -22
- package/dist/core/router/version/index.js +1 -5
- package/dist/core/splash/SplashScreen.cjs +1 -343
- package/dist/core/splash/SplashScreen.js +1 -293
- package/dist/core/splash/index.cjs +1 -24
- package/dist/core/splash/index.js +1 -6
- package/dist/core/splash/splashScreenUtils.cjs +1 -40
- package/dist/core/splash/splashScreenUtils.js +1 -30
- package/dist/core/startup/AppInstance.cjs +1 -241
- package/dist/core/startup/AppInstance.js +1 -226
- package/dist/core/startup/environment.cjs +1 -171
- package/dist/core/startup/environment.js +1 -154
- package/dist/core/startup/index.cjs +1 -25
- package/dist/core/startup/index.js +1 -8
- package/dist/core/startup/initializeServices.cjs +1 -228
- package/dist/core/startup/initializeServices.js +1 -188
- package/dist/core/startup/performanceTracker.cjs +1 -181
- package/dist/core/startup/performanceTracker.js +1 -167
- package/dist/core/startup/renderApp.cjs +1 -316
- package/dist/core/startup/renderApp.js +1 -267
- package/dist/core/startup/startApp.cjs +1 -319
- package/dist/core/startup/startApp.js +1 -315
- package/dist/core/types.cjs +1 -6
- package/dist/core/types.js +1 -5
- package/dist/index.cjs +1 -54
- package/dist/index.js +1 -11
- package/dist/index.umd.cjs +1 -29
- package/dist/index.umd.js +362 -13233
- package/dist/kernel/constants.cjs +1 -67
- package/dist/kernel/constants.js +1 -43
- package/dist/kernel/index.cjs +1 -40
- package/dist/kernel/index.js +1 -4
- package/dist/kernel/kernel.cjs +1 -297
- package/dist/kernel/kernel.js +1 -273
- package/dist/kernel/manager/cacheManager.cjs +1 -48
- package/dist/kernel/manager/cacheManager.js +1 -38
- package/dist/kernel/manager/i18n/I18nManager.cjs +1 -93
- package/dist/kernel/manager/i18n/I18nManager.js +1 -83
- package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -62
- package/dist/kernel/manager/i18n/i18n.persistence.js +1 -41
- package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -88
- package/dist/kernel/manager/i18n/i18n.schema.js +1 -64
- package/dist/kernel/manager/i18n/index.cjs +1 -13
- package/dist/kernel/manager/i18n/index.js +1 -3
- package/dist/kernel/manager/i18nManager.cjs +1 -13
- package/dist/kernel/manager/i18nManager.js +1 -3
- package/dist/kernel/manager/index.cjs +1 -30
- package/dist/kernel/manager/index.js +1 -6
- package/dist/kernel/manager/logger/LoggerManager.cjs +1 -109
- package/dist/kernel/manager/logger/LoggerManager.js +1 -99
- package/dist/kernel/manager/logger/index.cjs +1 -13
- package/dist/kernel/manager/logger/index.js +1 -3
- package/dist/kernel/manager/logger/logger.persistence.cjs +1 -64
- package/dist/kernel/manager/logger/logger.persistence.js +1 -43
- package/dist/kernel/manager/logger/logger.schema.cjs +1 -76
- package/dist/kernel/manager/logger/logger.schema.js +1 -55
- package/dist/kernel/manager/loggerManager.cjs +1 -13
- package/dist/kernel/manager/loggerManager.js +1 -3
- package/dist/kernel/manager/theme/ThemeManager.cjs +1 -86
- package/dist/kernel/manager/theme/ThemeManager.js +1 -76
- package/dist/kernel/manager/theme/index.cjs +1 -13
- package/dist/kernel/manager/theme/index.js +1 -3
- package/dist/kernel/manager/theme/theme.dom.cjs +1 -63
- package/dist/kernel/manager/theme/theme.dom.js +1 -45
- package/dist/kernel/manager/theme/theme.persistence.cjs +1 -59
- package/dist/kernel/manager/theme/theme.persistence.js +1 -38
- package/dist/kernel/manager/theme/theme.schema.cjs +1 -124
- package/dist/kernel/manager/theme/theme.schema.js +1 -97
- package/dist/kernel/manager/themeManager.cjs +1 -13
- package/dist/kernel/manager/themeManager.js +1 -3
- package/dist/kernel/types.cjs +1 -6
- package/dist/kernel/types.js +1 -3
- package/dist/library/index.cjs +1 -21
- package/dist/library/index.js +1 -4
- package/dist/library/locale/index.cjs +1 -41
- package/dist/library/locale/index.js +1 -12
- package/dist/library/locale/langs/en-us/index.cjs +1 -34
- package/dist/library/locale/langs/en-us/index.js +1 -24
- package/dist/library/locale/langs/zh-cn/index.cjs +1 -34
- package/dist/library/locale/langs/zh-cn/index.js +1 -24
- package/dist/library/locale/types.cjs +1 -6
- package/dist/library/locale/types.js +1 -3
- package/dist/library/storage/cache.cjs +1 -245
- package/dist/library/storage/cache.js +1 -237
- package/dist/library/storage/encryption.cjs +1 -149
- package/dist/library/storage/encryption.js +1 -141
- package/dist/library/storage/index.cjs +1 -126
- package/dist/library/storage/index.js +1 -106
- package/dist/state/StateManager.cjs +1 -168
- package/dist/state/StateManager.js +1 -160
- package/dist/state/adapters/AdapterFactory.cjs +1 -91
- package/dist/state/adapters/AdapterFactory.js +1 -85
- package/dist/state/adapters/DefaultAdapter.cjs +1 -77
- package/dist/state/adapters/DefaultAdapter.js +1 -71
- package/dist/state/adapters/ReduxAdapter.cjs +1 -445
- package/dist/state/adapters/ReduxAdapter.js +1 -439
- package/dist/state/adapters/ZustandAdapter.cjs +1 -71
- package/dist/state/adapters/ZustandAdapter.js +1 -70
- package/dist/state/adapters/index.cjs +1 -46
- package/dist/state/adapters/index.js +1 -9
- package/dist/state/adapters/types.cjs +1 -22
- package/dist/state/adapters/types.js +1 -5
- package/dist/state/core/DerivedStateInstance.cjs +1 -176
- package/dist/state/core/DerivedStateInstance.js +1 -173
- package/dist/state/core/StateInstance.cjs +1 -172
- package/dist/state/core/StateInstance.js +1 -168
- package/dist/state/core/StateRegistry.cjs +1 -112
- package/dist/state/core/StateRegistry.js +1 -106
- package/dist/state/core/StateScope.cjs +1 -139
- package/dist/state/core/StateScope.js +1 -133
- package/dist/state/core/index.cjs +1 -32
- package/dist/state/core/index.js +1 -8
- package/dist/state/index.cjs +1 -32
- package/dist/state/index.js +1 -12
- package/dist/state/types.cjs +1 -14
- package/dist/state/types.js +1 -13
- package/dist/state.umd.js +22 -1395
- package/dist/types.cjs +1 -6
- package/dist/types.js +1 -3
- package/dist/utils/analytics.cjs +1 -219
- package/dist/utils/analytics.js +1 -204
- package/dist/utils/configSecurity.cjs +3 -184
- package/dist/utils/configSecurity.js +3 -176
- package/dist/utils/csrf.cjs +1 -20
- package/dist/utils/csrf.js +1 -3
- package/dist/utils/errors/ErrorCodes.cjs +1 -27
- package/dist/utils/errors/ErrorCodes.js +1 -3
- package/dist/utils/errors.cjs +1 -113
- package/dist/utils/errors.js +1 -18
- package/dist/utils/index.cjs +1 -137
- package/dist/utils/index.js +1 -48
- package/dist/utils/logger.cjs +1 -27
- package/dist/utils/logger.js +1 -3
- package/dist/utils/logger.types.cjs +1 -13
- package/dist/utils/logger.types.js +1 -3
- package/dist/utils/monitoring.cjs +1 -20
- package/dist/utils/monitoring.js +1 -3
- package/dist/utils/performance.cjs +1 -24
- package/dist/utils/performance.js +1 -3
- package/dist/utils/resourceLoader.cjs +1 -24
- package/dist/utils/resourceLoader.js +1 -3
- package/dist/utils/runtimeSecurity.cjs +1 -13
- package/dist/utils/runtimeSecurity.js +1 -3
- package/dist/utils/security.cjs +1 -21
- package/dist/utils/security.js +1 -3
- package/dist/utils/traceId.cjs +1 -39
- package/dist/utils/traceId.js +1 -3
- package/dist/utils/validation.cjs +1 -21
- package/dist/utils/validation.js +1 -3
- package/package.json +9 -6
- package/dist/analytics/index.cjs.map +0 -1
- package/dist/analytics/index.js.map +0 -1
- package/dist/analytics.umd.js.map +0 -1
- package/dist/components/LocaleSwitch.cjs.map +0 -1
- package/dist/components/LocaleSwitch.js.map +0 -1
- package/dist/components/ThemeSwitch.cjs.map +0 -1
- package/dist/components/ThemeSwitch.js.map +0 -1
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/persistence.cjs.map +0 -1
- package/dist/components/persistence.js.map +0 -1
- package/dist/core/Test.cjs.map +0 -1
- package/dist/core/Test.js.map +0 -1
- package/dist/core/app/AppContext.cjs.map +0 -1
- package/dist/core/app/AppContext.js.map +0 -1
- package/dist/core/app/AppContext.types.cjs.map +0 -1
- package/dist/core/app/AppContext.types.js.map +0 -1
- package/dist/core/app/BasicLayout.cjs.map +0 -1
- package/dist/core/app/BasicLayout.js.map +0 -1
- package/dist/core/app/DefaultApp.cjs.map +0 -1
- package/dist/core/app/DefaultApp.js.map +0 -1
- package/dist/core/app/index.cjs.map +0 -1
- package/dist/core/app/index.js.map +0 -1
- package/dist/core/config/AppConfig.cjs.map +0 -1
- package/dist/core/config/AppConfig.js.map +0 -1
- package/dist/core/config/ConfigLoader.cjs.map +0 -1
- package/dist/core/config/ConfigLoader.js.map +0 -1
- package/dist/core/config/ConfigValidator.cjs.map +0 -1
- package/dist/core/config/ConfigValidator.js.map +0 -1
- package/dist/core/config/index.cjs.map +0 -1
- package/dist/core/config/index.js.map +0 -1
- package/dist/core/dev/DevTools.cjs.map +0 -1
- package/dist/core/dev/DevTools.js.map +0 -1
- package/dist/core/error/ErrorBoundary.cjs.map +0 -1
- package/dist/core/error/ErrorBoundary.js.map +0 -1
- package/dist/core/error/ErrorHandler.cjs.map +0 -1
- package/dist/core/error/ErrorHandler.js.map +0 -1
- package/dist/core/error/index.cjs.map +0 -1
- package/dist/core/error/index.js.map +0 -1
- package/dist/core/event/AppEventBus.cjs.map +0 -1
- package/dist/core/event/AppEventBus.js.map +0 -1
- package/dist/core/event/frameworkEvents.cjs.map +0 -1
- package/dist/core/event/frameworkEvents.js.map +0 -1
- package/dist/core/event/hooks.cjs.map +0 -1
- package/dist/core/event/hooks.js.map +0 -1
- package/dist/core/event/index.cjs.map +0 -1
- package/dist/core/event/index.js.map +0 -1
- package/dist/core/event/types.cjs.map +0 -1
- package/dist/core/event/types.js.map +0 -1
- package/dist/core/event/useEventBus.cjs.map +0 -1
- package/dist/core/event/useEventBus.js.map +0 -1
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/initialization/InitializationErrorThrower.cjs.map +0 -1
- package/dist/core/initialization/InitializationErrorThrower.js.map +0 -1
- package/dist/core/initialization/index.cjs.map +0 -1
- package/dist/core/initialization/index.js.map +0 -1
- package/dist/core/initialization/initialization.cjs.map +0 -1
- package/dist/core/initialization/initialization.js.map +0 -1
- package/dist/core/initialization/initializationErrorState.cjs.map +0 -1
- package/dist/core/initialization/initializationErrorState.js.map +0 -1
- package/dist/core/kernel/defaultAdapters.cjs.map +0 -1
- package/dist/core/kernel/defaultAdapters.js.map +0 -1
- package/dist/core/kernel/errors.cjs.map +0 -1
- package/dist/core/kernel/errors.js.map +0 -1
- package/dist/core/kernel/index.cjs.map +0 -1
- package/dist/core/kernel/index.js.map +0 -1
- package/dist/core/kernel/startKernel.cjs.map +0 -1
- package/dist/core/kernel/startKernel.js.map +0 -1
- package/dist/core/kernel/types.cjs.map +0 -1
- package/dist/core/kernel/types.js.map +0 -1
- package/dist/core/middleware.cjs.map +0 -1
- package/dist/core/middleware.js.map +0 -1
- package/dist/core/plugin/PluginEventBus.cjs.map +0 -1
- package/dist/core/plugin/PluginEventBus.js.map +0 -1
- package/dist/core/plugin/PluginSandbox.cjs.map +0 -1
- package/dist/core/plugin/PluginSandbox.js.map +0 -1
- package/dist/core/plugin.cjs.map +0 -1
- package/dist/core/plugin.js.map +0 -1
- package/dist/core/router/RouterManager.cjs.map +0 -1
- package/dist/core/router/RouterManager.js.map +0 -1
- package/dist/core/router/adapter/AdapterManager.cjs.map +0 -1
- package/dist/core/router/adapter/AdapterManager.js.map +0 -1
- package/dist/core/router/adapter/index.cjs.map +0 -1
- package/dist/core/router/adapter/index.js.map +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +0 -1
- package/dist/core/router/adapter/react-router/index.cjs.map +0 -1
- package/dist/core/router/adapter/react-router/index.js.map +0 -1
- package/dist/core/router/adapter/types.cjs.map +0 -1
- package/dist/core/router/adapter/types.js.map +0 -1
- package/dist/core/router/dev/RouterDevTools.cjs.map +0 -1
- package/dist/core/router/dev/RouterDevTools.js.map +0 -1
- package/dist/core/router/dev/index.cjs.map +0 -1
- package/dist/core/router/dev/index.js.map +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.js.map +0 -1
- package/dist/core/router/dynamic/index.cjs.map +0 -1
- package/dist/core/router/dynamic/index.js.map +0 -1
- package/dist/core/router/errors/RouterError.cjs.map +0 -1
- package/dist/core/router/errors/RouterError.js.map +0 -1
- package/dist/core/router/errors/index.cjs.map +0 -1
- package/dist/core/router/errors/index.js.map +0 -1
- package/dist/core/router/index.cjs.map +0 -1
- package/dist/core/router/index.js.map +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +0 -1
- package/dist/core/router/lifecycle/index.cjs.map +0 -1
- package/dist/core/router/lifecycle/index.js.map +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.js.map +0 -1
- package/dist/core/router/middleware/auth.cjs.map +0 -1
- package/dist/core/router/middleware/auth.js.map +0 -1
- package/dist/core/router/middleware/index.cjs.map +0 -1
- package/dist/core/router/middleware/index.js.map +0 -1
- package/dist/core/router/middleware/types.cjs.map +0 -1
- package/dist/core/router/middleware/types.js.map +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs.map +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.js.map +0 -1
- package/dist/core/router/monitoring/index.cjs.map +0 -1
- package/dist/core/router/monitoring/index.js.map +0 -1
- package/dist/core/router/navigation/RouterNavigation.cjs.map +0 -1
- package/dist/core/router/navigation/RouterNavigation.js.map +0 -1
- package/dist/core/router/navigation/index.cjs.map +0 -1
- package/dist/core/router/navigation/index.js.map +0 -1
- package/dist/core/router/performance/RouteCache.cjs.map +0 -1
- package/dist/core/router/performance/RouteCache.js.map +0 -1
- package/dist/core/router/performance/RoutePreloader.cjs.map +0 -1
- package/dist/core/router/performance/RoutePreloader.js.map +0 -1
- package/dist/core/router/performance/index.cjs.map +0 -1
- package/dist/core/router/performance/index.js.map +0 -1
- package/dist/core/router/plugin/RouterPluginManager.cjs.map +0 -1
- package/dist/core/router/plugin/RouterPluginManager.js.map +0 -1
- package/dist/core/router/plugin/index.cjs.map +0 -1
- package/dist/core/router/plugin/index.js.map +0 -1
- package/dist/core/router/plugin/types.cjs.map +0 -1
- package/dist/core/router/plugin/types.js.map +0 -1
- package/dist/core/router/types.cjs.map +0 -1
- package/dist/core/router/types.js.map +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs.map +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.js.map +0 -1
- package/dist/core/router/utils/transform.cjs.map +0 -1
- package/dist/core/router/utils/transform.js.map +0 -1
- package/dist/core/router/validation/RouterConfigValidator.cjs.map +0 -1
- package/dist/core/router/validation/RouterConfigValidator.js.map +0 -1
- package/dist/core/router/validation/index.cjs.map +0 -1
- package/dist/core/router/validation/index.js.map +0 -1
- package/dist/core/router/validation/schema.cjs.map +0 -1
- package/dist/core/router/validation/schema.js.map +0 -1
- package/dist/core/router/version/RouteVersionManager.cjs.map +0 -1
- package/dist/core/router/version/RouteVersionManager.js.map +0 -1
- package/dist/core/router/version/index.cjs.map +0 -1
- package/dist/core/router/version/index.js.map +0 -1
- package/dist/core/splash/SplashScreen.cjs.map +0 -1
- package/dist/core/splash/SplashScreen.js.map +0 -1
- package/dist/core/splash/index.cjs.map +0 -1
- package/dist/core/splash/index.js.map +0 -1
- package/dist/core/splash/splashScreenUtils.cjs.map +0 -1
- package/dist/core/splash/splashScreenUtils.js.map +0 -1
- package/dist/core/startup/AppInstance.cjs.map +0 -1
- package/dist/core/startup/AppInstance.js.map +0 -1
- package/dist/core/startup/environment.cjs.map +0 -1
- package/dist/core/startup/environment.js.map +0 -1
- package/dist/core/startup/index.cjs.map +0 -1
- package/dist/core/startup/index.js.map +0 -1
- package/dist/core/startup/initializeServices.cjs.map +0 -1
- package/dist/core/startup/initializeServices.js.map +0 -1
- package/dist/core/startup/performanceTracker.cjs.map +0 -1
- package/dist/core/startup/performanceTracker.js.map +0 -1
- package/dist/core/startup/renderApp.cjs.map +0 -1
- package/dist/core/startup/renderApp.js.map +0 -1
- package/dist/core/startup/startApp.cjs.map +0 -1
- package/dist/core/startup/startApp.js.map +0 -1
- package/dist/core/types.cjs.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.umd.cjs.map +0 -1
- package/dist/index.umd.js.map +0 -1
- package/dist/kernel/constants.cjs.map +0 -1
- package/dist/kernel/constants.js.map +0 -1
- package/dist/kernel/index.cjs.map +0 -1
- package/dist/kernel/index.js.map +0 -1
- package/dist/kernel/kernel.cjs.map +0 -1
- package/dist/kernel/kernel.js.map +0 -1
- package/dist/kernel/manager/cacheManager.cjs.map +0 -1
- package/dist/kernel/manager/cacheManager.js.map +0 -1
- package/dist/kernel/manager/i18n/I18nManager.cjs.map +0 -1
- package/dist/kernel/manager/i18n/I18nManager.js.map +0 -1
- package/dist/kernel/manager/i18n/i18n.persistence.cjs.map +0 -1
- package/dist/kernel/manager/i18n/i18n.persistence.js.map +0 -1
- package/dist/kernel/manager/i18n/i18n.schema.cjs.map +0 -1
- package/dist/kernel/manager/i18n/i18n.schema.js.map +0 -1
- package/dist/kernel/manager/i18n/index.cjs.map +0 -1
- package/dist/kernel/manager/i18n/index.js.map +0 -1
- package/dist/kernel/manager/i18nManager.cjs.map +0 -1
- package/dist/kernel/manager/i18nManager.js.map +0 -1
- package/dist/kernel/manager/index.cjs.map +0 -1
- package/dist/kernel/manager/index.js.map +0 -1
- package/dist/kernel/manager/logger/LoggerManager.cjs.map +0 -1
- package/dist/kernel/manager/logger/LoggerManager.js.map +0 -1
- package/dist/kernel/manager/logger/index.cjs.map +0 -1
- package/dist/kernel/manager/logger/index.js.map +0 -1
- package/dist/kernel/manager/logger/logger.persistence.cjs.map +0 -1
- package/dist/kernel/manager/logger/logger.persistence.js.map +0 -1
- package/dist/kernel/manager/logger/logger.schema.cjs.map +0 -1
- package/dist/kernel/manager/logger/logger.schema.js.map +0 -1
- package/dist/kernel/manager/loggerManager.cjs.map +0 -1
- package/dist/kernel/manager/loggerManager.js.map +0 -1
- package/dist/kernel/manager/persistence.cjs +0 -78
- package/dist/kernel/manager/persistence.cjs.map +0 -1
- package/dist/kernel/manager/persistence.d.ts +0 -3
- package/dist/kernel/manager/persistence.js +0 -60
- package/dist/kernel/manager/persistence.js.map +0 -1
- package/dist/kernel/manager/theme/ThemeManager.cjs.map +0 -1
- package/dist/kernel/manager/theme/ThemeManager.js.map +0 -1
- package/dist/kernel/manager/theme/index.cjs.map +0 -1
- package/dist/kernel/manager/theme/index.js.map +0 -1
- package/dist/kernel/manager/theme/theme.dom.cjs.map +0 -1
- package/dist/kernel/manager/theme/theme.dom.js.map +0 -1
- package/dist/kernel/manager/theme/theme.persistence.cjs.map +0 -1
- package/dist/kernel/manager/theme/theme.persistence.js.map +0 -1
- package/dist/kernel/manager/theme/theme.schema.cjs.map +0 -1
- package/dist/kernel/manager/theme/theme.schema.js.map +0 -1
- package/dist/kernel/manager/themeManager.cjs.map +0 -1
- package/dist/kernel/manager/themeManager.js.map +0 -1
- package/dist/kernel/types.cjs.map +0 -1
- package/dist/kernel/types.js.map +0 -1
- package/dist/library/index.cjs.map +0 -1
- package/dist/library/index.js.map +0 -1
- package/dist/library/locale/index.cjs.map +0 -1
- package/dist/library/locale/index.js.map +0 -1
- package/dist/library/locale/langs/en-us/index.cjs.map +0 -1
- package/dist/library/locale/langs/en-us/index.js.map +0 -1
- package/dist/library/locale/langs/zh-cn/index.cjs.map +0 -1
- package/dist/library/locale/langs/zh-cn/index.js.map +0 -1
- package/dist/library/locale/types.cjs.map +0 -1
- package/dist/library/locale/types.js.map +0 -1
- package/dist/library/storage/cache.cjs.map +0 -1
- package/dist/library/storage/cache.js.map +0 -1
- package/dist/library/storage/encryption.cjs.map +0 -1
- package/dist/library/storage/encryption.js.map +0 -1
- package/dist/library/storage/index.cjs.map +0 -1
- package/dist/library/storage/index.js.map +0 -1
- package/dist/request/adapter/RequestAdapter.d.ts +0 -85
- package/dist/request/adapter/RequestAdapter.js +0 -70
- package/dist/request/adapter/RequestAdapter.js.map +0 -1
- package/dist/request/adapter/axiosAdapter.d.ts +0 -10
- package/dist/request/adapter/axiosAdapter.js +0 -115
- package/dist/request/adapter/axiosAdapter.js.map +0 -1
- package/dist/request/adapter/fetchAdapter.d.ts +0 -10
- package/dist/request/adapter/fetchAdapter.js +0 -126
- package/dist/request/adapter/fetchAdapter.js.map +0 -1
- package/dist/request/adapter/index.d.ts +0 -9
- package/dist/request/adapter/index.js +0 -14
- package/dist/request/adapter/index.js.map +0 -1
- package/dist/request/adapter/kyAdapter.d.ts +0 -10
- package/dist/request/adapter/kyAdapter.js +0 -142
- package/dist/request/adapter/kyAdapter.js.map +0 -1
- package/dist/request/adapter/undiciAdapter.d.ts +0 -10
- package/dist/request/adapter/undiciAdapter.js +0 -164
- package/dist/request/adapter/undiciAdapter.js.map +0 -1
- package/dist/request/adapter.d.ts +0 -1
- package/dist/request/core/RequestClient.d.ts +0 -134
- package/dist/request/core/RequestClient.js +0 -509
- package/dist/request/core/RequestClient.js.map +0 -1
- package/dist/request/core/index.d.ts +0 -5
- package/dist/request/core/index.js +0 -5
- package/dist/request/core/index.js.map +0 -1
- package/dist/request/core.d.ts +0 -1
- package/dist/request/index.d.ts +0 -1
- package/dist/request/index.js +0 -50
- package/dist/request/index.js.map +0 -1
- package/dist/request/plugin/RequestPlugin.d.ts +0 -170
- package/dist/request/plugin/RequestPlugin.js +0 -203
- package/dist/request/plugin/RequestPlugin.js.map +0 -1
- package/dist/request/plugin/cache.d.ts +0 -33
- package/dist/request/plugin/cache.js +0 -264
- package/dist/request/plugin/cache.js.map +0 -1
- package/dist/request/plugin/csrfPlugin.d.ts +0 -21
- package/dist/request/plugin/csrfPlugin.js +0 -44
- package/dist/request/plugin/csrfPlugin.js.map +0 -1
- package/dist/request/plugin/index.d.ts +0 -11
- package/dist/request/plugin/index.js +0 -12
- package/dist/request/plugin/index.js.map +0 -1
- package/dist/request/plugin/monitoring.d.ts +0 -112
- package/dist/request/plugin/monitoring.js +0 -205
- package/dist/request/plugin/monitoring.js.map +0 -1
- package/dist/request/plugin/queue.d.ts +0 -91
- package/dist/request/plugin/queue.js +0 -156
- package/dist/request/plugin/queue.js.map +0 -1
- package/dist/request/plugin/retry.d.ts +0 -34
- package/dist/request/plugin/retry.js +0 -93
- package/dist/request/plugin/retry.js.map +0 -1
- package/dist/request/plugin/validation.d.ts +0 -26
- package/dist/request/plugin/validation.js +0 -116
- package/dist/request/plugin/validation.js.map +0 -1
- package/dist/request/plugin.d.ts +0 -1
- package/dist/request/runtime/RequestContext.d.ts +0 -50
- package/dist/request/runtime/RequestContext.js +0 -86
- package/dist/request/runtime/RequestContext.js.map +0 -1
- package/dist/request/runtime/index.d.ts +0 -4
- package/dist/request/runtime/index.js +0 -5
- package/dist/request/runtime/index.js.map +0 -1
- package/dist/request/runtime.d.ts +0 -1
- package/dist/request/types.d.ts +0 -1
- package/dist/request/types.js +0 -97
- package/dist/request/types.js.map +0 -1
- package/dist/request/utils/RequestQueueManager.d.ts +0 -74
- package/dist/request/utils/RequestQueueManager.js +0 -160
- package/dist/request/utils/RequestQueueManager.js.map +0 -1
- package/dist/request/utils/dependencyCheck.d.ts +0 -63
- package/dist/request/utils/dependencyCheck.js +0 -192
- package/dist/request/utils/dependencyCheck.js.map +0 -1
- package/dist/request/utils/index.d.ts +0 -5
- package/dist/request/utils/index.js +0 -6
- package/dist/request/utils/index.js.map +0 -1
- package/dist/request/utils.d.ts +0 -1
- package/dist/state/StateManager.cjs.map +0 -1
- package/dist/state/StateManager.js.map +0 -1
- package/dist/state/adapters/AdapterFactory.cjs.map +0 -1
- package/dist/state/adapters/AdapterFactory.js.map +0 -1
- package/dist/state/adapters/DefaultAdapter.cjs.map +0 -1
- package/dist/state/adapters/DefaultAdapter.js.map +0 -1
- package/dist/state/adapters/ReduxAdapter.cjs.map +0 -1
- package/dist/state/adapters/ReduxAdapter.js.map +0 -1
- package/dist/state/adapters/ZustandAdapter.cjs.map +0 -1
- package/dist/state/adapters/ZustandAdapter.js.map +0 -1
- package/dist/state/adapters/index.cjs.map +0 -1
- package/dist/state/adapters/index.js.map +0 -1
- package/dist/state/adapters/types.cjs.map +0 -1
- package/dist/state/adapters/types.js.map +0 -1
- package/dist/state/core/DerivedStateInstance.cjs.map +0 -1
- package/dist/state/core/DerivedStateInstance.js.map +0 -1
- package/dist/state/core/StateInstance.cjs.map +0 -1
- package/dist/state/core/StateInstance.js.map +0 -1
- package/dist/state/core/StateRegistry.cjs.map +0 -1
- package/dist/state/core/StateRegistry.js.map +0 -1
- package/dist/state/core/StateScope.cjs.map +0 -1
- package/dist/state/core/StateScope.js.map +0 -1
- package/dist/state/core/index.cjs.map +0 -1
- package/dist/state/core/index.js.map +0 -1
- package/dist/state/index.cjs.map +0 -1
- package/dist/state/index.js.map +0 -1
- package/dist/state/types.cjs.map +0 -1
- package/dist/state/types.js.map +0 -1
- package/dist/state.umd.js.map +0 -1
- package/dist/types.cjs.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/analytics.cjs.map +0 -1
- package/dist/utils/analytics.js.map +0 -1
- package/dist/utils/configSecurity.cjs.map +0 -1
- package/dist/utils/configSecurity.js.map +0 -1
- package/dist/utils/csrf.cjs.map +0 -1
- package/dist/utils/csrf.js.map +0 -1
- package/dist/utils/errors/ErrorCodes.cjs.map +0 -1
- package/dist/utils/errors/ErrorCodes.js.map +0 -1
- package/dist/utils/errors.cjs.map +0 -1
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.cjs.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/logger.types.cjs.map +0 -1
- package/dist/utils/logger.types.js.map +0 -1
- package/dist/utils/monitoring.cjs.map +0 -1
- package/dist/utils/monitoring.js.map +0 -1
- package/dist/utils/performance.cjs.map +0 -1
- package/dist/utils/performance.js.map +0 -1
- package/dist/utils/resourceLoader.cjs.map +0 -1
- package/dist/utils/resourceLoader.js.map +0 -1
- package/dist/utils/runtimeSecurity.cjs.map +0 -1
- package/dist/utils/runtimeSecurity.js.map +0 -1
- package/dist/utils/security.cjs.map +0 -1
- package/dist/utils/security.js.map +0 -1
- package/dist/utils/traceId.cjs.map +0 -1
- package/dist/utils/traceId.js.map +0 -1
- package/dist/utils/validation.cjs.map +0 -1
- package/dist/utils/validation.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/frameworkEvents.ts"],"sourcesContent":["/**\n * 框架生命周期事件集成\n * 自动在框架关键节点触发事件\n */\n\nimport type { AppEventBus } from './AppEventBus';\nimport { FrameworkEventType } from './types';\nimport type { InitializationContext } from '../initialization';\n\n/**\n * 框架事件管理器\n */\nexport class FrameworkEventManager {\n private eventBus: AppEventBus;\n\n constructor(eventBus: AppEventBus) {\n this.eventBus = eventBus;\n }\n\n /**\n * 触发应用启动事件\n */\n emitAppStart(instanceId?: string): void {\n this.eventBus.emitSync(FrameworkEventType.APP_START, { instanceId });\n }\n\n /**\n * 触发应用启动完成事件\n */\n emitAppStarted(instanceId: string, duration: number): void {\n this.eventBus.emitSync(FrameworkEventType.APP_STARTED, {\n instanceId,\n duration,\n });\n }\n\n /**\n * 触发应用初始化开始事件\n */\n emitAppInitStart(instanceId?: string): void {\n this.eventBus.emitSync(FrameworkEventType.APP_INIT_START, { instanceId });\n }\n\n /**\n * 触发应用初始化完成事件\n */\n emitAppInitComplete(\n instanceId: string,\n context: InitializationContext,\n duration: number\n ): void {\n this.eventBus.emitSync(FrameworkEventType.APP_INIT_COMPLETE, {\n instanceId,\n context,\n duration,\n });\n }\n\n /**\n * 触发应用初始化错误事件\n */\n emitAppInitError(instanceId: string, error: Error): void {\n this.eventBus.emitSync(FrameworkEventType.APP_INIT_ERROR, {\n instanceId,\n error,\n });\n }\n\n /**\n * 触发应用渲染开始事件\n */\n emitAppRenderStart(instanceId?: string): void {\n this.eventBus.emitSync(FrameworkEventType.APP_RENDER_START, { instanceId });\n }\n\n /**\n * 触发应用渲染完成事件\n */\n emitAppRenderComplete(instanceId: string, duration: number): void {\n this.eventBus.emitSync(FrameworkEventType.APP_RENDER_COMPLETE, {\n instanceId,\n duration,\n });\n }\n\n /**\n * 触发路由变化事件\n */\n emitRouteChange(\n from: string,\n to: string,\n params?: Record<string, unknown>\n ): void {\n this.eventBus.emitSync(FrameworkEventType.ROUTE_CHANGE, {\n from,\n to,\n params,\n });\n }\n\n /**\n * 触发路由导航开始事件\n */\n emitRouteNavigateStart(to: string, options?: unknown): void {\n this.eventBus.emitSync(FrameworkEventType.ROUTE_NAVIGATE_START, {\n to,\n options,\n });\n }\n\n /**\n * 触发路由导航完成事件\n */\n emitRouteNavigateComplete(to: string, duration: number): void {\n this.eventBus.emitSync(FrameworkEventType.ROUTE_NAVIGATE_COMPLETE, {\n to,\n duration,\n });\n }\n\n /**\n * 触发错误发生事件\n */\n emitErrorOccurred(error: Error, context?: unknown): void {\n this.eventBus.emitSync(FrameworkEventType.ERROR_OCCURRED, {\n error,\n context,\n });\n }\n\n /**\n * 触发实例创建事件\n */\n emitInstanceCreated(instanceId: string): void {\n this.eventBus.emitSync(FrameworkEventType.INSTANCE_CREATED, { instanceId });\n }\n\n /**\n * 触发实例销毁事件\n */\n emitInstanceDestroyed(instanceId: string): void {\n this.eventBus.emitSync(FrameworkEventType.INSTANCE_DESTROYED, {\n instanceId,\n });\n }\n\n /**\n * 触发性能指标更新事件\n */\n emitPerformanceUpdate(metrics: Record<string, number>): void {\n this.eventBus.emitSync(FrameworkEventType.PERFORMANCE_UPDATE, { metrics });\n }\n}\n"],"names":["FrameworkEventType","FrameworkEventManager","emitAppStart","instanceId","eventBus","emitSync","APP_START","emitAppStarted","duration","APP_STARTED","emitAppInitStart","APP_INIT_START","emitAppInitComplete","context","APP_INIT_COMPLETE","emitAppInitError","error","APP_INIT_ERROR","emitAppRenderStart","APP_RENDER_START","emitAppRenderComplete","APP_RENDER_COMPLETE","emitRouteChange","from","to","params","ROUTE_CHANGE","emitRouteNavigateStart","options","ROUTE_NAVIGATE_START","emitRouteNavigateComplete","ROUTE_NAVIGATE_COMPLETE","emitErrorOccurred","ERROR_OCCURRED","emitInstanceCreated","INSTANCE_CREATED","emitInstanceDestroyed","INSTANCE_DESTROYED","emitPerformanceUpdate","metrics","PERFORMANCE_UPDATE"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;;;AAGD,SAASA,kBAAkB,QAAQ,UAAU;AAG7C;;CAEC,GACD,OAAO,MAAMC;IAOX;;GAEC,GACDC,aAAaC,UAAmB,EAAQ;QACtC,IAAI,CAACC,QAAQ,CAACC,QAAQ,CAACL,mBAAmBM,SAAS,EAAE;YAAEH;QAAW;IACpE;IAEA;;GAEC,GACDI,eAAeJ,UAAkB,EAAEK,QAAgB,EAAQ;QACzD,IAAI,CAACJ,QAAQ,CAACC,QAAQ,CAACL,mBAAmBS,WAAW,EAAE;YACrDN;YACAK;QACF;IACF;IAEA;;GAEC,GACDE,iBAAiBP,UAAmB,EAAQ;QAC1C,IAAI,CAACC,QAAQ,CAACC,QAAQ,CAACL,mBAAmBW,cAAc,EAAE;YAAER;QAAW;IACzE;IAEA;;GAEC,GACDS,oBACET,UAAkB,EAClBU,OAA8B,EAC9BL,QAAgB,EACV;QACN,IAAI,CAACJ,QAAQ,CAACC,QAAQ,CAACL,mBAAmBc,iBAAiB,EAAE;YAC3DX;YACAU;YACAL;QACF;IACF;IAEA;;GAEC,GACDO,iBAAiBZ,UAAkB,EAAEa,KAAY,EAAQ;QACvD,IAAI,CAACZ,QAAQ,CAACC,QAAQ,CAACL,mBAAmBiB,cAAc,EAAE;YACxDd;YACAa;QACF;IACF;IAEA;;GAEC,GACDE,mBAAmBf,UAAmB,EAAQ;QAC5C,IAAI,CAACC,QAAQ,CAACC,QAAQ,CAACL,mBAAmBmB,gBAAgB,EAAE;YAAEhB;QAAW;IAC3E;IAEA;;GAEC,GACDiB,sBAAsBjB,UAAkB,EAAEK,QAAgB,EAAQ;QAChE,IAAI,CAACJ,QAAQ,CAACC,QAAQ,CAACL,mBAAmBqB,mBAAmB,EAAE;YAC7DlB;YACAK;QACF;IACF;IAEA;;GAEC,GACDc,gBACEC,IAAY,EACZC,EAAU,EACVC,MAAgC,EAC1B;QACN,IAAI,CAACrB,QAAQ,CAACC,QAAQ,CAACL,mBAAmB0B,YAAY,EAAE;YACtDH;YACAC;YACAC;QACF;IACF;IAEA;;GAEC,GACDE,uBAAuBH,EAAU,EAAEI,OAAiB,EAAQ;QAC1D,IAAI,CAACxB,QAAQ,CAACC,QAAQ,CAACL,mBAAmB6B,oBAAoB,EAAE;YAC9DL;YACAI;QACF;IACF;IAEA;;GAEC,GACDE,0BAA0BN,EAAU,EAAEhB,QAAgB,EAAQ;QAC5D,IAAI,CAACJ,QAAQ,CAACC,QAAQ,CAACL,mBAAmB+B,uBAAuB,EAAE;YACjEP;YACAhB;QACF;IACF;IAEA;;GAEC,GACDwB,kBAAkBhB,KAAY,EAAEH,OAAiB,EAAQ;QACvD,IAAI,CAACT,QAAQ,CAACC,QAAQ,CAACL,mBAAmBiC,cAAc,EAAE;YACxDjB;YACAH;QACF;IACF;IAEA;;GAEC,GACDqB,oBAAoB/B,UAAkB,EAAQ;QAC5C,IAAI,CAACC,QAAQ,CAACC,QAAQ,CAACL,mBAAmBmC,gBAAgB,EAAE;YAAEhC;QAAW;IAC3E;IAEA;;GAEC,GACDiC,sBAAsBjC,UAAkB,EAAQ;QAC9C,IAAI,CAACC,QAAQ,CAACC,QAAQ,CAACL,mBAAmBqC,kBAAkB,EAAE;YAC5DlC;QACF;IACF;IAEA;;GAEC,GACDmC,sBAAsBC,OAA+B,EAAQ;QAC3D,IAAI,CAACnC,QAAQ,CAACC,QAAQ,CAACL,mBAAmBwC,kBAAkB,EAAE;YAAED;QAAQ;IAC1E;IAxIA,YAAYnC,QAAqB,CAAE;QAFnC,uBAAQA,YAAR,KAAA;QAGE,IAAI,CAACA,QAAQ,GAAGA;IAClB;AAuIF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/hooks.ts"],"sourcesContent":["/**\n * React Hooks 支持\n * 提供便捷的 React 组件事件订阅能力\n */\n\nimport { useEffect, useRef, useCallback } from 'react';\nimport type { EventListener, EventListenerOptions } from './types';\nimport type { AppEventBus } from './AppEventBus';\n\n/**\n * 使用事件总线的 Hook\n * \n * @param eventBus - 事件总线实例\n * @param event - 事件名称\n * @param listener - 事件监听器\n * @param options - 监听器选项\n * \n * @example\n * ```tsx\n * import { useAppEventBus } from '@vlian/framework';\n * \n * function MyComponent() {\n * useAppEvent('user:login', (data, metadata) => {\n * console.log('用户登录:', data);\n * });\n * \n * return <div>My Component</div>;\n * }\n * ```\n */\nexport function useAppEvent<T = unknown>(\n eventBus: AppEventBus,\n event: string,\n listener: EventListener<T>,\n options?: EventListenerOptions\n): void {\n // 使用 ref 保存最新的 listener,避免重复订阅\n const listenerRef = useRef<EventListener<T>>(listener);\n listenerRef.current = listener;\n\n // 使用 ref 保存 options\n const optionsRef = useRef(options);\n optionsRef.current = options;\n\n useEffect(() => {\n // 创建包装的监听器,使用最新的 listener\n const wrappedListener: EventListener<T> = (data, metadata) => {\n return listenerRef.current(data, metadata);\n };\n\n // 订阅事件\n const unsubscribe = eventBus.on(event, wrappedListener, optionsRef.current);\n\n // 清理函数:取消订阅\n return unsubscribe;\n }, [eventBus, event]); // 只在 eventBus 或 event 变化时重新订阅\n}\n\n/**\n * 一次性事件订阅 Hook\n * \n * @param eventBus - 事件总线实例\n * @param event - 事件名称\n * @param listener - 事件监听器\n * @param options - 监听器选项\n */\nexport function useAppEventOnce<T = unknown>(\n eventBus: AppEventBus,\n event: string,\n listener: EventListener<T>,\n options?: Omit<EventListenerOptions, 'once'>\n): void {\n const listenerRef = useRef<EventListener<T>>(listener);\n listenerRef.current = listener;\n\n const optionsRef = useRef(options);\n optionsRef.current = options;\n\n useEffect(() => {\n const wrappedListener: EventListener<T> = (data, metadata) => {\n return listenerRef.current(data, metadata);\n };\n\n const unsubscribe = eventBus.once(event, wrappedListener, optionsRef.current);\n\n return unsubscribe;\n }, [eventBus, event]);\n}\n\n/**\n * 创建事件发射器 Hook\n * \n * @param eventBus - 事件总线实例\n * @returns 事件发射函数\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const emit = useAppEventEmitter(eventBus);\n * \n * const handleClick = () => {\n * emit('button:click', { buttonId: 'submit' });\n * };\n * \n * return <button onClick={handleClick}>Click</button>;\n * }\n * ```\n */\nexport function useAppEventEmitter(eventBus: AppEventBus) {\n return useCallback(\n <T = unknown>(\n event: string,\n data?: T,\n metadata?: Partial<import('./types').EventMetadata>\n ) => {\n return eventBus.emit(event, data, metadata);\n },\n [eventBus]\n );\n}\n"],"names":["useAppEvent","useAppEventEmitter","useAppEventOnce","eventBus","event","listener","options","listenerRef","useRef","current","optionsRef","useEffect","wrappedListener","data","metadata","unsubscribe","on","once","useCallback","emit"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QA2BeA;eAAAA;;QA8EAC;eAAAA;;QA1CAC;eAAAA;;;uBA7D+B;AAyBxC,SAASF,YACdG,QAAqB,EACrBC,KAAa,EACbC,QAA0B,EAC1BC,OAA8B;IAE9B,+BAA+B;IAC/B,MAAMC,cAAcC,IAAAA,aAAM,EAAmBH;IAC7CE,YAAYE,OAAO,GAAGJ;IAEtB,oBAAoB;IACpB,MAAMK,aAAaF,IAAAA,aAAM,EAACF;IAC1BI,WAAWD,OAAO,GAAGH;IAErBK,IAAAA,gBAAS,EAAC;QACR,0BAA0B;QAC1B,MAAMC,kBAAoC,CAACC,MAAMC;YAC/C,OAAOP,YAAYE,OAAO,CAACI,MAAMC;QACnC;QAEA,OAAO;QACP,MAAMC,cAAcZ,SAASa,EAAE,CAACZ,OAAOQ,iBAAiBF,WAAWD,OAAO;QAE1E,YAAY;QACZ,OAAOM;IACT,GAAG;QAACZ;QAAUC;KAAM,GAAG,8BAA8B;AACvD;AAUO,SAASF,gBACdC,QAAqB,EACrBC,KAAa,EACbC,QAA0B,EAC1BC,OAA4C;IAE5C,MAAMC,cAAcC,IAAAA,aAAM,EAAmBH;IAC7CE,YAAYE,OAAO,GAAGJ;IAEtB,MAAMK,aAAaF,IAAAA,aAAM,EAACF;IAC1BI,WAAWD,OAAO,GAAGH;IAErBK,IAAAA,gBAAS,EAAC;QACR,MAAMC,kBAAoC,CAACC,MAAMC;YAC/C,OAAOP,YAAYE,OAAO,CAACI,MAAMC;QACnC;QAEA,MAAMC,cAAcZ,SAASc,IAAI,CAACb,OAAOQ,iBAAiBF,WAAWD,OAAO;QAE5E,OAAOM;IACT,GAAG;QAACZ;QAAUC;KAAM;AACtB;AAqBO,SAASH,mBAAmBE,QAAqB;IACtD,OAAOe,IAAAA,kBAAW,EAChB,CACEd,OACAS,MACAC;QAEA,OAAOX,SAASgB,IAAI,CAACf,OAAOS,MAAMC;IACpC,GACA;QAACX;KAAS;AAEd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/hooks.ts"],"sourcesContent":["/**\n * React Hooks 支持\n * 提供便捷的 React 组件事件订阅能力\n */\n\nimport { useEffect, useRef, useCallback } from 'react';\nimport type { EventListener, EventListenerOptions } from './types';\nimport type { AppEventBus } from './AppEventBus';\n\n/**\n * 使用事件总线的 Hook\n * \n * @param eventBus - 事件总线实例\n * @param event - 事件名称\n * @param listener - 事件监听器\n * @param options - 监听器选项\n * \n * @example\n * ```tsx\n * import { useAppEventBus } from '@vlian/framework';\n * \n * function MyComponent() {\n * useAppEvent('user:login', (data, metadata) => {\n * console.log('用户登录:', data);\n * });\n * \n * return <div>My Component</div>;\n * }\n * ```\n */\nexport function useAppEvent<T = unknown>(\n eventBus: AppEventBus,\n event: string,\n listener: EventListener<T>,\n options?: EventListenerOptions\n): void {\n // 使用 ref 保存最新的 listener,避免重复订阅\n const listenerRef = useRef<EventListener<T>>(listener);\n listenerRef.current = listener;\n\n // 使用 ref 保存 options\n const optionsRef = useRef(options);\n optionsRef.current = options;\n\n useEffect(() => {\n // 创建包装的监听器,使用最新的 listener\n const wrappedListener: EventListener<T> = (data, metadata) => {\n return listenerRef.current(data, metadata);\n };\n\n // 订阅事件\n const unsubscribe = eventBus.on(event, wrappedListener, optionsRef.current);\n\n // 清理函数:取消订阅\n return unsubscribe;\n }, [eventBus, event]); // 只在 eventBus 或 event 变化时重新订阅\n}\n\n/**\n * 一次性事件订阅 Hook\n * \n * @param eventBus - 事件总线实例\n * @param event - 事件名称\n * @param listener - 事件监听器\n * @param options - 监听器选项\n */\nexport function useAppEventOnce<T = unknown>(\n eventBus: AppEventBus,\n event: string,\n listener: EventListener<T>,\n options?: Omit<EventListenerOptions, 'once'>\n): void {\n const listenerRef = useRef<EventListener<T>>(listener);\n listenerRef.current = listener;\n\n const optionsRef = useRef(options);\n optionsRef.current = options;\n\n useEffect(() => {\n const wrappedListener: EventListener<T> = (data, metadata) => {\n return listenerRef.current(data, metadata);\n };\n\n const unsubscribe = eventBus.once(event, wrappedListener, optionsRef.current);\n\n return unsubscribe;\n }, [eventBus, event]);\n}\n\n/**\n * 创建事件发射器 Hook\n * \n * @param eventBus - 事件总线实例\n * @returns 事件发射函数\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const emit = useAppEventEmitter(eventBus);\n * \n * const handleClick = () => {\n * emit('button:click', { buttonId: 'submit' });\n * };\n * \n * return <button onClick={handleClick}>Click</button>;\n * }\n * ```\n */\nexport function useAppEventEmitter(eventBus: AppEventBus) {\n return useCallback(\n <T = unknown>(\n event: string,\n data?: T,\n metadata?: Partial<import('./types').EventMetadata>\n ) => {\n return eventBus.emit(event, data, metadata);\n },\n [eventBus]\n );\n}\n"],"names":["useEffect","useRef","useCallback","useAppEvent","eventBus","event","listener","options","listenerRef","current","optionsRef","wrappedListener","data","metadata","unsubscribe","on","useAppEventOnce","once","useAppEventEmitter","emit"],"mappings":"AAAA;;;CAGC,GAED,SAASA,SAAS,EAAEC,MAAM,EAAEC,WAAW,QAAQ,QAAQ;AAIvD;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASC,YACdC,QAAqB,EACrBC,KAAa,EACbC,QAA0B,EAC1BC,OAA8B;IAE9B,+BAA+B;IAC/B,MAAMC,cAAcP,OAAyBK;IAC7CE,YAAYC,OAAO,GAAGH;IAEtB,oBAAoB;IACpB,MAAMI,aAAaT,OAAOM;IAC1BG,WAAWD,OAAO,GAAGF;IAErBP,UAAU;QACR,0BAA0B;QAC1B,MAAMW,kBAAoC,CAACC,MAAMC;YAC/C,OAAOL,YAAYC,OAAO,CAACG,MAAMC;QACnC;QAEA,OAAO;QACP,MAAMC,cAAcV,SAASW,EAAE,CAACV,OAAOM,iBAAiBD,WAAWD,OAAO;QAE1E,YAAY;QACZ,OAAOK;IACT,GAAG;QAACV;QAAUC;KAAM,GAAG,8BAA8B;AACvD;AAEA;;;;;;;CAOC,GACD,OAAO,SAASW,gBACdZ,QAAqB,EACrBC,KAAa,EACbC,QAA0B,EAC1BC,OAA4C;IAE5C,MAAMC,cAAcP,OAAyBK;IAC7CE,YAAYC,OAAO,GAAGH;IAEtB,MAAMI,aAAaT,OAAOM;IAC1BG,WAAWD,OAAO,GAAGF;IAErBP,UAAU;QACR,MAAMW,kBAAoC,CAACC,MAAMC;YAC/C,OAAOL,YAAYC,OAAO,CAACG,MAAMC;QACnC;QAEA,MAAMC,cAAcV,SAASa,IAAI,CAACZ,OAAOM,iBAAiBD,WAAWD,OAAO;QAE5E,OAAOK;IACT,GAAG;QAACV;QAAUC;KAAM;AACtB;AAEA;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASa,mBAAmBd,QAAqB;IACtD,OAAOF,YACL,CACEG,OACAO,MACAC;QAEA,OAAOT,SAASe,IAAI,CAACd,OAAOO,MAAMC;IACpC,GACA;QAACT;KAAS;AAEd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/index.ts"],"sourcesContent":["/**\n * 应用级事件系统\n * 提供高性能、类型安全、可观测的事件通信能力\n */\n\nexport { AppEventBus } from './AppEventBus';\nexport { FrameworkEventManager } from './frameworkEvents';\nexport {\n useAppEvent,\n useAppEventOnce,\n useAppEventEmitter,\n} from './hooks';\n\nexport { useEventBus } from './useEventBus';\n\nexport type {\n EventListener,\n EventMetadata,\n EventWrapper,\n EventMiddleware,\n EventListenerOptions,\n AppEventBusConfig,\n EventStats,\n FrameworkEventData,\n} from './types';\n\nexport { FrameworkEventType } from './types';\n"],"names":["AppEventBus","FrameworkEventManager","FrameworkEventType","useAppEvent","useAppEventEmitter","useAppEventOnce","useEventBus"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QAEQA;eAAAA,wBAAW;;QACXC;eAAAA,sCAAqB;;QAoBrBC;eAAAA,yBAAkB;;QAlBzBC;eAAAA,kBAAW;;QAEXC;eAAAA,yBAAkB;;QADlBC;eAAAA,sBAAe;;QAIRC;eAAAA,wBAAW;;;6BARQ;iCACU;uBAK/B;6BAEqB;uBAaO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/index.ts"],"sourcesContent":["/**\n * 应用级事件系统\n * 提供高性能、类型安全、可观测的事件通信能力\n */\n\nexport { AppEventBus } from './AppEventBus';\nexport { FrameworkEventManager } from './frameworkEvents';\nexport {\n useAppEvent,\n useAppEventOnce,\n useAppEventEmitter,\n} from './hooks';\n\nexport { useEventBus } from './useEventBus';\n\nexport type {\n EventListener,\n EventMetadata,\n EventWrapper,\n EventMiddleware,\n EventListenerOptions,\n AppEventBusConfig,\n EventStats,\n FrameworkEventData,\n} from './types';\n\nexport { FrameworkEventType } from './types';\n"],"names":["AppEventBus","FrameworkEventManager","useAppEvent","useAppEventOnce","useAppEventEmitter","useEventBus","FrameworkEventType"],"mappings":"AAAA;;;CAGC,GAED,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,qBAAqB,QAAQ,oBAAoB;AAC1D,SACEC,WAAW,EACXC,eAAe,EACfC,kBAAkB,QACb,UAAU;AAEjB,SAASC,WAAW,QAAQ,gBAAgB;AAa5C,SAASC,kBAAkB,QAAQ,UAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/types.ts"],"sourcesContent":["/**\n * 应用级事件系统类型定义\n * 提供类型安全的事件通信能力\n */\n\n/**\n * 事件监听器类型\n * \n * @template T - 事件数据类型\n */\nexport type EventListener<T = unknown> = (data: T, metadata: EventMetadata) => void | Promise<void>;\n\n/**\n * 事件元数据\n */\nexport interface EventMetadata {\n /**\n * 事件来源(模块/组件名称)\n */\n source?: string;\n \n /**\n * 事件时间戳\n */\n timestamp: number;\n \n /**\n * 事件ID(用于追踪)\n */\n eventId: string;\n \n /**\n * 事件优先级(数字越小优先级越高)\n */\n priority?: number;\n \n /**\n * 应用实例ID(多实例场景)\n */\n instanceId?: string;\n \n /**\n * 事件命名空间(用于作用域隔离)\n */\n namespace?: string;\n \n /**\n * 自定义元数据\n */\n [key: string]: unknown;\n}\n\n/**\n * 事件包装器\n * \n * @template T - 事件数据类型\n */\nexport interface EventWrapper<T = unknown> {\n /**\n * 事件数据\n */\n data: T;\n \n /**\n * 事件元数据\n */\n metadata: EventMetadata;\n}\n\n/**\n * 事件中间件函数类型\n * \n * @template T - 事件数据类型\n */\nexport type EventMiddleware<T = unknown> = (\n event: string,\n data: T,\n metadata: EventMetadata,\n next: () => Promise<void>\n) => Promise<void> | void;\n\n/**\n * 事件监听器选项\n */\nexport interface EventListenerOptions {\n /**\n * 监听器优先级(数字越小优先级越高)\n */\n priority?: number;\n \n /**\n * 是否只执行一次\n */\n once?: boolean;\n \n /**\n * 事件命名空间(用于作用域隔离)\n */\n namespace?: string;\n \n /**\n * 是否异步执行\n */\n async?: boolean;\n}\n\n/**\n * 事件总线配置\n */\nexport interface AppEventBusConfig {\n /**\n * 是否启用事件追踪\n */\n enableTracking?: boolean;\n \n /**\n * 最大事件历史记录数\n */\n maxHistorySize?: number;\n \n /**\n * 是否启用事件验证\n */\n enableValidation?: boolean;\n \n /**\n * 事件验证函数\n */\n validator?: (event: string, data: unknown) => boolean;\n \n /**\n * 是否启用性能监控\n */\n enablePerformanceMonitoring?: boolean;\n \n /**\n * 事件命名空间前缀(用于多实例隔离)\n */\n namespacePrefix?: string;\n \n /**\n * 应用实例ID(多实例场景)\n */\n instanceId?: string;\n \n /**\n * 是否启用安全模式(限制事件来源)\n */\n enableSecurityMode?: boolean;\n \n /**\n * 允许的事件来源白名单(安全模式)\n */\n allowedSources?: string[];\n}\n\n/**\n * 事件统计信息\n */\nexport interface EventStats {\n /**\n * 事件名称\n */\n event: string;\n \n /**\n * 触发次数\n */\n count: number;\n \n /**\n * 平均执行时间(毫秒)\n */\n avgExecutionTime: number;\n \n /**\n * 监听器数量\n */\n listenerCount: number;\n \n /**\n * 最后触发时间\n */\n lastTriggered: number;\n}\n\n/**\n * 框架内置事件类型\n */\nexport enum FrameworkEventType {\n /**\n * 应用启动开始\n */\n APP_START = 'framework:app:start',\n \n /**\n * 应用启动完成\n */\n APP_STARTED = 'framework:app:started',\n \n /**\n * 应用初始化开始\n */\n APP_INIT_START = 'framework:app:init:start',\n \n /**\n * 应用初始化完成\n */\n APP_INIT_COMPLETE = 'framework:app:init:complete',\n \n /**\n * 应用初始化失败\n */\n APP_INIT_ERROR = 'framework:app:init:error',\n \n /**\n * 应用渲染开始\n */\n APP_RENDER_START = 'framework:app:render:start',\n \n /**\n * 应用渲染完成\n */\n APP_RENDER_COMPLETE = 'framework:app:render:complete',\n \n /**\n * 路由变化\n */\n ROUTE_CHANGE = 'framework:route:change',\n \n /**\n * 路由导航开始\n */\n ROUTE_NAVIGATE_START = 'framework:route:navigate:start',\n \n /**\n * 路由导航完成\n */\n ROUTE_NAVIGATE_COMPLETE = 'framework:route:navigate:complete',\n \n /**\n * 错误发生\n */\n ERROR_OCCURRED = 'framework:error:occurred',\n \n /**\n * 实例创建\n */\n INSTANCE_CREATED = 'framework:instance:created',\n \n /**\n * 实例销毁\n */\n INSTANCE_DESTROYED = 'framework:instance:destroyed',\n \n /**\n * 性能指标更新\n */\n PERFORMANCE_UPDATE = 'framework:performance:update',\n}\n\n/**\n * 框架事件数据类型定义\n */\nexport interface FrameworkEventData {\n [FrameworkEventType.APP_START]: { instanceId?: string };\n [FrameworkEventType.APP_STARTED]: { instanceId?: string; duration: number };\n [FrameworkEventType.APP_INIT_START]: { instanceId?: string };\n [FrameworkEventType.APP_INIT_COMPLETE]: { instanceId?: string; context: unknown; duration: number };\n [FrameworkEventType.APP_INIT_ERROR]: { instanceId?: string; error: Error };\n [FrameworkEventType.APP_RENDER_START]: { instanceId?: string };\n [FrameworkEventType.APP_RENDER_COMPLETE]: { instanceId?: string; duration: number };\n [FrameworkEventType.ROUTE_CHANGE]: { from: string; to: string; params?: Record<string, unknown> };\n [FrameworkEventType.ROUTE_NAVIGATE_START]: { to: string; options?: unknown };\n [FrameworkEventType.ROUTE_NAVIGATE_COMPLETE]: { to: string; duration: number };\n [FrameworkEventType.ERROR_OCCURRED]: { error: Error; context?: unknown };\n [FrameworkEventType.INSTANCE_CREATED]: { instanceId: string };\n [FrameworkEventType.INSTANCE_DESTROYED]: { instanceId: string };\n [FrameworkEventType.PERFORMANCE_UPDATE]: { metrics: Record<string, number> };\n}\n"],"names":["FrameworkEventType"],"mappings":"AAAA;;;CAGC,GAED;;;;CAIC;;;;+BAoLWA;;;eAAAA;;;AAAL,IAAA,AAAKA,4CAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WApESA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/types.ts"],"sourcesContent":["/**\n * 应用级事件系统类型定义\n * 提供类型安全的事件通信能力\n */\n\n/**\n * 事件监听器类型\n * \n * @template T - 事件数据类型\n */\nexport type EventListener<T = unknown> = (data: T, metadata: EventMetadata) => void | Promise<void>;\n\n/**\n * 事件元数据\n */\nexport interface EventMetadata {\n /**\n * 事件来源(模块/组件名称)\n */\n source?: string;\n \n /**\n * 事件时间戳\n */\n timestamp: number;\n \n /**\n * 事件ID(用于追踪)\n */\n eventId: string;\n \n /**\n * 事件优先级(数字越小优先级越高)\n */\n priority?: number;\n \n /**\n * 应用实例ID(多实例场景)\n */\n instanceId?: string;\n \n /**\n * 事件命名空间(用于作用域隔离)\n */\n namespace?: string;\n \n /**\n * 自定义元数据\n */\n [key: string]: unknown;\n}\n\n/**\n * 事件包装器\n * \n * @template T - 事件数据类型\n */\nexport interface EventWrapper<T = unknown> {\n /**\n * 事件数据\n */\n data: T;\n \n /**\n * 事件元数据\n */\n metadata: EventMetadata;\n}\n\n/**\n * 事件中间件函数类型\n * \n * @template T - 事件数据类型\n */\nexport type EventMiddleware<T = unknown> = (\n event: string,\n data: T,\n metadata: EventMetadata,\n next: () => Promise<void>\n) => Promise<void> | void;\n\n/**\n * 事件监听器选项\n */\nexport interface EventListenerOptions {\n /**\n * 监听器优先级(数字越小优先级越高)\n */\n priority?: number;\n \n /**\n * 是否只执行一次\n */\n once?: boolean;\n \n /**\n * 事件命名空间(用于作用域隔离)\n */\n namespace?: string;\n \n /**\n * 是否异步执行\n */\n async?: boolean;\n}\n\n/**\n * 事件总线配置\n */\nexport interface AppEventBusConfig {\n /**\n * 是否启用事件追踪\n */\n enableTracking?: boolean;\n \n /**\n * 最大事件历史记录数\n */\n maxHistorySize?: number;\n \n /**\n * 是否启用事件验证\n */\n enableValidation?: boolean;\n \n /**\n * 事件验证函数\n */\n validator?: (event: string, data: unknown) => boolean;\n \n /**\n * 是否启用性能监控\n */\n enablePerformanceMonitoring?: boolean;\n \n /**\n * 事件命名空间前缀(用于多实例隔离)\n */\n namespacePrefix?: string;\n \n /**\n * 应用实例ID(多实例场景)\n */\n instanceId?: string;\n \n /**\n * 是否启用安全模式(限制事件来源)\n */\n enableSecurityMode?: boolean;\n \n /**\n * 允许的事件来源白名单(安全模式)\n */\n allowedSources?: string[];\n}\n\n/**\n * 事件统计信息\n */\nexport interface EventStats {\n /**\n * 事件名称\n */\n event: string;\n \n /**\n * 触发次数\n */\n count: number;\n \n /**\n * 平均执行时间(毫秒)\n */\n avgExecutionTime: number;\n \n /**\n * 监听器数量\n */\n listenerCount: number;\n \n /**\n * 最后触发时间\n */\n lastTriggered: number;\n}\n\n/**\n * 框架内置事件类型\n */\nexport enum FrameworkEventType {\n /**\n * 应用启动开始\n */\n APP_START = 'framework:app:start',\n \n /**\n * 应用启动完成\n */\n APP_STARTED = 'framework:app:started',\n \n /**\n * 应用初始化开始\n */\n APP_INIT_START = 'framework:app:init:start',\n \n /**\n * 应用初始化完成\n */\n APP_INIT_COMPLETE = 'framework:app:init:complete',\n \n /**\n * 应用初始化失败\n */\n APP_INIT_ERROR = 'framework:app:init:error',\n \n /**\n * 应用渲染开始\n */\n APP_RENDER_START = 'framework:app:render:start',\n \n /**\n * 应用渲染完成\n */\n APP_RENDER_COMPLETE = 'framework:app:render:complete',\n \n /**\n * 路由变化\n */\n ROUTE_CHANGE = 'framework:route:change',\n \n /**\n * 路由导航开始\n */\n ROUTE_NAVIGATE_START = 'framework:route:navigate:start',\n \n /**\n * 路由导航完成\n */\n ROUTE_NAVIGATE_COMPLETE = 'framework:route:navigate:complete',\n \n /**\n * 错误发生\n */\n ERROR_OCCURRED = 'framework:error:occurred',\n \n /**\n * 实例创建\n */\n INSTANCE_CREATED = 'framework:instance:created',\n \n /**\n * 实例销毁\n */\n INSTANCE_DESTROYED = 'framework:instance:destroyed',\n \n /**\n * 性能指标更新\n */\n PERFORMANCE_UPDATE = 'framework:performance:update',\n}\n\n/**\n * 框架事件数据类型定义\n */\nexport interface FrameworkEventData {\n [FrameworkEventType.APP_START]: { instanceId?: string };\n [FrameworkEventType.APP_STARTED]: { instanceId?: string; duration: number };\n [FrameworkEventType.APP_INIT_START]: { instanceId?: string };\n [FrameworkEventType.APP_INIT_COMPLETE]: { instanceId?: string; context: unknown; duration: number };\n [FrameworkEventType.APP_INIT_ERROR]: { instanceId?: string; error: Error };\n [FrameworkEventType.APP_RENDER_START]: { instanceId?: string };\n [FrameworkEventType.APP_RENDER_COMPLETE]: { instanceId?: string; duration: number };\n [FrameworkEventType.ROUTE_CHANGE]: { from: string; to: string; params?: Record<string, unknown> };\n [FrameworkEventType.ROUTE_NAVIGATE_START]: { to: string; options?: unknown };\n [FrameworkEventType.ROUTE_NAVIGATE_COMPLETE]: { to: string; duration: number };\n [FrameworkEventType.ERROR_OCCURRED]: { error: Error; context?: unknown };\n [FrameworkEventType.INSTANCE_CREATED]: { instanceId: string };\n [FrameworkEventType.INSTANCE_DESTROYED]: { instanceId: string };\n [FrameworkEventType.PERFORMANCE_UPDATE]: { metrics: Record<string, number> };\n}\n"],"names":["FrameworkEventType"],"mappings":"AAAA;;;CAGC,GAED;;;;CAIC,GAiLD;;CAEC,GACD,OAAO,IAAA,AAAKA,4CAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WApESA;MAsEX"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/useEventBus.ts"],"sourcesContent":["/**\n * 便捷的 Hook:获取当前应用实例的事件总线\n */\n\nimport { getAppInstanceManager } from '../startup/AppInstance';\nimport type { AppEventBus } from './AppEventBus';\n\n/**\n * 获取当前应用实例的事件总线\n * \n * @returns 事件总线实例\n * \n * @example\n * ```tsx\n * import { useEventBus } from '@vlian/framework';\n * \n * function MyComponent() {\n * const eventBus = useEventBus();\n * \n * useEffect(() => {\n * const unsubscribe = eventBus.on('user:login', (data) => {\n * console.log('用户登录:', data);\n * });\n * return unsubscribe;\n * }, [eventBus]);\n * \n * return <div>My Component</div>;\n * }\n * ```\n */\nexport function useEventBus(): AppEventBus {\n const instanceManager = getAppInstanceManager();\n const instance = instanceManager.getInstance();\n \n if (!instance) {\n throw new Error('应用实例未找到');\n }\n \n const eventBus = instance.getEventBus();\n \n if (!eventBus) {\n throw new Error('事件总线未初始化');\n }\n \n return eventBus;\n}\n"],"names":["useEventBus","instanceManager","getAppInstanceManager","instance","getInstance","Error","eventBus","getEventBus"],"mappings":"AAAA;;CAEC;;;;+BA4BeA;;;eAAAA;;;6BA1BsB;AA0B/B,SAASA;IACd,MAAMC,kBAAkBC,IAAAA,kCAAqB;IAC7C,MAAMC,WAAWF,gBAAgBG,WAAW;IAE5C,IAAI,CAACD,UAAU;QACb,MAAM,IAAIE,MAAM;IAClB;IAEA,MAAMC,WAAWH,SAASI,WAAW;IAErC,IAAI,CAACD,UAAU;QACb,MAAM,IAAID,MAAM;IAClB;IAEA,OAAOC;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/event/useEventBus.ts"],"sourcesContent":["/**\n * 便捷的 Hook:获取当前应用实例的事件总线\n */\n\nimport { getAppInstanceManager } from '../startup/AppInstance';\nimport type { AppEventBus } from './AppEventBus';\n\n/**\n * 获取当前应用实例的事件总线\n * \n * @returns 事件总线实例\n * \n * @example\n * ```tsx\n * import { useEventBus } from '@vlian/framework';\n * \n * function MyComponent() {\n * const eventBus = useEventBus();\n * \n * useEffect(() => {\n * const unsubscribe = eventBus.on('user:login', (data) => {\n * console.log('用户登录:', data);\n * });\n * return unsubscribe;\n * }, [eventBus]);\n * \n * return <div>My Component</div>;\n * }\n * ```\n */\nexport function useEventBus(): AppEventBus {\n const instanceManager = getAppInstanceManager();\n const instance = instanceManager.getInstance();\n \n if (!instance) {\n throw new Error('应用实例未找到');\n }\n \n const eventBus = instance.getEventBus();\n \n if (!eventBus) {\n throw new Error('事件总线未初始化');\n }\n \n return eventBus;\n}\n"],"names":["getAppInstanceManager","useEventBus","instanceManager","instance","getInstance","Error","eventBus","getEventBus"],"mappings":"AAAA;;CAEC,GAED,SAASA,qBAAqB,QAAQ,yBAAyB;AAG/D;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,SAASC;IACd,MAAMC,kBAAkBF;IACxB,MAAMG,WAAWD,gBAAgBE,WAAW;IAE5C,IAAI,CAACD,UAAU;QACb,MAAM,IAAIE,MAAM;IAClB;IAEA,MAAMC,WAAWH,SAASI,WAAW;IAErC,IAAI,CAACD,UAAU;QACb,MAAM,IAAID,MAAM;IAClB;IAEA,OAAOC;AACT"}
|
package/dist/core/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/index.tsx"],"sourcesContent":["import type { StartOptions } from \"./types\";\nimport { storage } from '../library';\nimport { StateManager } from '../state';\nimport { startApp } from './startup/startApp';\nimport { getAppInstanceManager } from './startup/AppInstance';\n\n\n/**\n * 启动框架\n * \n * @param options - 启动配置选项\n * @returns Promise<void>\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * loggerLevel: LogLevel.DEBUG,\n * lifecycle: {\n * beforeInitialization: async () => {\n * console.log('初始化前执行');\n * },\n * },\n * });\n * ```\n */\n/**\n * 启动框架(向后兼容的API)\n * \n * @param options - 启动配置选项\n * @returns Promise<void>\n * \n * @deprecated 建议使用 startApp 函数,支持多实例\n */\nconst start = async (options: StartOptions = {}): Promise<void> => {\n // 使用新的启动函数,保持向后兼容\n await startApp(options);\n};\n\n// 导出新的启动函数\nexport { startApp } from './startup/startApp';\nexport { getAppInstanceManager } from './startup/AppInstance';\nexport type { AppInstance } from './startup/AppInstance';\n\n// 导出向后兼容的start函数\nexport {\n start,\n storage,\n};\n\n// 导出getStateManager(向后兼容)\nexport const getStateManager = (): StateManager | null => {\n const instanceManager = getAppInstanceManager();\n const instance = instanceManager.getInstance();\n if (instance) {\n return instance.getServices().stateManager;\n }\n return null;\n};\n\n// 导出应用上下文相关功能\nexport {\n AppContextProvider,\n useAppContext,\n useTheme,\n useLocale,\n useConfig,\n useStateManager,\n} from './app';\n\n// 导出错误边界\nexport { ErrorBoundary, withErrorBoundary, useErrorHandler } from './error';\nexport type { ErrorBoundaryProps } from './error';\n\n// 导出应用配置单例\nexport { appConfig } from './config/AppConfig';\n\n// 导出初始化相关类型\nexport type {\n InitializationContext,\n InitializationOptions,\n ProgressCallback,\n} from './initialization';\n\n// 导出中间件\nexport { MiddlewareManager, middlewareManager } from './middleware';\nexport type { Middleware } from './middleware';\n\n// 导出插件\nexport { PluginManager, pluginManager } from './plugin';\nexport type { Plugin } from './plugin';\n\n// 导出应用上下文相关类型\nexport type {\n AppContextValue,\n ThemeContextValue,\n LocaleContextValue,\n ConfigContextValue,\n StateManagerContextValue,\n ThemeConfig,\n AppConfig,\n AppContextProviderProps,\n} from './app';\n\n// 导出启动配置相关类型\nexport type { StartOptions, ManagerLifecycle, SplashScreenCustomProps } from './types';\n\n// 导出启动相关模块\nexport * from './startup';\nexport * from './config';\nexport * from './kernel';\n\n// 导出路由相关模块\nexport * from './router';\n\n// 导出事件系统\nexport * from './event';\n\n// 导出开发工具\nexport { DevTools, DevToolsTrigger } from './dev/DevTools';\n"],"names":["AppContextProvider","DevTools","DevToolsTrigger","ErrorBoundary","MiddlewareManager","PluginManager","appConfig","getAppInstanceManager","getStateManager","middlewareManager","pluginManager","start","startApp","storage","useAppContext","useConfig","useErrorHandler","useLocale","useStateManager","useTheme","withErrorBoundary","options","instanceManager","instance","getInstance","getServices","stateManager"],"mappings":";;;;;;;;;;;QA+DIA;eAAAA,uBAAkB;;QAyDbC;eAAAA,kBAAQ;;QAAEC;eAAAA,yBAAe;;QAhDzBC;eAAAA,oBAAa;;QAcbC;eAAAA,6BAAiB;;QAIjBC;eAAAA,qBAAa;;QAdbC;eAAAA,oBAAS;;QAlCTC;eAAAA,kCAAqB;;QAUjBC;eAAAA;;QAkCeC;eAAAA,6BAAiB;;QAIrBC;eAAAA,qBAAa;;QA3CjCC;eAAAA;;QANKC;eAAAA,kBAAQ;;QAObC;eAAAA,gBAAO;;QAgBPC;eAAAA,kBAAa;;QAGbC;eAAAA,cAAS;;QAK8BC;eAAAA,sBAAe;;QANtDC;eAAAA,cAAS;;QAETC;eAAAA,oBAAe;;QAHfC;eAAAA,aAAQ;;QAOYC;eAAAA,wBAAiB;;;yBAvEjB;0BAEC;6BACa;qBAiE/B;uBAG2D;2BAIxC;4BAU2B;wBAIR;qBAmB/B;qBACA;qBACA;qBAGA;qBAGA;0BAG4B;;;;;;;;;;;;;;AAjH1C;;;;;;;;;;;;;;;;;;;CAmBC,GACD;;;;;;;CAOC,GACD,MAAMT,QAAQ,OAAOU,UAAwB,CAAC,CAAC;IAC3C,kBAAkB;IAClB,MAAMT,IAAAA,kBAAQ,EAACS;AACnB;AAcO,MAAMb,kBAAkB;IAC3B,MAAMc,kBAAkBf,IAAAA,kCAAqB;IAC7C,MAAMgB,WAAWD,gBAAgBE,WAAW;IAC5C,IAAID,UAAU;QACV,OAAOA,SAASE,WAAW,GAAGC,YAAY;IAC9C;IACA,OAAO;AACX"}
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/index.tsx"],"sourcesContent":["import type { StartOptions } from \"./types\";\nimport { storage } from '../library';\nimport { StateManager } from '../state';\nimport { startApp } from './startup/startApp';\nimport { getAppInstanceManager } from './startup/AppInstance';\n\n\n/**\n * 启动框架\n * \n * @param options - 启动配置选项\n * @returns Promise<void>\n * \n * @example\n * ```typescript\n * import { start } from '@vlian/framework';\n * \n * start({\n * loggerLevel: LogLevel.DEBUG,\n * lifecycle: {\n * beforeInitialization: async () => {\n * console.log('初始化前执行');\n * },\n * },\n * });\n * ```\n */\n/**\n * 启动框架(向后兼容的API)\n * \n * @param options - 启动配置选项\n * @returns Promise<void>\n * \n * @deprecated 建议使用 startApp 函数,支持多实例\n */\nconst start = async (options: StartOptions = {}): Promise<void> => {\n // 使用新的启动函数,保持向后兼容\n await startApp(options);\n};\n\n// 导出新的启动函数\nexport { startApp } from './startup/startApp';\nexport { getAppInstanceManager } from './startup/AppInstance';\nexport type { AppInstance } from './startup/AppInstance';\n\n// 导出向后兼容的start函数\nexport {\n start,\n storage,\n};\n\n// 导出getStateManager(向后兼容)\nexport const getStateManager = (): StateManager | null => {\n const instanceManager = getAppInstanceManager();\n const instance = instanceManager.getInstance();\n if (instance) {\n return instance.getServices().stateManager;\n }\n return null;\n};\n\n// 导出应用上下文相关功能\nexport {\n AppContextProvider,\n useAppContext,\n useTheme,\n useLocale,\n useConfig,\n useStateManager,\n} from './app';\n\n// 导出错误边界\nexport { ErrorBoundary, withErrorBoundary, useErrorHandler } from './error';\nexport type { ErrorBoundaryProps } from './error';\n\n// 导出应用配置单例\nexport { appConfig } from './config/AppConfig';\n\n// 导出初始化相关类型\nexport type {\n InitializationContext,\n InitializationOptions,\n ProgressCallback,\n} from './initialization';\n\n// 导出中间件\nexport { MiddlewareManager, middlewareManager } from './middleware';\nexport type { Middleware } from './middleware';\n\n// 导出插件\nexport { PluginManager, pluginManager } from './plugin';\nexport type { Plugin } from './plugin';\n\n// 导出应用上下文相关类型\nexport type {\n AppContextValue,\n ThemeContextValue,\n LocaleContextValue,\n ConfigContextValue,\n StateManagerContextValue,\n ThemeConfig,\n AppConfig,\n AppContextProviderProps,\n} from './app';\n\n// 导出启动配置相关类型\nexport type { StartOptions, ManagerLifecycle, SplashScreenCustomProps } from './types';\n\n// 导出启动相关模块\nexport * from './startup';\nexport * from './config';\nexport * from './kernel';\n\n// 导出路由相关模块\nexport * from './router';\n\n// 导出事件系统\nexport * from './event';\n\n// 导出开发工具\nexport { DevTools, DevToolsTrigger } from './dev/DevTools';\n"],"names":["storage","startApp","getAppInstanceManager","start","options","getStateManager","instanceManager","instance","getInstance","getServices","stateManager","AppContextProvider","useAppContext","useTheme","useLocale","useConfig","useStateManager","ErrorBoundary","withErrorBoundary","useErrorHandler","appConfig","MiddlewareManager","middlewareManager","PluginManager","pluginManager","DevTools","DevToolsTrigger"],"mappings":"AACA,SAASA,OAAO,QAAQ,aAAa;AAErC,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,qBAAqB,QAAQ,wBAAwB;AAG9D;;;;;;;;;;;;;;;;;;;CAmBC,GACD;;;;;;;CAOC,GACD,MAAMC,QAAQ,OAAOC,UAAwB,CAAC,CAAC;IAC3C,kBAAkB;IAClB,MAAMH,SAASG;AACnB;AAEA,WAAW;AACX,SAASH,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,qBAAqB,QAAQ,wBAAwB;AAG9D,iBAAiB;AACjB,SACIC,KAAK,EACLH,OAAO,GACT;AAEF,0BAA0B;AAC1B,OAAO,MAAMK,kBAAkB;IAC3B,MAAMC,kBAAkBJ;IACxB,MAAMK,WAAWD,gBAAgBE,WAAW;IAC5C,IAAID,UAAU;QACV,OAAOA,SAASE,WAAW,GAAGC,YAAY;IAC9C;IACA,OAAO;AACX,EAAE;AAEF,cAAc;AACd,SACIC,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,eAAe,QACZ,QAAQ;AAEf,SAAS;AACT,SAASC,aAAa,EAAEC,iBAAiB,EAAEC,eAAe,QAAQ,UAAU;AAG5E,WAAW;AACX,SAASC,SAAS,QAAQ,qBAAqB;AAS/C,QAAQ;AACR,SAASC,iBAAiB,EAAEC,iBAAiB,QAAQ,eAAe;AAGpE,OAAO;AACP,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAW;AAkBxD,WAAW;AACX,cAAc,YAAY;AAC1B,cAAc,WAAW;AACzB,cAAc,WAAW;AAEzB,WAAW;AACX,cAAc,WAAW;AAEzB,SAAS;AACT,cAAc,UAAU;AAExB,SAAS;AACT,SAASC,QAAQ,EAAEC,eAAe,QAAQ,iBAAiB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/InitializationErrorThrower.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { initializationErrorState } from './initializationErrorState';\nimport type { FrameworkError } from '@vlian/utils';\n\n/**\n * 初始化错误抛出组件\n * \n * 当检测到初始化错误时,主动抛出错误给 ErrorBoundary 捕获\n */\nexport const InitializationErrorThrower: React.FC = () => {\n const [error, setError] = useState<FrameworkError | null>(null);\n\n useEffect(() => {\n // 检查初始错误\n const currentError = initializationErrorState.getError();\n if (currentError) {\n setError(currentError);\n return;\n }\n\n // 订阅错误变化\n const unsubscribe = initializationErrorState.subscribe(() => {\n const newError = initializationErrorState.getError();\n setError(newError);\n });\n\n return unsubscribe;\n }, []);\n\n // 如果有错误,抛出错误给 ErrorBoundary\n if (error) {\n throw error;\n }\n\n return null;\n};\n"],"names":["InitializationErrorThrower","error","setError","useState","useEffect","currentError","initializationErrorState","getError","unsubscribe","subscribe","newError"],"mappings":";;;;+BASaA;;;eAAAA;;;+DAT8B;0CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQlC,MAAMA,6BAAuC;IAClD,MAAM,CAACC,OAAOC,SAAS,GAAGC,IAAAA,eAAQ,EAAwB;IAE1DC,IAAAA,gBAAS,EAAC;QACR,SAAS;QACT,MAAMC,eAAeC,kDAAwB,CAACC,QAAQ;QACtD,IAAIF,cAAc;YAChBH,SAASG;YACT;QACF;QAEA,SAAS;QACT,MAAMG,cAAcF,kDAAwB,CAACG,SAAS,CAAC;YACrD,MAAMC,WAAWJ,kDAAwB,CAACC,QAAQ;YAClDL,SAASQ;QACX;QAEA,OAAOF;IACT,GAAG,EAAE;IAEL,4BAA4B;IAC5B,IAAIP,OAAO;QACT,MAAMA;IACR;IAEA,OAAO;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/InitializationErrorThrower.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { initializationErrorState } from './initializationErrorState';\nimport type { FrameworkError } from '@vlian/utils';\n\n/**\n * 初始化错误抛出组件\n * \n * 当检测到初始化错误时,主动抛出错误给 ErrorBoundary 捕获\n */\nexport const InitializationErrorThrower: React.FC = () => {\n const [error, setError] = useState<FrameworkError | null>(null);\n\n useEffect(() => {\n // 检查初始错误\n const currentError = initializationErrorState.getError();\n if (currentError) {\n setError(currentError);\n return;\n }\n\n // 订阅错误变化\n const unsubscribe = initializationErrorState.subscribe(() => {\n const newError = initializationErrorState.getError();\n setError(newError);\n });\n\n return unsubscribe;\n }, []);\n\n // 如果有错误,抛出错误给 ErrorBoundary\n if (error) {\n throw error;\n }\n\n return null;\n};\n"],"names":["React","useEffect","useState","initializationErrorState","InitializationErrorThrower","error","setError","currentError","getError","unsubscribe","subscribe","newError"],"mappings":"AAAA,OAAOA,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AACnD,SAASC,wBAAwB,QAAQ,6BAA6B;AAGtE;;;;CAIC,GACD,OAAO,MAAMC,6BAAuC;IAClD,MAAM,CAACC,OAAOC,SAAS,GAAGJ,SAAgC;IAE1DD,UAAU;QACR,SAAS;QACT,MAAMM,eAAeJ,yBAAyBK,QAAQ;QACtD,IAAID,cAAc;YAChBD,SAASC;YACT;QACF;QAEA,SAAS;QACT,MAAME,cAAcN,yBAAyBO,SAAS,CAAC;YACrD,MAAMC,WAAWR,yBAAyBK,QAAQ;YAClDF,SAASK;QACX;QAEA,OAAOF;IACT,GAAG,EAAE;IAEL,4BAA4B;IAC5B,IAAIJ,OAAO;QACT,MAAMA;IACR;IAEA,OAAO;AACT,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/index.ts"],"sourcesContent":["/**\n * 初始化模块统一导出\n */\n\nexport { initialization } from './initialization';\nexport type {\n InitializationContext,\n InitializationOptions,\n ProgressCallback,\n} from './initialization';\nexport { InitializationErrorThrower } from './InitializationErrorThrower';\nexport { initializationErrorState } from './initializationErrorState';\n"],"names":["InitializationErrorThrower","initialization","initializationErrorState"],"mappings":"AAAA;;CAEC;;;;;;;;;;;QAQQA;eAAAA,sDAA0B;;QAN1BC;eAAAA,8BAAc;;QAOdC;eAAAA,kDAAwB;;;gCAPF;4CAMY;0CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/index.ts"],"sourcesContent":["/**\n * 初始化模块统一导出\n */\n\nexport { initialization } from './initialization';\nexport type {\n InitializationContext,\n InitializationOptions,\n ProgressCallback,\n} from './initialization';\nexport { InitializationErrorThrower } from './InitializationErrorThrower';\nexport { initializationErrorState } from './initializationErrorState';\n"],"names":["initialization","InitializationErrorThrower","initializationErrorState"],"mappings":"AAAA;;CAEC,GAED,SAASA,cAAc,QAAQ,mBAAmB;AAMlD,SAASC,0BAA0B,QAAQ,+BAA+B;AAC1E,SAASC,wBAAwB,QAAQ,6BAA6B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/initialization.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport { setupI18n } from '../../library';\nimport type { LangType } from '../../library/locale/types';\nimport type { ManagerLifecycle, StartOptions } from '../types';\nimport { pluginManager } from '../plugin';\n\n/**\n * 初始化上下文\n */\nexport interface InitializationContext {\n /**\n * 已加载的配置\n */\n config: Record<string, unknown>;\n\n /**\n * 初始化进度(0-100)\n */\n progress: number;\n\n /**\n * 是否准备就绪\n */\n isReady: boolean;\n\n /**\n * 初始化耗时(毫秒)\n */\n duration: number;\n}\n\n/**\n * 初始化选项\n */\nexport interface InitializationOptions {\n /**\n * 日志级别\n */\n loggerLevel?: LogLevel;\n\n /**\n * 国际化配置\n */\n locale?: Record<LangType, Record<string, unknown>>;\n\n /**\n * 生命周期钩子\n */\n lifecycle?: ManagerLifecycle;\n}\n\n/**\n * 进度回调函数\n */\nexport type ProgressCallback = (progress: number, step?: string) => void;\n\n/**\n * 初始化方法\n *\n * 这是核心的初始化逻辑,可被启动页或直接调用\n *\n * @param options - 初始化选项\n * @param onProgress - 进度回调函数(可选)\n * @returns Promise<InitializationContext>\n *\n * @example\n * ```typescript\n * const context = await initialization({\n * loggerLevel: LogLevel.INFO,\n * lifecycle: {\n * initialization: async () => {\n * // 初始化逻辑\n * },\n * },\n * }, (progress, step) => {\n * console.log(`进度: ${progress}%, 步骤: ${step}`);\n * });\n * ```\n */\nexport async function initialization(\n options: StartOptions,\n onProgress?: ProgressCallback\n): Promise<InitializationContext> {\n const startTime = Date.now();\n let config: Record<string, unknown> = {};\n\n try {\n // 0. 执行插件初始化前钩子\n await pluginManager.executeBeforeInit(options);\n\n // 1. 设置日志级别\n onProgress?.(5, '初始化日志系统...');\n logger.setLevel(options.loggerLevel ?? LogLevel.INFO);\n\n // 2. 预留配置阶段\n onProgress?.(30);\n\n // 3. 初始化之前回调\n if (options.lifecycle?.beforeInitialization) {\n onProgress?.(35, '执行初始化前回调...');\n await options.lifecycle.beforeInitialization();\n }\n\n // 4. 国际化设置\n onProgress?.(40, '设置国际化...');\n setupI18n((options.locale || undefined) as any);\n\n // 5. 核心初始化\n if (options.lifecycle?.initialization) {\n onProgress?.(50, '初始化核心功能...');\n await options.lifecycle.initialization();\n onProgress?.(70, '核心功能初始化完成');\n } else {\n onProgress?.(70);\n }\n\n onProgress?.(80, '准备完成...');\n\n const duration = Date.now() - startTime;\n\n const context: InitializationContext = {\n config,\n progress: 100,\n isReady: true,\n duration,\n };\n\n // 执行插件初始化钩子\n await pluginManager.executeInit(options, context);\n\n // 执行插件初始化后钩子\n await pluginManager.executeAfterInit(options, context);\n\n // 6. 初始化之后回调(在 context 创建后执行,可以访问完整的初始化上下文)\n if (options.lifecycle?.afterInitialization) {\n onProgress?.(90, '执行初始化后回调...');\n await options.lifecycle.afterInitialization(context);\n }\n\n onProgress?.(100, '初始化完成');\n\n return context;\n } catch (error) {\n logger.error('初始化失败:', error);\n throw error;\n }\n}\n"],"names":["initialization","options","onProgress","startTime","Date","now","config","pluginManager","executeBeforeInit","logger","setLevel","loggerLevel","LogLevel","INFO","lifecycle","beforeInitialization","setupI18n","locale","undefined","duration","context","progress","isReady","executeInit","executeAfterInit","afterInitialization","error"],"mappings":";;;;+BA+EsBA;;;eAAAA;;;wBA/EW;yBACP;wBAGI;AA2EvB,eAAeA,eACpBC,OAAqB,EACrBC,UAA6B;IAE7B,MAAMC,YAAYC,KAAKC,GAAG;IAC1B,IAAIC,SAAkC,CAAC;IAEvC,IAAI;QACF,gBAAgB;QAChB,MAAMC,qBAAa,CAACC,iBAAiB,CAACP;QAEtC,YAAY;QACZC,aAAa,GAAG;QAChBO,cAAM,CAACC,QAAQ,CAACT,QAAQU,WAAW,IAAIC,gBAAQ,CAACC,IAAI;QAEpD,YAAY;QACZX,aAAa;QAEb,aAAa;QACb,IAAID,QAAQa,SAAS,EAAEC,sBAAsB;YAC3Cb,aAAa,IAAI;YACjB,MAAMD,QAAQa,SAAS,CAACC,oBAAoB;QAC9C;QAEA,WAAW;QACXb,aAAa,IAAI;QACjBc,IAAAA,kBAAS,EAAEf,QAAQgB,MAAM,IAAIC;QAE7B,WAAW;QACX,IAAIjB,QAAQa,SAAS,EAAEd,gBAAgB;YACrCE,aAAa,IAAI;YACjB,MAAMD,QAAQa,SAAS,CAACd,cAAc;YACtCE,aAAa,IAAI;QACnB,OAAO;YACLA,aAAa;QACf;QAEAA,aAAa,IAAI;QAEjB,MAAMiB,WAAWf,KAAKC,GAAG,KAAKF;QAE9B,MAAMiB,UAAiC;YACrCd;YACAe,UAAU;YACVC,SAAS;YACTH;QACF;QAEA,YAAY;QACZ,MAAMZ,qBAAa,CAACgB,WAAW,CAACtB,SAASmB;QAEzC,aAAa;QACb,MAAMb,qBAAa,CAACiB,gBAAgB,CAACvB,SAASmB;QAE9C,4CAA4C;QAC5C,IAAInB,QAAQa,SAAS,EAAEW,qBAAqB;YAC1CvB,aAAa,IAAI;YACjB,MAAMD,QAAQa,SAAS,CAACW,mBAAmB,CAACL;QAC9C;QAEAlB,aAAa,KAAK;QAElB,OAAOkB;IACT,EAAE,OAAOM,OAAO;QACdjB,cAAM,CAACiB,KAAK,CAAC,UAAUA;QACvB,MAAMA;IACR;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/initialization.ts"],"sourcesContent":["import { logger, LogLevel } from '@vlian/logger';\nimport { setupI18n } from '../../library';\nimport type { LangType } from '../../library/locale/types';\nimport type { ManagerLifecycle, StartOptions } from '../types';\nimport { pluginManager } from '../plugin';\n\n/**\n * 初始化上下文\n */\nexport interface InitializationContext {\n /**\n * 已加载的配置\n */\n config: Record<string, unknown>;\n\n /**\n * 初始化进度(0-100)\n */\n progress: number;\n\n /**\n * 是否准备就绪\n */\n isReady: boolean;\n\n /**\n * 初始化耗时(毫秒)\n */\n duration: number;\n}\n\n/**\n * 初始化选项\n */\nexport interface InitializationOptions {\n /**\n * 日志级别\n */\n loggerLevel?: LogLevel;\n\n /**\n * 国际化配置\n */\n locale?: Record<LangType, Record<string, unknown>>;\n\n /**\n * 生命周期钩子\n */\n lifecycle?: ManagerLifecycle;\n}\n\n/**\n * 进度回调函数\n */\nexport type ProgressCallback = (progress: number, step?: string) => void;\n\n/**\n * 初始化方法\n *\n * 这是核心的初始化逻辑,可被启动页或直接调用\n *\n * @param options - 初始化选项\n * @param onProgress - 进度回调函数(可选)\n * @returns Promise<InitializationContext>\n *\n * @example\n * ```typescript\n * const context = await initialization({\n * loggerLevel: LogLevel.INFO,\n * lifecycle: {\n * initialization: async () => {\n * // 初始化逻辑\n * },\n * },\n * }, (progress, step) => {\n * console.log(`进度: ${progress}%, 步骤: ${step}`);\n * });\n * ```\n */\nexport async function initialization(\n options: StartOptions,\n onProgress?: ProgressCallback\n): Promise<InitializationContext> {\n const startTime = Date.now();\n let config: Record<string, unknown> = {};\n\n try {\n // 0. 执行插件初始化前钩子\n await pluginManager.executeBeforeInit(options);\n\n // 1. 设置日志级别\n onProgress?.(5, '初始化日志系统...');\n logger.setLevel(options.loggerLevel ?? LogLevel.INFO);\n\n // 2. 预留配置阶段\n onProgress?.(30);\n\n // 3. 初始化之前回调\n if (options.lifecycle?.beforeInitialization) {\n onProgress?.(35, '执行初始化前回调...');\n await options.lifecycle.beforeInitialization();\n }\n\n // 4. 国际化设置\n onProgress?.(40, '设置国际化...');\n setupI18n((options.locale || undefined) as any);\n\n // 5. 核心初始化\n if (options.lifecycle?.initialization) {\n onProgress?.(50, '初始化核心功能...');\n await options.lifecycle.initialization();\n onProgress?.(70, '核心功能初始化完成');\n } else {\n onProgress?.(70);\n }\n\n onProgress?.(80, '准备完成...');\n\n const duration = Date.now() - startTime;\n\n const context: InitializationContext = {\n config,\n progress: 100,\n isReady: true,\n duration,\n };\n\n // 执行插件初始化钩子\n await pluginManager.executeInit(options, context);\n\n // 执行插件初始化后钩子\n await pluginManager.executeAfterInit(options, context);\n\n // 6. 初始化之后回调(在 context 创建后执行,可以访问完整的初始化上下文)\n if (options.lifecycle?.afterInitialization) {\n onProgress?.(90, '执行初始化后回调...');\n await options.lifecycle.afterInitialization(context);\n }\n\n onProgress?.(100, '初始化完成');\n\n return context;\n } catch (error) {\n logger.error('初始化失败:', error);\n throw error;\n }\n}\n"],"names":["logger","LogLevel","setupI18n","pluginManager","initialization","options","onProgress","startTime","Date","now","config","executeBeforeInit","setLevel","loggerLevel","INFO","lifecycle","beforeInitialization","locale","undefined","duration","context","progress","isReady","executeInit","executeAfterInit","afterInitialization","error"],"mappings":"AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,gBAAgB;AACjD,SAASC,SAAS,QAAQ,gBAAgB;AAG1C,SAASC,aAAa,QAAQ,YAAY;AAoD1C;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,eAAeC,eACpBC,OAAqB,EACrBC,UAA6B;IAE7B,MAAMC,YAAYC,KAAKC,GAAG;IAC1B,IAAIC,SAAkC,CAAC;IAEvC,IAAI;QACF,gBAAgB;QAChB,MAAMP,cAAcQ,iBAAiB,CAACN;QAEtC,YAAY;QACZC,aAAa,GAAG;QAChBN,OAAOY,QAAQ,CAACP,QAAQQ,WAAW,IAAIZ,SAASa,IAAI;QAEpD,YAAY;QACZR,aAAa;QAEb,aAAa;QACb,IAAID,QAAQU,SAAS,EAAEC,sBAAsB;YAC3CV,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACC,oBAAoB;QAC9C;QAEA,WAAW;QACXV,aAAa,IAAI;QACjBJ,UAAWG,QAAQY,MAAM,IAAIC;QAE7B,WAAW;QACX,IAAIb,QAAQU,SAAS,EAAEX,gBAAgB;YACrCE,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACX,cAAc;YACtCE,aAAa,IAAI;QACnB,OAAO;YACLA,aAAa;QACf;QAEAA,aAAa,IAAI;QAEjB,MAAMa,WAAWX,KAAKC,GAAG,KAAKF;QAE9B,MAAMa,UAAiC;YACrCV;YACAW,UAAU;YACVC,SAAS;YACTH;QACF;QAEA,YAAY;QACZ,MAAMhB,cAAcoB,WAAW,CAAClB,SAASe;QAEzC,aAAa;QACb,MAAMjB,cAAcqB,gBAAgB,CAACnB,SAASe;QAE9C,4CAA4C;QAC5C,IAAIf,QAAQU,SAAS,EAAEU,qBAAqB;YAC1CnB,aAAa,IAAI;YACjB,MAAMD,QAAQU,SAAS,CAACU,mBAAmB,CAACL;QAC9C;QAEAd,aAAa,KAAK;QAElB,OAAOc;IACT,EAAE,OAAOM,OAAO;QACd1B,OAAO0B,KAAK,CAAC,UAAUA;QACvB,MAAMA;IACR;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/initializationErrorState.ts"],"sourcesContent":["import type { FrameworkError } from '@vlian/utils';\nimport { errorUtils } from '@vlian/utils';\n\n/**\n * 初始化错误状态管理器\n * \n * 用于在初始化过程中捕获和存储错误,以便 ErrorBoundary 能够捕获并显示\n */\nclass InitializationErrorState {\n private error: FrameworkError | null = null;\n private listeners: Set<() => void> = new Set();\n\n /**\n * 设置错误\n */\n setError(error: unknown): void {\n this.error = errorUtils.normalizeError(error);\n // 通知所有监听器\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 获取错误\n */\n getError(): FrameworkError | null {\n return this.error;\n }\n\n /**\n * 清除错误\n */\n clearError(): void {\n this.error = null;\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 订阅错误变化\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 检查是否有错误\n */\n hasError(): boolean {\n return this.error !== null;\n }\n}\n\n/**\n * 全局初始化错误状态管理器实例\n */\nexport const initializationErrorState = new InitializationErrorState();\n"],"names":["initializationErrorState","InitializationErrorState","setError","error","errorUtils","normalizeError","listeners","forEach","listener","getError","clearError","subscribe","add","delete","hasError","Set"],"mappings":";;;;+BAyDaA;;;eAAAA;;;uBAxDc;;;;;;;;;;;;;;AAE3B;;;;CAIC,GACD,IAAA,AAAMC,2BAAN,MAAMA;IAIJ;;GAEC,GACDC,SAASC,KAAc,EAAQ;QAC7B,IAAI,CAACA,KAAK,GAAGC,iBAAU,CAACC,cAAc,CAACF;QACvC,UAAU;QACV,IAAI,CAACG,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDC,WAAkC;QAChC,OAAO,IAAI,CAACN,KAAK;IACnB;IAEA;;GAEC,GACDO,aAAmB;QACjB,IAAI,CAACP,KAAK,GAAG;QACb,IAAI,CAACG,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDG,UAAUH,QAAoB,EAAc;QAC1C,IAAI,CAACF,SAAS,CAACM,GAAG,CAACJ;QACnB,OAAO;YACL,IAAI,CAACF,SAAS,CAACO,MAAM,CAACL;QACxB;IACF;IAEA;;GAEC,GACDM,WAAoB;QAClB,OAAO,IAAI,CAACX,KAAK,KAAK;IACxB;;QA1CA,uBAAQA,SAA+B;QACvC,uBAAQG,aAA6B,IAAIS;;AA0C3C;AAKO,MAAMf,2BAA2B,IAAIC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/initialization/initializationErrorState.ts"],"sourcesContent":["import type { FrameworkError } from '@vlian/utils';\nimport { errorUtils } from '@vlian/utils';\n\n/**\n * 初始化错误状态管理器\n * \n * 用于在初始化过程中捕获和存储错误,以便 ErrorBoundary 能够捕获并显示\n */\nclass InitializationErrorState {\n private error: FrameworkError | null = null;\n private listeners: Set<() => void> = new Set();\n\n /**\n * 设置错误\n */\n setError(error: unknown): void {\n this.error = errorUtils.normalizeError(error);\n // 通知所有监听器\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 获取错误\n */\n getError(): FrameworkError | null {\n return this.error;\n }\n\n /**\n * 清除错误\n */\n clearError(): void {\n this.error = null;\n this.listeners.forEach((listener) => listener());\n }\n\n /**\n * 订阅错误变化\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 检查是否有错误\n */\n hasError(): boolean {\n return this.error !== null;\n }\n}\n\n/**\n * 全局初始化错误状态管理器实例\n */\nexport const initializationErrorState = new InitializationErrorState();\n"],"names":["errorUtils","InitializationErrorState","setError","error","normalizeError","listeners","forEach","listener","getError","clearError","subscribe","add","delete","hasError","Set","initializationErrorState"],"mappings":";;;;;;;;;;;;;AACA,SAASA,UAAU,QAAQ,eAAe;AAE1C;;;;CAIC,GACD,IAAA,AAAMC,2BAAN,MAAMA;IAIJ;;GAEC,GACDC,SAASC,KAAc,EAAQ;QAC7B,IAAI,CAACA,KAAK,GAAGH,WAAWI,cAAc,CAACD;QACvC,UAAU;QACV,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDC,WAAkC;QAChC,OAAO,IAAI,CAACL,KAAK;IACnB;IAEA;;GAEC,GACDM,aAAmB;QACjB,IAAI,CAACN,KAAK,GAAG;QACb,IAAI,CAACE,SAAS,CAACC,OAAO,CAAC,CAACC,WAAaA;IACvC;IAEA;;GAEC,GACDG,UAAUH,QAAoB,EAAc;QAC1C,IAAI,CAACF,SAAS,CAACM,GAAG,CAACJ;QACnB,OAAO;YACL,IAAI,CAACF,SAAS,CAACO,MAAM,CAACL;QACxB;IACF;IAEA;;GAEC,GACDM,WAAoB;QAClB,OAAO,IAAI,CAACV,KAAK,KAAK;IACxB;;QA1CA,uBAAQA,SAA+B;QACvC,uBAAQE,aAA6B,IAAIS;;AA0C3C;AAEA;;CAEC,GACD,OAAO,MAAMC,2BAA2B,IAAId,2BAA2B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/defaultAdapters.ts"],"sourcesContent":["import { logger } from '@vlian/logger';\nimport { initMonitoring } from '@vlian/monitoring';\nimport { StateManager } from '../../state';\nimport { AppEventBus } from '../event/AppEventBus';\nimport { setupI18n, setLang } from '../../library';\nimport type {\n I18nSnapshot,\n KernelAdapters,\n KernelBootErrorLike,\n KernelErrorHandlerResult,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStartOptions,\n KernelStateAdapter,\n KernelThemeAdapter,\n ThemeSnapshot,\n} from './types';\n\nconst defaultLoggerAdapter: KernelLoggerAdapter = {\n initialize(options) {\n if (options.loggerLevel) {\n logger.setLevel(options.loggerLevel);\n }\n },\n setLevel(level) {\n logger.setLevel(level);\n },\n debug(message, ...args) {\n logger.debug(message, ...args);\n },\n info(message, ...args) {\n logger.info(message, ...args);\n },\n warn(message, ...args) {\n logger.warn(message, ...args);\n },\n error(message, ...args) {\n logger.error(message, ...args);\n },\n};\n\nconst defaultMonitoringAdapter: KernelMonitoringAdapter = {\n initialize() {\n initMonitoring();\n },\n captureError(error, metadata) {\n try {\n const service = initMonitoring();\n service.captureError(error, metadata);\n } catch {\n logger.error('监控适配器上报失败', error, metadata);\n }\n },\n reportMetric(name, value, tags) {\n logger.debug(`metric:${name}`, { value, tags });\n },\n reportPhase(metric) {\n logger.debug('kernel.phase.metric', metric);\n },\n};\n\nclass DefaultStateAdapter implements KernelStateAdapter {\n private instance: StateManager | null = null;\n\n initialize(): void {\n this.instance = new StateManager({\n enableRegistry: true,\n defaultScope: 'app',\n });\n }\n\n getInstance(): StateManager {\n if (!this.instance) {\n this.initialize();\n }\n return this.instance as StateManager;\n }\n\n destroy(): void {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n}\n\nclass DefaultEventBusAdapter implements KernelEventBusAdapter {\n private bus: AppEventBus | null = null;\n\n initialize(options: KernelStartOptions): void {\n this.bus = new AppEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n enablePerformanceMonitoring: process.env.NODE_ENV === 'development',\n instanceId: (options as Record<string, unknown>).instanceId as string | undefined,\n });\n }\n\n emit(event: string, payload?: unknown): void {\n if (!this.bus) {\n this.initialize({});\n }\n this.bus!.emit(event, payload);\n }\n\n on(event: string, handler: (payload?: unknown) => void): () => void {\n if (!this.bus) {\n this.initialize({});\n }\n return this.bus!.on(event as any, handler as any);\n }\n\n destroy(): void {\n if (this.bus) {\n this.bus.clear();\n this.bus = null;\n }\n }\n}\n\nconst defaultI18nAdapter: KernelI18nAdapter = {\n initialize(snapshot: I18nSnapshot): void {\n setupI18n((snapshot.resources || {}) as any);\n setLang(snapshot.locale);\n },\n setLocale(locale): void {\n setLang(locale);\n },\n};\n\nconst defaultThemeAdapter: KernelThemeAdapter = {\n initialize(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n apply(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n};\n\nfunction applyThemeToDocument(theme: ThemeSnapshot): void {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n\n const resolvedMode = theme.mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : theme.mode;\n\n root.classList.add(resolvedMode);\n\n if (theme.primaryColor) {\n root.style.setProperty('--app-primary-color', theme.primaryColor);\n }\n\n if (theme.compatibility?.shadcn) {\n Object.entries(theme.compatibility.shadcn).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, String(value));\n });\n }\n}\n\nconst defaultErrorHandler = {\n async handle(error: KernelBootErrorLike): Promise<KernelErrorHandlerResult> {\n logger.error('Kernel 启动失败', error);\n return { handled: true, shouldThrow: true };\n },\n};\n\nexport function resolveKernelAdapters(options: KernelStartOptions): Required<KernelAdapters> {\n return {\n logger: options.adapters?.logger || defaultLoggerAdapter,\n monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,\n state: options.adapters?.state || new DefaultStateAdapter(),\n eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),\n i18n: options.adapters?.i18n || defaultI18nAdapter,\n theme: options.adapters?.theme || defaultThemeAdapter,\n errorHandler: options.adapters?.errorHandler || defaultErrorHandler,\n };\n}\n"],"names":["resolveKernelAdapters","defaultLoggerAdapter","initialize","options","loggerLevel","logger","setLevel","level","debug","message","args","info","warn","error","defaultMonitoringAdapter","initMonitoring","captureError","metadata","service","reportMetric","name","value","tags","reportPhase","metric","DefaultStateAdapter","instance","StateManager","enableRegistry","defaultScope","getInstance","destroy","DefaultEventBusAdapter","bus","AppEventBus","enableTracking","process","env","NODE_ENV","maxHistorySize","enableValidation","enablePerformanceMonitoring","instanceId","emit","event","payload","on","handler","clear","defaultI18nAdapter","snapshot","setupI18n","resources","setLang","locale","setLocale","defaultThemeAdapter","document","applyThemeToDocument","apply","theme","root","documentElement","classList","remove","resolvedMode","mode","window","matchMedia","matches","add","primaryColor","style","setProperty","compatibility","shadcn","Object","entries","forEach","key","String","defaultErrorHandler","handle","handled","shouldThrow","adapters","monitoring","state","eventBus","i18n","errorHandler"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/defaultAdapters.ts"],"sourcesContent":["import { logger } from '@vlian/logger';\nimport { initMonitoring } from '@vlian/monitoring';\nimport { StateManager } from '../../state';\nimport { AppEventBus } from '../event/AppEventBus';\nimport { setupI18n, setLang } from '../../library';\nimport type {\n I18nSnapshot,\n KernelAdapters,\n KernelBootErrorLike,\n KernelErrorHandlerResult,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStartOptions,\n KernelStateAdapter,\n KernelThemeAdapter,\n ThemeSnapshot,\n} from './types';\n\nconst defaultLoggerAdapter: KernelLoggerAdapter = {\n initialize(options) {\n if (options.loggerLevel) {\n logger.setLevel(options.loggerLevel);\n }\n },\n setLevel(level) {\n logger.setLevel(level);\n },\n debug(message, ...args) {\n logger.debug(message, ...args);\n },\n info(message, ...args) {\n logger.info(message, ...args);\n },\n warn(message, ...args) {\n logger.warn(message, ...args);\n },\n error(message, ...args) {\n logger.error(message, ...args);\n },\n};\n\nconst defaultMonitoringAdapter: KernelMonitoringAdapter = {\n initialize() {\n initMonitoring();\n },\n captureError(error, metadata) {\n try {\n const service = initMonitoring();\n service.captureError(error, metadata);\n } catch {\n logger.error('监控适配器上报失败', error, metadata);\n }\n },\n reportMetric(name, value, tags) {\n logger.debug(`metric:${name}`, { value, tags });\n },\n reportPhase(metric) {\n logger.debug('kernel.phase.metric', metric);\n },\n};\n\nclass DefaultStateAdapter implements KernelStateAdapter {\n private instance: StateManager | null = null;\n\n initialize(): void {\n this.instance = new StateManager({\n enableRegistry: true,\n defaultScope: 'app',\n });\n }\n\n getInstance(): StateManager {\n if (!this.instance) {\n this.initialize();\n }\n return this.instance as StateManager;\n }\n\n destroy(): void {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n}\n\nclass DefaultEventBusAdapter implements KernelEventBusAdapter {\n private bus: AppEventBus | null = null;\n\n initialize(options: KernelStartOptions): void {\n this.bus = new AppEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n enablePerformanceMonitoring: process.env.NODE_ENV === 'development',\n instanceId: (options as Record<string, unknown>).instanceId as string | undefined,\n });\n }\n\n emit(event: string, payload?: unknown): void {\n if (!this.bus) {\n this.initialize({});\n }\n this.bus!.emit(event, payload);\n }\n\n on(event: string, handler: (payload?: unknown) => void): () => void {\n if (!this.bus) {\n this.initialize({});\n }\n return this.bus!.on(event as any, handler as any);\n }\n\n destroy(): void {\n if (this.bus) {\n this.bus.clear();\n this.bus = null;\n }\n }\n}\n\nconst defaultI18nAdapter: KernelI18nAdapter = {\n initialize(snapshot: I18nSnapshot): void {\n setupI18n((snapshot.resources || {}) as any);\n setLang(snapshot.locale);\n },\n setLocale(locale): void {\n setLang(locale);\n },\n};\n\nconst defaultThemeAdapter: KernelThemeAdapter = {\n initialize(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n apply(snapshot: ThemeSnapshot): void {\n if (typeof document === 'undefined') {\n return;\n }\n applyThemeToDocument(snapshot);\n },\n};\n\nfunction applyThemeToDocument(theme: ThemeSnapshot): void {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n\n const resolvedMode = theme.mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : theme.mode;\n\n root.classList.add(resolvedMode);\n\n if (theme.primaryColor) {\n root.style.setProperty('--app-primary-color', theme.primaryColor);\n }\n\n if (theme.compatibility?.shadcn) {\n Object.entries(theme.compatibility.shadcn).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, String(value));\n });\n }\n}\n\nconst defaultErrorHandler = {\n async handle(error: KernelBootErrorLike): Promise<KernelErrorHandlerResult> {\n logger.error('Kernel 启动失败', error);\n return { handled: true, shouldThrow: true };\n },\n};\n\nexport function resolveKernelAdapters(options: KernelStartOptions): Required<KernelAdapters> {\n return {\n logger: options.adapters?.logger || defaultLoggerAdapter,\n monitoring: options.adapters?.monitoring || defaultMonitoringAdapter,\n state: options.adapters?.state || new DefaultStateAdapter(),\n eventBus: options.adapters?.eventBus || new DefaultEventBusAdapter(),\n i18n: options.adapters?.i18n || defaultI18nAdapter,\n theme: options.adapters?.theme || defaultThemeAdapter,\n errorHandler: options.adapters?.errorHandler || defaultErrorHandler,\n };\n}\n"],"names":["logger","initMonitoring","StateManager","AppEventBus","setupI18n","setLang","defaultLoggerAdapter","initialize","options","loggerLevel","setLevel","level","debug","message","args","info","warn","error","defaultMonitoringAdapter","captureError","metadata","service","reportMetric","name","value","tags","reportPhase","metric","DefaultStateAdapter","instance","enableRegistry","defaultScope","getInstance","destroy","DefaultEventBusAdapter","bus","enableTracking","process","env","NODE_ENV","maxHistorySize","enableValidation","enablePerformanceMonitoring","instanceId","emit","event","payload","on","handler","clear","defaultI18nAdapter","snapshot","resources","locale","setLocale","defaultThemeAdapter","document","applyThemeToDocument","apply","theme","root","documentElement","classList","remove","resolvedMode","mode","window","matchMedia","matches","add","primaryColor","style","setProperty","compatibility","shadcn","Object","entries","forEach","key","String","defaultErrorHandler","handle","handled","shouldThrow","resolveKernelAdapters","adapters","monitoring","state","eventBus","i18n","errorHandler"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/errors.ts"],"sourcesContent":["import type { KernelBootErrorLike, KernelBootPhase } from './types';\n\nfunction inferRetryable(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return message.includes('timeout') || message.includes('network');\n }\n return false;\n}\n\nexport class KernelBootError extends Error implements KernelBootErrorLike {\n public readonly code: string;\n public readonly phase: KernelBootPhase;\n public readonly severity: 'low' | 'medium' | 'high' | 'critical';\n public readonly retryable: boolean;\n public readonly traceId: string;\n public readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n code: string;\n phase: KernelBootPhase;\n traceId: string;\n severity?: 'low' | 'medium' | 'high' | 'critical';\n retryable?: boolean;\n cause?: unknown;\n }\n ) {\n super(message);\n this.name = 'KernelBootError';\n this.code = options.code;\n this.phase = options.phase;\n this.traceId = options.traceId;\n this.severity = options.severity ?? 'high';\n this.retryable = options.retryable ?? inferRetryable(options.cause);\n this.cause = options.cause;\n }\n}\n\nexport function toKernelBootError(\n error: unknown,\n phase: KernelBootPhase,\n traceId: string\n): KernelBootError {\n if (error instanceof KernelBootError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new KernelBootError(error.message, {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n }\n\n return new KernelBootError(String(error), {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n}\n"],"names":["KernelBootError","toKernelBootError","inferRetryable","error","Error","message","toLowerCase","includes","options","code","phase","severity","retryable","traceId","cause","name","String"],"mappings":";;;;;;;;;;;QAUaA;eAAAA;;QA8BGC;eAAAA;;;;;;;;;;;;;;;;AAtChB,SAASC,eAAeC,KAAc;IACpC,IAAIA,iBAAiBC,OAAO;QAC1B,MAAMC,UAAUF,MAAME,OAAO,CAACC,WAAW;QACzC,OAAOD,QAAQE,QAAQ,CAAC,cAAcF,QAAQE,QAAQ,CAAC;IACzD;IACA,OAAO;AACT;AAEO,IAAA,AAAMP,kBAAN,MAAMA,wBAAwBI;IAQnC,YACEC,OAAe,EACfG,OAOC,CACD;QACA,KAAK,CAACH,UAlBR,uBAAgBI,QAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA,IACA,uBAAgBC,YAAhB,KAAA,IACA,uBAAgBC,aAAhB,KAAA,IACA,uBAAgBC,WAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA;QAcE,IAAI,CAACC,IAAI,GAAG;QACZ,IAAI,CAACN,IAAI,GAAGD,QAAQC,IAAI;QACxB,IAAI,CAACC,KAAK,GAAGF,QAAQE,KAAK;QAC1B,IAAI,CAACG,OAAO,GAAGL,QAAQK,OAAO;QAC9B,IAAI,CAACF,QAAQ,GAAGH,QAAQG,QAAQ,IAAI;QACpC,IAAI,CAACC,SAAS,GAAGJ,QAAQI,SAAS,IAAIV,eAAeM,QAAQM,KAAK;QAClE,IAAI,CAACA,KAAK,GAAGN,QAAQM,KAAK;IAC5B;AACF;AAEO,SAASb,kBACdE,KAAc,EACdO,KAAsB,EACtBG,OAAe;IAEf,IAAIV,iBAAiBH,iBAAiB;QACpC,OAAOG;IACT;IAEA,IAAIA,iBAAiBC,OAAO;QAC1B,OAAO,IAAIJ,gBAAgBG,MAAME,OAAO,EAAE;YACxCI,MAAM;YACNC;YACAG;YACAC,OAAOX;QACT;IACF;IAEA,OAAO,IAAIH,gBAAgBgB,OAAOb,QAAQ;QACxCM,MAAM;QACNC;QACAG;QACAC,OAAOX;IACT;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/errors.ts"],"sourcesContent":["import type { KernelBootErrorLike, KernelBootPhase } from './types';\n\nfunction inferRetryable(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return message.includes('timeout') || message.includes('network');\n }\n return false;\n}\n\nexport class KernelBootError extends Error implements KernelBootErrorLike {\n public readonly code: string;\n public readonly phase: KernelBootPhase;\n public readonly severity: 'low' | 'medium' | 'high' | 'critical';\n public readonly retryable: boolean;\n public readonly traceId: string;\n public readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n code: string;\n phase: KernelBootPhase;\n traceId: string;\n severity?: 'low' | 'medium' | 'high' | 'critical';\n retryable?: boolean;\n cause?: unknown;\n }\n ) {\n super(message);\n this.name = 'KernelBootError';\n this.code = options.code;\n this.phase = options.phase;\n this.traceId = options.traceId;\n this.severity = options.severity ?? 'high';\n this.retryable = options.retryable ?? inferRetryable(options.cause);\n this.cause = options.cause;\n }\n}\n\nexport function toKernelBootError(\n error: unknown,\n phase: KernelBootPhase,\n traceId: string\n): KernelBootError {\n if (error instanceof KernelBootError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new KernelBootError(error.message, {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n }\n\n return new KernelBootError(String(error), {\n code: 'KERNEL_BOOT_FAILURE',\n phase,\n traceId,\n cause: error,\n });\n}\n"],"names":["inferRetryable","error","Error","message","toLowerCase","includes","KernelBootError","options","code","phase","severity","retryable","traceId","cause","name","toKernelBootError","String"],"mappings":";;;;;;;;;;;;;AAEA,SAASA,eAAeC,KAAc;IACpC,IAAIA,iBAAiBC,OAAO;QAC1B,MAAMC,UAAUF,MAAME,OAAO,CAACC,WAAW;QACzC,OAAOD,QAAQE,QAAQ,CAAC,cAAcF,QAAQE,QAAQ,CAAC;IACzD;IACA,OAAO;AACT;AAEA,OAAO,MAAMC,wBAAwBJ;IAQnC,YACEC,OAAe,EACfI,OAOC,CACD;QACA,KAAK,CAACJ,UAlBR,uBAAgBK,QAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA,IACA,uBAAgBC,YAAhB,KAAA,IACA,uBAAgBC,aAAhB,KAAA,IACA,uBAAgBC,WAAhB,KAAA,IACA,uBAAgBC,SAAhB,KAAA;QAcE,IAAI,CAACC,IAAI,GAAG;QACZ,IAAI,CAACN,IAAI,GAAGD,QAAQC,IAAI;QACxB,IAAI,CAACC,KAAK,GAAGF,QAAQE,KAAK;QAC1B,IAAI,CAACG,OAAO,GAAGL,QAAQK,OAAO;QAC9B,IAAI,CAACF,QAAQ,GAAGH,QAAQG,QAAQ,IAAI;QACpC,IAAI,CAACC,SAAS,GAAGJ,QAAQI,SAAS,IAAIX,eAAeO,QAAQM,KAAK;QAClE,IAAI,CAACA,KAAK,GAAGN,QAAQM,KAAK;IAC5B;AACF;AAEA,OAAO,SAASE,kBACdd,KAAc,EACdQ,KAAsB,EACtBG,OAAe;IAEf,IAAIX,iBAAiBK,iBAAiB;QACpC,OAAOL;IACT;IAEA,IAAIA,iBAAiBC,OAAO;QAC1B,OAAO,IAAII,gBAAgBL,MAAME,OAAO,EAAE;YACxCK,MAAM;YACNC;YACAG;YACAC,OAAOZ;QACT;IACF;IAEA,OAAO,IAAIK,gBAAgBU,OAAOf,QAAQ;QACxCO,MAAM;QACNC;QACAG;QACAC,OAAOZ;IACT;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/index.ts"],"sourcesContent":["export { startKernel } from './startKernel';\nexport { KernelBootError } from './errors';\nexport type {\n ThemeMode,\n ThemeSnapshot,\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelBootErrorLike,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStateAdapter,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelThemeAdapter,\n KernelErrorHandler,\n KernelErrorHandlerResult,\n KernelAdapters,\n KernelPerformanceOptions,\n KernelLifecycle,\n KernelStartOptions,\n KernelRuntime,\n} from './types';\n"],"names":["KernelBootError","startKernel"],"mappings":";;;;;;;;;;;QACSA;eAAAA,uBAAe;;QADfC;eAAAA,wBAAW;;;6BAAQ;wBACI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/index.ts"],"sourcesContent":["export { startKernel } from './startKernel';\nexport { KernelBootError } from './errors';\nexport type {\n ThemeMode,\n ThemeSnapshot,\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelBootErrorLike,\n KernelLoggerAdapter,\n KernelMonitoringAdapter,\n KernelStateAdapter,\n KernelEventBusAdapter,\n KernelI18nAdapter,\n KernelThemeAdapter,\n KernelErrorHandler,\n KernelErrorHandlerResult,\n KernelAdapters,\n KernelPerformanceOptions,\n KernelLifecycle,\n KernelStartOptions,\n KernelRuntime,\n} from './types';\n"],"names":["startKernel","KernelBootError"],"mappings":"AAAA,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,eAAe,QAAQ,WAAW"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/startKernel.ts"],"sourcesContent":["import { initialization } from '../initialization';\nimport { generateTraceId, initTraceIdGenerator, setCurrentTraceId } from '../../utils/traceId';\nimport { toKernelBootError } from './errors';\nimport { resolveKernelAdapters } from './defaultAdapters';\nimport type {\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelRuntime,\n KernelStartOptions,\n ThemeMode,\n ThemeSnapshot,\n} from './types';\n\nconst DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nconst DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nasync function withOptionalTimeout<T>(\n task: () => Promise<T>,\n timeoutMs?: number,\n timeoutMessage = 'Kernel phase timeout'\n): Promise<T> {\n if (!timeoutMs || timeoutMs <= 0) {\n return task();\n }\n\n return Promise.race([\n task(),\n new Promise<T>((_, reject) => {\n setTimeout(() => reject(new Error(timeoutMessage)), timeoutMs);\n }),\n ]);\n}\n\nexport async function startKernel(options: KernelStartOptions = {}): Promise<KernelRuntime> {\n initTraceIdGenerator('kernel');\n const traceId = generateTraceId();\n setCurrentTraceId(traceId);\n\n const adapters = resolveKernelAdapters(options);\n const metrics: KernelPhaseMetric[] = [];\n let config: Record<string, unknown> = {};\n let theme: ThemeSnapshot = { ...DEFAULT_THEME, ...(options.theme || {}) };\n let i18n: I18nSnapshot = { ...DEFAULT_I18N, ...(options.locale || {}) };\n\n const emitPhaseMetric = (metric: KernelPhaseMetric): void => {\n metrics.push(metric);\n adapters.monitoring.reportPhase?.(metric);\n adapters.monitoring.reportMetric?.('kernel.phase.duration', metric.duration, {\n phase: metric.phase,\n });\n adapters.eventBus.emit('kernel.phase.end', metric);\n };\n\n const runPhase = async (phase: KernelBootPhase, fn: () => Promise<void>): Promise<void> => {\n const enabled = options.enabledPhases?.[phase];\n if (enabled === false) {\n adapters.eventBus.emit('kernel.phase.skipped', { phase, traceId });\n return;\n }\n\n const startTime = performance.now();\n adapters.eventBus.emit('kernel.phase.start', { phase, traceId, startTime });\n\n try {\n await withOptionalTimeout(\n fn,\n options.performance?.phaseTimeoutMs?.[phase],\n `Kernel phase \"${phase}\" timeout`\n );\n emitPhaseMetric({\n phase,\n startTime,\n endTime: performance.now(),\n duration: performance.now() - startTime,\n });\n } catch (error) {\n const bootError = toKernelBootError(error, phase, traceId);\n adapters.monitoring.captureError(bootError, { phase, traceId });\n adapters.eventBus.emit('kernel.phase.error', bootError);\n\n const result = await adapters.errorHandler.handle(bootError);\n if (result.shouldThrow) {\n throw bootError;\n }\n }\n };\n\n await runPhase('prepare', async () => {\n adapters.logger.initialize?.(options);\n adapters.logger.info('Kernel 启动准备完成', { traceId });\n });\n\n await runPhase('services', async () => {\n await Promise.all([\n Promise.resolve(adapters.monitoring.initialize?.(options)),\n Promise.resolve(adapters.state.initialize?.(options)),\n Promise.resolve(adapters.eventBus.initialize?.(options)),\n ]);\n });\n\n await runPhase('config', async () => {\n if (options.configLoader) {\n try {\n config = await options.configLoader();\n } catch (error) {\n config = options.configFallback || {};\n }\n } else {\n config = options.configFallback || {};\n }\n });\n\n await runPhase('i18n', async () => {\n await adapters.i18n.initialize(i18n);\n });\n\n await runPhase('theme', async () => {\n await Promise.resolve(adapters.theme.initialize?.(theme));\n await adapters.theme.apply(theme);\n });\n\n await runPhase('init', async () => {\n await options.lifecycle?.beforeInitialization?.();\n const initContext = await initialization({\n loggerLevel: options.loggerLevel,\n locale: i18n.resources as any,\n lifecycle: options.lifecycle,\n });\n await options.lifecycle?.afterInitialization?.(initContext);\n });\n\n await runPhase('ready', async () => {\n adapters.eventBus.emit('kernel.ready', {\n traceId,\n theme,\n locale: i18n.locale,\n config,\n });\n });\n\n if (options.enablePostReady !== false) {\n await runPhase('postReady', async () => {\n adapters.eventBus.emit('kernel.postReady', { traceId });\n });\n }\n\n const setTheme = async (partial: Partial<ThemeSnapshot>): Promise<void> => {\n theme = { ...theme, ...partial };\n await adapters.theme.apply(theme);\n adapters.eventBus.emit('kernel.theme.changed', { traceId, theme });\n };\n\n const setThemeMode = async (mode: ThemeMode): Promise<void> => {\n await setTheme({ mode });\n };\n\n const setLocale = async (locale: I18nSnapshot['locale']): Promise<void> => {\n i18n = { ...i18n, locale };\n await adapters.i18n.setLocale(locale);\n adapters.eventBus.emit('kernel.i18n.changed', { traceId, locale });\n };\n\n return {\n traceId,\n getTheme: () => ({ ...theme }),\n setTheme,\n setThemeMode,\n getI18n: () => ({ ...i18n }),\n setLocale,\n getConfig: () => ({ ...config }),\n getStateManager: () => adapters.state.getInstance(),\n getEventBus: () => adapters.eventBus,\n getMetrics: () => [...metrics],\n destroy: () => {\n adapters.state.destroy?.();\n adapters.eventBus.destroy?.();\n adapters.eventBus.emit('kernel.destroyed', { traceId });\n },\n };\n}\n"],"names":["startKernel","DEFAULT_THEME","mode","DEFAULT_I18N","locale","withOptionalTimeout","task","timeoutMs","timeoutMessage","Promise","race","_","reject","setTimeout","Error","options","initTraceIdGenerator","traceId","generateTraceId","setCurrentTraceId","adapters","resolveKernelAdapters","metrics","config","theme","i18n","emitPhaseMetric","metric","push","monitoring","reportPhase","reportMetric","duration","phase","eventBus","emit","runPhase","fn","enabled","enabledPhases","startTime","performance","now","phaseTimeoutMs","endTime","error","bootError","toKernelBootError","captureError","result","errorHandler","handle","shouldThrow","logger","initialize","info","all","resolve","state","configLoader","configFallback","apply","lifecycle","beforeInitialization","initContext","initialization","loggerLevel","resources","afterInitialization","enablePostReady","setTheme","partial","setThemeMode","setLocale","getTheme","getI18n","getConfig","getStateManager","getInstance","getEventBus","getMetrics","destroy"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/startKernel.ts"],"sourcesContent":["import { initialization } from '../initialization';\nimport { generateTraceId, initTraceIdGenerator, setCurrentTraceId } from '../../utils/traceId';\nimport { toKernelBootError } from './errors';\nimport { resolveKernelAdapters } from './defaultAdapters';\nimport type {\n I18nSnapshot,\n KernelBootPhase,\n KernelPhaseMetric,\n KernelRuntime,\n KernelStartOptions,\n ThemeMode,\n ThemeSnapshot,\n} from './types';\n\nconst DEFAULT_THEME: ThemeSnapshot = { mode: 'light' };\nconst DEFAULT_I18N: I18nSnapshot = { locale: 'zh-CN' };\n\nasync function withOptionalTimeout<T>(\n task: () => Promise<T>,\n timeoutMs?: number,\n timeoutMessage = 'Kernel phase timeout'\n): Promise<T> {\n if (!timeoutMs || timeoutMs <= 0) {\n return task();\n }\n\n return Promise.race([\n task(),\n new Promise<T>((_, reject) => {\n setTimeout(() => reject(new Error(timeoutMessage)), timeoutMs);\n }),\n ]);\n}\n\nexport async function startKernel(options: KernelStartOptions = {}): Promise<KernelRuntime> {\n initTraceIdGenerator('kernel');\n const traceId = generateTraceId();\n setCurrentTraceId(traceId);\n\n const adapters = resolveKernelAdapters(options);\n const metrics: KernelPhaseMetric[] = [];\n let config: Record<string, unknown> = {};\n let theme: ThemeSnapshot = { ...DEFAULT_THEME, ...(options.theme || {}) };\n let i18n: I18nSnapshot = { ...DEFAULT_I18N, ...(options.locale || {}) };\n\n const emitPhaseMetric = (metric: KernelPhaseMetric): void => {\n metrics.push(metric);\n adapters.monitoring.reportPhase?.(metric);\n adapters.monitoring.reportMetric?.('kernel.phase.duration', metric.duration, {\n phase: metric.phase,\n });\n adapters.eventBus.emit('kernel.phase.end', metric);\n };\n\n const runPhase = async (phase: KernelBootPhase, fn: () => Promise<void>): Promise<void> => {\n const enabled = options.enabledPhases?.[phase];\n if (enabled === false) {\n adapters.eventBus.emit('kernel.phase.skipped', { phase, traceId });\n return;\n }\n\n const startTime = performance.now();\n adapters.eventBus.emit('kernel.phase.start', { phase, traceId, startTime });\n\n try {\n await withOptionalTimeout(\n fn,\n options.performance?.phaseTimeoutMs?.[phase],\n `Kernel phase \"${phase}\" timeout`\n );\n emitPhaseMetric({\n phase,\n startTime,\n endTime: performance.now(),\n duration: performance.now() - startTime,\n });\n } catch (error) {\n const bootError = toKernelBootError(error, phase, traceId);\n adapters.monitoring.captureError(bootError, { phase, traceId });\n adapters.eventBus.emit('kernel.phase.error', bootError);\n\n const result = await adapters.errorHandler.handle(bootError);\n if (result.shouldThrow) {\n throw bootError;\n }\n }\n };\n\n await runPhase('prepare', async () => {\n adapters.logger.initialize?.(options);\n adapters.logger.info('Kernel 启动准备完成', { traceId });\n });\n\n await runPhase('services', async () => {\n await Promise.all([\n Promise.resolve(adapters.monitoring.initialize?.(options)),\n Promise.resolve(adapters.state.initialize?.(options)),\n Promise.resolve(adapters.eventBus.initialize?.(options)),\n ]);\n });\n\n await runPhase('config', async () => {\n if (options.configLoader) {\n try {\n config = await options.configLoader();\n } catch (error) {\n config = options.configFallback || {};\n }\n } else {\n config = options.configFallback || {};\n }\n });\n\n await runPhase('i18n', async () => {\n await adapters.i18n.initialize(i18n);\n });\n\n await runPhase('theme', async () => {\n await Promise.resolve(adapters.theme.initialize?.(theme));\n await adapters.theme.apply(theme);\n });\n\n await runPhase('init', async () => {\n await options.lifecycle?.beforeInitialization?.();\n const initContext = await initialization({\n loggerLevel: options.loggerLevel,\n locale: i18n.resources as any,\n lifecycle: options.lifecycle,\n });\n await options.lifecycle?.afterInitialization?.(initContext);\n });\n\n await runPhase('ready', async () => {\n adapters.eventBus.emit('kernel.ready', {\n traceId,\n theme,\n locale: i18n.locale,\n config,\n });\n });\n\n if (options.enablePostReady !== false) {\n await runPhase('postReady', async () => {\n adapters.eventBus.emit('kernel.postReady', { traceId });\n });\n }\n\n const setTheme = async (partial: Partial<ThemeSnapshot>): Promise<void> => {\n theme = { ...theme, ...partial };\n await adapters.theme.apply(theme);\n adapters.eventBus.emit('kernel.theme.changed', { traceId, theme });\n };\n\n const setThemeMode = async (mode: ThemeMode): Promise<void> => {\n await setTheme({ mode });\n };\n\n const setLocale = async (locale: I18nSnapshot['locale']): Promise<void> => {\n i18n = { ...i18n, locale };\n await adapters.i18n.setLocale(locale);\n adapters.eventBus.emit('kernel.i18n.changed', { traceId, locale });\n };\n\n return {\n traceId,\n getTheme: () => ({ ...theme }),\n setTheme,\n setThemeMode,\n getI18n: () => ({ ...i18n }),\n setLocale,\n getConfig: () => ({ ...config }),\n getStateManager: () => adapters.state.getInstance(),\n getEventBus: () => adapters.eventBus,\n getMetrics: () => [...metrics],\n destroy: () => {\n adapters.state.destroy?.();\n adapters.eventBus.destroy?.();\n adapters.eventBus.emit('kernel.destroyed', { traceId });\n },\n };\n}\n"],"names":["initialization","generateTraceId","initTraceIdGenerator","setCurrentTraceId","toKernelBootError","resolveKernelAdapters","DEFAULT_THEME","mode","DEFAULT_I18N","locale","withOptionalTimeout","task","timeoutMs","timeoutMessage","Promise","race","_","reject","setTimeout","Error","startKernel","options","traceId","adapters","metrics","config","theme","i18n","emitPhaseMetric","metric","push","monitoring","reportPhase","reportMetric","duration","phase","eventBus","emit","runPhase","fn","enabled","enabledPhases","startTime","performance","now","phaseTimeoutMs","endTime","error","bootError","captureError","result","errorHandler","handle","shouldThrow","logger","initialize","info","all","resolve","state","configLoader","configFallback","apply","lifecycle","beforeInitialization","initContext","loggerLevel","resources","afterInitialization","enablePostReady","setTheme","partial","setThemeMode","setLocale","getTheme","getI18n","getConfig","getStateManager","getInstance","getEventBus","getMetrics","destroy"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/kernel/types.ts"],"sourcesContent":["import type { LogLevel } from '@vlian/logger';\nimport type { LangType } from '../../library/locale/types';\nimport type { InitializationContext } from '../initialization';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\nexport interface ThemeSnapshot {\n mode: ThemeMode;\n primaryColor?: string;\n tokens?: Record<string, string | number>;\n compatibility?: {\n antd?: Record<string, unknown>;\n shadcn?: Record<string, string | number>;\n };\n}\n\nexport interface I18nSnapshot {\n locale: LangType;\n resources?: Record<string, Record<string, unknown>>;\n}\n\nexport type KernelBootPhase =\n | 'prepare'\n | 'services'\n | 'config'\n | 'i18n'\n | 'theme'\n | 'init'\n | 'ready'\n | 'postReady';\n\nexport interface KernelPhaseMetric {\n phase: KernelBootPhase;\n startTime: number;\n endTime: number;\n duration: number;\n}\n\nexport interface KernelBootErrorLike {\n code: string;\n phase: KernelBootPhase;\n severity: 'low' | 'medium' | 'high' | 'critical';\n retryable: boolean;\n traceId: string;\n cause?: unknown;\n}\n\nexport interface KernelLoggerAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n setLevel?: (level: LogLevel) => void;\n debug: (message: string, ...args: unknown[]) => void;\n info: (message: string, ...args: unknown[]) => void;\n warn: (message: string, ...args: unknown[]) => void;\n error: (message: string, ...args: unknown[]) => void;\n}\n\nexport interface KernelMonitoringAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n captureError: (error: unknown, metadata?: Record<string, unknown>) => void;\n reportMetric?: (name: string, value: number, tags?: Record<string, string>) => void;\n reportPhase?: (metric: KernelPhaseMetric) => void;\n}\n\nexport interface KernelStateAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n getInstance: () => unknown;\n destroy?: () => void;\n}\n\nexport interface KernelEventBusAdapter {\n initialize?: (options: KernelStartOptions) => Promise<void> | void;\n emit: (event: string, payload?: unknown) => void;\n on?: (event: string, handler: (payload?: unknown) => void) => () => void;\n destroy?: () => void;\n}\n\nexport interface KernelI18nAdapter {\n initialize: (snapshot: I18nSnapshot) => Promise<void> | void;\n setLocale: (locale: LangType) => Promise<void> | void;\n}\n\nexport interface KernelThemeAdapter {\n initialize?: (snapshot: ThemeSnapshot) => Promise<void> | void;\n apply: (snapshot: ThemeSnapshot) => Promise<void> | void;\n}\n\nexport interface KernelErrorHandlerResult {\n handled: boolean;\n shouldThrow: boolean;\n}\n\nexport interface KernelErrorHandler {\n handle: (error: KernelBootErrorLike) => Promise<KernelErrorHandlerResult> | KernelErrorHandlerResult;\n}\n\nexport interface KernelAdapters {\n logger?: KernelLoggerAdapter;\n monitoring?: KernelMonitoringAdapter;\n state?: KernelStateAdapter;\n eventBus?: KernelEventBusAdapter;\n i18n?: KernelI18nAdapter;\n theme?: KernelThemeAdapter;\n errorHandler?: KernelErrorHandler;\n}\n\nexport interface KernelPerformanceOptions {\n phaseTimeoutMs?: Partial<Record<KernelBootPhase, number>>;\n}\n\nexport interface KernelLifecycle {\n beforeInitialization?: () => Promise<void> | void;\n initialization?: () => Promise<void> | void;\n afterInitialization?: (context: InitializationContext) => Promise<void> | void;\n}\n\nexport interface KernelStartOptions {\n loggerLevel?: LogLevel;\n configLoader?: () => Promise<Record<string, unknown>>;\n configFallback?: Record<string, unknown>;\n lifecycle?: KernelLifecycle;\n locale?: I18nSnapshot;\n theme?: ThemeSnapshot;\n adapters?: KernelAdapters;\n performance?: KernelPerformanceOptions;\n enablePostReady?: boolean;\n enabledPhases?: Partial<Record<KernelBootPhase, boolean>>;\n}\n\nexport interface KernelRuntime {\n traceId: string;\n getTheme: () => ThemeSnapshot;\n setTheme: (partial: Partial<ThemeSnapshot>) => Promise<void>;\n setThemeMode: (mode: ThemeMode) => Promise<void>;\n getI18n: () => I18nSnapshot;\n setLocale: (locale: LangType) => Promise<void>;\n getConfig: () => Record<string, unknown>;\n getStateManager: () => unknown;\n getEventBus: () => KernelEventBusAdapter;\n getMetrics: () => KernelPhaseMetric[];\n destroy: () => void;\n}\n"],"names":[],"mappings":"AAgIA,WAYC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/middleware.ts"],"sourcesContent":["import type { StartOptions } from './types';\nimport type { InitializationContext } from './initialization';\n\n/**\n * 中间件类型\n */\nexport type Middleware = (\n options: StartOptions,\n next: () => Promise<InitializationContext>\n) => Promise<InitializationContext>;\n\n/**\n * 中间件管理器\n */\nexport class MiddlewareManager {\n private middlewares: Middleware[] = [];\n\n /**\n * 添加中间件\n */\n use(middleware: Middleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * 移除中间件\n */\n remove(middleware: Middleware): void {\n const index = this.middlewares.indexOf(middleware);\n if (index > -1) {\n this.middlewares.splice(index, 1);\n }\n }\n\n /**\n * 清空所有中间件\n */\n clear(): void {\n this.middlewares = [];\n }\n\n /**\n * 执行中间件链\n */\n async execute(\n options: StartOptions,\n finalHandler: () => Promise<InitializationContext>\n ): Promise<InitializationContext> {\n let index = 0;\n\n const next = async (): Promise<InitializationContext> => {\n if (index >= this.middlewares.length) {\n return finalHandler();\n }\n\n const middleware = this.middlewares[index++];\n return middleware(options, next);\n };\n\n return next();\n }\n\n /**\n * 获取中间件数量\n */\n get count(): number {\n return this.middlewares.length;\n }\n}\n\n/**\n * 默认中间件管理器\n */\nexport const middlewareManager = new MiddlewareManager();\n"],"names":["MiddlewareManager","middlewareManager","use","middleware","middlewares","push","remove","index","indexOf","splice","clear","execute","options","finalHandler","next","length","count"],"mappings":";;;;;;;;;;;QAcaA;eAAAA;;QA2DAC;eAAAA;;;;;;;;;;;;;;;;AA3DN,IAAA,AAAMD,oBAAN,MAAMA;IAGX;;GAEC,GACDE,IAAIC,UAAsB,EAAQ;QAChC,IAAI,CAACC,WAAW,CAACC,IAAI,CAACF;IACxB;IAEA;;GAEC,GACDG,OAAOH,UAAsB,EAAQ;QACnC,MAAMI,QAAQ,IAAI,CAACH,WAAW,CAACI,OAAO,CAACL;QACvC,IAAII,QAAQ,CAAC,GAAG;YACd,IAAI,CAACH,WAAW,CAACK,MAAM,CAACF,OAAO;QACjC;IACF;IAEA;;GAEC,GACDG,QAAc;QACZ,IAAI,CAACN,WAAW,GAAG,EAAE;IACvB;IAEA;;GAEC,GACD,MAAMO,QACJC,OAAqB,EACrBC,YAAkD,EAClB;QAChC,IAAIN,QAAQ;QAEZ,MAAMO,OAAO;YACX,IAAIP,SAAS,IAAI,CAACH,WAAW,CAACW,MAAM,EAAE;gBACpC,OAAOF;YACT;YAEA,MAAMV,aAAa,IAAI,CAACC,WAAW,CAACG,QAAQ;YAC5C,OAAOJ,WAAWS,SAASE;QAC7B;QAEA,OAAOA;IACT;IAEA;;GAEC,GACD,IAAIE,QAAgB;QAClB,OAAO,IAAI,CAACZ,WAAW,CAACW,MAAM;IAChC;;QApDA,uBAAQX,eAA4B,EAAE;;AAqDxC;AAKO,MAAMH,oBAAoB,IAAID"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/middleware.ts"],"sourcesContent":["import type { StartOptions } from './types';\nimport type { InitializationContext } from './initialization';\n\n/**\n * 中间件类型\n */\nexport type Middleware = (\n options: StartOptions,\n next: () => Promise<InitializationContext>\n) => Promise<InitializationContext>;\n\n/**\n * 中间件管理器\n */\nexport class MiddlewareManager {\n private middlewares: Middleware[] = [];\n\n /**\n * 添加中间件\n */\n use(middleware: Middleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * 移除中间件\n */\n remove(middleware: Middleware): void {\n const index = this.middlewares.indexOf(middleware);\n if (index > -1) {\n this.middlewares.splice(index, 1);\n }\n }\n\n /**\n * 清空所有中间件\n */\n clear(): void {\n this.middlewares = [];\n }\n\n /**\n * 执行中间件链\n */\n async execute(\n options: StartOptions,\n finalHandler: () => Promise<InitializationContext>\n ): Promise<InitializationContext> {\n let index = 0;\n\n const next = async (): Promise<InitializationContext> => {\n if (index >= this.middlewares.length) {\n return finalHandler();\n }\n\n const middleware = this.middlewares[index++];\n return middleware(options, next);\n };\n\n return next();\n }\n\n /**\n * 获取中间件数量\n */\n get count(): number {\n return this.middlewares.length;\n }\n}\n\n/**\n * 默认中间件管理器\n */\nexport const middlewareManager = new MiddlewareManager();\n"],"names":["MiddlewareManager","use","middleware","middlewares","push","remove","index","indexOf","splice","clear","execute","options","finalHandler","next","length","count","middlewareManager"],"mappings":";;;;;;;;;;;;;AAWA;;CAEC,GACD,OAAO,MAAMA;IAGX;;GAEC,GACDC,IAAIC,UAAsB,EAAQ;QAChC,IAAI,CAACC,WAAW,CAACC,IAAI,CAACF;IACxB;IAEA;;GAEC,GACDG,OAAOH,UAAsB,EAAQ;QACnC,MAAMI,QAAQ,IAAI,CAACH,WAAW,CAACI,OAAO,CAACL;QACvC,IAAII,QAAQ,CAAC,GAAG;YACd,IAAI,CAACH,WAAW,CAACK,MAAM,CAACF,OAAO;QACjC;IACF;IAEA;;GAEC,GACDG,QAAc;QACZ,IAAI,CAACN,WAAW,GAAG,EAAE;IACvB;IAEA;;GAEC,GACD,MAAMO,QACJC,OAAqB,EACrBC,YAAkD,EAClB;QAChC,IAAIN,QAAQ;QAEZ,MAAMO,OAAO;YACX,IAAIP,SAAS,IAAI,CAACH,WAAW,CAACW,MAAM,EAAE;gBACpC,OAAOF;YACT;YAEA,MAAMV,aAAa,IAAI,CAACC,WAAW,CAACG,QAAQ;YAC5C,OAAOJ,WAAWS,SAASE;QAC7B;QAEA,OAAOA;IACT;IAEA;;GAEC,GACD,IAAIE,QAAgB;QAClB,OAAO,IAAI,CAACZ,WAAW,CAACW,MAAM;IAChC;;QApDA,uBAAQX,eAA4B,EAAE;;AAqDxC;AAEA;;CAEC,GACD,OAAO,MAAMa,oBAAoB,IAAIhB,oBAAoB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/plugin/PluginEventBus.ts"],"sourcesContent":["/**\n * 插件事件总线\n * 用于插件间通信\n */\n\n/**\n * 事件监听器类型\n */\nexport type EventListener<T = unknown> = (data: T) => void | Promise<void>;\n\n/**\n * 事件元数据\n */\nexport interface EventMetadata {\n /**\n * 事件来源(插件名称)\n */\n source?: string;\n /**\n * 事件时间戳\n */\n timestamp: number;\n /**\n * 事件ID(用于追踪)\n */\n eventId?: string;\n /**\n * 事件优先级\n */\n priority?: number;\n}\n\n/**\n * 事件包装器\n */\nexport interface EventWrapper<T = unknown> {\n /**\n * 事件数据\n */\n data: T;\n /**\n * 事件元数据\n */\n metadata: EventMetadata;\n}\n\n/**\n * 事件总线配置\n */\nexport interface PluginEventBusConfig {\n /**\n * 是否启用事件追踪\n */\n enableTracking?: boolean;\n /**\n * 最大事件历史记录数\n */\n maxHistorySize?: number;\n /**\n * 是否启用事件验证\n */\n enableValidation?: boolean;\n /**\n * 事件验证函数\n */\n validator?: (event: string, data: unknown) => boolean;\n}\n\n/**\n * 事件总线\n */\nexport class PluginEventBus {\n private listeners: Map<string, Set<EventListener>> = new Map();\n private eventHistory: Array<{ event: string; data: unknown; metadata: EventMetadata }> = [];\n private config: Required<PluginEventBusConfig>;\n private eventCounter: number = 0;\n\n /**\n * 订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器(可以接收 EventWrapper 或直接数据)\n * @returns 取消订阅函数\n */\n on<T = unknown>(event: string, listener: EventListener<T | EventWrapper<T>>): () => void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n\n const listeners = this.listeners.get(event)!;\n listeners.add(listener as EventListener);\n\n // 返回取消订阅函数\n return () => {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n };\n }\n\n /**\n * 取消订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n off<T = unknown>(event: string, listener: EventListener<T>): void {\n const listeners = this.listeners.get(event);\n if (listeners) {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n }\n }\n\n constructor(config: PluginEventBusConfig = {}) {\n this.config = {\n enableTracking: config.enableTracking ?? false,\n maxHistorySize: config.maxHistorySize ?? 100,\n enableValidation: config.enableValidation ?? false,\n validator: config.validator ?? (() => true),\n };\n }\n\n /**\n * 发布事件\n * \n * @param event - 事件名称\n * @param data - 事件数据\n * @param metadata - 事件元数据(可选)\n */\n async emit<T = unknown>(\n event: string,\n data?: T,\n metadata?: Partial<EventMetadata>\n ): Promise<void> {\n // 事件验证\n if (this.config.enableValidation && !this.config.validator(event, data)) {\n console.warn(`事件 ${event} 验证失败,已忽略`);\n return;\n }\n\n // 构建事件元数据\n const eventMetadata: EventMetadata = {\n source: metadata?.source,\n timestamp: metadata?.timestamp ?? Date.now(),\n eventId: metadata?.eventId ?? `event_${++this.eventCounter}`,\n priority: metadata?.priority ?? 0,\n };\n\n // 记录事件历史\n if (this.config.enableTracking) {\n this.eventHistory.push({\n event,\n data,\n metadata: eventMetadata,\n });\n\n // 限制历史记录大小\n if (this.eventHistory.length > this.config.maxHistorySize) {\n this.eventHistory.shift();\n }\n }\n\n const listeners = this.listeners.get(event);\n if (!listeners || listeners.size === 0) {\n return;\n }\n\n // 创建事件包装器\n const eventWrapper: EventWrapper<T> = {\n data: data as T,\n metadata: eventMetadata,\n };\n\n // 按优先级排序监听器(如果有优先级)\n const sortedListeners = Array.from(listeners);\n\n // 并行执行所有监听器\n const promises = sortedListeners.map((listener) => {\n try {\n return Promise.resolve(listener(eventWrapper));\n } catch (error) {\n console.error(`事件 ${event} 的监听器执行失败:`, error);\n return Promise.resolve();\n }\n });\n\n await Promise.allSettled(promises);\n }\n\n /**\n * 发布事件(仅数据,向后兼容)\n * \n * @param event - 事件名称\n * @param data - 事件数据\n */\n async emitData<T = unknown>(event: string, data?: T): Promise<void> {\n return this.emit(event, data);\n }\n\n /**\n * 一次性订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n once<T = unknown>(event: string, listener: EventListener<T>): void {\n const wrappedListener: EventListener<T | EventWrapper<T>> = async (data) => {\n // 处理 EventWrapper 或直接数据\n const actualData = (data as EventWrapper<T>).data !== undefined \n ? (data as EventWrapper<T>).data \n : data as T;\n await listener(actualData);\n this.off(event, wrappedListener);\n };\n this.on(event, wrappedListener);\n }\n\n /**\n * 清空所有事件监听器\n */\n clear(): void {\n this.listeners.clear();\n }\n\n /**\n * 获取事件监听器数量\n * \n * @param event - 事件名称,如果不提供则返回所有事件的监听器总数\n */\n listenerCount(event?: string): number {\n if (event) {\n return this.listeners.get(event)?.size || 0;\n }\n\n let count = 0;\n for (const listeners of this.listeners.values()) {\n count += listeners.size;\n }\n return count;\n }\n\n /**\n * 获取所有事件名称\n */\n eventNames(): string[] {\n return Array.from(this.listeners.keys());\n }\n\n /**\n * 获取事件历史记录\n * \n * @param event - 事件名称(可选,如果提供则只返回该事件的历史)\n * @param limit - 限制返回的记录数\n * @returns 事件历史记录\n */\n getEventHistory(event?: string, limit?: number): Array<{ event: string; data: unknown; metadata: EventMetadata }> {\n if (!this.config.enableTracking) {\n return [];\n }\n\n let history = this.eventHistory;\n if (event) {\n history = history.filter((h) => h.event === event);\n }\n\n if (limit) {\n history = history.slice(-limit);\n }\n\n return [...history];\n }\n\n /**\n * 清空事件历史记录\n */\n clearHistory(): void {\n this.eventHistory = [];\n }\n\n /**\n * 请求-响应模式:发送请求并等待响应\n * \n * @param event - 事件名称\n * @param data - 请求数据\n * @param timeout - 超时时间(毫秒)\n * @returns 响应数据\n */\n async request<TRequest = unknown, TResponse = unknown>(\n event: string,\n data?: TRequest,\n timeout: number = 5000\n ): Promise<TResponse> {\n return new Promise((resolve, reject) => {\n const responseEvent = `${event}:response`;\n const requestId = `req_${Date.now()}_${Math.random()}`;\n\n // 设置超时\n const timeoutId = setTimeout(() => {\n this.off(responseEvent, responseHandler);\n reject(new Error(`请求 ${event} 超时`));\n }, timeout);\n\n // 响应处理器\n const responseHandler = (response: EventWrapper<{ requestId: string; data: TResponse }> | { requestId: string; data: TResponse }) => {\n // 处理 EventWrapper 或直接数据\n const actualResponse = (response as EventWrapper<{ requestId: string; data: TResponse }>).data !== undefined\n ? (response as EventWrapper<{ requestId: string; data: TResponse }>).data\n : response as { requestId: string; data: TResponse };\n \n if (actualResponse.requestId === requestId) {\n clearTimeout(timeoutId);\n this.off(responseEvent, responseHandler);\n resolve(actualResponse.data);\n }\n };\n\n // 订阅响应事件\n this.on(responseEvent, responseHandler);\n\n // 发送请求\n this.emit(`${event}:request`, {\n requestId,\n data,\n } as TRequest);\n });\n }\n\n /**\n * 请求-响应模式:注册请求处理器\n * \n * @param event - 事件名称\n * @param handler - 请求处理器\n * @returns 取消注册函数\n */\n onRequest<TRequest = unknown, TResponse = unknown>(\n event: string,\n handler: (data: TRequest, metadata: EventMetadata) => Promise<TResponse> | TResponse\n ): () => void {\n const requestEvent = `${event}:request`;\n const responseEvent = `${event}:response`;\n\n return this.on(requestEvent, async (wrapper: EventWrapper<{ requestId: string; data: TRequest }> | { requestId: string; data: TRequest }) => {\n try {\n // 处理 EventWrapper 或直接数据\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest }, metadata: { timestamp: Date.now() } as EventMetadata };\n \n const response = await handler(actualWrapper.data.data, actualWrapper.metadata);\n this.emit(responseEvent, {\n requestId: actualWrapper.data.requestId,\n data: response,\n });\n } catch (error) {\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest } };\n \n this.emit(`${responseEvent}:error`, {\n requestId: actualWrapper.data.requestId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n }\n\n /**\n * 获取配置\n */\n getConfig(): PluginEventBusConfig {\n return { ...this.config };\n }\n\n /**\n * 更新配置\n */\n updateConfig(config: Partial<PluginEventBusConfig>): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n}\n\n/**\n * 全局插件事件总线实例\n */\nexport const pluginEventBus = new PluginEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n});\n"],"names":["PluginEventBus","pluginEventBus","on","event","listener","listeners","has","set","Set","get","add","delete","size","off","emit","data","metadata","config","enableValidation","validator","console","warn","eventMetadata","source","timestamp","Date","now","eventId","eventCounter","priority","enableTracking","eventHistory","push","length","maxHistorySize","shift","eventWrapper","sortedListeners","Array","from","promises","map","Promise","resolve","error","allSettled","emitData","once","wrappedListener","actualData","undefined","clear","listenerCount","count","values","eventNames","keys","getEventHistory","limit","history","filter","h","slice","clearHistory","request","timeout","reject","responseEvent","requestId","Math","random","timeoutId","setTimeout","responseHandler","Error","response","actualResponse","clearTimeout","onRequest","handler","requestEvent","wrapper","actualWrapper","message","String","getConfig","updateConfig","Map","process","env","NODE_ENV"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/plugin/PluginEventBus.ts"],"sourcesContent":["/**\n * 插件事件总线\n * 用于插件间通信\n */\n\n/**\n * 事件监听器类型\n */\nexport type EventListener<T = unknown> = (data: T) => void | Promise<void>;\n\n/**\n * 事件元数据\n */\nexport interface EventMetadata {\n /**\n * 事件来源(插件名称)\n */\n source?: string;\n /**\n * 事件时间戳\n */\n timestamp: number;\n /**\n * 事件ID(用于追踪)\n */\n eventId?: string;\n /**\n * 事件优先级\n */\n priority?: number;\n}\n\n/**\n * 事件包装器\n */\nexport interface EventWrapper<T = unknown> {\n /**\n * 事件数据\n */\n data: T;\n /**\n * 事件元数据\n */\n metadata: EventMetadata;\n}\n\n/**\n * 事件总线配置\n */\nexport interface PluginEventBusConfig {\n /**\n * 是否启用事件追踪\n */\n enableTracking?: boolean;\n /**\n * 最大事件历史记录数\n */\n maxHistorySize?: number;\n /**\n * 是否启用事件验证\n */\n enableValidation?: boolean;\n /**\n * 事件验证函数\n */\n validator?: (event: string, data: unknown) => boolean;\n}\n\n/**\n * 事件总线\n */\nexport class PluginEventBus {\n private listeners: Map<string, Set<EventListener>> = new Map();\n private eventHistory: Array<{ event: string; data: unknown; metadata: EventMetadata }> = [];\n private config: Required<PluginEventBusConfig>;\n private eventCounter: number = 0;\n\n /**\n * 订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器(可以接收 EventWrapper 或直接数据)\n * @returns 取消订阅函数\n */\n on<T = unknown>(event: string, listener: EventListener<T | EventWrapper<T>>): () => void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n\n const listeners = this.listeners.get(event)!;\n listeners.add(listener as EventListener);\n\n // 返回取消订阅函数\n return () => {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n };\n }\n\n /**\n * 取消订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n off<T = unknown>(event: string, listener: EventListener<T>): void {\n const listeners = this.listeners.get(event);\n if (listeners) {\n listeners.delete(listener as EventListener);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n }\n }\n\n constructor(config: PluginEventBusConfig = {}) {\n this.config = {\n enableTracking: config.enableTracking ?? false,\n maxHistorySize: config.maxHistorySize ?? 100,\n enableValidation: config.enableValidation ?? false,\n validator: config.validator ?? (() => true),\n };\n }\n\n /**\n * 发布事件\n * \n * @param event - 事件名称\n * @param data - 事件数据\n * @param metadata - 事件元数据(可选)\n */\n async emit<T = unknown>(\n event: string,\n data?: T,\n metadata?: Partial<EventMetadata>\n ): Promise<void> {\n // 事件验证\n if (this.config.enableValidation && !this.config.validator(event, data)) {\n console.warn(`事件 ${event} 验证失败,已忽略`);\n return;\n }\n\n // 构建事件元数据\n const eventMetadata: EventMetadata = {\n source: metadata?.source,\n timestamp: metadata?.timestamp ?? Date.now(),\n eventId: metadata?.eventId ?? `event_${++this.eventCounter}`,\n priority: metadata?.priority ?? 0,\n };\n\n // 记录事件历史\n if (this.config.enableTracking) {\n this.eventHistory.push({\n event,\n data,\n metadata: eventMetadata,\n });\n\n // 限制历史记录大小\n if (this.eventHistory.length > this.config.maxHistorySize) {\n this.eventHistory.shift();\n }\n }\n\n const listeners = this.listeners.get(event);\n if (!listeners || listeners.size === 0) {\n return;\n }\n\n // 创建事件包装器\n const eventWrapper: EventWrapper<T> = {\n data: data as T,\n metadata: eventMetadata,\n };\n\n // 按优先级排序监听器(如果有优先级)\n const sortedListeners = Array.from(listeners);\n\n // 并行执行所有监听器\n const promises = sortedListeners.map((listener) => {\n try {\n return Promise.resolve(listener(eventWrapper));\n } catch (error) {\n console.error(`事件 ${event} 的监听器执行失败:`, error);\n return Promise.resolve();\n }\n });\n\n await Promise.allSettled(promises);\n }\n\n /**\n * 发布事件(仅数据,向后兼容)\n * \n * @param event - 事件名称\n * @param data - 事件数据\n */\n async emitData<T = unknown>(event: string, data?: T): Promise<void> {\n return this.emit(event, data);\n }\n\n /**\n * 一次性订阅事件\n * \n * @param event - 事件名称\n * @param listener - 事件监听器\n */\n once<T = unknown>(event: string, listener: EventListener<T>): void {\n const wrappedListener: EventListener<T | EventWrapper<T>> = async (data) => {\n // 处理 EventWrapper 或直接数据\n const actualData = (data as EventWrapper<T>).data !== undefined \n ? (data as EventWrapper<T>).data \n : data as T;\n await listener(actualData);\n this.off(event, wrappedListener);\n };\n this.on(event, wrappedListener);\n }\n\n /**\n * 清空所有事件监听器\n */\n clear(): void {\n this.listeners.clear();\n }\n\n /**\n * 获取事件监听器数量\n * \n * @param event - 事件名称,如果不提供则返回所有事件的监听器总数\n */\n listenerCount(event?: string): number {\n if (event) {\n return this.listeners.get(event)?.size || 0;\n }\n\n let count = 0;\n for (const listeners of this.listeners.values()) {\n count += listeners.size;\n }\n return count;\n }\n\n /**\n * 获取所有事件名称\n */\n eventNames(): string[] {\n return Array.from(this.listeners.keys());\n }\n\n /**\n * 获取事件历史记录\n * \n * @param event - 事件名称(可选,如果提供则只返回该事件的历史)\n * @param limit - 限制返回的记录数\n * @returns 事件历史记录\n */\n getEventHistory(event?: string, limit?: number): Array<{ event: string; data: unknown; metadata: EventMetadata }> {\n if (!this.config.enableTracking) {\n return [];\n }\n\n let history = this.eventHistory;\n if (event) {\n history = history.filter((h) => h.event === event);\n }\n\n if (limit) {\n history = history.slice(-limit);\n }\n\n return [...history];\n }\n\n /**\n * 清空事件历史记录\n */\n clearHistory(): void {\n this.eventHistory = [];\n }\n\n /**\n * 请求-响应模式:发送请求并等待响应\n * \n * @param event - 事件名称\n * @param data - 请求数据\n * @param timeout - 超时时间(毫秒)\n * @returns 响应数据\n */\n async request<TRequest = unknown, TResponse = unknown>(\n event: string,\n data?: TRequest,\n timeout: number = 5000\n ): Promise<TResponse> {\n return new Promise((resolve, reject) => {\n const responseEvent = `${event}:response`;\n const requestId = `req_${Date.now()}_${Math.random()}`;\n\n // 设置超时\n const timeoutId = setTimeout(() => {\n this.off(responseEvent, responseHandler);\n reject(new Error(`请求 ${event} 超时`));\n }, timeout);\n\n // 响应处理器\n const responseHandler = (response: EventWrapper<{ requestId: string; data: TResponse }> | { requestId: string; data: TResponse }) => {\n // 处理 EventWrapper 或直接数据\n const actualResponse = (response as EventWrapper<{ requestId: string; data: TResponse }>).data !== undefined\n ? (response as EventWrapper<{ requestId: string; data: TResponse }>).data\n : response as { requestId: string; data: TResponse };\n \n if (actualResponse.requestId === requestId) {\n clearTimeout(timeoutId);\n this.off(responseEvent, responseHandler);\n resolve(actualResponse.data);\n }\n };\n\n // 订阅响应事件\n this.on(responseEvent, responseHandler);\n\n // 发送请求\n this.emit(`${event}:request`, {\n requestId,\n data,\n } as TRequest);\n });\n }\n\n /**\n * 请求-响应模式:注册请求处理器\n * \n * @param event - 事件名称\n * @param handler - 请求处理器\n * @returns 取消注册函数\n */\n onRequest<TRequest = unknown, TResponse = unknown>(\n event: string,\n handler: (data: TRequest, metadata: EventMetadata) => Promise<TResponse> | TResponse\n ): () => void {\n const requestEvent = `${event}:request`;\n const responseEvent = `${event}:response`;\n\n return this.on(requestEvent, async (wrapper: EventWrapper<{ requestId: string; data: TRequest }> | { requestId: string; data: TRequest }) => {\n try {\n // 处理 EventWrapper 或直接数据\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest }, metadata: { timestamp: Date.now() } as EventMetadata };\n \n const response = await handler(actualWrapper.data.data, actualWrapper.metadata);\n this.emit(responseEvent, {\n requestId: actualWrapper.data.requestId,\n data: response,\n });\n } catch (error) {\n const actualWrapper = (wrapper as EventWrapper<{ requestId: string; data: TRequest }>).data !== undefined\n ? wrapper as EventWrapper<{ requestId: string; data: TRequest }>\n : { data: wrapper as { requestId: string; data: TRequest } };\n \n this.emit(`${responseEvent}:error`, {\n requestId: actualWrapper.data.requestId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n }\n\n /**\n * 获取配置\n */\n getConfig(): PluginEventBusConfig {\n return { ...this.config };\n }\n\n /**\n * 更新配置\n */\n updateConfig(config: Partial<PluginEventBusConfig>): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n}\n\n/**\n * 全局插件事件总线实例\n */\nexport const pluginEventBus = new PluginEventBus({\n enableTracking: process.env.NODE_ENV === 'development',\n maxHistorySize: 100,\n enableValidation: false,\n});\n"],"names":["PluginEventBus","on","event","listener","listeners","has","set","Set","get","add","delete","size","off","emit","data","metadata","config","enableValidation","validator","console","warn","eventMetadata","source","timestamp","Date","now","eventId","eventCounter","priority","enableTracking","eventHistory","push","length","maxHistorySize","shift","eventWrapper","sortedListeners","Array","from","promises","map","Promise","resolve","error","allSettled","emitData","once","wrappedListener","actualData","undefined","clear","listenerCount","count","values","eventNames","keys","getEventHistory","limit","history","filter","h","slice","clearHistory","request","timeout","reject","responseEvent","requestId","Math","random","timeoutId","setTimeout","responseHandler","Error","response","actualResponse","clearTimeout","onRequest","handler","requestEvent","wrapper","actualWrapper","message","String","getConfig","updateConfig","Map","pluginEventBus","process","env","NODE_ENV"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/plugin/PluginSandbox.ts"],"sourcesContent":["/**\n * 插件沙箱\n * 用于插件隔离和权限控制\n */\n\nimport type { StartOptions } from '../types';\n\n/**\n * 插件权限\n */\nexport enum PluginPermission {\n /**\n * 访问配置\n */\n ACCESS_CONFIG = 'access_config',\n\n /**\n * 访问状态管理器\n */\n ACCESS_STATE_MANAGER = 'access_state_manager',\n\n /**\n * 访问存储\n */\n ACCESS_STORAGE = 'access_storage',\n\n /**\n * 发布事件\n */\n EMIT_EVENTS = 'emit_events',\n\n /**\n * 订阅事件\n */\n SUBSCRIBE_EVENTS = 'subscribe_events',\n}\n\n/**\n * 插件沙箱配置\n */\nexport interface PluginSandboxConfig {\n /**\n * 插件名称\n */\n name: string;\n\n /**\n * 允许的权限列表\n */\n permissions?: PluginPermission[];\n\n /**\n * 允许访问的配置键(白名单)\n */\n configWhitelist?: string[];\n\n /**\n * 允许访问的状态作用域(白名单)\n */\n stateScopeWhitelist?: (string | symbol)[];\n\n /**\n * 是否启用严格模式(默认true)\n */\n strictMode?: boolean;\n}\n\n/**\n * 插件沙箱\n */\nexport class PluginSandbox {\n private config: PluginSandboxConfig;\n private permissions: Set<PluginPermission>;\n\n constructor(config: PluginSandboxConfig) {\n this.config = {\n strictMode: true,\n ...config,\n };\n this.permissions = new Set(config.permissions || []);\n }\n\n /**\n * 检查权限\n * \n * @param permission - 权限\n * @returns 是否有权限\n */\n hasPermission(permission: PluginPermission): boolean {\n if (!this.config.strictMode) {\n return true; // 非严格模式,允许所有权限\n }\n\n return this.permissions.has(permission);\n }\n\n /**\n * 检查是否可以访问配置键\n * \n * @param key - 配置键\n * @returns 是否可以访问\n */\n canAccessConfig(key: string): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return false;\n }\n\n if (this.config.configWhitelist && this.config.configWhitelist.length > 0) {\n return this.config.configWhitelist.includes(key);\n }\n\n return true;\n }\n\n /**\n * 检查是否可以访问状态作用域\n * \n * @param scope - 状态作用域\n * @returns 是否可以访问\n */\n canAccessStateScope(scope: string | symbol): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_STATE_MANAGER)) {\n return false;\n }\n\n if (this.config.stateScopeWhitelist && this.config.stateScopeWhitelist.length > 0) {\n return this.config.stateScopeWhitelist.includes(scope);\n }\n\n return true;\n }\n\n /**\n * 过滤配置(根据白名单)\n * \n * @param config - 完整配置\n * @returns 过滤后的配置\n */\n filterConfig(config: StartOptions): Partial<StartOptions> {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return {};\n }\n\n if (!this.config.configWhitelist || this.config.configWhitelist.length === 0) {\n return config;\n }\n\n const filtered: Partial<StartOptions> = {};\n for (const key of this.config.configWhitelist) {\n if (key in config) {\n (filtered as any)[key] = (config as any)[key];\n }\n }\n\n return filtered;\n }\n\n /**\n * 获取沙箱配置\n */\n getConfig(): PluginSandboxConfig {\n return { ...this.config };\n }\n\n /**\n * 更新权限\n * \n * @param permissions - 权限列表\n */\n updatePermissions(permissions: PluginPermission[]): void {\n this.permissions = new Set(permissions);\n this.config.permissions = permissions;\n }\n}\n"],"names":["PluginPermission","PluginSandbox","hasPermission","permission","config","strictMode","permissions","has","canAccessConfig","key","configWhitelist","length","includes","canAccessStateScope","scope","stateScopeWhitelist","filterConfig","filtered","getConfig","updatePermissions","Set"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QAOWA;eAAAA;;QA4DCC;eAAAA;;;;;;;;;;;;;;;;AA5DN,IAAA,AAAKD,0CAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WAvBSA;;AA4DL,IAAA,AAAMC,gBAAN,MAAMA;IAYX;;;;;GAKC,GACDC,cAAcC,UAA4B,EAAW;QACnD,IAAI,CAAC,IAAI,CAACC,MAAM,CAACC,UAAU,EAAE;YAC3B,OAAO,MAAM,eAAe;QAC9B;QAEA,OAAO,IAAI,CAACC,WAAW,CAACC,GAAG,CAACJ;IAC9B;IAEA;;;;;GAKC,GACDK,gBAAgBC,GAAW,EAAW;QACpC,IAAI,CAAC,IAAI,CAACP,aAAa,mBAAkC;YACvD,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,GAAG,GAAG;YACzE,OAAO,IAAI,CAACP,MAAM,CAACM,eAAe,CAACE,QAAQ,CAACH;QAC9C;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDI,oBAAoBC,KAAsB,EAAW;QACnD,IAAI,CAAC,IAAI,CAACZ,aAAa,0BAAyC;YAC9D,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACW,mBAAmB,IAAI,IAAI,CAACX,MAAM,CAACW,mBAAmB,CAACJ,MAAM,GAAG,GAAG;YACjF,OAAO,IAAI,CAACP,MAAM,CAACW,mBAAmB,CAACH,QAAQ,CAACE;QAClD;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDE,aAAaZ,MAAoB,EAAyB;QACxD,IAAI,CAAC,IAAI,CAACF,aAAa,mBAAkC;YACvD,OAAO,CAAC;QACV;QAEA,IAAI,CAAC,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,KAAK,GAAG;YAC5E,OAAOP;QACT;QAEA,MAAMa,WAAkC,CAAC;QACzC,KAAK,MAAMR,OAAO,IAAI,CAACL,MAAM,CAACM,eAAe,CAAE;YAC7C,IAAID,OAAOL,QAAQ;gBAChBa,QAAgB,CAACR,IAAI,GAAG,AAACL,MAAc,CAACK,IAAI;YAC/C;QACF;QAEA,OAAOQ;IACT;IAEA;;GAEC,GACDC,YAAiC;QAC/B,OAAO;YAAE,GAAG,IAAI,CAACd,MAAM;QAAC;IAC1B;IAEA;;;;GAIC,GACDe,kBAAkBb,WAA+B,EAAQ;QACvD,IAAI,CAACA,WAAW,GAAG,IAAIc,IAAId;QAC3B,IAAI,CAACF,MAAM,CAACE,WAAW,GAAGA;IAC5B;IAlGA,YAAYF,MAA2B,CAAE;QAHzC,uBAAQA,UAAR,KAAA;QACA,uBAAQE,eAAR,KAAA;QAGE,IAAI,CAACF,MAAM,GAAG;YACZC,YAAY;YACZ,GAAGD,MAAM;QACX;QACA,IAAI,CAACE,WAAW,GAAG,IAAIc,IAAIhB,OAAOE,WAAW,IAAI,EAAE;IACrD;AA6FF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/plugin/PluginSandbox.ts"],"sourcesContent":["/**\n * 插件沙箱\n * 用于插件隔离和权限控制\n */\n\nimport type { StartOptions } from '../types';\n\n/**\n * 插件权限\n */\nexport enum PluginPermission {\n /**\n * 访问配置\n */\n ACCESS_CONFIG = 'access_config',\n\n /**\n * 访问状态管理器\n */\n ACCESS_STATE_MANAGER = 'access_state_manager',\n\n /**\n * 访问存储\n */\n ACCESS_STORAGE = 'access_storage',\n\n /**\n * 发布事件\n */\n EMIT_EVENTS = 'emit_events',\n\n /**\n * 订阅事件\n */\n SUBSCRIBE_EVENTS = 'subscribe_events',\n}\n\n/**\n * 插件沙箱配置\n */\nexport interface PluginSandboxConfig {\n /**\n * 插件名称\n */\n name: string;\n\n /**\n * 允许的权限列表\n */\n permissions?: PluginPermission[];\n\n /**\n * 允许访问的配置键(白名单)\n */\n configWhitelist?: string[];\n\n /**\n * 允许访问的状态作用域(白名单)\n */\n stateScopeWhitelist?: (string | symbol)[];\n\n /**\n * 是否启用严格模式(默认true)\n */\n strictMode?: boolean;\n}\n\n/**\n * 插件沙箱\n */\nexport class PluginSandbox {\n private config: PluginSandboxConfig;\n private permissions: Set<PluginPermission>;\n\n constructor(config: PluginSandboxConfig) {\n this.config = {\n strictMode: true,\n ...config,\n };\n this.permissions = new Set(config.permissions || []);\n }\n\n /**\n * 检查权限\n * \n * @param permission - 权限\n * @returns 是否有权限\n */\n hasPermission(permission: PluginPermission): boolean {\n if (!this.config.strictMode) {\n return true; // 非严格模式,允许所有权限\n }\n\n return this.permissions.has(permission);\n }\n\n /**\n * 检查是否可以访问配置键\n * \n * @param key - 配置键\n * @returns 是否可以访问\n */\n canAccessConfig(key: string): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return false;\n }\n\n if (this.config.configWhitelist && this.config.configWhitelist.length > 0) {\n return this.config.configWhitelist.includes(key);\n }\n\n return true;\n }\n\n /**\n * 检查是否可以访问状态作用域\n * \n * @param scope - 状态作用域\n * @returns 是否可以访问\n */\n canAccessStateScope(scope: string | symbol): boolean {\n if (!this.hasPermission(PluginPermission.ACCESS_STATE_MANAGER)) {\n return false;\n }\n\n if (this.config.stateScopeWhitelist && this.config.stateScopeWhitelist.length > 0) {\n return this.config.stateScopeWhitelist.includes(scope);\n }\n\n return true;\n }\n\n /**\n * 过滤配置(根据白名单)\n * \n * @param config - 完整配置\n * @returns 过滤后的配置\n */\n filterConfig(config: StartOptions): Partial<StartOptions> {\n if (!this.hasPermission(PluginPermission.ACCESS_CONFIG)) {\n return {};\n }\n\n if (!this.config.configWhitelist || this.config.configWhitelist.length === 0) {\n return config;\n }\n\n const filtered: Partial<StartOptions> = {};\n for (const key of this.config.configWhitelist) {\n if (key in config) {\n (filtered as any)[key] = (config as any)[key];\n }\n }\n\n return filtered;\n }\n\n /**\n * 获取沙箱配置\n */\n getConfig(): PluginSandboxConfig {\n return { ...this.config };\n }\n\n /**\n * 更新权限\n * \n * @param permissions - 权限列表\n */\n updatePermissions(permissions: PluginPermission[]): void {\n this.permissions = new Set(permissions);\n this.config.permissions = permissions;\n }\n}\n"],"names":["PluginPermission","PluginSandbox","hasPermission","permission","config","strictMode","permissions","has","canAccessConfig","key","configWhitelist","length","includes","canAccessStateScope","scope","stateScopeWhitelist","filterConfig","filtered","getConfig","updatePermissions","Set"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;;;AAID;;CAEC,GACD,OAAO,IAAA,AAAKA,0CAAAA;IACV;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;IAGD;;GAEC;WAvBSA;MAyBX;AAgCD;;CAEC,GACD,OAAO,MAAMC;IAYX;;;;;GAKC,GACDC,cAAcC,UAA4B,EAAW;QACnD,IAAI,CAAC,IAAI,CAACC,MAAM,CAACC,UAAU,EAAE;YAC3B,OAAO,MAAM,eAAe;QAC9B;QAEA,OAAO,IAAI,CAACC,WAAW,CAACC,GAAG,CAACJ;IAC9B;IAEA;;;;;GAKC,GACDK,gBAAgBC,GAAW,EAAW;QACpC,IAAI,CAAC,IAAI,CAACP,aAAa,mBAAkC;YACvD,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,GAAG,GAAG;YACzE,OAAO,IAAI,CAACP,MAAM,CAACM,eAAe,CAACE,QAAQ,CAACH;QAC9C;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDI,oBAAoBC,KAAsB,EAAW;QACnD,IAAI,CAAC,IAAI,CAACZ,aAAa,0BAAyC;YAC9D,OAAO;QACT;QAEA,IAAI,IAAI,CAACE,MAAM,CAACW,mBAAmB,IAAI,IAAI,CAACX,MAAM,CAACW,mBAAmB,CAACJ,MAAM,GAAG,GAAG;YACjF,OAAO,IAAI,CAACP,MAAM,CAACW,mBAAmB,CAACH,QAAQ,CAACE;QAClD;QAEA,OAAO;IACT;IAEA;;;;;GAKC,GACDE,aAAaZ,MAAoB,EAAyB;QACxD,IAAI,CAAC,IAAI,CAACF,aAAa,mBAAkC;YACvD,OAAO,CAAC;QACV;QAEA,IAAI,CAAC,IAAI,CAACE,MAAM,CAACM,eAAe,IAAI,IAAI,CAACN,MAAM,CAACM,eAAe,CAACC,MAAM,KAAK,GAAG;YAC5E,OAAOP;QACT;QAEA,MAAMa,WAAkC,CAAC;QACzC,KAAK,MAAMR,OAAO,IAAI,CAACL,MAAM,CAACM,eAAe,CAAE;YAC7C,IAAID,OAAOL,QAAQ;gBAChBa,QAAgB,CAACR,IAAI,GAAG,AAACL,MAAc,CAACK,IAAI;YAC/C;QACF;QAEA,OAAOQ;IACT;IAEA;;GAEC,GACDC,YAAiC;QAC/B,OAAO;YAAE,GAAG,IAAI,CAACd,MAAM;QAAC;IAC1B;IAEA;;;;GAIC,GACDe,kBAAkBb,WAA+B,EAAQ;QACvD,IAAI,CAACA,WAAW,GAAG,IAAIc,IAAId;QAC3B,IAAI,CAACF,MAAM,CAACE,WAAW,GAAGA;IAC5B;IAlGA,YAAYF,MAA2B,CAAE;QAHzC,uBAAQA,UAAR,KAAA;QACA,uBAAQE,eAAR,KAAA;QAGE,IAAI,CAACF,MAAM,GAAG;YACZC,YAAY;YACZ,GAAGD,MAAM;QACX;QACA,IAAI,CAACE,WAAW,GAAG,IAAIc,IAAIhB,OAAOE,WAAW,IAAI,EAAE;IACrD;AA6FF"}
|