@vlian/framework 1.2.62 → 2.0.1
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 +21 -141
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -9
- package/dist/index.js +1 -1
- package/dist/index.umd.js +10 -220
- package/dist/kernel/constants.cjs +1 -1
- package/dist/kernel/constants.d.ts +1 -3
- package/dist/kernel/constants.js +1 -1
- package/dist/kernel/custom-manager/i18n/constants.cjs +1 -0
- package/dist/kernel/custom-manager/i18n/constants.d.ts +4 -0
- package/dist/kernel/custom-manager/i18n/constants.js +1 -0
- package/dist/kernel/custom-manager/i18n/index.cjs +1 -0
- package/dist/kernel/custom-manager/i18n/index.d.ts +7 -0
- package/dist/kernel/custom-manager/i18n/index.js +1 -0
- package/dist/kernel/custom-manager/i18n/types.d.ts +10 -0
- package/dist/kernel/custom-manager/index.cjs +1 -0
- package/dist/kernel/custom-manager/index.d.ts +4 -0
- package/dist/kernel/custom-manager/index.js +1 -0
- package/dist/kernel/custom-manager/theme/constants.cjs +1 -0
- package/dist/kernel/custom-manager/theme/constants.d.ts +4 -0
- package/dist/kernel/custom-manager/theme/constants.js +1 -0
- package/dist/kernel/custom-manager/theme/index.cjs +1 -0
- package/dist/kernel/custom-manager/theme/index.d.ts +7 -0
- package/dist/kernel/custom-manager/theme/index.js +1 -0
- package/dist/kernel/custom-manager/theme/types.d.ts +14 -0
- package/dist/kernel/index.cjs +1 -1
- package/dist/kernel/index.d.ts +4 -2
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/kernel.cjs +1 -1
- package/dist/kernel/kernel.d.ts +3 -7
- package/dist/kernel/kernel.js +1 -1
- package/dist/kernel/manager/i18n/I18nManager.cjs +1 -1
- package/dist/kernel/manager/i18n/I18nManager.d.ts +2 -1
- package/dist/kernel/manager/i18n/I18nManager.js +1 -1
- package/dist/kernel/manager/i18n/i18n.persistence.d.ts +2 -1
- package/dist/kernel/manager/i18n/i18n.runtime.cjs +1 -0
- package/dist/kernel/manager/i18n/i18n.runtime.d.ts +8 -0
- package/dist/kernel/manager/i18n/i18n.runtime.js +1 -0
- package/dist/kernel/manager/i18n/i18n.schema.d.ts +1 -1
- package/dist/kernel/manager/i18nManager.cjs +1 -1
- package/dist/kernel/manager/i18nManager.d.ts +1 -1
- package/dist/kernel/manager/i18nManager.js +1 -1
- package/dist/kernel/manager/index.cjs +1 -1
- package/dist/kernel/manager/index.d.ts +0 -2
- package/dist/kernel/manager/index.js +1 -1
- package/dist/kernel/manager/theme/ThemeManager.cjs +1 -1
- package/dist/kernel/manager/theme/ThemeManager.d.ts +8 -1
- package/dist/kernel/manager/theme/ThemeManager.js +1 -1
- package/dist/kernel/manager/theme/theme.dom.cjs +1 -1
- package/dist/kernel/manager/theme/theme.dom.d.ts +10 -3
- package/dist/kernel/manager/theme/theme.dom.js +1 -1
- package/dist/kernel/manager/theme/theme.persistence.d.ts +2 -1
- package/dist/kernel/manager/theme/theme.schema.cjs +1 -1
- package/dist/kernel/manager/theme/theme.schema.d.ts +3 -1
- package/dist/kernel/manager/theme/theme.schema.js +1 -1
- package/dist/kernel/manager/themeManager.cjs +1 -1
- package/dist/kernel/manager/themeManager.d.ts +1 -1
- package/dist/kernel/manager/themeManager.js +1 -1
- package/dist/kernel/types.d.ts +10 -39
- package/package.json +19 -127
- package/dist/analytics/index.cjs +0 -1
- package/dist/analytics/index.d.ts +0 -2
- package/dist/analytics/index.js +0 -1
- package/dist/analytics.umd.js +0 -19
- package/dist/components/LocaleSwitch.cjs +0 -1
- package/dist/components/LocaleSwitch.d.ts +0 -21
- package/dist/components/LocaleSwitch.js +0 -1
- package/dist/components/ThemeSwitch.cjs +0 -1
- package/dist/components/ThemeSwitch.d.ts +0 -20
- package/dist/components/ThemeSwitch.js +0 -1
- package/dist/components/index.cjs +0 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -1
- package/dist/components/persistence.cjs +0 -1
- package/dist/components/persistence.d.ts +0 -12
- package/dist/components/persistence.js +0 -1
- package/dist/core/Test.cjs +0 -1
- package/dist/core/Test.d.ts +0 -5
- package/dist/core/Test.js +0 -1
- package/dist/core/app/AppContext.cjs +0 -1
- package/dist/core/app/AppContext.d.ts +0 -113
- package/dist/core/app/AppContext.js +0 -1
- package/dist/core/app/AppContext.types.cjs +0 -1
- package/dist/core/app/AppContext.types.d.ts +0 -146
- package/dist/core/app/AppContext.types.js +0 -1
- package/dist/core/app/BasicLayout.cjs +0 -1
- package/dist/core/app/BasicLayout.d.ts +0 -15
- package/dist/core/app/BasicLayout.js +0 -1
- package/dist/core/app/DefaultApp.cjs +0 -1
- package/dist/core/app/DefaultApp.d.ts +0 -10
- package/dist/core/app/DefaultApp.js +0 -1
- package/dist/core/app/index.cjs +0 -1
- package/dist/core/app/index.d.ts +0 -8
- package/dist/core/app/index.js +0 -1
- package/dist/core/config/AppConfig.cjs +0 -1
- package/dist/core/config/AppConfig.d.ts +0 -88
- package/dist/core/config/AppConfig.js +0 -1
- package/dist/core/config/ConfigLoader.cjs +0 -1
- package/dist/core/config/ConfigLoader.d.ts +0 -118
- package/dist/core/config/ConfigLoader.js +0 -1
- package/dist/core/config/ConfigValidator.cjs +0 -2
- package/dist/core/config/ConfigValidator.d.ts +0 -84
- package/dist/core/config/ConfigValidator.js +0 -2
- package/dist/core/config/index.cjs +0 -1
- package/dist/core/config/index.d.ts +0 -6
- package/dist/core/config/index.js +0 -1
- package/dist/core/dev/DevTools.cjs +0 -1
- package/dist/core/dev/DevTools.d.ts +0 -16
- package/dist/core/dev/DevTools.js +0 -1
- package/dist/core/error/ErrorBoundary.cjs +0 -1
- package/dist/core/error/ErrorBoundary.d.ts +0 -121
- package/dist/core/error/ErrorBoundary.js +0 -1
- package/dist/core/error/ErrorHandler.cjs +0 -1
- package/dist/core/error/ErrorHandler.d.ts +0 -171
- package/dist/core/error/ErrorHandler.js +0 -1
- package/dist/core/error/index.cjs +0 -1
- package/dist/core/error/index.d.ts +0 -7
- package/dist/core/error/index.js +0 -1
- package/dist/core/event/AppEventBus.cjs +0 -1
- package/dist/core/event/AppEventBus.d.ts +0 -178
- package/dist/core/event/AppEventBus.js +0 -1
- package/dist/core/event/frameworkEvents.cjs +0 -1
- package/dist/core/event/frameworkEvents.d.ts +0 -69
- package/dist/core/event/frameworkEvents.js +0 -1
- package/dist/core/event/hooks.cjs +0 -1
- package/dist/core/event/hooks.d.ts +0 -57
- package/dist/core/event/hooks.js +0 -1
- package/dist/core/event/index.cjs +0 -1
- package/dist/core/event/index.d.ts +0 -10
- package/dist/core/event/index.js +0 -1
- package/dist/core/event/types.cjs +0 -1
- package/dist/core/event/types.d.ts +0 -269
- package/dist/core/event/types.js +0 -1
- package/dist/core/event/useEventBus.cjs +0 -1
- package/dist/core/event/useEventBus.d.ts +0 -28
- package/dist/core/event/useEventBus.js +0 -1
- package/dist/core/index.cjs +0 -1
- package/dist/core/index.d.ts +0 -54
- package/dist/core/index.js +0 -1
- package/dist/core/initialization/InitializationErrorThrower.cjs +0 -1
- package/dist/core/initialization/InitializationErrorThrower.d.ts +0 -7
- package/dist/core/initialization/InitializationErrorThrower.js +0 -1
- package/dist/core/initialization/index.cjs +0 -1
- package/dist/core/initialization/index.d.ts +0 -7
- package/dist/core/initialization/index.js +0 -1
- package/dist/core/initialization/initialization.cjs +0 -1
- package/dist/core/initialization/initialization.d.ts +0 -69
- package/dist/core/initialization/initialization.js +0 -1
- package/dist/core/initialization/initializationErrorState.cjs +0 -1
- package/dist/core/initialization/initializationErrorState.d.ts +0 -35
- package/dist/core/initialization/initializationErrorState.js +0 -1
- package/dist/core/kernel/defaultAdapters.cjs +0 -1
- package/dist/core/kernel/defaultAdapters.d.ts +0 -2
- package/dist/core/kernel/defaultAdapters.js +0 -1
- package/dist/core/kernel/errors.cjs +0 -1
- package/dist/core/kernel/errors.d.ts +0 -18
- package/dist/core/kernel/errors.js +0 -1
- package/dist/core/kernel/index.cjs +0 -1
- package/dist/core/kernel/index.d.ts +0 -3
- package/dist/core/kernel/index.js +0 -1
- package/dist/core/kernel/startKernel.cjs +0 -1
- package/dist/core/kernel/startKernel.d.ts +0 -2
- package/dist/core/kernel/startKernel.js +0 -1
- package/dist/core/kernel/types.cjs +0 -1
- package/dist/core/kernel/types.d.ts +0 -114
- package/dist/core/kernel/types.js +0 -1
- package/dist/core/middleware.cjs +0 -1
- package/dist/core/middleware.d.ts +0 -36
- package/dist/core/middleware.js +0 -1
- package/dist/core/plugin/PluginEventBus.cjs +0 -1
- package/dist/core/plugin/PluginEventBus.d.ts +0 -169
- package/dist/core/plugin/PluginEventBus.js +0 -1
- package/dist/core/plugin/PluginSandbox.cjs +0 -1
- package/dist/core/plugin/PluginSandbox.d.ts +0 -101
- package/dist/core/plugin/PluginSandbox.js +0 -1
- package/dist/core/plugin.cjs +0 -1
- package/dist/core/plugin.d.ts +0 -224
- package/dist/core/plugin.js +0 -1
- package/dist/core/router/RouterManager.cjs +0 -1
- package/dist/core/router/RouterManager.d.ts +0 -87
- package/dist/core/router/RouterManager.js +0 -1
- package/dist/core/router/adapter/AdapterManager.cjs +0 -1
- package/dist/core/router/adapter/AdapterManager.d.ts +0 -94
- package/dist/core/router/adapter/AdapterManager.js +0 -1
- package/dist/core/router/adapter/index.cjs +0 -1
- package/dist/core/router/adapter/index.d.ts +0 -6
- package/dist/core/router/adapter/index.js +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts +0 -43
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +0 -1
- package/dist/core/router/adapter/react-router/index.cjs +0 -1
- package/dist/core/router/adapter/react-router/index.d.ts +0 -4
- package/dist/core/router/adapter/react-router/index.js +0 -1
- package/dist/core/router/adapter/types.cjs +0 -1
- package/dist/core/router/adapter/types.d.ts +0 -111
- package/dist/core/router/adapter/types.js +0 -1
- package/dist/core/router/dev/RouterDevTools.cjs +0 -1
- package/dist/core/router/dev/RouterDevTools.d.ts +0 -5
- package/dist/core/router/dev/RouterDevTools.js +0 -1
- package/dist/core/router/dev/index.cjs +0 -1
- package/dist/core/router/dev/index.d.ts +0 -4
- package/dist/core/router/dev/index.js +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.cjs +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.d.ts +0 -71
- package/dist/core/router/dynamic/DynamicRouteManager.js +0 -1
- package/dist/core/router/dynamic/index.cjs +0 -1
- package/dist/core/router/dynamic/index.d.ts +0 -4
- package/dist/core/router/dynamic/index.js +0 -1
- package/dist/core/router/errors/RouterError.cjs +0 -1
- package/dist/core/router/errors/RouterError.d.ts +0 -48
- package/dist/core/router/errors/RouterError.js +0 -1
- package/dist/core/router/errors/index.cjs +0 -1
- package/dist/core/router/errors/index.d.ts +0 -4
- package/dist/core/router/errors/index.js +0 -1
- package/dist/core/router/index.cjs +0 -1
- package/dist/core/router/index.d.ts +0 -16
- package/dist/core/router/index.js +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts +0 -56
- package/dist/core/router/lifecycle/RouterLifecycleManager.js +0 -1
- package/dist/core/router/lifecycle/index.cjs +0 -1
- package/dist/core/router/lifecycle/index.d.ts +0 -4
- package/dist/core/router/lifecycle/index.js +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.d.ts +0 -61
- package/dist/core/router/middleware/RouterMiddlewareManager.js +0 -1
- package/dist/core/router/middleware/auth.cjs +0 -1
- package/dist/core/router/middleware/auth.d.ts +0 -54
- package/dist/core/router/middleware/auth.js +0 -1
- package/dist/core/router/middleware/index.cjs +0 -1
- package/dist/core/router/middleware/index.d.ts +0 -6
- package/dist/core/router/middleware/index.js +0 -1
- package/dist/core/router/middleware/types.cjs +0 -1
- package/dist/core/router/middleware/types.d.ts +0 -82
- package/dist/core/router/middleware/types.js +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.d.ts +0 -134
- package/dist/core/router/monitoring/RouterMonitoring.js +0 -1
- package/dist/core/router/monitoring/index.cjs +0 -1
- package/dist/core/router/monitoring/index.d.ts +0 -4
- package/dist/core/router/monitoring/index.js +0 -1
- package/dist/core/router/navigation/RouterNavigation.cjs +0 -1
- package/dist/core/router/navigation/RouterNavigation.d.ts +0 -43
- package/dist/core/router/navigation/RouterNavigation.js +0 -1
- package/dist/core/router/navigation/index.cjs +0 -1
- package/dist/core/router/navigation/index.d.ts +0 -4
- package/dist/core/router/navigation/index.js +0 -1
- package/dist/core/router/performance/RouteCache.cjs +0 -1
- package/dist/core/router/performance/RouteCache.d.ts +0 -113
- package/dist/core/router/performance/RouteCache.js +0 -1
- package/dist/core/router/performance/RoutePreloader.cjs +0 -1
- package/dist/core/router/performance/RoutePreloader.d.ts +0 -111
- package/dist/core/router/performance/RoutePreloader.js +0 -1
- package/dist/core/router/performance/index.cjs +0 -1
- package/dist/core/router/performance/index.d.ts +0 -5
- package/dist/core/router/performance/index.js +0 -1
- package/dist/core/router/plugin/RouterPluginManager.cjs +0 -1
- package/dist/core/router/plugin/RouterPluginManager.d.ts +0 -74
- package/dist/core/router/plugin/RouterPluginManager.js +0 -1
- package/dist/core/router/plugin/index.cjs +0 -1
- package/dist/core/router/plugin/index.d.ts +0 -5
- package/dist/core/router/plugin/index.js +0 -1
- package/dist/core/router/plugin/types.cjs +0 -1
- package/dist/core/router/plugin/types.d.ts +0 -153
- package/dist/core/router/plugin/types.js +0 -1
- package/dist/core/router/types.cjs +0 -1
- package/dist/core/router/types.d.ts +0 -464
- package/dist/core/router/types.js +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +0 -2
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.d.ts +0 -5
- package/dist/core/router/utils/adapters/react-router/transform.js +0 -1
- package/dist/core/router/utils/transform.cjs +0 -1
- package/dist/core/router/utils/transform.d.ts +0 -348
- package/dist/core/router/utils/transform.js +0 -1
- package/dist/core/router/validation/RouterConfigValidator.cjs +0 -2
- package/dist/core/router/validation/RouterConfigValidator.d.ts +0 -121
- package/dist/core/router/validation/RouterConfigValidator.js +0 -2
- package/dist/core/router/validation/index.cjs +0 -1
- package/dist/core/router/validation/index.d.ts +0 -5
- package/dist/core/router/validation/index.js +0 -1
- package/dist/core/router/validation/schema.cjs +0 -1
- package/dist/core/router/validation/schema.d.ts +0 -180
- package/dist/core/router/validation/schema.js +0 -1
- package/dist/core/router/version/RouteVersionManager.cjs +0 -1
- package/dist/core/router/version/RouteVersionManager.d.ts +0 -124
- package/dist/core/router/version/RouteVersionManager.js +0 -1
- package/dist/core/router/version/index.cjs +0 -1
- package/dist/core/router/version/index.d.ts +0 -4
- package/dist/core/router/version/index.js +0 -1
- package/dist/core/splash/SplashScreen.cjs +0 -1
- package/dist/core/splash/SplashScreen.d.ts +0 -14
- package/dist/core/splash/SplashScreen.js +0 -1
- package/dist/core/splash/index.cjs +0 -1
- package/dist/core/splash/index.d.ts +0 -5
- package/dist/core/splash/index.js +0 -1
- package/dist/core/splash/splashScreenUtils.cjs +0 -1
- package/dist/core/splash/splashScreenUtils.d.ts +0 -7
- package/dist/core/splash/splashScreenUtils.js +0 -1
- package/dist/core/startup/AppInstance.cjs +0 -1
- package/dist/core/startup/AppInstance.d.ts +0 -138
- package/dist/core/startup/AppInstance.js +0 -1
- package/dist/core/startup/environment.cjs +0 -1
- package/dist/core/startup/environment.d.ts +0 -87
- package/dist/core/startup/environment.js +0 -1
- package/dist/core/startup/index.cjs +0 -1
- package/dist/core/startup/index.d.ts +0 -7
- package/dist/core/startup/index.js +0 -1
- package/dist/core/startup/initializeServices.cjs +0 -1
- package/dist/core/startup/initializeServices.d.ts +0 -68
- package/dist/core/startup/initializeServices.js +0 -1
- package/dist/core/startup/performanceTracker.cjs +0 -1
- package/dist/core/startup/performanceTracker.d.ts +0 -104
- package/dist/core/startup/performanceTracker.js +0 -1
- package/dist/core/startup/renderApp.cjs +0 -1
- package/dist/core/startup/renderApp.d.ts +0 -70
- package/dist/core/startup/renderApp.js +0 -1
- package/dist/core/startup/startApp.cjs +0 -1
- package/dist/core/startup/startApp.d.ts +0 -14
- package/dist/core/startup/startApp.js +0 -1
- package/dist/core/types.cjs +0 -1
- package/dist/core/types.d.ts +0 -501
- package/dist/core/types.js +0 -1
- package/dist/core-bak/Test.cjs +0 -1
- package/dist/core-bak/Test.d.ts +0 -5
- package/dist/core-bak/Test.js +0 -1
- package/dist/core-bak/app/AppContext.cjs +0 -1
- package/dist/core-bak/app/AppContext.d.ts +0 -113
- package/dist/core-bak/app/AppContext.js +0 -1
- package/dist/core-bak/app/AppContext.types.cjs +0 -1
- package/dist/core-bak/app/AppContext.types.d.ts +0 -146
- package/dist/core-bak/app/AppContext.types.js +0 -1
- package/dist/core-bak/app/BasicLayout.cjs +0 -1
- package/dist/core-bak/app/BasicLayout.d.ts +0 -15
- package/dist/core-bak/app/BasicLayout.js +0 -1
- package/dist/core-bak/app/DefaultApp.cjs +0 -1
- package/dist/core-bak/app/DefaultApp.d.ts +0 -10
- package/dist/core-bak/app/DefaultApp.js +0 -1
- package/dist/core-bak/app/index.cjs +0 -1
- package/dist/core-bak/app/index.d.ts +0 -8
- package/dist/core-bak/app/index.js +0 -1
- package/dist/core-bak/config/AppConfig.cjs +0 -1
- package/dist/core-bak/config/AppConfig.d.ts +0 -88
- package/dist/core-bak/config/AppConfig.js +0 -1
- package/dist/core-bak/config/ConfigLoader.cjs +0 -1
- package/dist/core-bak/config/ConfigLoader.d.ts +0 -118
- package/dist/core-bak/config/ConfigLoader.js +0 -1
- package/dist/core-bak/config/ConfigValidator.cjs +0 -2
- package/dist/core-bak/config/ConfigValidator.d.ts +0 -84
- package/dist/core-bak/config/ConfigValidator.js +0 -2
- package/dist/core-bak/config/index.cjs +0 -1
- package/dist/core-bak/config/index.d.ts +0 -6
- package/dist/core-bak/config/index.js +0 -1
- package/dist/core-bak/dev/DevTools.cjs +0 -1
- package/dist/core-bak/dev/DevTools.d.ts +0 -16
- package/dist/core-bak/dev/DevTools.js +0 -1
- package/dist/core-bak/error/ErrorBoundary.cjs +0 -1
- package/dist/core-bak/error/ErrorBoundary.d.ts +0 -121
- package/dist/core-bak/error/ErrorBoundary.js +0 -1
- package/dist/core-bak/error/ErrorHandler.cjs +0 -1
- package/dist/core-bak/error/ErrorHandler.d.ts +0 -171
- package/dist/core-bak/error/ErrorHandler.js +0 -1
- package/dist/core-bak/error/index.cjs +0 -1
- package/dist/core-bak/error/index.d.ts +0 -7
- package/dist/core-bak/error/index.js +0 -1
- package/dist/core-bak/event/AppEventBus.cjs +0 -1
- package/dist/core-bak/event/AppEventBus.d.ts +0 -178
- package/dist/core-bak/event/AppEventBus.js +0 -1
- package/dist/core-bak/event/frameworkEvents.cjs +0 -1
- package/dist/core-bak/event/frameworkEvents.d.ts +0 -69
- package/dist/core-bak/event/frameworkEvents.js +0 -1
- package/dist/core-bak/event/hooks.cjs +0 -1
- package/dist/core-bak/event/hooks.d.ts +0 -57
- package/dist/core-bak/event/hooks.js +0 -1
- package/dist/core-bak/event/index.cjs +0 -1
- package/dist/core-bak/event/index.d.ts +0 -10
- package/dist/core-bak/event/index.js +0 -1
- package/dist/core-bak/event/types.cjs +0 -1
- package/dist/core-bak/event/types.d.ts +0 -269
- package/dist/core-bak/event/types.js +0 -1
- package/dist/core-bak/event/useEventBus.cjs +0 -1
- package/dist/core-bak/event/useEventBus.d.ts +0 -28
- package/dist/core-bak/event/useEventBus.js +0 -1
- package/dist/core-bak/index.cjs +0 -1
- package/dist/core-bak/index.d.ts +0 -54
- package/dist/core-bak/index.js +0 -1
- package/dist/core-bak/initialization/InitializationErrorThrower.cjs +0 -1
- package/dist/core-bak/initialization/InitializationErrorThrower.d.ts +0 -7
- package/dist/core-bak/initialization/InitializationErrorThrower.js +0 -1
- package/dist/core-bak/initialization/index.cjs +0 -1
- package/dist/core-bak/initialization/index.d.ts +0 -7
- package/dist/core-bak/initialization/index.js +0 -1
- package/dist/core-bak/initialization/initialization.cjs +0 -1
- package/dist/core-bak/initialization/initialization.d.ts +0 -69
- package/dist/core-bak/initialization/initialization.js +0 -1
- package/dist/core-bak/initialization/initializationErrorState.cjs +0 -1
- package/dist/core-bak/initialization/initializationErrorState.d.ts +0 -35
- package/dist/core-bak/initialization/initializationErrorState.js +0 -1
- package/dist/core-bak/kernel/defaultAdapters.cjs +0 -1
- package/dist/core-bak/kernel/defaultAdapters.d.ts +0 -2
- package/dist/core-bak/kernel/defaultAdapters.js +0 -1
- package/dist/core-bak/kernel/errors.cjs +0 -1
- package/dist/core-bak/kernel/errors.d.ts +0 -18
- package/dist/core-bak/kernel/errors.js +0 -1
- package/dist/core-bak/kernel/index.cjs +0 -1
- package/dist/core-bak/kernel/index.d.ts +0 -3
- package/dist/core-bak/kernel/index.js +0 -1
- package/dist/core-bak/kernel/startKernel.cjs +0 -1
- package/dist/core-bak/kernel/startKernel.d.ts +0 -2
- package/dist/core-bak/kernel/startKernel.js +0 -1
- package/dist/core-bak/kernel/types.d.ts +0 -114
- package/dist/core-bak/middleware.cjs +0 -1
- package/dist/core-bak/middleware.d.ts +0 -36
- package/dist/core-bak/middleware.js +0 -1
- package/dist/core-bak/plugin/PluginEventBus.cjs +0 -1
- package/dist/core-bak/plugin/PluginEventBus.d.ts +0 -169
- package/dist/core-bak/plugin/PluginEventBus.js +0 -1
- package/dist/core-bak/plugin/PluginSandbox.cjs +0 -1
- package/dist/core-bak/plugin/PluginSandbox.d.ts +0 -101
- package/dist/core-bak/plugin/PluginSandbox.js +0 -1
- package/dist/core-bak/plugin.cjs +0 -1
- package/dist/core-bak/plugin.d.ts +0 -224
- package/dist/core-bak/plugin.js +0 -1
- package/dist/core-bak/router/RouterManager.cjs +0 -1
- package/dist/core-bak/router/RouterManager.d.ts +0 -87
- package/dist/core-bak/router/RouterManager.js +0 -1
- package/dist/core-bak/router/adapter/AdapterManager.cjs +0 -1
- package/dist/core-bak/router/adapter/AdapterManager.d.ts +0 -94
- package/dist/core-bak/router/adapter/AdapterManager.js +0 -1
- package/dist/core-bak/router/adapter/index.cjs +0 -1
- package/dist/core-bak/router/adapter/index.d.ts +0 -6
- package/dist/core-bak/router/adapter/index.js +0 -1
- package/dist/core-bak/router/adapter/react-router/ReactRouterAdapter.cjs +0 -1
- package/dist/core-bak/router/adapter/react-router/ReactRouterAdapter.d.ts +0 -43
- package/dist/core-bak/router/adapter/react-router/ReactRouterAdapter.js +0 -1
- package/dist/core-bak/router/adapter/react-router/index.cjs +0 -1
- package/dist/core-bak/router/adapter/react-router/index.d.ts +0 -4
- package/dist/core-bak/router/adapter/react-router/index.js +0 -1
- package/dist/core-bak/router/adapter/types.d.ts +0 -111
- package/dist/core-bak/router/dev/RouterDevTools.cjs +0 -1
- package/dist/core-bak/router/dev/RouterDevTools.d.ts +0 -5
- package/dist/core-bak/router/dev/RouterDevTools.js +0 -1
- package/dist/core-bak/router/dev/index.cjs +0 -1
- package/dist/core-bak/router/dev/index.d.ts +0 -4
- package/dist/core-bak/router/dev/index.js +0 -1
- package/dist/core-bak/router/dynamic/DynamicRouteManager.cjs +0 -1
- package/dist/core-bak/router/dynamic/DynamicRouteManager.d.ts +0 -71
- package/dist/core-bak/router/dynamic/DynamicRouteManager.js +0 -1
- package/dist/core-bak/router/dynamic/index.cjs +0 -1
- package/dist/core-bak/router/dynamic/index.d.ts +0 -4
- package/dist/core-bak/router/dynamic/index.js +0 -1
- package/dist/core-bak/router/errors/RouterError.cjs +0 -1
- package/dist/core-bak/router/errors/RouterError.d.ts +0 -48
- package/dist/core-bak/router/errors/RouterError.js +0 -1
- package/dist/core-bak/router/errors/index.cjs +0 -1
- package/dist/core-bak/router/errors/index.d.ts +0 -4
- package/dist/core-bak/router/errors/index.js +0 -1
- package/dist/core-bak/router/index.cjs +0 -1
- package/dist/core-bak/router/index.d.ts +0 -16
- package/dist/core-bak/router/index.js +0 -1
- package/dist/core-bak/router/lifecycle/RouterLifecycleManager.cjs +0 -1
- package/dist/core-bak/router/lifecycle/RouterLifecycleManager.d.ts +0 -56
- package/dist/core-bak/router/lifecycle/RouterLifecycleManager.js +0 -1
- package/dist/core-bak/router/lifecycle/index.cjs +0 -1
- package/dist/core-bak/router/lifecycle/index.d.ts +0 -4
- package/dist/core-bak/router/lifecycle/index.js +0 -1
- package/dist/core-bak/router/middleware/RouterMiddlewareManager.cjs +0 -1
- package/dist/core-bak/router/middleware/RouterMiddlewareManager.d.ts +0 -61
- package/dist/core-bak/router/middleware/RouterMiddlewareManager.js +0 -1
- package/dist/core-bak/router/middleware/auth.cjs +0 -1
- package/dist/core-bak/router/middleware/auth.d.ts +0 -54
- package/dist/core-bak/router/middleware/auth.js +0 -1
- package/dist/core-bak/router/middleware/index.cjs +0 -1
- package/dist/core-bak/router/middleware/index.d.ts +0 -6
- package/dist/core-bak/router/middleware/index.js +0 -1
- package/dist/core-bak/router/middleware/types.cjs +0 -1
- package/dist/core-bak/router/middleware/types.d.ts +0 -82
- package/dist/core-bak/router/middleware/types.js +0 -1
- package/dist/core-bak/router/monitoring/RouterMonitoring.cjs +0 -1
- package/dist/core-bak/router/monitoring/RouterMonitoring.d.ts +0 -134
- package/dist/core-bak/router/monitoring/RouterMonitoring.js +0 -1
- package/dist/core-bak/router/monitoring/index.cjs +0 -1
- package/dist/core-bak/router/monitoring/index.d.ts +0 -4
- package/dist/core-bak/router/monitoring/index.js +0 -1
- package/dist/core-bak/router/navigation/RouterNavigation.cjs +0 -1
- package/dist/core-bak/router/navigation/RouterNavigation.d.ts +0 -43
- package/dist/core-bak/router/navigation/RouterNavigation.js +0 -1
- package/dist/core-bak/router/navigation/index.cjs +0 -1
- package/dist/core-bak/router/navigation/index.d.ts +0 -4
- package/dist/core-bak/router/navigation/index.js +0 -1
- package/dist/core-bak/router/performance/RouteCache.cjs +0 -1
- package/dist/core-bak/router/performance/RouteCache.d.ts +0 -113
- package/dist/core-bak/router/performance/RouteCache.js +0 -1
- package/dist/core-bak/router/performance/RoutePreloader.cjs +0 -1
- package/dist/core-bak/router/performance/RoutePreloader.d.ts +0 -111
- package/dist/core-bak/router/performance/RoutePreloader.js +0 -1
- package/dist/core-bak/router/performance/index.cjs +0 -1
- package/dist/core-bak/router/performance/index.d.ts +0 -5
- package/dist/core-bak/router/performance/index.js +0 -1
- package/dist/core-bak/router/plugin/RouterPluginManager.cjs +0 -1
- package/dist/core-bak/router/plugin/RouterPluginManager.d.ts +0 -74
- package/dist/core-bak/router/plugin/RouterPluginManager.js +0 -1
- package/dist/core-bak/router/plugin/index.cjs +0 -1
- package/dist/core-bak/router/plugin/index.d.ts +0 -5
- package/dist/core-bak/router/plugin/index.js +0 -1
- package/dist/core-bak/router/plugin/types.cjs +0 -1
- package/dist/core-bak/router/plugin/types.d.ts +0 -153
- package/dist/core-bak/router/plugin/types.js +0 -1
- package/dist/core-bak/router/types.cjs +0 -1
- package/dist/core-bak/router/types.d.ts +0 -464
- package/dist/core-bak/router/types.js +0 -1
- package/dist/core-bak/router/utils/adapters/react-router/RouteErrorBoundary.cjs +0 -1
- package/dist/core-bak/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +0 -2
- package/dist/core-bak/router/utils/adapters/react-router/RouteErrorBoundary.js +0 -1
- package/dist/core-bak/router/utils/adapters/react-router/transform.cjs +0 -1
- package/dist/core-bak/router/utils/adapters/react-router/transform.d.ts +0 -5
- package/dist/core-bak/router/utils/adapters/react-router/transform.js +0 -1
- package/dist/core-bak/router/utils/transform.cjs +0 -1
- package/dist/core-bak/router/utils/transform.d.ts +0 -348
- package/dist/core-bak/router/utils/transform.js +0 -1
- package/dist/core-bak/router/validation/RouterConfigValidator.cjs +0 -2
- package/dist/core-bak/router/validation/RouterConfigValidator.d.ts +0 -121
- package/dist/core-bak/router/validation/RouterConfigValidator.js +0 -2
- package/dist/core-bak/router/validation/index.cjs +0 -1
- package/dist/core-bak/router/validation/index.d.ts +0 -5
- package/dist/core-bak/router/validation/index.js +0 -1
- package/dist/core-bak/router/validation/schema.cjs +0 -1
- package/dist/core-bak/router/validation/schema.d.ts +0 -180
- package/dist/core-bak/router/validation/schema.js +0 -1
- package/dist/core-bak/router/version/RouteVersionManager.cjs +0 -1
- package/dist/core-bak/router/version/RouteVersionManager.d.ts +0 -124
- package/dist/core-bak/router/version/RouteVersionManager.js +0 -1
- package/dist/core-bak/router/version/index.cjs +0 -1
- package/dist/core-bak/router/version/index.d.ts +0 -4
- package/dist/core-bak/router/version/index.js +0 -1
- package/dist/core-bak/splash/SplashScreen.cjs +0 -1
- package/dist/core-bak/splash/SplashScreen.d.ts +0 -14
- package/dist/core-bak/splash/SplashScreen.js +0 -1
- package/dist/core-bak/splash/index.cjs +0 -1
- package/dist/core-bak/splash/index.d.ts +0 -5
- package/dist/core-bak/splash/index.js +0 -1
- package/dist/core-bak/splash/splashScreenUtils.cjs +0 -1
- package/dist/core-bak/splash/splashScreenUtils.d.ts +0 -7
- package/dist/core-bak/splash/splashScreenUtils.js +0 -1
- package/dist/core-bak/startup/AppInstance.cjs +0 -1
- package/dist/core-bak/startup/AppInstance.d.ts +0 -138
- package/dist/core-bak/startup/AppInstance.js +0 -1
- package/dist/core-bak/startup/environment.cjs +0 -1
- package/dist/core-bak/startup/environment.d.ts +0 -87
- package/dist/core-bak/startup/environment.js +0 -1
- package/dist/core-bak/startup/index.cjs +0 -1
- package/dist/core-bak/startup/index.d.ts +0 -7
- package/dist/core-bak/startup/index.js +0 -1
- package/dist/core-bak/startup/initializeServices.cjs +0 -1
- package/dist/core-bak/startup/initializeServices.d.ts +0 -68
- package/dist/core-bak/startup/initializeServices.js +0 -1
- package/dist/core-bak/startup/performanceTracker.cjs +0 -1
- package/dist/core-bak/startup/performanceTracker.d.ts +0 -104
- package/dist/core-bak/startup/performanceTracker.js +0 -1
- package/dist/core-bak/startup/renderApp.cjs +0 -1
- package/dist/core-bak/startup/renderApp.d.ts +0 -70
- package/dist/core-bak/startup/renderApp.js +0 -1
- package/dist/core-bak/startup/startApp.cjs +0 -1
- package/dist/core-bak/startup/startApp.d.ts +0 -14
- package/dist/core-bak/startup/startApp.js +0 -1
- package/dist/core-bak/types.cjs +0 -1
- package/dist/core-bak/types.d.ts +0 -501
- package/dist/core-bak/types.js +0 -1
- package/dist/index.umd.cjs +0 -1
- package/dist/index.umd.d.ts +0 -7
- package/dist/library/index.cjs +0 -1
- package/dist/library/index.d.ts +0 -2
- package/dist/library/index.js +0 -1
- package/dist/library/locale/index.cjs +0 -1
- package/dist/library/locale/index.d.ts +0 -6
- package/dist/library/locale/index.js +0 -1
- package/dist/library/locale/langs/en-us/index.cjs +0 -1
- package/dist/library/locale/langs/en-us/index.d.ts +0 -3
- package/dist/library/locale/langs/en-us/index.js +0 -1
- package/dist/library/locale/langs/zh-cn/index.cjs +0 -1
- package/dist/library/locale/langs/zh-cn/index.d.ts +0 -3
- package/dist/library/locale/langs/zh-cn/index.js +0 -1
- package/dist/library/locale/types.cjs +0 -1
- package/dist/library/locale/types.d.ts +0 -38
- package/dist/library/locale/types.js +0 -1
- package/dist/library/storage/cache.cjs +0 -1
- package/dist/library/storage/cache.d.ts +0 -57
- package/dist/library/storage/cache.js +0 -1
- package/dist/library/storage/encryption.cjs +0 -1
- package/dist/library/storage/encryption.d.ts +0 -45
- package/dist/library/storage/encryption.js +0 -1
- package/dist/library/storage/index.cjs +0 -1
- package/dist/library/storage/index.d.ts +0 -62
- package/dist/library/storage/index.js +0 -1
- package/dist/state/StateManager.cjs +0 -1
- package/dist/state/StateManager.d.ts +0 -120
- package/dist/state/StateManager.js +0 -1
- package/dist/state/adapters/AdapterFactory.cjs +0 -1
- package/dist/state/adapters/AdapterFactory.d.ts +0 -51
- package/dist/state/adapters/AdapterFactory.js +0 -1
- package/dist/state/adapters/DefaultAdapter.cjs +0 -1
- package/dist/state/adapters/DefaultAdapter.d.ts +0 -38
- package/dist/state/adapters/DefaultAdapter.js +0 -1
- package/dist/state/adapters/ReduxAdapter.cjs +0 -1
- package/dist/state/adapters/ReduxAdapter.d.ts +0 -129
- package/dist/state/adapters/ReduxAdapter.js +0 -1
- package/dist/state/adapters/ZustandAdapter.cjs +0 -1
- package/dist/state/adapters/ZustandAdapter.d.ts +0 -46
- package/dist/state/adapters/ZustandAdapter.js +0 -1
- package/dist/state/adapters/index.cjs +0 -1
- package/dist/state/adapters/index.d.ts +0 -8
- package/dist/state/adapters/index.js +0 -1
- package/dist/state/adapters/types.cjs +0 -1
- package/dist/state/adapters/types.d.ts +0 -4
- package/dist/state/adapters/types.js +0 -1
- package/dist/state/core/DerivedStateInstance.cjs +0 -1
- package/dist/state/core/DerivedStateInstance.d.ts +0 -100
- package/dist/state/core/DerivedStateInstance.js +0 -1
- package/dist/state/core/StateInstance.cjs +0 -1
- package/dist/state/core/StateInstance.d.ts +0 -85
- package/dist/state/core/StateInstance.js +0 -1
- package/dist/state/core/StateRegistry.cjs +0 -1
- package/dist/state/core/StateRegistry.d.ts +0 -55
- package/dist/state/core/StateRegistry.js +0 -1
- package/dist/state/core/StateScope.cjs +0 -1
- package/dist/state/core/StateScope.d.ts +0 -71
- package/dist/state/core/StateScope.js +0 -1
- package/dist/state/core/index.cjs +0 -1
- package/dist/state/core/index.d.ts +0 -7
- package/dist/state/core/index.js +0 -1
- package/dist/state/index.cjs +0 -1
- package/dist/state/index.d.ts +0 -8
- package/dist/state/index.js +0 -1
- package/dist/state/types.cjs +0 -1
- package/dist/state/types.d.ts +0 -230
- package/dist/state/types.js +0 -1
- package/dist/state.umd.js +0 -41
- package/dist/types.cjs +0 -1
- package/dist/types.d.ts +0 -7
- package/dist/types.js +0 -1
- package/dist/utils/analytics.cjs +0 -1
- package/dist/utils/analytics.d.ts +0 -127
- package/dist/utils/analytics.js +0 -1
- package/dist/utils/configSecurity.cjs +0 -3
- package/dist/utils/configSecurity.d.ts +0 -100
- package/dist/utils/configSecurity.js +0 -3
- package/dist/utils/csrf.cjs +0 -1
- package/dist/utils/csrf.d.ts +0 -1
- package/dist/utils/csrf.js +0 -1
- package/dist/utils/errors/ErrorCodes.cjs +0 -1
- package/dist/utils/errors/ErrorCodes.d.ts +0 -1
- package/dist/utils/errors/ErrorCodes.js +0 -1
- package/dist/utils/errors.cjs +0 -1
- package/dist/utils/errors.d.ts +0 -30
- package/dist/utils/errors.js +0 -1
- package/dist/utils/index.cjs +0 -1
- package/dist/utils/index.d.ts +0 -39
- package/dist/utils/index.js +0 -1
- package/dist/utils/logger.cjs +0 -1
- package/dist/utils/logger.d.ts +0 -2
- package/dist/utils/logger.js +0 -1
- package/dist/utils/logger.types.cjs +0 -1
- package/dist/utils/logger.types.d.ts +0 -2
- package/dist/utils/logger.types.js +0 -1
- package/dist/utils/monitoring.cjs +0 -1
- package/dist/utils/monitoring.d.ts +0 -1
- package/dist/utils/monitoring.js +0 -1
- package/dist/utils/performance.cjs +0 -1
- package/dist/utils/performance.d.ts +0 -2
- package/dist/utils/performance.js +0 -1
- package/dist/utils/resourceLoader.cjs +0 -1
- package/dist/utils/resourceLoader.d.ts +0 -2
- package/dist/utils/resourceLoader.js +0 -1
- package/dist/utils/runtimeSecurity.cjs +0 -1
- package/dist/utils/runtimeSecurity.d.ts +0 -2
- package/dist/utils/runtimeSecurity.js +0 -1
- package/dist/utils/security.cjs +0 -1
- package/dist/utils/security.d.ts +0 -2
- package/dist/utils/security.js +0 -1
- package/dist/utils/traceId.cjs +0 -1
- package/dist/utils/traceId.d.ts +0 -1
- package/dist/utils/traceId.js +0 -1
- package/dist/utils/validation.cjs +0 -1
- package/dist/utils/validation.d.ts +0 -2
- package/dist/utils/validation.js +0 -1
- /package/dist/{core-bak/kernel → kernel/custom-manager/i18n}/types.cjs +0 -0
- /package/dist/{core-bak/kernel → kernel/custom-manager/i18n}/types.js +0 -0
- /package/dist/{core-bak/router/adapter → kernel/custom-manager/theme}/types.cjs +0 -0
- /package/dist/{core-bak/router/adapter → kernel/custom-manager/theme}/types.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}export class MultiLevelCache{moveToHead(node){const nodeAsUnknown=node;if(nodeAsUnknown===this.head){return}if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}if(nodeAsUnknown===this.tail){this.tail=node.prev}node.prev=null;node.next=this.head;if(this.head){this.head.prev=nodeAsUnknown}this.head=nodeAsUnknown;if(!this.tail){this.tail=nodeAsUnknown}}removeTail(){if(!this.tail){return}const key=this.tail.key;this.memoryCache.delete(key);if(this.tail.prev){this.tail.prev.next=null;this.tail=this.tail.prev}else{this.head=null;this.tail=null}}async get(key){const node=this.memoryCache.get(key);if(node){const item=node.value;if(item.expiresAt>Date.now()){this.moveToHead(node);return item.data}else{this.memoryCache.delete(key);if(node===this.head){this.head=node.next}if(node===this.tail){this.tail=node.prev}if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}}}try{const stored=await this.storage.get(key);if(stored){const item=JSON.parse(stored);if(item.expiresAt>Date.now()){this.setInMemory(key,item);return item.data}else{await this.storage.remove(key)}}}catch(error){}return null}setInMemory(key,item){let node=this.memoryCache.get(key);if(node){node.value=item;this.moveToHead(node)}else{node={key,value:item,prev:null,next:this.head};if(this.head){this.head.prev=node}this.head=node;if(!this.tail){this.tail=node}this.memoryCache.set(key,node);if(this.memoryCache.size>this.config.maxSize){this.removeTail()}}}async set(key,data,ttl){const expiresAt=Date.now()+(ttl||this.config.defaultTTL);const item={data,expiresAt,createdAt:Date.now()};this.setInMemory(key,item);try{await this.storage.set(key,item)}catch(error){}}async delete(key){const node=this.memoryCache.get(key);if(node){if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}if(node===this.head){this.head=node.next}if(node===this.tail){this.tail=node.prev}this.memoryCache.delete(key)}try{await this.storage.remove(key)}catch(error){}}async clear(){this.memoryCache.clear()}async cleanup(){const now=Date.now();const keysToDelete=[];const nodesToRemove=[];for(const[key,node]of this.memoryCache.entries()){if(node.value.expiresAt<=now){keysToDelete.push(key);nodesToRemove.push(node)}}if(keysToDelete.length>0){for(const node of nodesToRemove){if(node.prev){node.prev.next=node.next}if(node.next){node.next.prev=node.prev}if(node===this.head){this.head=node.next}if(node===this.tail){this.tail=node.prev}}keysToDelete.forEach(key=>this.memoryCache.delete(key))}}constructor(storage,config={}){_define_property(this,"memoryCache",new Map);_define_property(this,"storage",void 0);_define_property(this,"config",void 0);_define_property(this,"head",null);_define_property(this,"tail",null);this.storage=storage;this.config={defaultTTL:config.defaultTTL??24*60*60*1e3,maxSize:config.maxSize??100}}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"EncryptionUtils",{enumerable:true,get:function(){return EncryptionUtils}});const _utils=require("@vlian/utils");let EncryptionUtils=class EncryptionUtils{static async generateKey(){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new _utils.StorageError("加密功能需要浏览器支持 Web Crypto API")}try{return await window.crypto.subtle.generateKey({name:"AES-GCM",length:256},true,["encrypt","decrypt"])}catch(error){throw new _utils.StorageError("生成加密密钥失败",error instanceof Error?error:undefined)}}static async deriveKey(password,salt,iterations=1e5){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new _utils.StorageError("加密功能需要浏览器支持 Web Crypto API")}try{const encoder=new TextEncoder;const passwordKey=await window.crypto.subtle.importKey("raw",encoder.encode(password),"PBKDF2",false,["deriveBits","deriveKey"]);const saltBuffer=salt instanceof Uint8Array?salt:new Uint8Array(salt);return await window.crypto.subtle.deriveKey({name:"PBKDF2",salt:saltBuffer,iterations:iterations,hash:"SHA-256"},passwordKey,{name:"AES-GCM",length:256},false,["encrypt","decrypt"])}catch(error){throw new _utils.StorageError("密钥派生失败",error instanceof Error?error:undefined)}}static async importKey(keyString,salt){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new _utils.StorageError("加密功能需要浏览器支持 Web Crypto API")}try{let keySalt=salt;if(!keySalt){const saltKey="__encryption_salt__";const storedSalt=sessionStorage.getItem(saltKey);if(storedSalt){const saltArray=Uint8Array.from(JSON.parse(storedSalt));keySalt=saltArray}else{keySalt=window.crypto.getRandomValues(new Uint8Array(16));sessionStorage.setItem(saltKey,JSON.stringify(Array.from(keySalt)))}}return await this.deriveKey(keyString,keySalt)}catch(error){throw new _utils.StorageError("导入加密密钥失败",error instanceof Error?error:undefined)}}static async encrypt(data,key){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new _utils.StorageError("加密功能需要浏览器支持 Web Crypto API")}try{const encoder=new TextEncoder;const dataBuffer=encoder.encode(data);const iv=window.crypto.getRandomValues(new Uint8Array(12));const encrypted=await window.crypto.subtle.encrypt({name:"AES-GCM",iv:iv},key,dataBuffer);const combined=new Uint8Array(iv.length+encrypted.byteLength);combined.set(iv);combined.set(new Uint8Array(encrypted),iv.length);return btoa(String.fromCharCode(...combined))}catch(error){throw new _utils.StorageError("加密数据失败",error instanceof Error?error:undefined)}}static async decrypt(encryptedData,key){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new _utils.StorageError("解密功能需要浏览器支持 Web Crypto API")}try{const combined=Uint8Array.from(atob(encryptedData),c=>c.charCodeAt(0));const iv=combined.slice(0,12);const encrypted=combined.slice(12);const decrypted=await window.crypto.subtle.decrypt({name:"AES-GCM",iv:iv},key,encrypted);const decoder=new TextDecoder;return decoder.decode(decrypted)}catch(error){throw new _utils.StorageError("解密数据失败",error instanceof Error?error:undefined)}}static shouldEncrypt(key){return _utils.SecurityUtils.isSensitiveField(key)}};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 加密配置
|
|
3
|
-
*/
|
|
4
|
-
export interface EncryptionConfig {
|
|
5
|
-
/**
|
|
6
|
-
* 是否启用加密
|
|
7
|
-
*/
|
|
8
|
-
enabled: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* 加密密钥(可选,如果不提供则使用默认密钥)
|
|
11
|
-
*/
|
|
12
|
-
key?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* 加密工具类
|
|
16
|
-
*/
|
|
17
|
-
export declare class EncryptionUtils {
|
|
18
|
-
/**
|
|
19
|
-
* 生成加密密钥
|
|
20
|
-
*/
|
|
21
|
-
static generateKey(): Promise<CryptoKey>;
|
|
22
|
-
/**
|
|
23
|
-
* 使用 PBKDF2 派生密钥
|
|
24
|
-
*/
|
|
25
|
-
static deriveKey(password: string, salt: Uint8Array, iterations?: number): Promise<CryptoKey>;
|
|
26
|
-
/**
|
|
27
|
-
* 从字符串导入密钥(使用 PBKDF2 派生)
|
|
28
|
-
*
|
|
29
|
-
* 注意:如果没有提供 salt,每次调用都会生成新的 salt,导致密钥不一致。
|
|
30
|
-
* 建议在生产环境中使用固定的 salt 或从安全存储中获取。
|
|
31
|
-
*/
|
|
32
|
-
static importKey(keyString: string, salt?: Uint8Array): Promise<CryptoKey>;
|
|
33
|
-
/**
|
|
34
|
-
* 加密数据
|
|
35
|
-
*/
|
|
36
|
-
static encrypt(data: string, key: CryptoKey): Promise<string>;
|
|
37
|
-
/**
|
|
38
|
-
* 解密数据
|
|
39
|
-
*/
|
|
40
|
-
static decrypt(encryptedData: string, key: CryptoKey): Promise<string>;
|
|
41
|
-
/**
|
|
42
|
-
* 检查字段是否需要加密
|
|
43
|
-
*/
|
|
44
|
-
static shouldEncrypt(key: string): boolean;
|
|
45
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{SecurityUtils,StorageError}from"@vlian/utils";export class EncryptionUtils{static async generateKey(){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new StorageError("加密功能需要浏览器支持 Web Crypto API")}try{return await window.crypto.subtle.generateKey({name:"AES-GCM",length:256},true,["encrypt","decrypt"])}catch(error){throw new StorageError("生成加密密钥失败",error instanceof Error?error:undefined)}}static async deriveKey(password,salt,iterations=1e5){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new StorageError("加密功能需要浏览器支持 Web Crypto API")}try{const encoder=new TextEncoder;const passwordKey=await window.crypto.subtle.importKey("raw",encoder.encode(password),"PBKDF2",false,["deriveBits","deriveKey"]);const saltBuffer=salt instanceof Uint8Array?salt:new Uint8Array(salt);return await window.crypto.subtle.deriveKey({name:"PBKDF2",salt:saltBuffer,iterations:iterations,hash:"SHA-256"},passwordKey,{name:"AES-GCM",length:256},false,["encrypt","decrypt"])}catch(error){throw new StorageError("密钥派生失败",error instanceof Error?error:undefined)}}static async importKey(keyString,salt){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new StorageError("加密功能需要浏览器支持 Web Crypto API")}try{let keySalt=salt;if(!keySalt){const saltKey="__encryption_salt__";const storedSalt=sessionStorage.getItem(saltKey);if(storedSalt){const saltArray=Uint8Array.from(JSON.parse(storedSalt));keySalt=saltArray}else{keySalt=window.crypto.getRandomValues(new Uint8Array(16));sessionStorage.setItem(saltKey,JSON.stringify(Array.from(keySalt)))}}return await this.deriveKey(keyString,keySalt)}catch(error){throw new StorageError("导入加密密钥失败",error instanceof Error?error:undefined)}}static async encrypt(data,key){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new StorageError("加密功能需要浏览器支持 Web Crypto API")}try{const encoder=new TextEncoder;const dataBuffer=encoder.encode(data);const iv=window.crypto.getRandomValues(new Uint8Array(12));const encrypted=await window.crypto.subtle.encrypt({name:"AES-GCM",iv:iv},key,dataBuffer);const combined=new Uint8Array(iv.length+encrypted.byteLength);combined.set(iv);combined.set(new Uint8Array(encrypted),iv.length);return btoa(String.fromCharCode(...combined))}catch(error){throw new StorageError("加密数据失败",error instanceof Error?error:undefined)}}static async decrypt(encryptedData,key){if(typeof window==="undefined"||!window.crypto||!window.crypto.subtle){throw new StorageError("解密功能需要浏览器支持 Web Crypto API")}try{const combined=Uint8Array.from(atob(encryptedData),c=>c.charCodeAt(0));const iv=combined.slice(0,12);const encrypted=combined.slice(12);const decrypted=await window.crypto.subtle.decrypt({name:"AES-GCM",iv:iv},key,encrypted);const decoder=new TextDecoder;return decoder.decode(decrypted)}catch(error){throw new StorageError("解密数据失败",error instanceof Error?error:undefined)}}static shouldEncrypt(key){return SecurityUtils.isSensitiveField(key)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get EncryptionUtils(){return _encryption.EncryptionUtils},get MultiLevelCache(){return _cache.MultiLevelCache},get storage(){return storage}});const _utils=require("@vlian/utils");const _cache=require("./cache");const _encryption=require("./encryption");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let Storage=class Storage{get local(){return this._local}get session(){return this._session}get indexedDB(){return this._indexedDB}get localCache(){return this._localCache}get sessionCache(){return this._sessionCache}static getInstance(){if(!Storage.instance){Storage.instance=new Storage}return Storage.instance}initialize(options){const local=(0,_utils.createStorage)({type:"local",prefix:options?.prefix||"vlian",defaultExpire:options?.defaultExpire||24*60*60*1e3});const session=(0,_utils.createStorage)({type:"session",prefix:options?.prefix||"vlian",defaultExpire:options?.defaultExpire||24*60*60*1e3});const indexedDB=(0,_utils.createStorage)({type:"indexedDB",prefix:options?.prefix||"vlian",defaultExpire:options?.defaultExpire||24*60*60*1e3,dbName:options?.tableName});this._local=local;this._session=session;this._indexedDB=indexedDB;this.cacheEnabled=options?.cache?.enabled??false;if(this.cacheEnabled){this._localCache=new _cache.MultiLevelCache(local,{defaultTTL:options?.cache?.defaultTTL,maxSize:options?.cache?.maxSize});this._sessionCache=new _cache.MultiLevelCache(session,{defaultTTL:options?.cache?.defaultTTL,maxSize:options?.cache?.maxSize})}}async cleanupCache(){if(this._localCache){await this._localCache.cleanup()}if(this._sessionCache){await this._sessionCache.cleanup()}}constructor(){_define_property(this,"_local",void 0);_define_property(this,"_session",void 0);_define_property(this,"_indexedDB",void 0);_define_property(this,"_localCache",void 0);_define_property(this,"_sessionCache",void 0);_define_property(this,"cacheEnabled",false)}};_define_property(Storage,"instance",null);const storage=Storage.getInstance();
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { StorageInstance } from '@vlian/utils';
|
|
2
|
-
import type { StorageOptions } from '../../types';
|
|
3
|
-
import type { EncryptionConfig } from './encryption';
|
|
4
|
-
import { MultiLevelCache } from './cache';
|
|
5
|
-
export { StorageInstance };
|
|
6
|
-
/**
|
|
7
|
-
* 增强的存储选项
|
|
8
|
-
*/
|
|
9
|
-
export interface EnhancedStorageOptions extends StorageOptions {
|
|
10
|
-
/**
|
|
11
|
-
* 加密配置
|
|
12
|
-
*/
|
|
13
|
-
encryption?: EncryptionConfig;
|
|
14
|
-
/**
|
|
15
|
-
* 缓存配置
|
|
16
|
-
*/
|
|
17
|
-
cache?: {
|
|
18
|
-
enabled?: boolean;
|
|
19
|
-
defaultTTL?: number;
|
|
20
|
-
maxSize?: number;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
declare class Storage {
|
|
24
|
-
private static instance;
|
|
25
|
-
private _local;
|
|
26
|
-
private _session;
|
|
27
|
-
private _indexedDB;
|
|
28
|
-
private _localCache?;
|
|
29
|
-
private _sessionCache?;
|
|
30
|
-
private cacheEnabled;
|
|
31
|
-
get local(): StorageInstance;
|
|
32
|
-
get session(): StorageInstance;
|
|
33
|
-
get indexedDB(): StorageInstance;
|
|
34
|
-
/**
|
|
35
|
-
* 获取本地存储缓存
|
|
36
|
-
*/
|
|
37
|
-
get localCache(): MultiLevelCache | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* 获取会话存储缓存
|
|
40
|
-
*/
|
|
41
|
-
get sessionCache(): MultiLevelCache | undefined;
|
|
42
|
-
/**
|
|
43
|
-
* 私有构造函数,防止外部直接实例化
|
|
44
|
-
*/
|
|
45
|
-
private constructor();
|
|
46
|
-
/**
|
|
47
|
-
* 获取单例实例
|
|
48
|
-
*
|
|
49
|
-
* @returns Singleton 实例
|
|
50
|
-
*/
|
|
51
|
-
static getInstance(): Storage;
|
|
52
|
-
initialize(options?: EnhancedStorageOptions): void;
|
|
53
|
-
/**
|
|
54
|
-
* 清理过期缓存
|
|
55
|
-
*/
|
|
56
|
-
cleanupCache(): Promise<void>;
|
|
57
|
-
}
|
|
58
|
-
export declare const storage: Storage;
|
|
59
|
-
export type { EncryptionConfig } from './encryption';
|
|
60
|
-
export type { CacheConfig } from './cache';
|
|
61
|
-
export { MultiLevelCache } from './cache';
|
|
62
|
-
export { EncryptionUtils } from './encryption';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}import{createStorage}from"@vlian/utils";import{MultiLevelCache}from"./cache";let Storage=class Storage{get local(){return this._local}get session(){return this._session}get indexedDB(){return this._indexedDB}get localCache(){return this._localCache}get sessionCache(){return this._sessionCache}static getInstance(){if(!Storage.instance){Storage.instance=new Storage}return Storage.instance}initialize(options){const local=createStorage({type:"local",prefix:options?.prefix||"vlian",defaultExpire:options?.defaultExpire||24*60*60*1e3});const session=createStorage({type:"session",prefix:options?.prefix||"vlian",defaultExpire:options?.defaultExpire||24*60*60*1e3});const indexedDB=createStorage({type:"indexedDB",prefix:options?.prefix||"vlian",defaultExpire:options?.defaultExpire||24*60*60*1e3,dbName:options?.tableName});this._local=local;this._session=session;this._indexedDB=indexedDB;this.cacheEnabled=options?.cache?.enabled??false;if(this.cacheEnabled){this._localCache=new MultiLevelCache(local,{defaultTTL:options?.cache?.defaultTTL,maxSize:options?.cache?.maxSize});this._sessionCache=new MultiLevelCache(session,{defaultTTL:options?.cache?.defaultTTL,maxSize:options?.cache?.maxSize})}}async cleanupCache(){if(this._localCache){await this._localCache.cleanup()}if(this._sessionCache){await this._sessionCache.cleanup()}}constructor(){_define_property(this,"_local",void 0);_define_property(this,"_session",void 0);_define_property(this,"_indexedDB",void 0);_define_property(this,"_localCache",void 0);_define_property(this,"_sessionCache",void 0);_define_property(this,"cacheEnabled",false)}};_define_property(Storage,"instance",null);export const storage=Storage.getInstance();export{MultiLevelCache}from"./cache";export{EncryptionUtils}from"./encryption";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"StateManager",{enumerable:true,get:function(){return StateManager}});const _AdapterFactory=require("./adapters/AdapterFactory");const _StateRegistry=require("./core/StateRegistry");const _DerivedStateInstance=require("./core/DerivedStateInstance");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let StateManager=class StateManager{createState(initialValue,options){if(this.destroyed){throw new Error("StateManager has been destroyed")}const mergedOptions={...options,scope:options?.scope??this.defaultScope,devMode:options?.devMode??this.devMode};const instance=this.adapter.createInstance(initialValue,mergedOptions);if(this.registry){this.registry.register(instance)}return instance}createDerivedState(config,options){if(this.destroyed){throw new Error("StateManager has been destroyed")}const mergedOptions={...options,scope:options?.scope??this.defaultScope};const instance=new _DerivedStateInstance.DerivedStateInstance(config,mergedOptions);if(this.registry){this.registry.register(instance)}return instance}getState(id){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}return this.registry.getInstance(id)}getStatesByScope(scope){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}return this.registry.getInstancesByScope(scope)}getAllStates(){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}return this.registry.getAllInstances()}destroyScope(scope){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}this.registry.destroyScope(scope)}destroy(){if(this.destroyed){return}this.destroyed=true;if(this.registry){this.registry.destroyAll()}this.adapter.destroy();if(this.devMode){console.debug("[StateManager] Destroyed")}}isDestroyed(){return this.destroyed}getAdapter(){return this.adapter}getRegistry(){return this.registry}constructor(options={}){_define_property(this,"adapter",void 0);_define_property(this,"registry",void 0);_define_property(this,"defaultScope",void 0);_define_property(this,"devMode",void 0);_define_property(this,"destroyed",false);this.adapter=options.defaultAdapter??_AdapterFactory.AdapterFactory.getDefaultAdapter();this.defaultScope=options.defaultScope;this.devMode=options.devMode??false;this.registry=options.enableRegistry!==false?new _StateRegistry.StateRegistry:null;if(this.devMode){console.debug("[StateManager] Initialized",{adapter:this.adapter.getName(),registryEnabled:!!this.registry,defaultScope:this.defaultScope})}}};
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 状态管理器主类
|
|
3
|
-
*
|
|
4
|
-
* 这是状态管理器的核心入口,提供统一的状态管理 API
|
|
5
|
-
*/
|
|
6
|
-
import type { IStateInstance, IStateAdapter, IStateRegistry, StateInstanceOptions, StateManagerOptions, StateScope, DerivedStateConfig, IDerivedStateInstance } from './types';
|
|
7
|
-
/**
|
|
8
|
-
* 状态管理器实现
|
|
9
|
-
*/
|
|
10
|
-
export declare class StateManager implements IStateManager {
|
|
11
|
-
/**
|
|
12
|
-
* 默认适配器
|
|
13
|
-
*/
|
|
14
|
-
private readonly adapter;
|
|
15
|
-
/**
|
|
16
|
-
* 状态注册表(如果启用)
|
|
17
|
-
*/
|
|
18
|
-
private readonly registry;
|
|
19
|
-
/**
|
|
20
|
-
* 默认作用域
|
|
21
|
-
*/
|
|
22
|
-
private readonly defaultScope?;
|
|
23
|
-
/**
|
|
24
|
-
* 是否启用开发模式
|
|
25
|
-
*/
|
|
26
|
-
private readonly devMode;
|
|
27
|
-
/**
|
|
28
|
-
* 是否已销毁
|
|
29
|
-
*/
|
|
30
|
-
private destroyed;
|
|
31
|
-
/**
|
|
32
|
-
* 构造函数
|
|
33
|
-
*
|
|
34
|
-
* @param options - 状态管理器配置选项
|
|
35
|
-
*/
|
|
36
|
-
constructor(options?: StateManagerOptions);
|
|
37
|
-
/**
|
|
38
|
-
* 创建状态实例
|
|
39
|
-
*/
|
|
40
|
-
createState<T = unknown>(initialValue: T, options?: StateInstanceOptions): IStateInstance<T>;
|
|
41
|
-
/**
|
|
42
|
-
* 创建派生状态
|
|
43
|
-
*/
|
|
44
|
-
createDerivedState<T, D extends readonly IStateInstance[]>(config: DerivedStateConfig<T, D>, options?: {
|
|
45
|
-
id?: string | symbol;
|
|
46
|
-
scope?: StateScope;
|
|
47
|
-
}): IDerivedStateInstance<T>;
|
|
48
|
-
/**
|
|
49
|
-
* 获取状态实例(如果启用了注册表)
|
|
50
|
-
*/
|
|
51
|
-
getState(id: string | symbol): IStateInstance | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* 根据作用域获取所有状态实例
|
|
54
|
-
*/
|
|
55
|
-
getStatesByScope(scope: StateScope): IStateInstance[];
|
|
56
|
-
/**
|
|
57
|
-
* 获取所有状态实例
|
|
58
|
-
*/
|
|
59
|
-
getAllStates(): IStateInstance[];
|
|
60
|
-
/**
|
|
61
|
-
* 销毁指定作用域的所有状态实例
|
|
62
|
-
*/
|
|
63
|
-
destroyScope(scope: StateScope): void;
|
|
64
|
-
/**
|
|
65
|
-
* 销毁状态管理器
|
|
66
|
-
*/
|
|
67
|
-
destroy(): void;
|
|
68
|
-
/**
|
|
69
|
-
* 检查状态管理器是否已销毁
|
|
70
|
-
*/
|
|
71
|
-
isDestroyed(): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* 获取当前使用的适配器
|
|
74
|
-
*/
|
|
75
|
-
getAdapter(): IStateAdapter;
|
|
76
|
-
/**
|
|
77
|
-
* 获取注册表(如果启用)
|
|
78
|
-
*/
|
|
79
|
-
getRegistry(): IStateRegistry | null;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* 状态管理器接口
|
|
83
|
-
*/
|
|
84
|
-
export interface IStateManager {
|
|
85
|
-
/**
|
|
86
|
-
* 创建状态实例
|
|
87
|
-
*/
|
|
88
|
-
createState<T = unknown>(initialValue: T, options?: StateInstanceOptions): IStateInstance<T>;
|
|
89
|
-
/**
|
|
90
|
-
* 创建派生状态
|
|
91
|
-
*/
|
|
92
|
-
createDerivedState<T, D extends readonly IStateInstance[]>(config: DerivedStateConfig<T, D>, options?: {
|
|
93
|
-
id?: string | symbol;
|
|
94
|
-
scope?: StateScope;
|
|
95
|
-
}): IDerivedStateInstance<T>;
|
|
96
|
-
/**
|
|
97
|
-
* 获取状态实例
|
|
98
|
-
*/
|
|
99
|
-
getState(id: string | symbol): IStateInstance | undefined;
|
|
100
|
-
/**
|
|
101
|
-
* 根据作用域获取所有状态实例
|
|
102
|
-
*/
|
|
103
|
-
getStatesByScope(scope: StateScope): IStateInstance[];
|
|
104
|
-
/**
|
|
105
|
-
* 获取所有状态实例
|
|
106
|
-
*/
|
|
107
|
-
getAllStates(): IStateInstance[];
|
|
108
|
-
/**
|
|
109
|
-
* 销毁指定作用域的所有状态实例
|
|
110
|
-
*/
|
|
111
|
-
destroyScope(scope: StateScope): void;
|
|
112
|
-
/**
|
|
113
|
-
* 销毁状态管理器
|
|
114
|
-
*/
|
|
115
|
-
destroy(): void;
|
|
116
|
-
/**
|
|
117
|
-
* 检查状态管理器是否已销毁
|
|
118
|
-
*/
|
|
119
|
-
isDestroyed(): boolean;
|
|
120
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}import{AdapterFactory}from"./adapters/AdapterFactory";import{StateRegistry}from"./core/StateRegistry";import{DerivedStateInstance}from"./core/DerivedStateInstance";export class StateManager{createState(initialValue,options){if(this.destroyed){throw new Error("StateManager has been destroyed")}const mergedOptions={...options,scope:options?.scope??this.defaultScope,devMode:options?.devMode??this.devMode};const instance=this.adapter.createInstance(initialValue,mergedOptions);if(this.registry){this.registry.register(instance)}return instance}createDerivedState(config,options){if(this.destroyed){throw new Error("StateManager has been destroyed")}const mergedOptions={...options,scope:options?.scope??this.defaultScope};const instance=new DerivedStateInstance(config,mergedOptions);if(this.registry){this.registry.register(instance)}return instance}getState(id){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}return this.registry.getInstance(id)}getStatesByScope(scope){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}return this.registry.getInstancesByScope(scope)}getAllStates(){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}return this.registry.getAllInstances()}destroyScope(scope){if(!this.registry){throw new Error("Registry is not enabled. Enable it in StateManagerOptions.")}this.registry.destroyScope(scope)}destroy(){if(this.destroyed){return}this.destroyed=true;if(this.registry){this.registry.destroyAll()}this.adapter.destroy();if(this.devMode){console.debug("[StateManager] Destroyed")}}isDestroyed(){return this.destroyed}getAdapter(){return this.adapter}getRegistry(){return this.registry}constructor(options={}){_define_property(this,"adapter",void 0);_define_property(this,"registry",void 0);_define_property(this,"defaultScope",void 0);_define_property(this,"devMode",void 0);_define_property(this,"destroyed",false);this.adapter=options.defaultAdapter??AdapterFactory.getDefaultAdapter();this.defaultScope=options.defaultScope;this.devMode=options.devMode??false;this.registry=options.enableRegistry!==false?new StateRegistry:null;if(this.devMode){console.debug("[StateManager] Initialized",{adapter:this.adapter.getName(),registryEnabled:!!this.registry,defaultScope:this.defaultScope})}}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"AdapterFactory",{enumerable:true,get:function(){return AdapterFactory}});const _DefaultAdapter=require("./DefaultAdapter");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let AdapterFactory=class AdapterFactory{static getDefaultAdapter(){if(!this.defaultAdapter){this.defaultAdapter=new _DefaultAdapter.DefaultAdapter}return this.defaultAdapter}static createAdapter(adapterName){if(!adapterName){return this.getDefaultAdapter()}const factory=this.customAdapters.get(adapterName);if(!factory){throw new Error(`Adapter "${adapterName}" not found. Available adapters: ${Array.from(this.customAdapters.keys()).join(", ")}`)}return factory()}static registerAdapter(name,factory){if(this.customAdapters.has(name)){console.warn(`[AdapterFactory] Adapter "${name}" already registered, replacing...`)}this.customAdapters.set(name,factory)}static unregisterAdapter(name){this.customAdapters.delete(name)}static getRegisteredAdapters(){return Array.from(this.customAdapters.keys())}static reset(){if(this.defaultAdapter){this.defaultAdapter.destroy();this.defaultAdapter=null}this.customAdapters.clear()}};_define_property(AdapterFactory,"defaultAdapter",null);_define_property(AdapterFactory,"customAdapters",new Map);
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 状态适配器工厂
|
|
3
|
-
*/
|
|
4
|
-
import type { IStateAdapter } from '../types';
|
|
5
|
-
/**
|
|
6
|
-
* 适配器工厂
|
|
7
|
-
*
|
|
8
|
-
* 负责创建和管理状态适配器实例
|
|
9
|
-
*/
|
|
10
|
-
export declare class AdapterFactory {
|
|
11
|
-
/**
|
|
12
|
-
* 默认适配器实例
|
|
13
|
-
*/
|
|
14
|
-
private static defaultAdapter;
|
|
15
|
-
/**
|
|
16
|
-
* 自定义适配器映射
|
|
17
|
-
*/
|
|
18
|
-
private static customAdapters;
|
|
19
|
-
/**
|
|
20
|
-
* 获取默认适配器
|
|
21
|
-
*/
|
|
22
|
-
static getDefaultAdapter(): IStateAdapter;
|
|
23
|
-
/**
|
|
24
|
-
* 创建适配器实例
|
|
25
|
-
*
|
|
26
|
-
* @param adapterName - 适配器名称,如果不提供则使用默认适配器
|
|
27
|
-
* @returns 适配器实例
|
|
28
|
-
*/
|
|
29
|
-
static createAdapter(adapterName?: string): IStateAdapter;
|
|
30
|
-
/**
|
|
31
|
-
* 注册自定义适配器
|
|
32
|
-
*
|
|
33
|
-
* @param name - 适配器名称
|
|
34
|
-
* @param factory - 适配器工厂函数
|
|
35
|
-
*/
|
|
36
|
-
static registerAdapter(name: string, factory: () => IStateAdapter): void;
|
|
37
|
-
/**
|
|
38
|
-
* 注销适配器
|
|
39
|
-
*
|
|
40
|
-
* @param name - 适配器名称
|
|
41
|
-
*/
|
|
42
|
-
static unregisterAdapter(name: string): void;
|
|
43
|
-
/**
|
|
44
|
-
* 获取所有已注册的适配器名称
|
|
45
|
-
*/
|
|
46
|
-
static getRegisteredAdapters(): string[];
|
|
47
|
-
/**
|
|
48
|
-
* 重置工厂(主要用于测试)
|
|
49
|
-
*/
|
|
50
|
-
static reset(): void;
|
|
51
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}import{DefaultAdapter}from"./DefaultAdapter";export class AdapterFactory{static getDefaultAdapter(){if(!this.defaultAdapter){this.defaultAdapter=new DefaultAdapter}return this.defaultAdapter}static createAdapter(adapterName){if(!adapterName){return this.getDefaultAdapter()}const factory=this.customAdapters.get(adapterName);if(!factory){throw new Error(`Adapter "${adapterName}" not found. Available adapters: ${Array.from(this.customAdapters.keys()).join(", ")}`)}return factory()}static registerAdapter(name,factory){if(this.customAdapters.has(name)){console.warn(`[AdapterFactory] Adapter "${name}" already registered, replacing...`)}this.customAdapters.set(name,factory)}static unregisterAdapter(name){this.customAdapters.delete(name)}static getRegisteredAdapters(){return Array.from(this.customAdapters.keys())}static reset(){if(this.defaultAdapter){this.defaultAdapter.destroy();this.defaultAdapter=null}this.customAdapters.clear()}}_define_property(AdapterFactory,"defaultAdapter",null);_define_property(AdapterFactory,"customAdapters",new Map);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"DefaultAdapter",{enumerable:true,get:function(){return DefaultAdapter}});const _StateInstance=require("../core/StateInstance");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let DefaultAdapter=class DefaultAdapter{createInstance(initialValue,options){if(this.destroyed){throw new Error("Adapter has been destroyed")}const instance=new _StateInstance.StateInstance(initialValue,{id:options?.id,scope:options?.scope,devMode:options?.devMode,middleware:options?.middleware});this.instances.add(instance);return instance}destroy(){if(this.destroyed){return}for(const instance of this.instances){instance.destroy()}this.instances.clear();this.destroyed=true}getName(){return this.name}constructor(){_define_property(this,"name","DefaultAdapter");_define_property(this,"destroyed",false);_define_property(this,"instances",new Set)}};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 默认状态适配器
|
|
3
|
-
*
|
|
4
|
-
* 这是 Secra Framework 内置的默认状态适配器实现
|
|
5
|
-
* 不依赖任何外部状态管理库,提供基础的状态管理能力
|
|
6
|
-
*/
|
|
7
|
-
import type { IStateAdapter, IStateInstance, StateInstanceOptions } from '../types';
|
|
8
|
-
/**
|
|
9
|
-
* 默认状态适配器
|
|
10
|
-
*
|
|
11
|
-
* 使用框架内置的 StateInstance 实现
|
|
12
|
-
*/
|
|
13
|
-
export declare class DefaultAdapter implements IStateAdapter {
|
|
14
|
-
/**
|
|
15
|
-
* 适配器名称
|
|
16
|
-
*/
|
|
17
|
-
private readonly name;
|
|
18
|
-
/**
|
|
19
|
-
* 是否已销毁
|
|
20
|
-
*/
|
|
21
|
-
private destroyed;
|
|
22
|
-
/**
|
|
23
|
-
* 创建的状态实例集合(用于销毁时清理)
|
|
24
|
-
*/
|
|
25
|
-
private readonly instances;
|
|
26
|
-
/**
|
|
27
|
-
* 创建状态实例
|
|
28
|
-
*/
|
|
29
|
-
createInstance<T>(initialValue: T, options?: StateInstanceOptions): IStateInstance<T>;
|
|
30
|
-
/**
|
|
31
|
-
* 销毁适配器
|
|
32
|
-
*/
|
|
33
|
-
destroy(): void;
|
|
34
|
-
/**
|
|
35
|
-
* 获取适配器名称
|
|
36
|
-
*/
|
|
37
|
-
getName(): string;
|
|
38
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}import{StateInstance}from"../core/StateInstance";export class DefaultAdapter{createInstance(initialValue,options){if(this.destroyed){throw new Error("Adapter has been destroyed")}const instance=new StateInstance(initialValue,{id:options?.id,scope:options?.scope,devMode:options?.devMode,middleware:options?.middleware});this.instances.add(instance);return instance}destroy(){if(this.destroyed){return}for(const instance of this.instances){instance.destroy()}this.instances.clear();this.destroyed=true}getName(){return this.name}constructor(){_define_property(this,"name","DefaultAdapter");_define_property(this,"destroyed",false);_define_property(this,"instances",new Set)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ReduxAdapter",{enumerable:true,get:function(){return ReduxAdapter}});function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let ReduxStateInstance=class ReduxStateInstance{get(){if(this.destroyed){throw new Error(`ReduxStateInstance ${String(this.id)} has been destroyed`)}const state=this.store.getState();return state[this.sliceName]??this.previousValue}set(valueOrUpdater){if(this.destroyed){throw new Error(`ReduxStateInstance ${String(this.id)} has been destroyed`)}const currentValue=this.get();let newValue;if(typeof valueOrUpdater==="function"){newValue=valueOrUpdater(currentValue)}else{newValue=valueOrUpdater}let processedValue=newValue;for(const middleware of this.middleware){processedValue=middleware(processedValue,currentValue)}if(processedValue===currentValue){return}this.previousValue=currentValue;const action=this.actions.setValue(processedValue);this.store.dispatch(action);if(this.devMode){console.debug(`[ReduxStateInstance] Updated: ${String(this.id)}`,{previous:currentValue,current:processedValue,action})}}subscribe(subscriber){if(this.destroyed){throw new Error(`ReduxStateInstance ${String(this.id)} has been destroyed`)}this.subscribers.add(subscriber);if(this.devMode){console.debug(`[ReduxStateInstance] Subscribed: ${String(this.id)}`,{subscriberCount:this.subscribers.size})}return()=>{this.subscribers.delete(subscriber);if(this.devMode){console.debug(`[ReduxStateInstance] Unsubscribed: ${String(this.id)}`,{subscriberCount:this.subscribers.size})}}}getId(){return this.id}getScope(){return this.scope}destroy(){if(this.destroyed){return}this.destroyed=true;if(this.unsubscribeStore){this.unsubscribeStore();this.unsubscribeStore=undefined}this.subscribers.clear();if(this.devMode){console.debug(`[ReduxStateInstance] Destroyed: ${String(this.id)}`)}}isDestroyed(){return this.destroyed}notifySubscribers(){if(this.destroyed){return}try{const currentValue=this.get();if(currentValue===this.previousValue){return}const previousValue=this.previousValue;this.previousValue=currentValue;const subscribers=Array.from(this.subscribers);for(const subscriber of subscribers){try{subscriber(currentValue,previousValue)}catch(error){console.error(`[ReduxStateInstance] Error in subscriber for ${String(this.id)}:`,error)}}}catch(error){console.error(`[ReduxStateInstance] Error getting state for ${String(this.id)}:`,error)}}constructor(store,sliceName,actions,initialValue,options={}){_define_property(this,"id",void 0);_define_property(this,"scope",void 0);_define_property(this,"store",void 0);_define_property(this,"sliceName",void 0);_define_property(this,"actions",void 0);_define_property(this,"subscribers",new Set);_define_property(this,"unsubscribeStore",void 0);_define_property(this,"destroyed",false);_define_property(this,"devMode",void 0);_define_property(this,"middleware",void 0);_define_property(this,"previousValue",void 0);this.store=store;this.sliceName=sliceName;this.actions=actions;this.id=options.id??Symbol("ReduxStateInstance");this.scope=options.scope;this.devMode=options.devMode??false;this.middleware=options.middleware??[];this.previousValue=initialValue;this.unsubscribeStore=this.store.subscribe(()=>{this.notifySubscribers()});if(this.devMode){console.debug(`[ReduxStateInstance] Created: ${String(this.id)}`,{scope:this.scope,sliceName:this.sliceName,initialValue})}}};let DynamicReducerManager=class DynamicReducerManager{addReducer(key,reducer){this.reducers.set(key,reducer)}removeReducer(key){this.reducers.delete(key)}getRootReducer(){return this.rootReducer}hasReducer(key){return this.reducers.has(key)}constructor(){_define_property(this,"reducers",new Map);_define_property(this,"rootReducer",void 0);this.rootReducer=(state,action)=>{const stateRecord=state??{};const newState={...stateRecord};for(const[key,reducer]of this.reducers.entries()){newState[key]=reducer(stateRecord[key],action)}return newState}}};let ReduxAdapter=class ReduxAdapter{checkReduxAvailable(){}getOrCreateStore(){if(this.store){return this.store}try{const{configureStore}=require("@reduxjs/toolkit");this.store=configureStore({reducer:this.reducerManager.getRootReducer(),devTools:this.devMode,middleware:undefined});if(this.devMode){console.debug("[ReduxAdapter] Redux store created")}return this.store}catch(error){throw new Error("ReduxAdapter requires @reduxjs/toolkit to be installed. "+"Please install it: npm install @reduxjs/toolkit\n"+`Original error: ${error instanceof Error?error.message:String(error)}`)}}createSlice(sliceName,initialValue){try{const{createSlice}=require("@reduxjs/toolkit");const slice=createSlice({name:sliceName,initialState:initialValue,reducers:{setValue:(_state,action)=>{return action.payload??initialValue}}});return slice}catch(error){throw new Error("ReduxAdapter requires @reduxjs/toolkit to be installed. "+"Please install it: npm install @reduxjs/toolkit\n"+`Original error: ${error instanceof Error?error.message:String(error)}`)}}createInstance(initialValue,options){if(this.destroyed){throw new Error("ReduxAdapter has been destroyed")}const store=this.getOrCreateStore();const sliceName=options?.id?`secra_${String(options.id)}`:`secra_slice_${++this.sliceCounter}`;const slice=this.createSlice(sliceName,initialValue);if(!this.reducerManager.hasReducer(sliceName)){this.reducerManager.addReducer(sliceName,slice.reducer);store.replaceReducer(this.reducerManager.getRootReducer())}const instance=new ReduxStateInstance(store,sliceName,slice.actions,initialValue,{id:options?.id,scope:options?.scope,devMode:options?.devMode??this.devMode,middleware:options?.middleware});this.instances.add(instance);this.sliceToInstance.set(sliceName,instance);if(this.devMode){console.debug(`[ReduxAdapter] Created instance: ${String(instance.getId())}`,{sliceName,scope:options?.scope})}return instance}destroy(){if(this.destroyed){return}for(const instance of this.instances){instance.destroy()}for(const sliceName of this.sliceToInstance.keys()){this.reducerManager.removeReducer(sliceName)}if(this.store){this.store.replaceReducer(this.reducerManager.getRootReducer())}this.instances.clear();this.sliceToInstance.clear();this.store=null;this.destroyed=true;if(this.devMode){console.debug("[ReduxAdapter] Destroyed")}}getName(){return this.name}constructor(options){_define_property(this,"name","ReduxAdapter");_define_property(this,"destroyed",false);_define_property(this,"instances",new Set);_define_property(this,"store",null);_define_property(this,"sliceCounter",0);_define_property(this,"sliceToInstance",new Map);_define_property(this,"reducerManager",void 0);_define_property(this,"devMode",void 0);this.devMode=options?.devMode??false;this.reducerManager=new DynamicReducerManager;this.store=options?.store??null;this.checkReduxAvailable()}};
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Redux Toolkit 适配器
|
|
3
|
-
*
|
|
4
|
-
* 将 Redux Toolkit store 映射到 Secra 状态抽象
|
|
5
|
-
*
|
|
6
|
-
* 使用说明:
|
|
7
|
-
* 1. 需要安装 @reduxjs/toolkit 作为 peerDependency
|
|
8
|
-
* 2. 每个状态实例对应一个 Redux slice
|
|
9
|
-
* 3. 支持 Redux DevTools 集成(如果可用)
|
|
10
|
-
* 4. 支持中间件和开发模式
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* import { ReduxAdapter } from '@vlian/framework/state';
|
|
15
|
-
*
|
|
16
|
-
* const adapter = new ReduxAdapter({ devMode: true });
|
|
17
|
-
* const state = adapter.createInstance(0, { id: 'counter' });
|
|
18
|
-
*
|
|
19
|
-
* state.set(1);
|
|
20
|
-
* console.log(state.get()); // 1
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
import type { IStateAdapter, IStateInstance, StateInstanceOptions } from '../types';
|
|
24
|
-
/**
|
|
25
|
-
* Redux 相关类型定义(如果 Redux 不可用,这些类型将用于类型检查)
|
|
26
|
-
*/
|
|
27
|
-
type ReduxStore = {
|
|
28
|
-
dispatch: (action: unknown) => unknown;
|
|
29
|
-
getState: () => Record<string, unknown>;
|
|
30
|
-
subscribe: (listener: () => void) => () => void;
|
|
31
|
-
replaceReducer: (nextReducer: (state: unknown, action: unknown) => unknown) => void;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Redux Toolkit 适配器配置选项
|
|
35
|
-
*/
|
|
36
|
-
export interface ReduxAdapterOptions {
|
|
37
|
-
/**
|
|
38
|
-
* 是否启用开发模式
|
|
39
|
-
*/
|
|
40
|
-
devMode?: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* 自定义 Redux store(可选)
|
|
43
|
-
* 如果不提供,将创建一个新的 store
|
|
44
|
-
*/
|
|
45
|
-
store?: ReduxStore;
|
|
46
|
-
/**
|
|
47
|
-
* Redux store 配置选项(仅在创建新 store 时使用)
|
|
48
|
-
*/
|
|
49
|
-
storeConfig?: {
|
|
50
|
-
/**
|
|
51
|
-
* 是否启用 Redux DevTools
|
|
52
|
-
*/
|
|
53
|
-
devTools?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Redux 中间件数组
|
|
56
|
-
*/
|
|
57
|
-
middleware?: unknown[];
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Redux Toolkit 适配器
|
|
62
|
-
*
|
|
63
|
-
* 将 Redux Toolkit store 映射到 Secra 状态抽象
|
|
64
|
-
*/
|
|
65
|
-
export declare class ReduxAdapter implements IStateAdapter {
|
|
66
|
-
/**
|
|
67
|
-
* 适配器名称
|
|
68
|
-
*/
|
|
69
|
-
private readonly name;
|
|
70
|
-
/**
|
|
71
|
-
* 是否已销毁
|
|
72
|
-
*/
|
|
73
|
-
private destroyed;
|
|
74
|
-
/**
|
|
75
|
-
* 创建的状态实例集合
|
|
76
|
-
*/
|
|
77
|
-
private readonly instances;
|
|
78
|
-
/**
|
|
79
|
-
* Redux store 实例
|
|
80
|
-
*/
|
|
81
|
-
private store;
|
|
82
|
-
/**
|
|
83
|
-
* Redux slice 名称计数器(用于生成唯一的 slice 名称)
|
|
84
|
-
*/
|
|
85
|
-
private sliceCounter;
|
|
86
|
-
/**
|
|
87
|
-
* Redux slice 名称到状态实例的映射
|
|
88
|
-
*/
|
|
89
|
-
private readonly sliceToInstance;
|
|
90
|
-
/**
|
|
91
|
-
* 动态 reducer 管理器
|
|
92
|
-
*/
|
|
93
|
-
private readonly reducerManager;
|
|
94
|
-
/**
|
|
95
|
-
* 是否启用开发模式
|
|
96
|
-
*/
|
|
97
|
-
private readonly devMode;
|
|
98
|
-
/**
|
|
99
|
-
* 构造函数
|
|
100
|
-
*
|
|
101
|
-
* @param options - 适配器配置选项
|
|
102
|
-
*/
|
|
103
|
-
constructor(options?: ReduxAdapterOptions);
|
|
104
|
-
/**
|
|
105
|
-
* 检查 Redux 是否可用
|
|
106
|
-
*/
|
|
107
|
-
private checkReduxAvailable;
|
|
108
|
-
/**
|
|
109
|
-
* 获取或创建 Redux store
|
|
110
|
-
*/
|
|
111
|
-
private getOrCreateStore;
|
|
112
|
-
/**
|
|
113
|
-
* 创建 Redux slice
|
|
114
|
-
*/
|
|
115
|
-
private createSlice;
|
|
116
|
-
/**
|
|
117
|
-
* 创建状态实例
|
|
118
|
-
*/
|
|
119
|
-
createInstance<T = unknown>(initialValue: T, options?: StateInstanceOptions): IStateInstance<T>;
|
|
120
|
-
/**
|
|
121
|
-
* 销毁适配器
|
|
122
|
-
*/
|
|
123
|
-
destroy(): void;
|
|
124
|
-
/**
|
|
125
|
-
* 获取适配器名称
|
|
126
|
-
*/
|
|
127
|
-
getName(): string;
|
|
128
|
-
}
|
|
129
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let ReduxStateInstance=class ReduxStateInstance{get(){if(this.destroyed){throw new Error(`ReduxStateInstance ${String(this.id)} has been destroyed`)}const state=this.store.getState();return state[this.sliceName]??this.previousValue}set(valueOrUpdater){if(this.destroyed){throw new Error(`ReduxStateInstance ${String(this.id)} has been destroyed`)}const currentValue=this.get();let newValue;if(typeof valueOrUpdater==="function"){newValue=valueOrUpdater(currentValue)}else{newValue=valueOrUpdater}let processedValue=newValue;for(const middleware of this.middleware){processedValue=middleware(processedValue,currentValue)}if(processedValue===currentValue){return}this.previousValue=currentValue;const action=this.actions.setValue(processedValue);this.store.dispatch(action);if(this.devMode){console.debug(`[ReduxStateInstance] Updated: ${String(this.id)}`,{previous:currentValue,current:processedValue,action})}}subscribe(subscriber){if(this.destroyed){throw new Error(`ReduxStateInstance ${String(this.id)} has been destroyed`)}this.subscribers.add(subscriber);if(this.devMode){console.debug(`[ReduxStateInstance] Subscribed: ${String(this.id)}`,{subscriberCount:this.subscribers.size})}return()=>{this.subscribers.delete(subscriber);if(this.devMode){console.debug(`[ReduxStateInstance] Unsubscribed: ${String(this.id)}`,{subscriberCount:this.subscribers.size})}}}getId(){return this.id}getScope(){return this.scope}destroy(){if(this.destroyed){return}this.destroyed=true;if(this.unsubscribeStore){this.unsubscribeStore();this.unsubscribeStore=undefined}this.subscribers.clear();if(this.devMode){console.debug(`[ReduxStateInstance] Destroyed: ${String(this.id)}`)}}isDestroyed(){return this.destroyed}notifySubscribers(){if(this.destroyed){return}try{const currentValue=this.get();if(currentValue===this.previousValue){return}const previousValue=this.previousValue;this.previousValue=currentValue;const subscribers=Array.from(this.subscribers);for(const subscriber of subscribers){try{subscriber(currentValue,previousValue)}catch(error){console.error(`[ReduxStateInstance] Error in subscriber for ${String(this.id)}:`,error)}}}catch(error){console.error(`[ReduxStateInstance] Error getting state for ${String(this.id)}:`,error)}}constructor(store,sliceName,actions,initialValue,options={}){_define_property(this,"id",void 0);_define_property(this,"scope",void 0);_define_property(this,"store",void 0);_define_property(this,"sliceName",void 0);_define_property(this,"actions",void 0);_define_property(this,"subscribers",new Set);_define_property(this,"unsubscribeStore",void 0);_define_property(this,"destroyed",false);_define_property(this,"devMode",void 0);_define_property(this,"middleware",void 0);_define_property(this,"previousValue",void 0);this.store=store;this.sliceName=sliceName;this.actions=actions;this.id=options.id??Symbol("ReduxStateInstance");this.scope=options.scope;this.devMode=options.devMode??false;this.middleware=options.middleware??[];this.previousValue=initialValue;this.unsubscribeStore=this.store.subscribe(()=>{this.notifySubscribers()});if(this.devMode){console.debug(`[ReduxStateInstance] Created: ${String(this.id)}`,{scope:this.scope,sliceName:this.sliceName,initialValue})}}};let DynamicReducerManager=class DynamicReducerManager{addReducer(key,reducer){this.reducers.set(key,reducer)}removeReducer(key){this.reducers.delete(key)}getRootReducer(){return this.rootReducer}hasReducer(key){return this.reducers.has(key)}constructor(){_define_property(this,"reducers",new Map);_define_property(this,"rootReducer",void 0);this.rootReducer=(state,action)=>{const stateRecord=state??{};const newState={...stateRecord};for(const[key,reducer]of this.reducers.entries()){newState[key]=reducer(stateRecord[key],action)}return newState}}};export class ReduxAdapter{checkReduxAvailable(){}getOrCreateStore(){if(this.store){return this.store}try{const{configureStore}=require("@reduxjs/toolkit");this.store=configureStore({reducer:this.reducerManager.getRootReducer(),devTools:this.devMode,middleware:undefined});if(this.devMode){console.debug("[ReduxAdapter] Redux store created")}return this.store}catch(error){throw new Error("ReduxAdapter requires @reduxjs/toolkit to be installed. "+"Please install it: npm install @reduxjs/toolkit\n"+`Original error: ${error instanceof Error?error.message:String(error)}`)}}createSlice(sliceName,initialValue){try{const{createSlice}=require("@reduxjs/toolkit");const slice=createSlice({name:sliceName,initialState:initialValue,reducers:{setValue:(_state,action)=>{return action.payload??initialValue}}});return slice}catch(error){throw new Error("ReduxAdapter requires @reduxjs/toolkit to be installed. "+"Please install it: npm install @reduxjs/toolkit\n"+`Original error: ${error instanceof Error?error.message:String(error)}`)}}createInstance(initialValue,options){if(this.destroyed){throw new Error("ReduxAdapter has been destroyed")}const store=this.getOrCreateStore();const sliceName=options?.id?`secra_${String(options.id)}`:`secra_slice_${++this.sliceCounter}`;const slice=this.createSlice(sliceName,initialValue);if(!this.reducerManager.hasReducer(sliceName)){this.reducerManager.addReducer(sliceName,slice.reducer);store.replaceReducer(this.reducerManager.getRootReducer())}const instance=new ReduxStateInstance(store,sliceName,slice.actions,initialValue,{id:options?.id,scope:options?.scope,devMode:options?.devMode??this.devMode,middleware:options?.middleware});this.instances.add(instance);this.sliceToInstance.set(sliceName,instance);if(this.devMode){console.debug(`[ReduxAdapter] Created instance: ${String(instance.getId())}`,{sliceName,scope:options?.scope})}return instance}destroy(){if(this.destroyed){return}for(const instance of this.instances){instance.destroy()}for(const sliceName of this.sliceToInstance.keys()){this.reducerManager.removeReducer(sliceName)}if(this.store){this.store.replaceReducer(this.reducerManager.getRootReducer())}this.instances.clear();this.sliceToInstance.clear();this.store=null;this.destroyed=true;if(this.devMode){console.debug("[ReduxAdapter] Destroyed")}}getName(){return this.name}constructor(options){_define_property(this,"name","ReduxAdapter");_define_property(this,"destroyed",false);_define_property(this,"instances",new Set);_define_property(this,"store",null);_define_property(this,"sliceCounter",0);_define_property(this,"sliceToInstance",new Map);_define_property(this,"reducerManager",void 0);_define_property(this,"devMode",void 0);this.devMode=options?.devMode??false;this.reducerManager=new DynamicReducerManager;this.store=options?.store??null;this.checkReduxAvailable()}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ZustandAdapter",{enumerable:true,get:function(){return ZustandAdapter}});function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let ZustandAdapter=class ZustandAdapter{createInstance(_initialValue,_options){if(this.destroyed){throw new Error("Adapter has been destroyed")}throw new Error("ZustandAdapter is a placeholder implementation. "+"To use Zustand, you need to:\n"+"1. Install zustand\n"+"2. Implement a complete Zustand store integration\n"+"3. Map Zustand store methods to IStateInstance interface\n"+"See docs/state-manager.md for implementation guide.")}destroy(){if(this.destroyed){return}for(const instance of this.instances){instance.destroy()}this.instances.clear();this.destroyed=true}getName(){return this.name}constructor(){_define_property(this,"name","ZustandAdapter");_define_property(this,"destroyed",false);_define_property(this,"instances",new Set)}};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zustand 适配器(占位实现)
|
|
3
|
-
*
|
|
4
|
-
* 这是一个适配器接口示例,展示如何将 Zustand 集成到 Secra 状态管理器
|
|
5
|
-
*
|
|
6
|
-
* ⚠️ 注意:这是一个占位实现,实际使用时需要安装 zustand 依赖
|
|
7
|
-
*/
|
|
8
|
-
import type { IStateAdapter, IStateInstance, StateInstanceOptions } from '../types';
|
|
9
|
-
/**
|
|
10
|
-
* Zustand 适配器
|
|
11
|
-
*
|
|
12
|
-
* 将 Zustand store 映射到 Secra 状态抽象
|
|
13
|
-
*
|
|
14
|
-
* ⚠️ 这是一个占位实现,实际使用时需要:
|
|
15
|
-
* 1. 安装 zustand
|
|
16
|
-
* 2. 实现完整的 Zustand store 集成
|
|
17
|
-
* 3. 将 Zustand store 的方法映射到 IStateInstance 接口
|
|
18
|
-
*/
|
|
19
|
-
export declare class ZustandAdapter implements IStateAdapter {
|
|
20
|
-
/**
|
|
21
|
-
* 适配器名称
|
|
22
|
-
*/
|
|
23
|
-
private readonly name;
|
|
24
|
-
/**
|
|
25
|
-
* 是否已销毁
|
|
26
|
-
*/
|
|
27
|
-
private destroyed;
|
|
28
|
-
/**
|
|
29
|
-
* 创建的状态实例集合
|
|
30
|
-
*/
|
|
31
|
-
private readonly instances;
|
|
32
|
-
/**
|
|
33
|
-
* 创建状态实例
|
|
34
|
-
*
|
|
35
|
-
* ⚠️ 占位实现:实际使用时需要创建 Zustand store 并映射到 IStateInstance
|
|
36
|
-
*/
|
|
37
|
-
createInstance<T>(_initialValue: T, _options?: StateInstanceOptions): IStateInstance<T>;
|
|
38
|
-
/**
|
|
39
|
-
* 销毁适配器
|
|
40
|
-
*/
|
|
41
|
-
destroy(): void;
|
|
42
|
-
/**
|
|
43
|
-
* 获取适配器名称
|
|
44
|
-
*/
|
|
45
|
-
getName(): string;
|
|
46
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}export class ZustandAdapter{createInstance(_initialValue,_options){if(this.destroyed){throw new Error("Adapter has been destroyed")}throw new Error("ZustandAdapter is a placeholder implementation. "+"To use Zustand, you need to:\n"+"1. Install zustand\n"+"2. Implement a complete Zustand store integration\n"+"3. Map Zustand store methods to IStateInstance interface\n"+"See docs/state-manager.md for implementation guide.")}destroy(){if(this.destroyed){return}for(const instance of this.instances){instance.destroy()}this.instances.clear();this.destroyed=true}getName(){return this.name}constructor(){_define_property(this,"name","ZustandAdapter");_define_property(this,"destroyed",false);_define_property(this,"instances",new Set)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get AdapterFactory(){return _AdapterFactory.AdapterFactory},get DefaultAdapter(){return _DefaultAdapter.DefaultAdapter},get ReduxAdapter(){return _ReduxAdapter.ReduxAdapter},get ZustandAdapter(){return _ZustandAdapter.ZustandAdapter}});const _DefaultAdapter=require("./DefaultAdapter");const _AdapterFactory=require("./AdapterFactory");const _ReduxAdapter=require("./ReduxAdapter");const _ZustandAdapter=require("./ZustandAdapter");_export_star(require("./types"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 状态适配器模块导出
|
|
3
|
-
*/
|
|
4
|
-
export { DefaultAdapter } from './DefaultAdapter';
|
|
5
|
-
export { AdapterFactory } from './AdapterFactory';
|
|
6
|
-
export { ReduxAdapter, type ReduxAdapterOptions } from './ReduxAdapter';
|
|
7
|
-
export { ZustandAdapter } from './ZustandAdapter';
|
|
8
|
-
export * from './types';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{DefaultAdapter}from"./DefaultAdapter";export{AdapterFactory}from"./AdapterFactory";export{ReduxAdapter}from"./ReduxAdapter";export{ZustandAdapter}from"./ZustandAdapter";export*from"./types";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("../types"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export*from"../types";
|