@vlian/framework 1.2.1 → 1.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/index.cjs +24 -0
- package/dist/analytics/index.cjs.map +1 -0
- package/dist/analytics/index.d.ts +2 -0
- package/dist/analytics/index.js +3 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics.umd.js +2406 -0
- package/dist/analytics.umd.js.map +1 -0
- package/dist/components/LocaleSwitch.cjs +118 -0
- package/dist/components/LocaleSwitch.cjs.map +1 -0
- package/dist/components/LocaleSwitch.d.ts +21 -0
- package/dist/components/LocaleSwitch.js +103 -0
- package/dist/components/LocaleSwitch.js.map +1 -0
- package/dist/components/ThemeSwitch.cjs +117 -0
- package/dist/components/ThemeSwitch.cjs.map +1 -0
- package/dist/components/ThemeSwitch.d.ts +20 -0
- package/dist/components/ThemeSwitch.js +102 -0
- package/dist/components/ThemeSwitch.js.map +1 -0
- package/dist/components/index.cjs +16 -0
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +5 -2
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/persistence.cjs +60 -0
- package/dist/components/persistence.cjs.map +1 -0
- package/dist/components/persistence.d.ts +12 -0
- package/dist/components/persistence.js +39 -0
- package/dist/components/persistence.js.map +1 -0
- package/dist/core/Test.d.ts +0 -1
- package/dist/core/app/AppContext.cjs +36 -30
- package/dist/core/app/AppContext.cjs.map +1 -1
- package/dist/core/app/AppContext.d.ts +9 -6
- package/dist/core/app/AppContext.js +36 -30
- package/dist/core/app/AppContext.js.map +1 -1
- package/dist/core/app/AppContext.types.d.ts +9 -10
- package/dist/core/app/AppContext.types.js.map +1 -1
- package/dist/core/app/BasicLayout.cjs +57 -22
- package/dist/core/app/BasicLayout.cjs.map +1 -1
- package/dist/core/app/BasicLayout.d.ts +7 -5
- package/dist/core/app/BasicLayout.js +57 -22
- package/dist/core/app/BasicLayout.js.map +1 -1
- package/dist/core/app/DefaultApp.cjs +104 -153
- package/dist/core/app/DefaultApp.cjs.map +1 -1
- package/dist/core/app/DefaultApp.d.ts +0 -21
- package/dist/core/app/DefaultApp.js +104 -153
- package/dist/core/app/DefaultApp.js.map +1 -1
- package/dist/core/app/index.d.ts +0 -1
- package/dist/core/config/AppConfig.cjs.map +1 -1
- package/dist/core/config/AppConfig.d.ts +3 -4
- package/dist/core/config/AppConfig.js.map +1 -1
- package/dist/core/config/ConfigLoader.d.ts +0 -1
- package/dist/core/config/ConfigValidator.d.ts +0 -1
- package/dist/core/config/index.d.ts +0 -1
- package/dist/core/dev/DevTools.cjs +141 -287
- package/dist/core/dev/DevTools.cjs.map +1 -1
- package/dist/core/dev/DevTools.d.ts +1 -32
- package/dist/core/dev/DevTools.js +143 -296
- package/dist/core/dev/DevTools.js.map +1 -1
- package/dist/core/error/ErrorBoundary.cjs +72 -14
- package/dist/core/error/ErrorBoundary.cjs.map +1 -1
- package/dist/core/error/ErrorBoundary.d.ts +7 -9
- package/dist/core/error/ErrorBoundary.js +73 -15
- package/dist/core/error/ErrorBoundary.js.map +1 -1
- package/dist/core/error/ErrorHandler.d.ts +0 -1
- package/dist/core/error/index.d.ts +0 -1
- package/dist/core/event/AppEventBus.d.ts +0 -1
- package/dist/core/event/frameworkEvents.d.ts +0 -1
- package/dist/core/event/hooks.d.ts +0 -1
- package/dist/core/event/index.d.ts +0 -1
- package/dist/core/event/types.d.ts +0 -1
- package/dist/core/event/useEventBus.d.ts +0 -1
- package/dist/core/index.cjs +2 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/initialization/InitializationErrorThrower.d.ts +0 -1
- package/dist/core/initialization/index.d.ts +0 -1
- package/dist/core/initialization/initialization.d.ts +0 -1
- package/dist/core/initialization/initializationErrorState.d.ts +0 -1
- package/dist/core/kernel/defaultAdapters.cjs +185 -0
- package/dist/core/kernel/defaultAdapters.cjs.map +1 -0
- package/dist/core/kernel/defaultAdapters.d.ts +2 -0
- package/dist/core/kernel/defaultAdapters.js +175 -0
- package/dist/core/kernel/defaultAdapters.js.map +1 -0
- package/dist/core/kernel/errors.cjs +71 -0
- package/dist/core/kernel/errors.cjs.map +1 -0
- package/dist/core/kernel/errors.d.ts +18 -0
- package/dist/core/kernel/errors.js +53 -0
- package/dist/core/kernel/errors.js.map +1 -0
- package/dist/core/kernel/index.cjs +22 -0
- package/dist/core/kernel/index.cjs.map +1 -0
- package/dist/core/kernel/index.d.ts +3 -0
- package/dist/core/kernel/index.js +4 -0
- package/dist/core/kernel/index.js.map +1 -0
- package/dist/core/kernel/startKernel.cjs +203 -0
- package/dist/core/kernel/startKernel.cjs.map +1 -0
- package/dist/core/kernel/startKernel.d.ts +2 -0
- package/dist/core/kernel/startKernel.js +193 -0
- package/dist/core/kernel/startKernel.js.map +1 -0
- package/dist/core/kernel/types.cjs +6 -0
- package/dist/core/kernel/types.cjs.map +1 -0
- package/dist/core/kernel/types.d.ts +114 -0
- package/dist/core/kernel/types.js +3 -0
- package/dist/core/kernel/types.js.map +1 -0
- package/dist/core/middleware.d.ts +0 -1
- package/dist/core/plugin/PluginEventBus.d.ts +0 -1
- package/dist/core/plugin/PluginSandbox.d.ts +0 -1
- package/dist/core/plugin.cjs +1 -1
- package/dist/core/plugin.cjs.map +1 -1
- package/dist/core/plugin.d.ts +0 -1
- package/dist/core/plugin.js +1 -1
- package/dist/core/plugin.js.map +1 -1
- package/dist/core/router/RouterManager.cjs +32 -2
- package/dist/core/router/RouterManager.cjs.map +1 -1
- package/dist/core/router/RouterManager.d.ts +5 -1
- package/dist/core/router/RouterManager.js +33 -3
- package/dist/core/router/RouterManager.js.map +1 -1
- package/dist/core/router/adapter/AdapterManager.d.ts +0 -1
- package/dist/core/router/adapter/index.d.ts +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
- package/dist/core/router/adapter/react-router/index.d.ts +0 -1
- package/dist/core/router/adapter/types.cjs.map +1 -1
- package/dist/core/router/adapter/types.d.ts +1 -2
- package/dist/core/router/adapter/types.js.map +1 -1
- package/dist/core/router/dev/RouterDevTools.cjs +148 -296
- package/dist/core/router/dev/RouterDevTools.cjs.map +1 -1
- package/dist/core/router/dev/RouterDevTools.d.ts +1 -6
- package/dist/core/router/dev/RouterDevTools.js +149 -301
- package/dist/core/router/dev/RouterDevTools.js.map +1 -1
- package/dist/core/router/dev/index.d.ts +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.d.ts +0 -1
- package/dist/core/router/dynamic/index.d.ts +0 -1
- package/dist/core/router/errors/RouterError.d.ts +0 -1
- package/dist/core/router/errors/index.d.ts +0 -1
- package/dist/core/router/index.d.ts +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts +0 -1
- package/dist/core/router/lifecycle/index.d.ts +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs +24 -4
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.d.ts +1 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.js +24 -4
- package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
- package/dist/core/router/middleware/auth.d.ts +0 -1
- package/dist/core/router/middleware/index.d.ts +0 -1
- package/dist/core/router/middleware/types.cjs.map +1 -1
- package/dist/core/router/middleware/types.d.ts +1 -2
- package/dist/core/router/middleware/types.js.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.d.ts +0 -1
- package/dist/core/router/monitoring/index.d.ts +0 -1
- package/dist/core/router/navigation/RouterNavigation.cjs +69 -14
- package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
- package/dist/core/router/navigation/RouterNavigation.d.ts +3 -1
- package/dist/core/router/navigation/RouterNavigation.js +69 -14
- package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
- package/dist/core/router/navigation/index.d.ts +0 -1
- package/dist/core/router/performance/RouteCache.cjs +34 -13
- package/dist/core/router/performance/RouteCache.cjs.map +1 -1
- package/dist/core/router/performance/RouteCache.d.ts +8 -3
- package/dist/core/router/performance/RouteCache.js +34 -13
- package/dist/core/router/performance/RouteCache.js.map +1 -1
- package/dist/core/router/performance/RoutePreloader.cjs +89 -22
- package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
- package/dist/core/router/performance/RoutePreloader.d.ts +9 -2
- package/dist/core/router/performance/RoutePreloader.js +89 -22
- package/dist/core/router/performance/RoutePreloader.js.map +1 -1
- package/dist/core/router/performance/index.d.ts +0 -1
- package/dist/core/router/plugin/RouterPluginManager.d.ts +0 -1
- package/dist/core/router/plugin/index.d.ts +0 -1
- package/dist/core/router/plugin/types.d.ts +0 -1
- package/dist/core/router/types.d.ts +23 -7
- package/dist/core/router/types.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +90 -103
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +91 -104
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs +45 -63
- package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.d.ts +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.js +46 -59
- package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
- package/dist/core/router/utils/transform.cjs +80 -71
- package/dist/core/router/utils/transform.cjs.map +1 -1
- package/dist/core/router/utils/transform.d.ts +1 -2
- package/dist/core/router/utils/transform.js +81 -72
- package/dist/core/router/utils/transform.js.map +1 -1
- package/dist/core/router/validation/RouterConfigValidator.d.ts +66 -5
- package/dist/core/router/validation/index.d.ts +0 -1
- package/dist/core/router/validation/schema.cjs +71 -2
- package/dist/core/router/validation/schema.cjs.map +1 -1
- package/dist/core/router/validation/schema.d.ts +102 -7
- package/dist/core/router/validation/schema.js +71 -2
- package/dist/core/router/validation/schema.js.map +1 -1
- package/dist/core/router/version/RouteVersionManager.d.ts +0 -1
- package/dist/core/router/version/index.d.ts +0 -1
- package/dist/core/splash/SplashScreen.cjs +101 -15
- package/dist/core/splash/SplashScreen.cjs.map +1 -1
- package/dist/core/splash/SplashScreen.d.ts +0 -1
- package/dist/core/splash/SplashScreen.js +101 -15
- package/dist/core/splash/SplashScreen.js.map +1 -1
- package/dist/core/splash/index.d.ts +0 -1
- package/dist/core/splash/splashScreenUtils.d.ts +0 -1
- package/dist/core/startup/AppInstance.d.ts +0 -1
- package/dist/core/startup/environment.d.ts +0 -1
- package/dist/core/startup/index.d.ts +0 -1
- package/dist/core/startup/initializeServices.d.ts +0 -1
- package/dist/core/startup/performanceTracker.d.ts +0 -1
- package/dist/core/startup/renderApp.cjs +12 -10
- package/dist/core/startup/renderApp.cjs.map +1 -1
- package/dist/core/startup/renderApp.d.ts +0 -1
- package/dist/core/startup/renderApp.js +12 -10
- package/dist/core/startup/renderApp.js.map +1 -1
- package/dist/core/startup/startApp.cjs +118 -13
- package/dist/core/startup/startApp.cjs.map +1 -1
- package/dist/core/startup/startApp.d.ts +0 -1
- package/dist/core/startup/startApp.js +118 -13
- package/dist/core/startup/startApp.js.map +1 -1
- package/dist/core/types.d.ts +34 -21
- package/dist/core/types.js.map +1 -1
- package/dist/core/ui-adapter/adapters.cjs +45 -0
- package/dist/core/ui-adapter/adapters.cjs.map +1 -0
- package/dist/core/ui-adapter/adapters.d.ts +4 -0
- package/dist/core/ui-adapter/adapters.js +27 -0
- package/dist/core/ui-adapter/adapters.js.map +1 -0
- package/dist/core/ui-adapter/index.cjs +21 -0
- package/dist/core/ui-adapter/index.cjs.map +1 -0
- package/dist/core/ui-adapter/index.d.ts +2 -0
- package/dist/core/ui-adapter/index.js +3 -0
- package/dist/core/ui-adapter/index.js.map +1 -0
- package/dist/core/ui-adapter/types.cjs +6 -0
- package/dist/core/ui-adapter/types.cjs.map +1 -0
- package/dist/core/ui-adapter/types.d.ts +24 -0
- package/dist/core/ui-adapter/types.js +3 -0
- package/dist/core/ui-adapter/types.js.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.umd.d.ts +0 -1
- package/dist/index.umd.js +7684 -6056
- package/dist/index.umd.js.map +1 -1
- package/dist/library/index.d.ts +0 -1
- package/dist/library/locale/index.d.ts +0 -1
- package/dist/library/locale/langs/en-us/index.d.ts +0 -1
- package/dist/library/locale/langs/zh-cn/index.d.ts +0 -1
- package/dist/library/locale/types.d.ts +0 -1
- package/dist/library/storage/cache.d.ts +0 -1
- package/dist/library/storage/encryption.d.ts +0 -1
- package/dist/library/storage/index.d.ts +0 -1
- package/dist/request/adapter/RequestAdapter.d.ts +0 -1
- package/dist/request/adapter/axiosAdapter.d.ts +0 -1
- package/dist/request/adapter/fetchAdapter.d.ts +0 -1
- package/dist/request/adapter/index.d.ts +0 -1
- package/dist/request/adapter/kyAdapter.d.ts +0 -1
- package/dist/request/adapter/undiciAdapter.d.ts +0 -1
- package/dist/request/core/RequestClient.d.ts +0 -1
- package/dist/request/core/index.d.ts +0 -1
- package/dist/request/index.d.ts +0 -1
- package/dist/request/plugin/RequestPlugin.d.ts +0 -1
- package/dist/request/plugin/cache.d.ts +0 -1
- package/dist/request/plugin/csrfPlugin.d.ts +0 -1
- package/dist/request/plugin/index.d.ts +0 -1
- package/dist/request/plugin/monitoring.d.ts +0 -1
- package/dist/request/plugin/queue.d.ts +0 -1
- package/dist/request/plugin/retry.d.ts +0 -1
- package/dist/request/plugin/validation.d.ts +0 -1
- package/dist/request/runtime/RequestContext.d.ts +0 -1
- package/dist/request/runtime/index.d.ts +0 -1
- package/dist/request/types.d.ts +0 -1
- package/dist/request/utils/RequestQueueManager.d.ts +0 -1
- package/dist/request/utils/dependencyCheck.d.ts +0 -1
- package/dist/request/utils/index.d.ts +0 -1
- package/dist/request.umd.js +5392 -0
- package/dist/request.umd.js.map +1 -0
- package/dist/state/StateManager.d.ts +0 -1
- package/dist/state/adapters/AdapterFactory.d.ts +0 -1
- package/dist/state/adapters/DefaultAdapter.d.ts +0 -1
- package/dist/state/adapters/ReduxAdapter.d.ts +0 -1
- package/dist/state/adapters/ZustandAdapter.d.ts +0 -1
- package/dist/state/adapters/index.d.ts +0 -1
- package/dist/state/adapters/types.d.ts +0 -1
- package/dist/state/core/DerivedStateInstance.d.ts +0 -1
- package/dist/state/core/StateInstance.d.ts +0 -1
- package/dist/state/core/StateRegistry.d.ts +0 -1
- package/dist/state/core/StateScope.d.ts +0 -1
- package/dist/state/core/index.d.ts +0 -1
- package/dist/state/index.d.ts +0 -1
- package/dist/state/types.d.ts +0 -1
- package/dist/state.umd.js +1414 -0
- package/dist/state.umd.js.map +1 -0
- package/dist/types.d.ts +0 -1
- package/dist/utils/analytics.d.ts +0 -1
- package/dist/utils/configSecurity.d.ts +0 -1
- package/dist/utils/csrf.d.ts +0 -1
- package/dist/utils/errors/ErrorCodes.d.ts +0 -1
- package/dist/utils/errors.cjs +44 -1
- package/dist/utils/errors.cjs.map +1 -1
- package/dist/utils/errors.d.ts +5 -1
- package/dist/utils/errors.js +44 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.types.d.ts +0 -1
- package/dist/utils/monitoring.d.ts +0 -1
- package/dist/utils/performance.d.ts +0 -1
- package/dist/utils/resourceLoader.d.ts +0 -1
- package/dist/utils/runtimeSecurity.d.ts +0 -1
- package/dist/utils/security.d.ts +0 -1
- package/dist/utils/traceId.d.ts +0 -1
- package/dist/utils/validation.d.ts +0 -1
- package/package.json +24 -9
- package/dist/components/index.d.ts.map +0 -1
- package/dist/core/Test.d.ts.map +0 -1
- package/dist/core/app/AppContext.d.ts.map +0 -1
- package/dist/core/app/AppContext.types.d.ts.map +0 -1
- package/dist/core/app/BasicLayout.d.ts.map +0 -1
- package/dist/core/app/DefaultApp.d.ts.map +0 -1
- package/dist/core/app/index.d.ts.map +0 -1
- package/dist/core/config/AppConfig.d.ts.map +0 -1
- package/dist/core/config/ConfigLoader.d.ts.map +0 -1
- package/dist/core/config/ConfigValidator.d.ts.map +0 -1
- package/dist/core/config/index.d.ts.map +0 -1
- package/dist/core/dev/DevTools.d.ts.map +0 -1
- package/dist/core/error/ErrorBoundary.d.ts.map +0 -1
- package/dist/core/error/ErrorHandler.d.ts.map +0 -1
- package/dist/core/error/index.d.ts.map +0 -1
- package/dist/core/event/AppEventBus.d.ts.map +0 -1
- package/dist/core/event/frameworkEvents.d.ts.map +0 -1
- package/dist/core/event/hooks.d.ts.map +0 -1
- package/dist/core/event/index.d.ts.map +0 -1
- package/dist/core/event/types.d.ts.map +0 -1
- package/dist/core/event/useEventBus.d.ts.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/initialization/InitializationErrorThrower.d.ts.map +0 -1
- package/dist/core/initialization/index.d.ts.map +0 -1
- package/dist/core/initialization/initialization.d.ts.map +0 -1
- package/dist/core/initialization/initializationErrorState.d.ts.map +0 -1
- package/dist/core/middleware.d.ts.map +0 -1
- package/dist/core/plugin/PluginEventBus.d.ts.map +0 -1
- package/dist/core/plugin/PluginSandbox.d.ts.map +0 -1
- package/dist/core/plugin.d.ts.map +0 -1
- package/dist/core/router/RouterManager.d.ts.map +0 -1
- package/dist/core/router/adapter/AdapterManager.d.ts.map +0 -1
- package/dist/core/router/adapter/index.d.ts.map +0 -1
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts.map +0 -1
- package/dist/core/router/adapter/react-router/index.d.ts.map +0 -1
- package/dist/core/router/adapter/types.d.ts.map +0 -1
- package/dist/core/router/dev/RouterDevTools.d.ts.map +0 -1
- package/dist/core/router/dev/index.d.ts.map +0 -1
- package/dist/core/router/dynamic/DynamicRouteManager.d.ts.map +0 -1
- package/dist/core/router/dynamic/index.d.ts.map +0 -1
- package/dist/core/router/errors/RouterError.d.ts.map +0 -1
- package/dist/core/router/errors/index.d.ts.map +0 -1
- package/dist/core/router/index.d.ts.map +0 -1
- package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts.map +0 -1
- package/dist/core/router/lifecycle/index.d.ts.map +0 -1
- package/dist/core/router/middleware/RouterMiddlewareManager.d.ts.map +0 -1
- package/dist/core/router/middleware/auth.d.ts.map +0 -1
- package/dist/core/router/middleware/index.d.ts.map +0 -1
- package/dist/core/router/middleware/types.d.ts.map +0 -1
- package/dist/core/router/monitoring/RouterMonitoring.d.ts.map +0 -1
- package/dist/core/router/monitoring/index.d.ts.map +0 -1
- package/dist/core/router/navigation/RouterNavigation.d.ts.map +0 -1
- package/dist/core/router/navigation/index.d.ts.map +0 -1
- package/dist/core/router/performance/RouteCache.d.ts.map +0 -1
- package/dist/core/router/performance/RoutePreloader.d.ts.map +0 -1
- package/dist/core/router/performance/index.d.ts.map +0 -1
- package/dist/core/router/plugin/RouterPluginManager.d.ts.map +0 -1
- package/dist/core/router/plugin/index.d.ts.map +0 -1
- package/dist/core/router/plugin/types.d.ts.map +0 -1
- package/dist/core/router/types.d.ts.map +0 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts.map +0 -1
- package/dist/core/router/utils/adapters/react-router/transform.d.ts.map +0 -1
- package/dist/core/router/utils/transform.d.ts.map +0 -1
- package/dist/core/router/validation/RouterConfigValidator.d.ts.map +0 -1
- package/dist/core/router/validation/index.d.ts.map +0 -1
- package/dist/core/router/validation/schema.d.ts.map +0 -1
- package/dist/core/router/version/RouteVersionManager.d.ts.map +0 -1
- package/dist/core/router/version/index.d.ts.map +0 -1
- package/dist/core/splash/SplashScreen.d.ts.map +0 -1
- package/dist/core/splash/index.d.ts.map +0 -1
- package/dist/core/splash/splashScreenUtils.d.ts.map +0 -1
- package/dist/core/startup/AppInstance.d.ts.map +0 -1
- package/dist/core/startup/environment.d.ts.map +0 -1
- package/dist/core/startup/index.d.ts.map +0 -1
- package/dist/core/startup/initializeServices.d.ts.map +0 -1
- package/dist/core/startup/performanceTracker.d.ts.map +0 -1
- package/dist/core/startup/renderApp.d.ts.map +0 -1
- package/dist/core/startup/startApp.d.ts.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.umd.d.ts.map +0 -1
- package/dist/library/index.d.ts.map +0 -1
- package/dist/library/locale/index.d.ts.map +0 -1
- package/dist/library/locale/langs/en-us/index.d.ts.map +0 -1
- package/dist/library/locale/langs/zh-cn/index.d.ts.map +0 -1
- package/dist/library/locale/types.d.ts.map +0 -1
- package/dist/library/storage/cache.d.ts.map +0 -1
- package/dist/library/storage/encryption.d.ts.map +0 -1
- package/dist/library/storage/index.d.ts.map +0 -1
- package/dist/request/adapter/RequestAdapter.d.ts.map +0 -1
- package/dist/request/adapter/axiosAdapter.d.ts.map +0 -1
- package/dist/request/adapter/fetchAdapter.d.ts.map +0 -1
- package/dist/request/adapter/index.d.ts.map +0 -1
- package/dist/request/adapter/kyAdapter.d.ts.map +0 -1
- package/dist/request/adapter/undiciAdapter.d.ts.map +0 -1
- package/dist/request/core/RequestClient.d.ts.map +0 -1
- package/dist/request/core/index.d.ts.map +0 -1
- package/dist/request/index.d.ts.map +0 -1
- package/dist/request/plugin/RequestPlugin.d.ts.map +0 -1
- package/dist/request/plugin/cache.d.ts.map +0 -1
- package/dist/request/plugin/csrfPlugin.d.ts.map +0 -1
- package/dist/request/plugin/index.d.ts.map +0 -1
- package/dist/request/plugin/monitoring.d.ts.map +0 -1
- package/dist/request/plugin/queue.d.ts.map +0 -1
- package/dist/request/plugin/retry.d.ts.map +0 -1
- package/dist/request/plugin/validation.d.ts.map +0 -1
- package/dist/request/runtime/RequestContext.d.ts.map +0 -1
- package/dist/request/runtime/index.d.ts.map +0 -1
- package/dist/request/types.d.ts.map +0 -1
- package/dist/request/utils/RequestQueueManager.d.ts.map +0 -1
- package/dist/request/utils/dependencyCheck.d.ts.map +0 -1
- package/dist/request/utils/index.d.ts.map +0 -1
- package/dist/state/StateManager.d.ts.map +0 -1
- package/dist/state/adapters/AdapterFactory.d.ts.map +0 -1
- package/dist/state/adapters/DefaultAdapter.d.ts.map +0 -1
- package/dist/state/adapters/ReduxAdapter.d.ts.map +0 -1
- package/dist/state/adapters/ZustandAdapter.d.ts.map +0 -1
- package/dist/state/adapters/index.d.ts.map +0 -1
- package/dist/state/adapters/types.d.ts.map +0 -1
- package/dist/state/core/DerivedStateInstance.d.ts.map +0 -1
- package/dist/state/core/StateInstance.d.ts.map +0 -1
- package/dist/state/core/StateRegistry.d.ts.map +0 -1
- package/dist/state/core/StateScope.d.ts.map +0 -1
- package/dist/state/core/index.d.ts.map +0 -1
- package/dist/state/index.d.ts.map +0 -1
- package/dist/state/types.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/analytics.d.ts.map +0 -1
- package/dist/utils/configSecurity.d.ts.map +0 -1
- package/dist/utils/csrf.d.ts.map +0 -1
- package/dist/utils/errors/ErrorCodes.d.ts.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.types.d.ts.map +0 -1
- package/dist/utils/monitoring.d.ts.map +0 -1
- package/dist/utils/performance.d.ts.map +0 -1
- package/dist/utils/resourceLoader.d.ts.map +0 -1
- package/dist/utils/runtimeSecurity.d.ts.map +0 -1
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/traceId.d.ts.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.umd.js","sources":["request/types.js","request/adapter/RequestAdapter.js","utils/logger.types.js","../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/dist/purify.es.mjs","utils/errors.js","utils/security.js","utils/traceId.js","utils/logger.js","request/plugin/RequestPlugin.js","request/runtime/RequestContext.js","request/utils/RequestQueueManager.js","request/core/RequestClient.js","request/adapter/fetchAdapter.js","request/adapter/kyAdapter.js","request/adapter/axiosAdapter.js","request/adapter/index.js","request/plugin/cache.js","request/plugin/retry.js","request/plugin/validation.js","utils/performance.js","utils/monitoring.js","request/plugin/monitoring.js","request/plugin/queue.js","request/index.js","request/adapter/undiciAdapter.js","request/utils/dependencyCheck.js"],"sourcesContent":["/**\n * 请求库核心类型定义\n */ /**\n * HTTP 请求方法\n */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n/**\n * 请求错误类型\n */ export var RequestErrorType = /*#__PURE__*/ function(RequestErrorType) {\n /**\n * 网络错误\n */ RequestErrorType[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n /**\n * 超时错误\n */ RequestErrorType[\"TIMEOUT_ERROR\"] = \"TIMEOUT_ERROR\";\n /**\n * HTTP 错误(4xx, 5xx)\n */ RequestErrorType[\"HTTP_ERROR\"] = \"HTTP_ERROR\";\n /**\n * 取消错误\n */ RequestErrorType[\"ABORT_ERROR\"] = \"ABORT_ERROR\";\n /**\n * 验证错误\n */ RequestErrorType[\"VALIDATION_ERROR\"] = \"VALIDATION_ERROR\";\n /**\n * 未知错误\n */ RequestErrorType[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n return RequestErrorType;\n}({});\n/**\n * 请求错误代码\n */ export var RequestErrorCode = /*#__PURE__*/ function(RequestErrorCode) {\n /**\n * 网络连接失败\n */ RequestErrorCode[\"NETWORK_CONNECTION_FAILED\"] = \"NETWORK_CONNECTION_FAILED\";\n /**\n * 请求超时\n */ RequestErrorCode[\"REQUEST_TIMEOUT\"] = \"REQUEST_TIMEOUT\";\n /**\n * 服务器错误(5xx)\n */ RequestErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n /**\n * 客户端错误(4xx)\n */ RequestErrorCode[\"CLIENT_ERROR\"] = \"CLIENT_ERROR\";\n /**\n * 请求被取消\n */ RequestErrorCode[\"REQUEST_ABORTED\"] = \"REQUEST_ABORTED\";\n /**\n * 响应验证失败\n */ RequestErrorCode[\"RESPONSE_VALIDATION_FAILED\"] = \"RESPONSE_VALIDATION_FAILED\";\n /**\n * 请求参数验证失败\n */ RequestErrorCode[\"REQUEST_VALIDATION_FAILED\"] = \"REQUEST_VALIDATION_FAILED\";\n return RequestErrorCode;\n}({});\n/**\n * 请求错误类\n */ export class RequestError extends Error {\n constructor(message, type, code, options){\n super(message), /**\n * 错误类型\n */ _define_property(this, \"type\", void 0), /**\n * 错误代码\n */ _define_property(this, \"code\", void 0), /**\n * HTTP 状态码(如果有)\n */ _define_property(this, \"status\", void 0), /**\n * 原始错误\n */ _define_property(this, \"cause\", void 0), /**\n * 请求配置\n */ _define_property(this, \"request\", void 0), /**\n * 响应数据(如果有)\n */ _define_property(this, \"response\", void 0), /**\n * 错误上下文\n */ _define_property(this, \"context\", void 0);\n this.name = 'RequestError';\n this.type = type;\n this.code = code;\n this.status = options?.status;\n this.cause = options?.cause;\n this.request = options?.request;\n this.response = options?.response;\n this.context = options?.context;\n }\n}\n\n//# sourceMappingURL=types.js.map","/**\n * 请求适配器抽象接口\n * \n * 适配器负责将框架请求抽象映射到具体的 HTTP 实现(如 axios、ky、fetch 等)\n */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n/**\n * 适配器注册表\n */ let AdapterRegistry = class AdapterRegistry {\n /**\n * 注册适配器\n * \n * @param name - 适配器名称\n * @param factory - 适配器工厂函数\n */ register(name, factory) {\n this.adapters.set(name, factory);\n }\n /**\n * 获取适配器\n * \n * @param name - 适配器名称\n * @returns 适配器实例\n */ async get(name) {\n const factory = this.adapters.get(name);\n if (!factory) {\n throw new Error(`适配器 ${name} 未注册`);\n }\n const adapter = await factory();\n return adapter;\n }\n /**\n * 检查适配器是否已注册\n * \n * @param name - 适配器名称\n * @returns 是否已注册\n */ has(name) {\n return this.adapters.has(name);\n }\n /**\n * 获取所有已注册的适配器名称\n * \n * @returns 适配器名称数组\n */ getAllNames() {\n return Array.from(this.adapters.keys());\n }\n /**\n * 清除所有适配器\n */ clear() {\n this.adapters.clear();\n }\n constructor(){\n _define_property(this, \"adapters\", new Map());\n }\n};\n/**\n * 全局适配器注册表\n */ export const adapterRegistry = new AdapterRegistry();\n\n//# sourceMappingURL=RequestAdapter.js.map","/**\n * 日志级别枚举\n */ export var LogLevel = /*#__PURE__*/ function(LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 1] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 2] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 3] = \"ERROR\";\n LogLevel[LogLevel[\"NONE\"] = 4] = \"NONE\";\n return LogLevel;\n}({});\n\n//# sourceMappingURL=logger.types.js.map","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { ErrorCode, getUserFriendlyMessage } from \"./errors/ErrorCodes\";\n// 导出错误码相关类型和函数\nexport { ErrorCode, ErrorMessages, getErrorMessage, getUserFriendlyMessage } from \"./errors/ErrorCodes\";\n/**\n * 错误类型枚举\n */ export var ErrorType = /*#__PURE__*/ function(ErrorType) {\n /**\n * 初始化错误\n */ ErrorType[\"INITIALIZATION\"] = \"INITIALIZATION\";\n /**\n * 配置错误\n */ ErrorType[\"CONFIG\"] = \"CONFIG\";\n /**\n * 存储错误\n */ ErrorType[\"STORAGE\"] = \"STORAGE\";\n /**\n * 网络错误\n */ ErrorType[\"NETWORK\"] = \"NETWORK\";\n /**\n * 验证错误\n */ ErrorType[\"VALIDATION\"] = \"VALIDATION\";\n /**\n * 安全错误\n */ ErrorType[\"SECURITY\"] = \"SECURITY\";\n /**\n * 运行时错误\n */ ErrorType[\"RUNTIME\"] = \"RUNTIME\";\n /**\n * 未知错误\n */ ErrorType[\"UNKNOWN\"] = \"UNKNOWN\";\n return ErrorType;\n}({});\n/**\n * 错误严重程度\n */ export var ErrorSeverity = /*#__PURE__*/ function(ErrorSeverity) {\n /**\n * 低 - 不影响核心功能\n */ ErrorSeverity[\"LOW\"] = \"LOW\";\n /**\n * 中 - 影响部分功能\n */ ErrorSeverity[\"MEDIUM\"] = \"MEDIUM\";\n /**\n * 高 - 影响核心功能\n */ ErrorSeverity[\"HIGH\"] = \"HIGH\";\n /**\n * 严重 - 导致应用无法使用\n */ ErrorSeverity[\"CRITICAL\"] = \"CRITICAL\";\n return ErrorSeverity;\n}({});\n/**\n * 框架错误基类\n */ export class FrameworkError extends Error {\n /**\n * 转换为 JSON\n */ toJSON() {\n return {\n name: this.name,\n message: this.message,\n type: this.type,\n severity: this.severity,\n code: this.code,\n recoverable: this.recoverable,\n context: this.context,\n stack: this.stack,\n originalError: this.originalError ? {\n name: this.originalError.name,\n message: this.originalError.message,\n stack: this.originalError.stack\n } : undefined\n };\n }\n constructor(message, type = \"UNKNOWN\", severity = \"MEDIUM\", options){\n super(message), /**\n * 错误类型\n */ _define_property(this, \"type\", void 0), /**\n * 错误严重程度\n */ _define_property(this, \"severity\", void 0), /**\n * 错误代码\n */ _define_property(this, \"code\", void 0), /**\n * 原始错误\n */ _define_property(this, \"originalError\", void 0), /**\n * 错误上下文\n */ _define_property(this, \"context\", void 0), /**\n * 是否可恢复\n */ _define_property(this, \"recoverable\", void 0);\n this.name = 'FrameworkError';\n this.type = type;\n this.severity = severity;\n this.code = options?.code || `${type}_ERROR`;\n this.originalError = options?.originalError;\n this.context = options?.context;\n this.recoverable = options?.recoverable ?? false;\n // 保持正确的堆栈跟踪\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FrameworkError);\n }\n }\n}\n/**\n * 初始化错误\n */ export class InitializationError extends FrameworkError {\n constructor(message, originalError, context, errorCode){\n const code = errorCode || ErrorCode.INITIALIZATION_FAILED;\n super(getUserFriendlyMessage(code, message), \"INITIALIZATION\", \"CRITICAL\", {\n code: ErrorCode[code],\n originalError,\n context,\n recoverable: false\n });\n this.name = 'InitializationError';\n }\n}\n/**\n * 配置错误\n */ export class ConfigError extends FrameworkError {\n constructor(message, originalError, context, errorCode){\n const code = errorCode || ErrorCode.CONFIG_LOAD_FAILED;\n super(getUserFriendlyMessage(code, message), \"CONFIG\", \"HIGH\", {\n code: ErrorCode[code],\n originalError,\n context,\n recoverable: true\n });\n this.name = 'ConfigError';\n }\n}\n/**\n * 存储错误\n */ export class StorageError extends FrameworkError {\n constructor(message, originalError, context){\n super(message, \"STORAGE\", \"MEDIUM\", {\n code: 'STORAGE_ERROR',\n originalError,\n context,\n recoverable: true\n });\n this.name = 'StorageError';\n }\n}\n/**\n * 网络错误\n */ export class NetworkError extends FrameworkError {\n constructor(message, originalError, context, errorCode){\n const code = errorCode || ErrorCode.NETWORK_ERROR;\n super(getUserFriendlyMessage(code, message), \"NETWORK\", \"MEDIUM\", {\n code: ErrorCode[code],\n originalError,\n context,\n recoverable: true\n });\n this.name = 'NetworkError';\n }\n}\n/**\n * 验证错误\n */ export class ValidationError extends FrameworkError {\n constructor(message, context){\n super(message, \"VALIDATION\", \"LOW\", {\n code: 'VALIDATION_ERROR',\n context,\n recoverable: true\n });\n this.name = 'ValidationError';\n }\n}\n/**\n * 安全错误\n */ export class SecurityError extends FrameworkError {\n constructor(message, originalError, context){\n super(message, \"SECURITY\", \"HIGH\", {\n code: 'SECURITY_ERROR',\n originalError,\n context,\n recoverable: false\n });\n this.name = 'SecurityError';\n }\n}\n/**\n * 错误处理工具函数\n */ export const errorUtils = {\n /**\n * 安全地将未知错误转换为可展示的消息\n * 避免 String(error) 对 null-prototype 对象再次抛错\n */ getSafeErrorMessage (error) {\n if (typeof error === 'string') {\n return error;\n }\n if (typeof error === 'number' || typeof error === 'boolean' || typeof error === 'bigint' || typeof error === 'symbol' || error === null || error === undefined) {\n try {\n return String(error);\n } catch {\n return 'Unknown error';\n }\n }\n if (typeof error === 'object') {\n try {\n const maybeMessage = error.message;\n if (typeof maybeMessage === 'string' && maybeMessage.trim()) {\n return maybeMessage;\n }\n } catch {\n // ignore\n }\n try {\n const json = JSON.stringify(error);\n if (json) {\n return json;\n }\n } catch {\n // ignore\n }\n try {\n return `Non-Error throwable: ${Object.prototype.toString.call(error)}`;\n } catch {\n return 'Non-Error throwable';\n }\n }\n try {\n return String(error);\n } catch {\n return 'Unknown error';\n }\n },\n /**\n * 判断错误是否可恢复\n */ isRecoverable (error) {\n if (error instanceof FrameworkError) {\n return error.recoverable;\n }\n return false;\n },\n /**\n * 获取错误类型\n */ getErrorType (error) {\n if (error instanceof FrameworkError) {\n return error.type;\n }\n return \"UNKNOWN\";\n },\n /**\n * 获取错误严重程度\n */ getErrorSeverity (error) {\n if (error instanceof FrameworkError) {\n return error.severity;\n }\n return \"MEDIUM\";\n },\n /**\n * 标准化错误对象\n */ normalizeError (error) {\n if (error instanceof FrameworkError) {\n return error;\n }\n if (error instanceof Error) {\n return new FrameworkError(error.message, \"UNKNOWN\", \"MEDIUM\", {\n originalError: error\n });\n }\n return new FrameworkError(errorUtils.getSafeErrorMessage(error), \"UNKNOWN\", \"MEDIUM\");\n },\n /**\n * 提取错误信息\n */ extractErrorInfo (error) {\n const normalized = errorUtils.normalizeError(error);\n return {\n message: normalized.message,\n type: normalized.type,\n severity: normalized.severity,\n code: normalized.code,\n stack: normalized.stack\n };\n },\n /**\n * 获取错误修复建议\n * \n * 优化:根据错误类型和代码提供修复建议\n */ getErrorSuggestions (error) {\n const normalized = errorUtils.normalizeError(error);\n const suggestions = [];\n // 根据错误代码提供建议\n switch(normalized.code){\n case 'CONTAINER_NOT_FOUND':\n suggestions.push('请确保页面中存在 id=\"root\" 的元素,或通过 container 选项指定挂载容器');\n suggestions.push('检查 DOM 是否已加载完成,确保在 DOMContentLoaded 事件后调用 start()');\n break;\n case 'NETWORK_ERROR':\n suggestions.push('检查网络连接是否正常');\n suggestions.push('检查服务器是否正常运行');\n suggestions.push('检查 CORS 配置是否正确');\n break;\n case 'TIMEOUT_ERROR':\n suggestions.push('增加超时时间配置');\n suggestions.push('检查网络连接是否稳定');\n suggestions.push('检查服务器响应速度');\n break;\n case 'VALIDATION_ERROR':\n suggestions.push('检查配置项是否符合要求');\n suggestions.push('查看配置验证错误详情');\n suggestions.push('参考配置文档确认配置格式');\n break;\n case 'INITIALIZATION_ERROR':\n suggestions.push('检查初始化配置是否正确');\n suggestions.push('查看初始化日志了解详细错误');\n suggestions.push('尝试简化配置,逐步排查问题');\n break;\n default:\n if (normalized.type === \"SECURITY\") {\n suggestions.push('检查输入内容是否包含不安全字符');\n suggestions.push('确保配置项来源可信');\n suggestions.push('查看安全配置文档');\n }\n }\n // 如果是可恢复的错误,提供恢复建议\n if (normalized.recoverable) {\n suggestions.push('此错误可以自动恢复,请稍后重试');\n }\n return suggestions;\n },\n /**\n * 格式化错误信息(用于开发环境)\n * \n * 优化:提供更详细的错误信息,包括修复建议\n */ formatErrorForDev (error) {\n const normalized = errorUtils.normalizeError(error);\n const suggestions = errorUtils.getErrorSuggestions(error);\n let message = `[${normalized.code}] ${normalized.message}`;\n if (normalized.stack) {\n message += `\\n\\n堆栈信息:\\n${normalized.stack}`;\n }\n if (suggestions.length > 0) {\n message += `\\n\\n修复建议:\\n${suggestions.map((s, i)=>`${i + 1}. ${s}`).join('\\n')}`;\n }\n if (normalized.context) {\n message += `\\n\\n上下文信息:\\n${JSON.stringify(normalized.context, null, 2)}`;\n }\n return message;\n }\n};\n\n//# sourceMappingURL=errors.js.map","import DOMPurify from \"dompurify\";\nimport { SecurityError } from \"./errors\";\n/**\n * 敏感数据标识(扩展列表)\n */ export const SENSITIVE_FIELDS = [\n 'password',\n 'pwd',\n 'passwd',\n 'token',\n 'secret',\n 'key',\n 'apiKey',\n 'apikey',\n 'api_key',\n 'accessToken',\n 'access_token',\n 'refreshToken',\n 'refresh_token',\n 'authorization',\n 'auth',\n 'cookie',\n 'session',\n 'sessionId',\n 'session_id',\n 'creditCard',\n 'credit_card',\n 'cardNumber',\n 'card_number',\n 'cvv',\n 'cvc',\n 'ssn',\n 'socialSecurityNumber',\n 'social_security_number',\n 'phone',\n 'phoneNumber',\n 'phone_number',\n 'mobile',\n 'email',\n 'emailAddress',\n 'email_address',\n 'privateKey',\n 'private_key',\n 'secretKey',\n 'secret_key',\n 'apiSecret',\n 'api_secret'\n];\n/**\n * 敏感信息检测模式(正则表达式)\n */ const SENSITIVE_PATTERNS = [\n /\\b\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b/,\n /\\b\\d{3}-\\d{2}-\\d{4}\\b/,\n /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b/,\n /\\b\\d{10,}\\b/\n];\n/**\n * 安全工具类\n */ export class SecurityUtils {\n /**\n * 清理 HTML,防止 XSS 攻击\n */ static sanitizeHTML(html, config) {\n if (typeof window === 'undefined') {\n // Node.js 环境,返回原始字符串(需要服务端处理)\n return html;\n }\n try {\n if (config?.allowHTML) {\n // 默认禁止所有标签,除非明确允许\n const allowedTags = config.allowedTags && config.allowedTags.length > 0 ? config.allowedTags : [];\n const allowedAttributes = config.allowedAttributes && config.allowedAttributes.length > 0 ? config.allowedAttributes : [];\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: allowedTags,\n ALLOWED_ATTR: allowedAttributes,\n FORBID_TAGS: [\n 'script',\n 'iframe',\n 'object',\n 'embed',\n 'form',\n 'link',\n 'meta',\n 'style'\n ],\n FORBID_ATTR: [\n 'onerror',\n 'onload',\n 'onclick',\n 'onmouseover',\n 'onfocus',\n 'onblur',\n 'onchange'\n ],\n // 添加更多安全配置\n KEEP_CONTENT: false,\n RETURN_DOM: false,\n RETURN_DOM_FRAGMENT: false,\n RETURN_TRUSTED_TYPE: false\n });\n }\n // 默认模式:完全清理,不允许任何 HTML\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [],\n KEEP_CONTENT: false\n });\n } catch (error) {\n // 错误处理:不泄露敏感信息,记录错误但不抛出详细错误\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n // 只记录错误类型,不记录具体内容\n console.error('HTML 清理失败:', errorMessage.substring(0, 50));\n // 返回安全的空字符串或清理后的文本\n return this.sanitizeText(html);\n }\n }\n /**\n * 清理文本内容(移除所有 HTML 标签)\n */ static sanitizeText(text) {\n if (typeof window === 'undefined') {\n return text.replace(/<[^>]*>/g, '');\n }\n try {\n return DOMPurify.sanitize(text, {\n ALLOWED_TAGS: []\n });\n } catch (error) {\n throw new SecurityError('文本清理失败', error instanceof Error ? error : undefined);\n }\n }\n /**\n * 检查字符串是否包含潜在的危险内容\n */ static containsDangerousContent(text) {\n const dangerousPatterns = [\n /<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi,\n /javascript:/gi,\n /on\\w+\\s*=/gi,\n /<iframe[\\s\\S]*?>/gi,\n /<object[\\s\\S]*?>/gi,\n /<embed[\\s\\S]*?>/gi,\n /<link[\\s\\S]*?>/gi,\n /<meta[\\s\\S]*?>/gi,\n /data:text\\/html/gi,\n /vbscript:/gi,\n /expression\\s*\\(/gi,\n /@import/gi,\n /<style[\\s\\S]*?>[\\s\\S]*?<\\/style>/gi\n ];\n return dangerousPatterns.some((pattern)=>pattern.test(text));\n }\n /**\n * 验证 URL 是否安全\n */ static isSafeUrl(url) {\n try {\n const urlObj = new URL(url);\n // 检查协议\n if (![\n 'http:',\n 'https:'\n ].includes(urlObj.protocol)) {\n return false;\n }\n // 检查是否包含危险内容\n return !this.containsDangerousContent(url);\n } catch {\n return false;\n }\n }\n /**\n * 检查字段名是否为敏感字段\n */ static isSensitiveField(fieldName) {\n const lowerFieldName = fieldName.toLowerCase();\n return SENSITIVE_FIELDS.some((field)=>lowerFieldName.includes(field.toLowerCase()));\n }\n /**\n * 检查值是否包含敏感信息(基于模式匹配)\n */ static containsSensitiveData(value) {\n return SENSITIVE_PATTERNS.some((pattern)=>pattern.test(value));\n }\n /**\n * 生成 CSP(Content Security Policy)头\n */ static generateCSP(config) {\n const directives = [];\n const allowUnsafeInline = config?.allowUnsafeInline ?? false;\n const allowUnsafeEval = config?.allowUnsafeEval ?? false;\n if (config?.defaultSrc) {\n directives.push(`default-src ${config.defaultSrc.join(' ')}`);\n } else {\n directives.push(\"default-src 'self'\");\n }\n if (config?.scriptSrc) {\n directives.push(`script-src ${config.scriptSrc.join(' ')}`);\n } else {\n // 默认不允许 unsafe-inline 和 unsafe-eval,提高安全性\n const scriptSrc = [\n \"'self'\"\n ];\n if (allowUnsafeInline) {\n scriptSrc.push(\"'unsafe-inline'\");\n }\n if (allowUnsafeEval) {\n scriptSrc.push(\"'unsafe-eval'\");\n }\n directives.push(`script-src ${scriptSrc.join(' ')}`);\n }\n if (config?.styleSrc) {\n directives.push(`style-src ${config.styleSrc.join(' ')}`);\n } else {\n // 对于样式,可以使用 nonce 或 hash 替代 unsafe-inline\n const styleSrc = [\n \"'self'\"\n ];\n if (allowUnsafeInline) {\n styleSrc.push(\"'unsafe-inline'\");\n }\n directives.push(`style-src ${styleSrc.join(' ')}`);\n }\n if (config?.imgSrc) {\n directives.push(`img-src ${config.imgSrc.join(' ')}`);\n } else {\n directives.push(\"img-src 'self' data: https:\");\n }\n if (config?.connectSrc) {\n directives.push(`connect-src ${config.connectSrc.join(' ')}`);\n } else {\n directives.push(\"connect-src 'self'\");\n }\n if (config?.fontSrc) {\n directives.push(`font-src ${config.fontSrc.join(' ')}`);\n } else {\n directives.push(\"font-src 'self' data:\");\n }\n if (config?.frameSrc) {\n directives.push(`frame-src ${config.frameSrc.join(' ')}`);\n } else {\n directives.push(\"frame-src 'none'\");\n }\n return directives.join('; ');\n }\n /**\n * 转义 HTML 特殊字符\n */ static escapeHTML(text) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n return text.replace(/[&<>\"']/g, (char)=>map[char]);\n }\n /**\n * 验证输入是否安全\n */ static validateInput(input) {\n if (typeof input !== 'string') {\n return {\n safe: true\n };\n }\n if (this.containsDangerousContent(input)) {\n return {\n safe: false,\n sanitized: this.sanitizeText(input),\n reason: '包含潜在的危险内容'\n };\n }\n // 检查是否包含敏感数据模式\n if (this.containsSensitiveData(input)) {\n return {\n safe: false,\n sanitized: this.sanitizeText(input),\n reason: '可能包含敏感信息'\n };\n }\n return {\n safe: true,\n sanitized: input\n };\n }\n /**\n * 深度脱敏处理(递归处理嵌套对象)\n */ static deepSanitize(data, maxDepth = 10, currentDepth = 0) {\n if (currentDepth >= maxDepth) {\n return '***'; // 防止无限递归\n }\n if (data === null || data === undefined) {\n return data;\n }\n if (typeof data === 'string') {\n if (this.containsDangerousContent(data) || this.containsSensitiveData(data)) {\n return this.sanitizeText(data);\n }\n return data;\n }\n if (typeof data === 'number' || typeof data === 'boolean') {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map((item)=>this.deepSanitize(item, maxDepth, currentDepth + 1));\n }\n if (typeof data === 'object') {\n const sanitized = {};\n for (const [key, value] of Object.entries(data)){\n if (this.isSensitiveField(key)) {\n sanitized[key] = '***';\n } else {\n sanitized[key] = this.deepSanitize(value, maxDepth, currentDepth + 1);\n }\n }\n return sanitized;\n }\n return data;\n }\n}\n\n//# sourceMappingURL=security.js.map","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n/**\n * 日志追踪 ID 生成器\n * 用于生成唯一的请求追踪 ID,便于日志关联和问题排查\n */ /**\n * 追踪 ID 生成器\n */ export class TraceIdGenerator {\n /**\n * 获取单例实例\n */ static getInstance(prefix) {\n if (!TraceIdGenerator.instance) {\n TraceIdGenerator.instance = new TraceIdGenerator(prefix);\n }\n return TraceIdGenerator.instance;\n }\n /**\n * 生成追踪 ID\n */ generate() {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 9);\n const counter = (this.counter++).toString(36).padStart(4, '0');\n const parts = [\n timestamp.toString(36),\n random,\n counter\n ];\n if (this.prefix) {\n parts.unshift(this.prefix);\n }\n return parts.join('-');\n }\n /**\n * 从字符串解析追踪 ID(用于验证)\n */ static parse(traceId) {\n const parts = traceId.split('-');\n if (parts.length < 3) {\n return null;\n }\n try {\n const timestamp = parseInt(parts[parts.length - 3], 36);\n const random = parts[parts.length - 2];\n const counter = parseInt(parts[parts.length - 1], 36);\n return {\n prefix: parts.length > 3 ? parts.slice(0, -3).join('-') : undefined,\n timestamp,\n random,\n counter\n };\n } catch {\n return null;\n }\n }\n constructor(prefix = ''){\n _define_property(this, \"counter\", 0);\n _define_property(this, \"prefix\", void 0);\n this.prefix = prefix;\n }\n}\n_define_property(TraceIdGenerator, \"instance\", null);\n/**\n * 全局追踪 ID 生成器实例\n */ let globalTraceIdGenerator = null;\n/**\n * 初始化追踪 ID 生成器\n */ export function initTraceIdGenerator(prefix) {\n globalTraceIdGenerator = TraceIdGenerator.getInstance(prefix);\n return globalTraceIdGenerator;\n}\n/**\n * 获取全局追踪 ID 生成器\n */ export function getTraceIdGenerator() {\n if (!globalTraceIdGenerator) {\n globalTraceIdGenerator = TraceIdGenerator.getInstance();\n }\n return globalTraceIdGenerator;\n}\n/**\n * 生成追踪 ID\n */ export function generateTraceId() {\n return getTraceIdGenerator().generate();\n}\n/**\n * 解析追踪 ID\n */ export function parseTraceId(traceId) {\n return TraceIdGenerator.parse(traceId);\n}\n/**\n * 当前请求的追踪 ID(使用 AsyncLocalStorage 或全局变量)\n */ let currentTraceId = null;\n/**\n * 设置当前请求的追踪 ID\n */ export function setCurrentTraceId(traceId) {\n currentTraceId = traceId;\n}\n/**\n * 获取当前请求的追踪 ID\n */ export function getCurrentTraceId() {\n return currentTraceId;\n}\n/**\n * 清除当前请求的追踪 ID\n */ export function clearCurrentTraceId() {\n currentTraceId = null;\n}\n\n//# sourceMappingURL=traceId.js.map","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { LogLevel } from \"./logger.types\";\nimport { SecurityUtils } from \"./security\";\nimport { getCurrentTraceId } from \"./traceId\";\n/**\n * 检测运行环境是否为浏览器\n */ const isBrowser = ()=>{\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n};\n/**\n * ANSI 颜色代码(用于 Node.js 环境)\n */ const ANSI_COLORS = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n bgRed: '\\x1b[41m',\n bgGreen: '\\x1b[42m',\n bgYellow: '\\x1b[43m',\n bgBlue: '\\x1b[44m',\n bgMagenta: '\\x1b[45m',\n bgCyan: '\\x1b[46m',\n bgWhite: '\\x1b[47m'\n};\n/**\n * 浏览器控制台样式(用于浏览器环境)\n */ const BROWSER_STYLES = {\n debug: 'color: #888; font-weight: normal;',\n info: 'color: #2196F3; font-weight: normal;',\n warn: 'color: #FF9800; font-weight: bold;',\n error: 'color: #F44336; font-weight: bold;'\n};\n/**\n * 日志级别对应的颜色配置\n */ const LEVEL_COLORS = {\n [LogLevel.DEBUG]: {\n node: ANSI_COLORS.dim + ANSI_COLORS.white,\n browser: BROWSER_STYLES.debug\n },\n [LogLevel.INFO]: {\n node: ANSI_COLORS.cyan,\n browser: BROWSER_STYLES.info\n },\n [LogLevel.WARN]: {\n node: ANSI_COLORS.yellow,\n browser: BROWSER_STYLES.warn\n },\n [LogLevel.ERROR]: {\n node: ANSI_COLORS.red + ANSI_COLORS.bright,\n browser: BROWSER_STYLES.error\n },\n [LogLevel.NONE]: {\n node: '',\n browser: ''\n }\n};\n/**\n * 日志级别标签\n */ const LEVEL_LABELS = {\n [LogLevel.DEBUG]: 'DEBUG',\n [LogLevel.INFO]: 'INFO',\n [LogLevel.WARN]: 'WARN',\n [LogLevel.ERROR]: 'ERROR',\n [LogLevel.NONE]: ''\n};\n/**\n * 日志格式类型\n */ export var LogFormat = /*#__PURE__*/ function(LogFormat) {\n /**\n * 文本格式(默认)\n */ LogFormat[\"TEXT\"] = \"text\";\n /**\n * JSON 格式(用于日志聚合)\n */ LogFormat[\"JSON\"] = \"json\";\n /**\n * 结构化格式(用于分析)\n */ LogFormat[\"STRUCTURED\"] = \"structured\";\n return LogFormat;\n}({});\n/**\n * Logger 类\n */ let Logger = class Logger {\n /**\n * 设置日志级别\n */ setLevel(level) {\n this.level = level;\n }\n /**\n * 获取当前日志级别\n */ getLevel() {\n return this.level;\n }\n /**\n * 格式化时间戳\n */ formatTimestamp() {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const day = String(now.getDate()).padStart(2, '0');\n const hours = String(now.getHours()).padStart(2, '0');\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n const milliseconds = String(now.getMilliseconds()).padStart(3, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n /**\n * 构建日志前缀\n */ buildPrefix(logLevel) {\n const parts = [];\n if (this.showTimestamp) {\n parts.push(`[${this.formatTimestamp()}]`);\n }\n if (this.showLevel) {\n parts.push(`[${LEVEL_LABELS[logLevel]}]`);\n }\n // 添加追踪 ID(如果存在)\n const traceId = getCurrentTraceId();\n if (traceId) {\n parts.push(`[Trace:${traceId.substring(0, 8)}]`);\n }\n if (this.prefix) {\n parts.push(`[${this.prefix}]`);\n }\n return parts.join(' ');\n }\n /**\n * 输出日志(Node.js 环境)\n */ logNode(level, ...args) {\n if (level < this.level) {\n return;\n }\n const prefix = this.buildPrefix(level);\n const colorConfig = LEVEL_COLORS[level];\n const reset = this.enableColors ? ANSI_COLORS.reset : '';\n if (this.enableColors && colorConfig.node) {\n console.log(`${colorConfig.node}${prefix}${reset}`, ...args);\n } else {\n console.log(prefix, ...args);\n }\n }\n /**\n * 输出日志(浏览器环境)\n */ logBrowser(level, ...args) {\n if (level < this.level) {\n return;\n }\n const prefix = this.buildPrefix(level);\n const colorConfig = LEVEL_COLORS[level];\n if (this.enableColors && colorConfig.browser) {\n console.log(`%c${prefix}`, colorConfig.browser, ...args);\n } else {\n console.log(prefix, ...args);\n }\n }\n /**\n * 脱敏处理\n */ sanitizeValue(value) {\n if (!this.enableSanitization) {\n return value;\n }\n if (typeof value === 'string') {\n // 检查是否包含敏感内容\n if (SecurityUtils.containsDangerousContent(value)) {\n return SecurityUtils.sanitizeText(value);\n }\n return value;\n }\n if (value && typeof value === 'object') {\n if (Array.isArray(value)) {\n return value.map((item)=>this.sanitizeValue(item));\n }\n const sanitized = {};\n for (const [key, val] of Object.entries(value)){\n // 检查是否为敏感字段\n if (SecurityUtils.isSensitiveField(key)) {\n sanitized[key] = '***';\n } else {\n sanitized[key] = this.sanitizeValue(val);\n }\n }\n return sanitized;\n }\n return value;\n }\n /**\n * 处理日志参数(脱敏、过滤等)\n */ processLogArgs(...args) {\n // 生产环境自动禁用 DEBUG 级别\n if (this.isProduction && this.level === LogLevel.DEBUG) {\n return [];\n }\n return args.map((arg)=>this.sanitizeValue(arg));\n }\n /**\n * 设置日志格式\n */ setFormat(format) {\n this.format = format;\n }\n /**\n * 设置日志上下文\n */ setContext(context) {\n this.context = {\n ...this.context,\n ...context\n };\n }\n /**\n * 更新日志上下文\n */ updateContext(context) {\n this.context = {\n ...this.context,\n ...context\n };\n }\n /**\n * 获取日志上下文\n */ getContext() {\n return {\n ...this.context\n };\n }\n /**\n * 清除日志上下文\n */ clearContext() {\n this.context = {};\n }\n /**\n * 注册日志处理器(用于日志聚合)\n */ addLogHandler(handler) {\n this.logHandlers.push(handler);\n return ()=>{\n const index = this.logHandlers.indexOf(handler);\n if (index > -1) {\n this.logHandlers.splice(index, 1);\n }\n };\n }\n /**\n * 创建结构化日志条目\n */ createStructuredEntry(level, message, data) {\n const traceId = getCurrentTraceId();\n const entry = {\n timestamp: new Date().toISOString(),\n level,\n message,\n context: {\n ...this.context,\n traceId: traceId || this.context.traceId\n },\n source: this.prefix || 'framework'\n };\n if (data !== undefined) {\n entry.data = this.sanitizeValue(data);\n }\n // 如果是错误,提取堆栈信息\n if (data instanceof Error) {\n entry.stack = data.stack;\n entry.message = data.message || message;\n }\n return entry;\n }\n /**\n * 输出结构化日志\n */ outputStructured(entry) {\n // 调用日志处理器\n this.logHandlers.forEach((handler)=>{\n try {\n handler(entry);\n } catch (error) {\n // 忽略处理器错误,避免循环\n }\n });\n // 根据格式输出\n if (this.format === \"json\") {\n console.log(JSON.stringify(entry));\n } else if (this.format === \"structured\") {\n console.log(entry);\n } else {\n // TEXT 格式使用原有输出方式\n const args = entry.data !== undefined ? [\n entry.data\n ] : [];\n if (isBrowser()) {\n this.logBrowser(entry.level, entry.message, ...args);\n } else {\n this.logNode(entry.level, entry.message, ...args);\n }\n }\n }\n /**\n * 通用日志输出方法\n */ log(level, ...args) {\n if (level < this.level) {\n return;\n }\n const processedArgs = this.processLogArgs(...args);\n // 如果处理后没有参数(被过滤),则不输出\n if (processedArgs.length === 0) {\n return;\n }\n // 提取消息和数据\n const message = typeof processedArgs[0] === 'string' ? processedArgs[0] : 'Log message';\n const data = processedArgs.length > 1 ? processedArgs.slice(1) : typeof processedArgs[0] === 'string' ? undefined : processedArgs[0];\n // 创建结构化日志条目\n const entry = this.createStructuredEntry(level, message, data);\n // 输出日志\n this.outputStructured(entry);\n }\n /**\n * 输出 DEBUG 级别日志\n */ debug(...args) {\n this.log(LogLevel.DEBUG, ...args);\n }\n /**\n * 输出 INFO 级别日志\n */ info(...args) {\n this.log(LogLevel.INFO, ...args);\n }\n /**\n * 输出 WARN 级别日志\n */ warn(...args) {\n this.log(LogLevel.WARN, ...args);\n }\n /**\n * 输出 ERROR 级别日志\n */ error(...args) {\n this.log(LogLevel.ERROR, ...args);\n }\n constructor(options = {}){\n _define_property(this, \"level\", void 0);\n _define_property(this, \"enableColors\", void 0);\n _define_property(this, \"showTimestamp\", void 0);\n _define_property(this, \"showLevel\", void 0);\n _define_property(this, \"prefix\", void 0);\n _define_property(this, \"enableSanitization\", void 0);\n _define_property(this, \"isProduction\", void 0);\n _define_property(this, \"format\", void 0);\n _define_property(this, \"context\", {});\n _define_property(this, \"logHandlers\", []);\n this.level = options.level ?? LogLevel.INFO;\n this.enableColors = options.enableColors ?? true;\n this.showTimestamp = options.showTimestamp ?? true;\n this.showLevel = options.showLevel ?? true;\n this.prefix = options.prefix ?? '';\n this.enableSanitization = options.enableSanitization ?? true;\n this.isProduction = typeof process !== 'undefined' && process.env.NODE_ENV === 'production';\n this.format = options.format ?? \"text\";\n this.context = options.context ?? {};\n }\n};\n/**\n * 创建 Logger 实例\n */ export const createLogger = (options)=>{\n return new Logger(options);\n};\n/**\n * 默认 Logger 实例\n */ export const logger = createLogger();\n/**\n * 导出 Logger 类\n */ export { Logger };\n\n//# sourceMappingURL=logger.js.map","/**\n * 请求插件系统\n * \n * 插件系统提供生命周期钩子,允许扩展请求能力\n */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { logger } from \"../../utils/logger\";\n/**\n * 插件生命周期阶段\n */ export var PluginLifecycleStage = /*#__PURE__*/ function(PluginLifecycleStage) {\n /**\n * 初始化阶段\n */ PluginLifecycleStage[\"INIT\"] = \"init\";\n /**\n * 请求前阶段\n */ PluginLifecycleStage[\"BEFORE_REQUEST\"] = \"beforeRequest\";\n /**\n * 请求后阶段(成功)\n */ PluginLifecycleStage[\"AFTER_REQUEST\"] = \"afterRequest\";\n /**\n * 错误处理阶段\n */ PluginLifecycleStage[\"ON_ERROR\"] = \"onError\";\n /**\n * 最终阶段(无论成功或失败)\n */ PluginLifecycleStage[\"FINALLY\"] = \"finally\";\n return PluginLifecycleStage;\n}({});\n/**\n * 插件优先级\n */ export var PluginPriority = /*#__PURE__*/ function(PluginPriority) {\n /**\n * 最高优先级(如:认证、签名)\n */ PluginPriority[PluginPriority[\"HIGHEST\"] = 0] = \"HIGHEST\";\n /**\n * 高优先级(如:请求转换、参数验证)\n */ PluginPriority[PluginPriority[\"HIGH\"] = 25] = \"HIGH\";\n /**\n * 默认优先级\n */ PluginPriority[PluginPriority[\"NORMAL\"] = 50] = \"NORMAL\";\n /**\n * 低优先级(如:日志、监控)\n */ PluginPriority[PluginPriority[\"LOW\"] = 75] = \"LOW\";\n /**\n * 最低优先级(如:缓存、重试)\n */ PluginPriority[PluginPriority[\"LOWEST\"] = 100] = \"LOWEST\";\n return PluginPriority;\n}({});\n/**\n * 插件管理器\n */ export class PluginManager {\n /**\n * 注册插件\n * \n * @param plugin - 请求插件\n */ register(plugin) {\n if (this.plugins.has(plugin.name)) {\n logger.warn(`插件 ${plugin.name} 已存在,将被覆盖`);\n }\n this.plugins.set(plugin.name, plugin);\n this.updatePluginOrder();\n }\n /**\n * 注销插件\n * \n * @param name - 插件名称\n */ unregister(name) {\n this.plugins.delete(name);\n this.updatePluginOrder();\n }\n /**\n * 获取插件\n * \n * @param name - 插件名称\n * @returns 插件实例\n */ get(name) {\n return this.plugins.get(name);\n }\n /**\n * 获取所有插件\n * \n * @returns 插件数组\n */ getAll() {\n return this.pluginOrder.map((name)=>this.plugins.get(name)).filter(Boolean);\n }\n /**\n * 更新插件执行顺序(考虑依赖和优先级)\n */ updatePluginOrder() {\n const plugins = Array.from(this.plugins.values());\n // 构建依赖图\n const dependencyGraph = new Map();\n const priorities = new Map();\n for (const plugin of plugins){\n dependencyGraph.set(plugin.name, plugin.dependencies || []);\n priorities.set(plugin.name, plugin.priority ?? 50);\n }\n // 拓扑排序\n const visited = new Set();\n const visiting = new Set();\n const result = [];\n const visit = (pluginName)=>{\n if (visiting.has(pluginName)) {\n logger.warn(`检测到循环依赖,涉及插件: ${pluginName}`);\n return;\n }\n if (visited.has(pluginName)) {\n return;\n }\n visiting.add(pluginName);\n const deps = dependencyGraph.get(pluginName) || [];\n for (const dep of deps){\n visit(dep);\n }\n visiting.delete(pluginName);\n visited.add(pluginName);\n result.push(pluginName);\n };\n // 按优先级排序后拓扑排序\n const sortedPlugins = plugins.sort((a, b)=>{\n const priorityA = priorities.get(a.name) ?? 50;\n const priorityB = priorities.get(b.name) ?? 50;\n return priorityA - priorityB;\n });\n for (const plugin of sortedPlugins){\n visit(plugin.name);\n }\n this.pluginOrder = result;\n }\n /**\n * 执行插件钩子\n * \n * @param stage - 生命周期阶段\n * @param context - 请求上下文\n * @returns 处理结果\n */ async executeHook(stage, context) {\n const plugins = this.getAll();\n for (const plugin of plugins){\n // 检查是否跳过此插件\n if (context.request.skipPlugins?.includes(plugin.name)) {\n continue;\n }\n try {\n let result = undefined;\n switch(stage){\n case \"init\":\n result = await plugin.onInit?.(context);\n break;\n case \"beforeRequest\":\n result = await plugin.onBeforeRequest?.(context);\n if (result && typeof result === 'object' && 'url' in result) {\n context.request = result;\n // 如果返回了修改后的请求配置,立即返回\n return result;\n }\n break;\n case \"afterRequest\":\n result = await plugin.onAfterRequest?.(context);\n if (result && typeof result === 'object' && 'data' in result) {\n context.response = result;\n // 如果返回了修改后的响应,立即返回\n return result;\n }\n break;\n case \"onError\":\n result = await plugin.onError?.(context);\n if (result === true) {\n return true; // 错误已处理,停止传播\n }\n break;\n case \"finally\":\n await plugin.onFinally?.(context);\n break;\n }\n } catch (error) {\n logger.error(`插件 ${plugin.name} 的 ${stage} 钩子执行失败:`, error);\n // 继续执行其他插件\n }\n }\n return undefined;\n }\n /**\n * 清除所有插件\n */ clear() {\n this.plugins.clear();\n this.pluginOrder = [];\n }\n constructor(){\n _define_property(this, \"plugins\", new Map());\n _define_property(this, \"pluginOrder\", []);\n }\n}\n\n//# sourceMappingURL=RequestPlugin.js.map","/**\n * 请求上下文运行时工具\n */ /**\n * 创建请求上下文\n * \n * @template TRequest - 请求配置类型\n * @template TResponse - 响应类型\n * @template TMeta - 元数据类型\n * @param request - 请求配置\n * @param meta - 初始元数据\n * @returns 请求上下文\n */ export function createRequestContext(request, meta = {}) {\n const startTime = Date.now();\n const abortController = typeof AbortController !== 'undefined' ? new AbortController() : undefined;\n return {\n request,\n meta: meta,\n startTime,\n retryCount: 0,\n cancelled: false,\n abortController\n };\n}\n/**\n * 更新请求上下文\n * \n * @template TContext - 请求上下文类型\n * @param context - 请求上下文\n * @param updates - 更新内容\n * @returns 更新后的上下文\n */ export function updateRequestContext(context, updates) {\n return {\n ...context,\n ...updates,\n meta: {\n ...context.meta,\n ...updates.meta || {}\n }\n };\n}\n/**\n * 完成请求上下文(设置响应和结束时间)\n * \n * @template TContext - 请求上下文类型\n * @param context - 请求上下文\n * @param response - 响应对象\n * @returns 更新后的上下文\n */ export function completeRequestContext(context, response) {\n const endTime = Date.now();\n return updateRequestContext(context, {\n response: response,\n endTime,\n duration: endTime - context.startTime\n });\n}\n/**\n * 失败请求上下文(设置错误和结束时间)\n * \n * @template TContext - 请求上下文类型\n * @param context - 请求上下文\n * @param error - 请求错误\n * @returns 更新后的上下文\n */ export function failRequestContext(context, error) {\n const endTime = Date.now();\n return updateRequestContext(context, {\n error: error,\n endTime,\n duration: endTime - context.startTime\n });\n}\n/**\n * 取消请求上下文\n * \n * @template TContext - 请求上下文类型\n * @param context - 请求上下文\n * @returns 更新后的上下文\n */ export function cancelRequestContext(context) {\n if (context.abortController) {\n context.abortController.abort();\n }\n return updateRequestContext(context, {\n cancelled: true\n });\n}\n\n//# sourceMappingURL=RequestContext.js.map","/**\n * 请求队列管理器\n * \n * 用于管理待执行的请求队列,支持请求拦截、暂停、恢复等功能\n */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n/**\n * 队列状态\n */ var QueueState = /*#__PURE__*/ function(QueueState) {\n /**\n * 正常状态,请求可以正常执行\n */ QueueState[\"IDLE\"] = \"idle\";\n /**\n * 暂停状态,请求会被放入队列\n */ QueueState[\"PAUSED\"] = \"paused\";\n /**\n * 处理中状态,正在执行回调\n */ QueueState[\"PROCESSING\"] = \"processing\";\n return QueueState;\n}(QueueState || {});\n/**\n * 请求队列管理器\n */ let RequestQueueManager = class RequestQueueManager {\n /**\n * 获取单例实例\n */ static getInstance() {\n if (!RequestQueueManager.instance) {\n RequestQueueManager.instance = new RequestQueueManager();\n }\n return RequestQueueManager.instance;\n }\n /**\n * 检查队列是否处于暂停状态\n */ isPaused() {\n return this.state === \"paused\" || this.state === \"processing\";\n }\n /**\n * 暂停队列,后续请求会被放入队列\n */ pause() {\n if (this.state === \"idle\") {\n this.state = \"paused\";\n }\n }\n /**\n * 恢复队列,执行队列中的所有请求\n */ async resume() {\n if (this.state === \"idle\") {\n return;\n }\n this.state = \"idle\";\n // 执行队列中的所有请求\n const requests = [\n ...this.queue\n ];\n this.queue = [];\n // 并行执行所有请求\n await Promise.allSettled(requests.map((item)=>{\n return item.execute().then(item.resolve).catch(item.reject);\n }));\n }\n /**\n * 执行回调并等待完成,然后恢复队列\n * \n * @param callback - 回调函数\n */ async processAndResume(callback) {\n if (this.state === \"processing\") {\n // 如果已经在处理中,等待当前处理完成\n if (this.processingPromise) {\n await this.processingPromise;\n }\n return;\n }\n this.state = \"processing\";\n try {\n // 执行回调\n this.processingPromise = Promise.resolve(callback());\n await this.processingPromise;\n } finally{\n this.processingPromise = null;\n // 恢复队列\n await this.resume();\n }\n }\n /**\n * 将请求添加到队列\n * \n * @template TResponse - 响应数据类型\n * @param options - 请求配置\n * @param execute - 请求执行函数\n * @returns Promise 解析为响应对象\n */ async enqueue(options, execute) {\n return new Promise((resolve, reject)=>{\n this.queue.push({\n options: options,\n execute: execute,\n resolve: resolve,\n reject,\n timestamp: Date.now()\n });\n });\n }\n /**\n * 获取队列长度\n */ getQueueLength() {\n return this.queue.length;\n }\n /**\n * 清空队列\n * \n * @param reason - 清空原因(用于错误信息)\n */ clear(reason) {\n const requests = [\n ...this.queue\n ];\n this.queue = [];\n // 拒绝所有待执行的请求\n const error = reason ? new Error(`请求队列已清空: ${reason}`) : new Error('请求队列已清空');\n requests.forEach((item)=>{\n item.reject(error);\n });\n this.state = \"idle\";\n this.processingPromise = null;\n }\n /**\n * 销毁管理器\n */ destroy() {\n this.clear('管理器已销毁');\n RequestQueueManager.instance = null;\n }\n constructor(){\n /**\n * 待执行的请求队列\n */ _define_property(this, \"queue\", []);\n /**\n * 队列状态\n */ _define_property(this, \"state\", \"idle\");\n /**\n * 当前正在执行的回调 Promise\n */ _define_property(this, \"processingPromise\", null);\n }\n};\n_define_property(RequestQueueManager, \"instance\", null);\n/**\n * 获取请求队列管理器实例\n */ export function getRequestQueueManager() {\n return RequestQueueManager.getInstance();\n}\n\n//# sourceMappingURL=RequestQueueManager.js.map","/**\n * 请求客户端核心实现\n * \n * 这是请求库的核心,负责协调适配器和插件系统\n */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { RequestError, RequestErrorType, RequestErrorCode } from \"../types\";\nimport { adapterRegistry } from \"../adapter/RequestAdapter\";\nimport { PluginManager, PluginLifecycleStage } from \"../plugin/RequestPlugin\";\nimport { createRequestContext, completeRequestContext, failRequestContext } from \"../runtime/RequestContext\";\nimport { getRequestQueueManager } from \"../utils/RequestQueueManager\";\n/**\n * 适配器环境要求映射\n * \n * 注意:axios 可以在浏览器和 Node.js 环境中使用,因此不在此映射中限制\n */ const ADAPTER_ENVIRONMENT_MAP = {\n fetch: 'browser',\n ky: 'browser',\n undici: 'node'\n};\n/**\n * 检测当前运行环境\n * \n * @returns 运行环境类型\n */ function detectEnvironment() {\n const isBrowser = typeof window !== 'undefined';\n const isNode = typeof process !== 'undefined' && process.versions?.node;\n if (isBrowser) {\n return 'browser';\n } else if (isNode) {\n return 'node';\n }\n return 'unknown';\n}\n/**\n * 获取适配器的推荐替代方案\n * \n * @param currentEnv - 当前环境\n * @returns 推荐的适配器列表\n */ function getRecommendedAdapters(currentEnv) {\n if (currentEnv === 'browser') {\n return [\n 'fetch',\n 'ky',\n 'axios'\n ];\n } else if (currentEnv === 'node') {\n return [\n 'axios',\n 'undici'\n ];\n }\n return [];\n}\n/**\n * 创建环境不匹配错误消息\n * \n * @param adapterName - 适配器名称\n * @param adapterEnv - 适配器要求的环境\n * @param currentEnv - 当前环境\n * @returns 错误消息\n */ function createEnvironmentMismatchError(adapterName, adapterEnv, currentEnv) {\n const recommendedAdapters = getRecommendedAdapters(currentEnv);\n const recommendedList = recommendedAdapters.length > 0 ? recommendedAdapters.map((name)=>`\"${name}\"`).join(' 或 ') : '其他适配器';\n const adapterEnvName = adapterEnv === 'browser' ? '浏览器' : 'Node.js';\n const currentEnvName = currentEnv === 'browser' ? '浏览器' : currentEnv === 'node' ? 'Node.js' : '未知';\n const firstRecommended = recommendedAdapters[0] || 'fetch';\n const firstRecommendedFactory = firstRecommended === 'fetch' ? 'fetchAdapter' : firstRecommended === 'ky' ? 'kyAdapter' : firstRecommended === 'axios' ? 'axiosAdapter' : 'undiciAdapter';\n let message = `\\n❌ 适配器环境不匹配\\n\\n`;\n message += `适配器 \"${adapterName}\" 要求运行在 ${adapterEnvName} 环境中,\\n`;\n message += `但当前运行在 ${currentEnvName} 环境中。\\n\\n`;\n message += `💡 建议:请使用适合当前环境的适配器,如 ${recommendedList}。\\n\\n`;\n message += `📝 使用示例:\\n\\n`;\n message += ` // 方式 1:使用适配器名称字符串\\n`;\n message += ` import { createRequestClient } from '@vlian/framework/request';\\n\\n`;\n message += ` const client = await createRequestClient({\\n`;\n message += ` defaultAdapter: '${firstRecommended}',\\n`;\n message += ` });\\n\\n`;\n message += ` // 方式 2:使用适配器工厂函数\\n`;\n message += ` import { createRequestClient, ${firstRecommendedFactory} } from '@vlian/framework/request';\\n\\n`;\n message += ` const client = await createRequestClient({\\n`;\n message += ` defaultAdapter: ${firstRecommendedFactory},\\n`;\n message += ` });\\n`;\n return message;\n}\n/**\n * 验证适配器环境是否匹配\n * \n * @param adapterName - 适配器名称\n * @throws 如果环境不匹配,抛出包含友好提示的错误\n */ function validateAdapterEnvironment(adapterName) {\n const adapterEnv = ADAPTER_ENVIRONMENT_MAP[adapterName];\n if (!adapterEnv) {\n // 未知适配器,不进行环境检查\n return;\n }\n const currentEnv = detectEnvironment();\n if (currentEnv === 'unknown') {\n // 无法检测环境,跳过检查\n return;\n }\n if (adapterEnv !== currentEnv) {\n const errorMessage = createEnvironmentMismatchError(adapterName, adapterEnv, currentEnv);\n throw new Error(errorMessage);\n }\n}\n/**\n * 请求客户端类\n */ export class RequestClient {\n /**\n * 获取当前适配器名称\n */ getAdapterName() {\n return this.adapterName;\n }\n /**\n * 初始化客户端\n */ async initialize() {\n // 加载默认适配器\n await this.loadAdapter();\n // 执行插件初始化钩子\n const context = createRequestContext({\n url: ''\n }, {});\n await this.pluginManager.executeHook(PluginLifecycleStage.INIT, context);\n }\n /**\n * 加载适配器\n */ async loadAdapter() {\n if (this.adapter) {\n return;\n }\n const adapterConfig = this.config.defaultAdapter;\n if (typeof adapterConfig === 'string') {\n // 检查适配器环境是否匹配\n validateAdapterEnvironment(adapterConfig);\n // 从注册表加载\n this.adapter = await adapterRegistry.get(adapterConfig);\n this.adapterName = adapterConfig;\n // 再次验证(适配器可能返回不同的名称)\n if (this.adapter.name !== adapterConfig) {\n validateAdapterEnvironment(this.adapter.name);\n }\n } else if (typeof adapterConfig === 'function') {\n // 使用工厂函数加载\n this.adapter = await adapterConfig();\n this.adapterName = this.adapter.name;\n // 验证适配器环境\n validateAdapterEnvironment(this.adapter.name);\n } else {\n // 自动检测环境(自动检测的适配器不需要验证,因为已经根据环境选择了)\n const detectedAdapter = await this.detectAdapter();\n this.adapter = detectedAdapter.adapter;\n this.adapterName = detectedAdapter.name;\n }\n }\n /**\n * 自动检测适配器\n */ async detectAdapter() {\n // 检测运行环境\n const isBrowser = typeof window !== 'undefined';\n const isNode = typeof process !== 'undefined' && process.versions?.node;\n if (isBrowser) {\n // 浏览器环境:尝试加载 ky 适配器\n try {\n const { kyAdapter } = await import(\"../adapter/kyAdapter\");\n const adapter = await kyAdapter();\n return {\n adapter,\n name: 'ky'\n };\n } catch {\n // 如果 ky 不可用,使用 fetch 适配器\n const { fetchAdapter } = await import(\"../adapter/fetchAdapter\");\n const adapter = await fetchAdapter();\n return {\n adapter,\n name: 'fetch'\n };\n }\n } else if (isNode) {\n // Node.js 环境:尝试加载 axios 适配器\n try {\n const { axiosAdapter } = await import(\"../adapter/axiosAdapter\");\n const adapter = await axiosAdapter();\n return {\n adapter,\n name: 'axios'\n };\n } catch {\n // 如果 axios 不可用,使用 undici 适配器\n try {\n const { undiciAdapter } = await import(\"../adapter/undiciAdapter\");\n const adapter = await undiciAdapter();\n return {\n adapter,\n name: 'undici'\n };\n } catch {\n throw new Error('无法找到可用的适配器,请手动指定适配器');\n }\n }\n }\n throw new Error('无法检测运行环境');\n }\n /**\n * 设置适配器\n * \n * @param adapter - 适配器实例或名称\n */ async setAdapter(adapter) {\n if (typeof adapter === 'string') {\n // 检查适配器环境是否匹配\n validateAdapterEnvironment(adapter);\n this.adapter = await adapterRegistry.get(adapter);\n this.adapterName = adapter;\n // 再次验证(适配器可能返回不同的名称)\n if (this.adapter.name !== adapter) {\n validateAdapterEnvironment(this.adapter.name);\n }\n } else {\n // 验证适配器环境\n validateAdapterEnvironment(adapter.name);\n this.adapter = adapter;\n this.adapterName = adapter.name;\n }\n }\n /**\n * 注册插件\n * \n * @param plugin - 请求插件\n */ use(plugin) {\n this.pluginManager.register(plugin);\n }\n /**\n * 注销插件\n * \n * @param name - 插件名称\n */ unuse(name) {\n this.pluginManager.unregister(name);\n }\n /**\n * 执行请求\n * \n * @template TResponse - 响应数据类型\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async request(options) {\n // 确保适配器已加载\n if (!this.adapter) {\n await this.loadAdapter();\n }\n if (!this.adapter) {\n throw new Error('适配器未初始化');\n }\n // 合并配置\n const mergedOptions = this.mergeOptions(options);\n // 检查队列状态,如果队列已暂停,将请求放入队列\n const queueManager = getRequestQueueManager();\n if (queueManager.isPaused()) {\n return queueManager.enqueue(mergedOptions, ()=>this.executeRequest(mergedOptions));\n }\n // 正常执行请求\n return this.executeRequest(mergedOptions);\n }\n /**\n * 执行实际的请求逻辑\n * \n * @template TResponse - 响应数据类型\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async executeRequest(options) {\n // 创建请求上下文\n const context = createRequestContext(options, {});\n try {\n // 执行请求前钩子\n const beforeResult = await this.pluginManager.executeHook(PluginLifecycleStage.BEFORE_REQUEST, context);\n // 如果插件返回了修改后的请求配置,使用它\n if (beforeResult && typeof beforeResult === 'object' && 'url' in beforeResult) {\n context.request = beforeResult;\n }\n // 检查是否已取消(可能是缓存命中)\n if (context.cancelled) {\n // 如果有缓存的响应,直接返回\n if (context.response) {\n return context.response;\n }\n throw this.createError('请求已取消', RequestErrorType.ABORT_ERROR, RequestErrorCode.REQUEST_ABORTED, {\n request: context.request\n });\n }\n // 执行请求\n let response;\n try {\n if (!this.adapter) {\n throw new Error('适配器未初始化');\n }\n response = await this.adapter.request(context.request);\n } catch (error) {\n // 适配器错误转换为框架错误\n throw this.normalizeError(error, context.request);\n }\n // 更新上下文\n completeRequestContext(context, response);\n // 执行请求后钩子\n const afterResult = await this.pluginManager.executeHook(PluginLifecycleStage.AFTER_REQUEST, context);\n // 如果插件返回了修改后的响应,使用它\n if (afterResult && typeof afterResult === 'object' && 'data' in afterResult) {\n response = afterResult;\n }\n return response;\n } catch (error) {\n // 更新上下文\n const requestError = error instanceof RequestError ? error : this.normalizeError(error, context.request);\n failRequestContext(context, requestError);\n // 执行错误处理钩子\n const errorHandled = await this.pluginManager.executeHook(PluginLifecycleStage.ON_ERROR, context);\n // 如果错误未被处理,继续抛出\n if (errorHandled !== true) {\n throw requestError;\n }\n // 如果错误已被处理,返回一个默认响应(由插件决定)\n if (context.response) {\n return context.response;\n }\n throw requestError;\n } finally{\n // 执行最终钩子\n await this.pluginManager.executeHook(PluginLifecycleStage.FINALLY, context);\n }\n }\n /**\n * GET 请求\n * \n * @template TResponse - 响应数据类型\n * @param url - 请求 URL\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async get(url, options) {\n return this.request({\n ...options,\n url,\n method: 'GET'\n });\n }\n /**\n * POST 请求\n * \n * @template TResponse - 响应数据类型\n * @param url - 请求 URL\n * @param body - 请求体\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async post(url, body, options) {\n return this.request({\n ...options,\n url,\n method: 'POST',\n body\n });\n }\n /**\n * PUT 请求\n * \n * @template TResponse - 响应数据类型\n * @param url - 请求 URL\n * @param body - 请求体\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async put(url, body, options) {\n return this.request({\n ...options,\n url,\n method: 'PUT',\n body\n });\n }\n /**\n * PATCH 请求\n * \n * @template TResponse - 响应数据类型\n * @param url - 请求 URL\n * @param body - 请求体\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async patch(url, body, options) {\n return this.request({\n ...options,\n url,\n method: 'PATCH',\n body\n });\n }\n /**\n * DELETE 请求\n * \n * @template TResponse - 响应数据类型\n * @param url - 请求 URL\n * @param options - 请求配置选项\n * @returns Promise 解析为响应对象\n */ async delete(url, options) {\n return this.request({\n ...options,\n url,\n method: 'DELETE'\n });\n }\n /**\n * 合并请求配置\n * \n * @param options - 请求配置选项\n * @returns 合并后的配置\n */ mergeOptions(options) {\n const baseURL = this.config.baseURL || '';\n const url = baseURL ? `${baseURL}${options.url}` : options.url;\n return {\n ...options,\n url,\n headers: {\n ...this.config.defaultHeaders,\n ...options.headers\n },\n timeout: options.timeout ?? this.config.defaultTimeout\n };\n }\n /**\n * 创建请求错误\n */ createError(message, type, code, options) {\n return new RequestError(message, type, code, options);\n }\n /**\n * 标准化错误\n */ normalizeError(error, request) {\n if (error instanceof RequestError) {\n return error;\n }\n // 处理 AbortError\n if (error instanceof Error && error.name === 'AbortError') {\n return this.createError('请求已取消', RequestErrorType.ABORT_ERROR, RequestErrorCode.REQUEST_ABORTED, {\n cause: error,\n request\n });\n }\n // 处理超时错误\n if (error instanceof Error && (error.message.includes('timeout') || error.message.includes('Timeout'))) {\n return this.createError('请求超时', RequestErrorType.TIMEOUT_ERROR, RequestErrorCode.REQUEST_TIMEOUT, {\n cause: error,\n request\n });\n }\n // 处理网络错误\n if (error instanceof Error && (error.message.includes('network') || error.message.includes('Network'))) {\n return this.createError('网络连接失败', RequestErrorType.NETWORK_ERROR, RequestErrorCode.NETWORK_CONNECTION_FAILED, {\n cause: error,\n request\n });\n }\n // 处理 HTTP 错误(需要适配器提供)\n if (error && typeof error === 'object' && 'status' in error) {\n const status = error.status;\n const isServerError = status >= 500;\n return this.createError(`HTTP ${status} 错误`, RequestErrorType.HTTP_ERROR, isServerError ? RequestErrorCode.SERVER_ERROR : RequestErrorCode.CLIENT_ERROR, {\n status,\n cause: error,\n request\n });\n }\n // 未知错误\n return this.createError(error instanceof Error ? error.message : '未知错误', RequestErrorType.UNKNOWN_ERROR, RequestErrorCode.NETWORK_CONNECTION_FAILED, {\n cause: error,\n request\n });\n }\n /**\n * 销毁客户端\n */ async destroy() {\n if (this.adapter?.destroy) {\n await this.adapter.destroy();\n }\n this.pluginManager.clear();\n this.adapter = null;\n this.adapterName = null;\n }\n constructor(config = {}){\n _define_property(this, \"config\", void 0);\n _define_property(this, \"pluginManager\", void 0);\n _define_property(this, \"adapter\", null);\n _define_property(this, \"adapterName\", null);\n this.config = config;\n this.pluginManager = new PluginManager();\n // 注册插件\n if (config.plugins) {\n for (const plugin of config.plugins){\n this.pluginManager.register(plugin);\n }\n }\n }\n}\n\n//# sourceMappingURL=RequestClient.js.map","/**\n * Fetch 适配器\n * \n * 基于原生 fetch API 的适配器实现\n */ /**\n * 创建 Fetch 适配器\n */ export async function fetchAdapter() {\n if (typeof fetch === 'undefined') {\n throw new Error('fetch API 不可用');\n }\n return {\n name: 'fetch',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: false,\n supportsInterceptors: false\n },\n async request (options) {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;\n // 构建完整 URL\n let fullUrl = url;\n if (query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)){\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n }\n const queryString = searchParams.toString();\n if (queryString) {\n fullUrl += (fullUrl.includes('?') ? '&' : '?') + queryString;\n }\n }\n // 构建请求头\n const requestHeaders = {};\n for (const [key, value] of Object.entries(headers)){\n requestHeaders[key] = String(value);\n }\n // 构建请求体\n let requestBody;\n if (body !== undefined && body !== null) {\n if (typeof body === 'string' || body instanceof FormData || body instanceof URLSearchParams || body instanceof Blob || body instanceof ArrayBuffer) {\n requestBody = body;\n } else {\n // 对象转换为 JSON\n requestHeaders['Content-Type'] = requestHeaders['Content-Type'] || 'application/json';\n requestBody = JSON.stringify(body);\n }\n }\n // 创建中止控制器(如果支持超时)\n let abortController;\n let timeoutId;\n if (timeout && timeout > 0) {\n abortController = new AbortController();\n timeoutId = setTimeout(()=>{\n abortController.abort();\n }, timeout);\n }\n // 合并中止信号\n const abortSignal = signal || abortController?.signal;\n try {\n // 执行请求\n const fetchResponse = await fetch(fullUrl, {\n method,\n headers: requestHeaders,\n body: requestBody,\n signal: abortSignal,\n credentials: credentials || 'same-origin'\n });\n // 解析响应数据\n let data;\n const responseType = options.responseType || 'json';\n switch(responseType){\n case 'text':\n data = await fetchResponse.text();\n break;\n case 'blob':\n data = await fetchResponse.blob();\n break;\n case 'arrayBuffer':\n data = await fetchResponse.arrayBuffer();\n break;\n case 'formData':\n data = await fetchResponse.formData();\n break;\n case 'json':\n default:\n try {\n data = await fetchResponse.json();\n } catch {\n // 如果 JSON 解析失败,返回空对象\n data = {};\n }\n break;\n }\n // 构建响应头对象\n const responseHeaders = {};\n fetchResponse.headers.forEach((value, key)=>{\n responseHeaders[key] = value;\n });\n // 检查 HTTP 状态码\n if (!fetchResponse.ok) {\n throw new Error(`HTTP ${fetchResponse.status} ${fetchResponse.statusText}`);\n }\n // 返回响应对象\n return {\n data,\n status: fetchResponse.status,\n statusText: fetchResponse.statusText,\n headers: responseHeaders,\n raw: fetchResponse\n };\n } catch (error) {\n // 清理超时定时器\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n // 重新抛出错误\n throw error;\n }\n }\n };\n}\n\n//# sourceMappingURL=fetchAdapter.js.map","/**\n * Ky 适配器\n * \n * 基于 ky 库的适配器实现(浏览器环境)\n */ /**\n * 创建 Ky 适配器\n */ export async function kyAdapter() {\n // 动态导入 ky(按需加载)\n // 使用多种方式尝试导入,以兼容不同的构建工具\n let ky;\n let importError = null;\n // 方法1:使用 Function 构造函数(避免构建时解析)\n try {\n // @ts-ignore - ky 是可选依赖\n ky = await new Function('return import(\"ky\")')();\n } catch (error) {\n importError = error;\n // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)\n try {\n // @ts-ignore - ky 是可选依赖\n ky = await import(\"ky\");\n } catch (error2) {\n importError = error2;\n }\n }\n // 如果两种方法都失败,检查是否是模块未找到错误\n if (!ky || !ky.default) {\n if (importError instanceof Error) {\n const errorMessage = importError.message.toLowerCase();\n // 检查是否是模块未找到相关的错误\n const isModuleNotFound = errorMessage.includes('cannot find module') || errorMessage.includes('cannot resolve') || errorMessage.includes('module not found') || errorMessage.includes('failed to resolve') || errorMessage.includes('does not exist') || errorMessage.includes('failed to fetch dynamically imported module') || errorMessage.includes('loading chunk') || errorMessage.includes('networkerror') || errorMessage.includes('ky') && (errorMessage.includes('resolve') || errorMessage.includes('find') || errorMessage.includes('not found'));\n if (isModuleNotFound) {\n // 模块未找到,抛出友好的依赖缺失错误\n const { createDependencyError } = await import(\"../utils/dependencyCheck\");\n const errorMessage = createDependencyError('ky', {\n adapterName: 'ky',\n environment: 'browser'\n });\n throw new Error(errorMessage);\n }\n }\n throw new Error('ky 库导入失败,请检查安装是否正确');\n }\n const kyInstance = ky.default;\n return {\n name: 'ky',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: false,\n supportsInterceptors: false\n },\n async request (options) {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;\n // 构建 ky 选项\n const kyOptions = {\n method: method,\n headers: headers,\n searchParams: query,\n json: typeof body === 'object' && body !== null && !(body instanceof FormData) ? body : undefined,\n body: body instanceof FormData || body instanceof URLSearchParams || body instanceof Blob || body instanceof ArrayBuffer ? body : undefined,\n timeout: timeout,\n signal: signal,\n credentials: credentials,\n retry: 0\n };\n try {\n // 执行请求\n const kyResponse = await kyInstance(url, kyOptions);\n // 解析响应数据\n let data;\n const responseType = options.responseType || 'json';\n switch(responseType){\n case 'text':\n data = await kyResponse.text();\n break;\n case 'blob':\n data = await kyResponse.blob();\n break;\n case 'arrayBuffer':\n data = await kyResponse.arrayBuffer();\n break;\n case 'formData':\n data = await kyResponse.formData();\n break;\n case 'json':\n default:\n // @ts-ignore - ky 类型定义\n data = await kyResponse.json();\n break;\n }\n // 构建响应头对象\n const responseHeaders = {};\n kyResponse.headers.forEach((value, key)=>{\n responseHeaders[key] = value;\n });\n // 返回响应对象\n return {\n data,\n status: kyResponse.status,\n statusText: kyResponse.statusText,\n headers: responseHeaders,\n raw: kyResponse\n };\n } catch (error) {\n // ky 的错误处理\n if (error.response) {\n // HTTP 错误\n const status = error.response.status;\n const statusText = error.response.statusText || '';\n // 尝试解析错误响应体\n let errorData;\n try {\n errorData = await error.response.json();\n } catch {\n try {\n errorData = await error.response.text();\n } catch {\n errorData = null;\n }\n }\n throw {\n message: `HTTP ${status} ${statusText}`,\n status,\n statusText,\n response: {\n data: errorData,\n status,\n statusText,\n headers: {}\n },\n request: options\n };\n }\n // 其他错误\n throw error;\n }\n }\n };\n}\n\n//# sourceMappingURL=kyAdapter.js.map","/**\n * Axios 适配器\n * \n * 基于 axios 库的适配器实现(支持浏览器和 Node.js 环境)\n */ /**\n * 创建 Axios 适配器\n */ export async function axiosAdapter() {\n // 动态导入 axios(按需加载)\n // 使用多种方式尝试导入,以兼容不同的构建工具\n let axios;\n let importError = null;\n // 方法1:使用 Function 构造函数(避免构建时解析)\n try {\n // @ts-ignore - axios 是可选依赖\n axios = await new Function('return import(\"axios\")')();\n } catch (error) {\n importError = error;\n // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)\n try {\n // @ts-ignore - axios 是可选依赖\n axios = await import(\"axios\");\n } catch (error2) {\n importError = error2;\n }\n }\n // 如果两种方法都失败,检查是否是模块未找到错误\n if (!axios || !axios.default) {\n if (importError instanceof Error) {\n const errorMessage = importError.message.toLowerCase();\n // 检查是否是模块未找到相关的错误\n const isModuleNotFound = errorMessage.includes('cannot find module') || errorMessage.includes('cannot resolve') || errorMessage.includes('module not found') || errorMessage.includes('failed to resolve') || errorMessage.includes('does not exist') || errorMessage.includes('failed to fetch dynamically imported module') || errorMessage.includes('loading chunk') || errorMessage.includes('networkerror') || errorMessage.includes('axios') && (errorMessage.includes('resolve') || errorMessage.includes('find') || errorMessage.includes('not found'));\n if (isModuleNotFound) {\n // 模块未找到,抛出友好的依赖缺失错误\n const { createDependencyError } = await import(\"../utils/dependencyCheck\");\n // 检测当前环境\n const isBrowser = typeof window !== 'undefined';\n const environment = isBrowser ? 'browser' : 'node';\n const errorMessage = createDependencyError('axios', {\n adapterName: 'axios',\n environment\n });\n throw new Error(errorMessage);\n }\n }\n throw new Error('axios 库导入失败,请检查安装是否正确');\n }\n const axiosInstance = axios.default;\n return {\n name: 'axios',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: true,\n supportsInterceptors: true\n },\n async request (options) {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;\n // 构建 axios 配置\n const axiosConfig = {\n url,\n method: method.toLowerCase(),\n headers: headers,\n params: query,\n data: body,\n timeout: timeout,\n signal: signal,\n withCredentials: credentials === 'include',\n validateStatus: ()=>true\n };\n try {\n // 执行请求\n // @ts-ignore - axios 类型定义\n const axiosResponse = await axiosInstance.request(axiosConfig);\n // 返回响应对象\n return {\n data: axiosResponse.data,\n status: axiosResponse.status,\n statusText: axiosResponse.statusText,\n headers: axiosResponse.headers,\n raw: axiosResponse\n };\n } catch (error) {\n // axios 的错误处理\n if (error.response) {\n // HTTP 错误\n const status = error.response.status;\n const statusText = error.response.statusText || '';\n throw {\n message: `HTTP ${status} ${statusText}`,\n status,\n statusText,\n response: {\n data: error.response.data,\n status,\n statusText,\n headers: error.response.headers\n },\n request: options\n };\n } else if (error.request) {\n // 网络错误\n throw {\n message: error.message || '网络请求失败',\n request: options\n };\n } else {\n // 其他错误\n throw error;\n }\n }\n }\n };\n}\n\n//# sourceMappingURL=axiosAdapter.js.map","/**\n * 适配器模块导出\n */ export { adapterRegistry } from \"./RequestAdapter\";\n// 导出适配器工厂函数(按需加载)\nexport { fetchAdapter } from \"./fetchAdapter\";\nexport { kyAdapter } from \"./kyAdapter\";\nexport { axiosAdapter } from \"./axiosAdapter\";\n// undiciAdapter 使用懒加载,避免在未使用时触发依赖检查\nexport async function undiciAdapter() {\n const { undiciAdapter: adapter } = await import(\"./undiciAdapter\");\n return adapter();\n}\n\n//# sourceMappingURL=index.js.map","/**\n * 缓存插件\n * \n * 提供请求缓存能力,支持内存、localStorage、sessionStorage 存储\n */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { PluginPriority } from \"./RequestPlugin\";\nimport { logger } from \"../../utils/logger\";\n/**\n * 内存缓存存储实现\n */ let MemoryCacheStorage = class MemoryCacheStorage {\n async get(key) {\n const item = this.cache.get(key);\n if (!item) {\n return null;\n }\n if (Date.now() > item.expires) {\n this.cache.delete(key);\n return null;\n }\n return item.value;\n }\n async set(key, value, ttl) {\n const expires = Date.now() + ttl;\n this.cache.set(key, {\n value,\n expires\n });\n }\n async delete(key) {\n this.cache.delete(key);\n }\n async clear() {\n this.cache.clear();\n }\n constructor(){\n _define_property(this, \"cache\", new Map());\n }\n};\n/**\n * LocalStorage 缓存存储实现\n */ let LocalStorageCacheStorage = class LocalStorageCacheStorage {\n async get(key) {\n if (typeof localStorage === 'undefined') {\n return null;\n }\n try {\n const item = localStorage.getItem(this.prefix + key);\n if (!item) {\n return null;\n }\n const { value, expires } = JSON.parse(item);\n if (Date.now() > expires) {\n localStorage.removeItem(this.prefix + key);\n return null;\n }\n return value;\n } catch {\n return null;\n }\n }\n async set(key, value, ttl) {\n if (typeof localStorage === 'undefined') {\n return;\n }\n try {\n const expires = Date.now() + ttl;\n localStorage.setItem(this.prefix + key, JSON.stringify({\n value,\n expires\n }));\n } catch (error) {\n // 存储失败(可能是存储空间不足)\n logger.warn('缓存存储失败:', error);\n }\n }\n async delete(key) {\n if (typeof localStorage === 'undefined') {\n return;\n }\n localStorage.removeItem(this.prefix + key);\n }\n async clear() {\n if (typeof localStorage === 'undefined') {\n return;\n }\n const keys = Object.keys(localStorage);\n for (const key of keys){\n if (key.startsWith(this.prefix)) {\n localStorage.removeItem(key);\n }\n }\n }\n constructor(){\n _define_property(this, \"prefix\", 'request_cache_');\n }\n};\n/**\n * SessionStorage 缓存存储实现\n */ let SessionStorageCacheStorage = class SessionStorageCacheStorage {\n async get(key) {\n if (typeof sessionStorage === 'undefined') {\n return null;\n }\n try {\n const item = sessionStorage.getItem(this.prefix + key);\n if (!item) {\n return null;\n }\n const { value, expires } = JSON.parse(item);\n if (Date.now() > expires) {\n sessionStorage.removeItem(this.prefix + key);\n return null;\n }\n return value;\n } catch {\n return null;\n }\n }\n async set(key, value, ttl) {\n if (typeof sessionStorage === 'undefined') {\n return;\n }\n try {\n const expires = Date.now() + ttl;\n sessionStorage.setItem(this.prefix + key, JSON.stringify({\n value,\n expires\n }));\n } catch (error) {\n logger.warn('缓存存储失败:', error);\n }\n }\n async delete(key) {\n if (typeof sessionStorage === 'undefined') {\n return;\n }\n sessionStorage.removeItem(this.prefix + key);\n }\n async clear() {\n if (typeof sessionStorage === 'undefined') {\n return;\n }\n const keys = Object.keys(sessionStorage);\n for (const key of keys){\n if (key.startsWith(this.prefix)) {\n sessionStorage.removeItem(key);\n }\n }\n }\n constructor(){\n _define_property(this, \"prefix\", 'request_cache_');\n }\n};\n/**\n * 获取缓存存储实例\n */ function getCacheStorage(storage = 'memory') {\n switch(storage){\n case 'localStorage':\n return new LocalStorageCacheStorage();\n case 'sessionStorage':\n return new SessionStorageCacheStorage();\n case 'memory':\n default:\n return new MemoryCacheStorage();\n }\n}\n/**\n * 生成缓存键\n */ function generateCacheKey(request) {\n const { url, method = 'GET', query, body } = request;\n const cacheKey = request.cache?.key || `${method}:${url}`;\n // 包含查询参数和请求体(如果存在)\n const keyParts = [\n cacheKey\n ];\n if (query) {\n keyParts.push(JSON.stringify(query));\n }\n if (body && typeof body === 'object') {\n keyParts.push(JSON.stringify(body));\n }\n return keyParts.join('|');\n}\n/**\n * 创建缓存插件\n * \n * @param config - 缓存插件配置\n * @returns 缓存插件实例\n */ export function createCachePlugin(config = {}) {\n const { defaultTTL = 5 * 60 * 1000, defaultStorage = 'memory', enabled = true } = config;\n return {\n name: 'cache',\n priority: PluginPriority.LOWEST,\n async onBeforeRequest (context) {\n if (!enabled) {\n return;\n }\n const cacheConfig = context.request.cache;\n if (!cacheConfig) {\n // 如果没有配置缓存,跳过\n return;\n }\n // 如果强制刷新,跳过缓存\n if (cacheConfig.forceRefresh) {\n return;\n }\n // 只缓存 GET 请求\n if (context.request.method && context.request.method !== 'GET') {\n return;\n }\n const storage = getCacheStorage(cacheConfig.storage || defaultStorage);\n const cacheKey = generateCacheKey(context.request);\n // 尝试从缓存获取\n const cachedResponse = await storage.get(cacheKey);\n if (cachedResponse) {\n // 缓存命中,标记并设置缓存的响应\n context.meta.hit = true;\n context.response = cachedResponse;\n // 标记请求已取消,避免实际发送请求\n context.cancelled = true;\n return;\n }\n // 缓存未命中\n context.meta.hit = false;\n },\n async onAfterRequest (context) {\n if (!enabled || !context.response) {\n return;\n }\n const cacheConfig = context.request.cache;\n if (!cacheConfig) {\n return;\n }\n // 检查是否应该缓存\n const shouldCache = cacheConfig.shouldCache ? cacheConfig.shouldCache(context.response) : context.response.status >= 200 && context.response.status < 300;\n if (!shouldCache) {\n return;\n }\n // 只缓存 GET 请求\n if (context.request.method && context.request.method !== 'GET') {\n return;\n }\n const storage = getCacheStorage(cacheConfig.storage || defaultStorage);\n const cacheKey = generateCacheKey(context.request);\n const ttl = cacheConfig.ttl || defaultTTL;\n // 存储到缓存\n await storage.set(cacheKey, context.response, ttl);\n }\n };\n}\n\n//# sourceMappingURL=cache.js.map","/**\n * 重试插件\n * \n * 提供请求重试能力,支持指数退避、条件重试\n */ import { RequestErrorType } from \"../types\";\nimport { PluginPriority } from \"./RequestPlugin\";\n/**\n * 计算指数退避延迟\n */ function calculateExponentialBackoffDelay(attempt, baseDelay) {\n return baseDelay * Math.pow(2, attempt - 1);\n}\n/**\n * 默认重试条件\n */ function defaultShouldRetry(error, attempt, maxAttempts) {\n if (attempt >= maxAttempts) {\n return false;\n }\n // 如果是请求错误,检查错误类型\n if (error && typeof error === 'object' && 'type' in error) {\n const requestError = error;\n // 网络错误、超时错误、服务器错误(5xx)可以重试\n if (requestError.type === RequestErrorType.NETWORK_ERROR || requestError.type === RequestErrorType.TIMEOUT_ERROR || requestError.type === RequestErrorType.HTTP_ERROR && requestError.status && requestError.status >= 500) {\n return true;\n }\n // 客户端错误(4xx)不重试,除了 408(请求超时)和 429(请求过多)\n if (requestError.type === RequestErrorType.HTTP_ERROR && requestError.status) {\n return requestError.status === 408 || requestError.status === 429;\n }\n }\n // 其他错误不重试\n return false;\n}\n/**\n * 创建重试插件\n * \n * @param config - 重试插件配置\n * @returns 重试插件实例\n */ export function createRetryPlugin(config = {}) {\n const { defaultMaxAttempts = 3, defaultDelay = 1000, defaultExponentialBackoff = true, enabled = true } = config;\n return {\n name: 'retry',\n priority: PluginPriority.LOWEST,\n async onError (context) {\n if (!enabled || !context.error) {\n return;\n }\n const retryConfig = context.request.retry;\n if (!retryConfig) {\n // 如果没有配置重试,使用默认配置\n const maxAttempts = defaultMaxAttempts;\n const delay = defaultDelay;\n const exponentialBackoff = defaultExponentialBackoff;\n // 检查是否应该重试\n const shouldRetry = defaultShouldRetry(context.error, context.retryCount, maxAttempts);\n if (!shouldRetry) {\n return false; // 不处理错误,继续传播\n }\n // 计算延迟\n const retryDelay = exponentialBackoff ? calculateExponentialBackoffDelay(context.retryCount + 1, delay) : delay;\n // 等待后重试\n await new Promise((resolve)=>setTimeout(resolve, retryDelay));\n // 增加重试计数\n context.retryCount += 1;\n // 返回 false,让错误继续传播,触发重新请求\n return false;\n }\n // 使用配置的重试逻辑\n const maxAttempts = retryConfig.maxAttempts || defaultMaxAttempts;\n const shouldRetry = retryConfig.shouldRetry ? retryConfig.shouldRetry(context.error, context.retryCount) : defaultShouldRetry(context.error, context.retryCount, maxAttempts);\n if (!shouldRetry) {\n return false; // 不处理错误,继续传播\n }\n // 计算延迟\n let retryDelay;\n if (retryConfig.calculateDelay) {\n retryDelay = retryConfig.calculateDelay(context.retryCount + 1);\n } else if (retryConfig.exponentialBackoff !== false) {\n const baseDelay = retryConfig.delay || defaultDelay;\n retryDelay = calculateExponentialBackoffDelay(context.retryCount + 1, baseDelay);\n } else {\n retryDelay = retryConfig.delay || defaultDelay;\n }\n // 等待后重试\n await new Promise((resolve)=>setTimeout(resolve, retryDelay));\n // 增加重试计数\n context.retryCount += 1;\n // 返回 false,让错误继续传播,触发重新请求\n return false;\n }\n };\n}\n\n//# sourceMappingURL=retry.js.map","/**\n * 验证插件\n * \n * 提供请求参数和响应数据验证能力(基于 Zod)\n */ import { RequestError, RequestErrorType, RequestErrorCode } from \"../types\";\nimport { PluginPriority } from \"./RequestPlugin\";\n/**\n * 检查是否为 Zod Schema\n */ function isZodSchema(schema) {\n return schema !== null && typeof schema === 'object' && 'parse' in schema && 'safeParse' in schema && typeof schema.parse === 'function' && typeof schema.safeParse === 'function';\n}\n/**\n * 创建验证插件\n * \n * @param config - 验证插件配置\n * @returns 验证插件实例\n */ export function createValidationPlugin(config = {}) {\n const { enabled = true, onValidationError } = config;\n return {\n name: 'validation',\n priority: PluginPriority.HIGH,\n async onBeforeRequest (context) {\n if (!enabled) {\n return;\n }\n const validationConfig = context.request.validation;\n if (!validationConfig) {\n return;\n }\n // 验证请求参数\n const requestSchema = validationConfig.requestSchema;\n if (requestSchema && isZodSchema(requestSchema)) {\n try {\n // 验证查询参数和请求体\n const requestData = {\n query: context.request.query,\n body: context.request.body\n };\n const zodSchema = requestSchema;\n const result = zodSchema.safeParse(requestData);\n if (!result.success) {\n const error = new RequestError('请求参数验证失败', RequestErrorType.VALIDATION_ERROR, RequestErrorCode.REQUEST_VALIDATION_FAILED, {\n request: context.request,\n context: {\n validationErrors: result.error.errors\n }\n });\n if (validationConfig.onValidationError) {\n validationConfig.onValidationError(error);\n } else if (onValidationError) {\n onValidationError(error);\n }\n throw error;\n }\n // 如果验证通过,可以使用验证后的数据更新请求\n // 这里可以根据需要更新 context.request\n } catch (error) {\n // 如果不是验证错误,重新抛出\n if (error instanceof RequestError && error.type === RequestErrorType.VALIDATION_ERROR) {\n throw error;\n }\n // 其他错误继续抛出\n throw error;\n }\n }\n },\n async onAfterRequest (context) {\n if (!enabled || !context.response) {\n return;\n }\n const validationConfig = context.request.validation;\n if (!validationConfig) {\n return;\n }\n // 验证响应数据\n const responseSchema = validationConfig.responseSchema;\n if (responseSchema && isZodSchema(responseSchema)) {\n try {\n const zodSchema = responseSchema;\n const result = zodSchema.safeParse(context.response.data);\n if (!result.success) {\n const error = new RequestError('响应数据验证失败', RequestErrorType.VALIDATION_ERROR, RequestErrorCode.RESPONSE_VALIDATION_FAILED, {\n request: context.request,\n response: context.response,\n context: {\n validationErrors: result.error.errors\n }\n });\n if (validationConfig.onValidationError) {\n validationConfig.onValidationError(error);\n } else if (onValidationError) {\n onValidationError(error);\n }\n throw error;\n }\n // 如果验证通过,可以使用验证后的数据更新响应\n if (result.success && result.data !== context.response.data) {\n return {\n ...context.response,\n data: result.data\n };\n }\n } catch (error) {\n // 如果不是验证错误,重新抛出\n if (error instanceof RequestError && error.type === RequestErrorType.VALIDATION_ERROR) {\n throw error;\n }\n // 其他错误继续抛出\n throw error;\n }\n }\n }\n };\n}\n\n//# sourceMappingURL=validation.js.map","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n/**\n * 性能指标单位常量\n */ export const PERFORMANCE_METRIC_UNITS = {\n /**\n * 毫秒单位\n */ ms: 'ms',\n /**\n * 无单位(分数)\n */ none: ''\n};\n/**\n * 性能监控类\n */ export class PerformanceMonitor {\n /**\n * 初始化 Web Vitals 收集\n */ initWebVitals() {\n // 采样检查移到每次上报时进行,而不是初始化时\n // 这样可以确保监控功能始终初始化,只是选择性上报\n // 首次内容绘制 (FCP)\n this.observePaint('first-contentful-paint', (entry)=>{\n if (Math.random() <= this.config.sampleRate) {\n this.metrics.fcp = Math.round(entry.startTime);\n this.reportInternal();\n }\n });\n // 最大内容绘制 (LCP)\n this.observeLCP();\n // 首次输入延迟 (FID)\n this.observeFID();\n // 累积布局偏移 (CLS)\n this.observeCLS();\n // 可交互时间 (TTI) - 需要计算(延迟到页面加载完成后)\n if (typeof window !== 'undefined' && document.readyState === 'complete') {\n this.calculateTTI();\n } else if (typeof window !== 'undefined') {\n window.addEventListener('load', ()=>{\n // 使用 requestIdleCallback 在空闲时计算\n if (typeof requestIdleCallback !== 'undefined') {\n requestIdleCallback(()=>{\n this.calculateTTI();\n }, {\n timeout: 2000\n });\n } else {\n setTimeout(()=>{\n this.calculateTTI();\n }, 1000);\n }\n });\n }\n }\n /**\n * 观察 Paint 指标\n */ observePaint(name, callback) {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n try {\n const observer = new PerformanceObserver((list)=>{\n for (const entry of list.getEntries()){\n if (entry.name === name) {\n callback(entry);\n observer.disconnect();\n }\n }\n });\n observer.observe({\n entryTypes: [\n 'paint'\n ]\n });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持或已断开\n }\n }\n /**\n * 观察 LCP\n */ observeLCP() {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n try {\n const observer = new PerformanceObserver((list)=>{\n const entries = list.getEntries();\n const lastEntry = entries[entries.length - 1];\n const lcpValue = Math.round(lastEntry.renderTime || lastEntry.loadTime || lastEntry.startTime);\n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && lcpValue > 0 && lcpValue < 60000) {\n this.metrics.lcp = lcpValue;\n this.reportInternal();\n }\n });\n observer.observe({\n entryTypes: [\n 'largest-contentful-paint'\n ]\n });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持\n }\n }\n /**\n * 观察 FID\n */ observeFID() {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n try {\n const observer = new PerformanceObserver((list)=>{\n for (const entry of list.getEntries()){\n const fidEntry = entry;\n const fidValue = Math.round(fidEntry.processingStart - fidEntry.startTime);\n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && fidValue >= 0 && fidValue < 10000) {\n this.metrics.fid = fidValue;\n this.reportInternal();\n }\n observer.disconnect();\n }\n });\n observer.observe({\n entryTypes: [\n 'first-input'\n ]\n });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持\n }\n }\n /**\n * 观察 CLS\n */ observeCLS() {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n let clsValue = 0;\n let clsEntries = [];\n try {\n const observer = new PerformanceObserver((list)=>{\n for (const entry of list.getEntries()){\n if (!entry.hadRecentInput) {\n const firstSessionEntry = clsEntries[0];\n const lastSessionEntry = clsEntries[clsEntries.length - 1];\n if (!firstSessionEntry || entry.startTime - lastSessionEntry.startTime < 1000 || entry.startTime - firstSessionEntry.startTime > 5000) {\n clsEntries = [\n entry\n ];\n clsValue = entry.value;\n } else {\n clsEntries.push(entry);\n clsValue += entry.value;\n }\n const roundedValue = Math.round(clsValue * 1000) / 1000;\n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && roundedValue >= 0 && roundedValue < 1) {\n this.metrics.cls = roundedValue;\n this.reportInternal();\n }\n }\n }\n });\n observer.observe({\n entryTypes: [\n 'layout-shift'\n ]\n });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持\n }\n }\n /**\n * 计算 TTI\n */ calculateTTI() {\n if (typeof window === 'undefined' || !window.performance) {\n return;\n }\n try {\n const navigation = performance.getEntriesByType('navigation')[0];\n if (navigation) {\n const ttiValue = Math.round(navigation.domInteractive - navigation.fetchStart);\n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && ttiValue > 0 && ttiValue < 60000) {\n this.metrics.tti = ttiValue;\n this.reportInternal();\n }\n }\n } catch (e) {\n // 忽略错误\n }\n }\n /**\n * 内部上报性能指标(自动上报当前指标)\n */ reportInternal() {\n if (this.config.onReport) {\n // 创建指标的副本,避免外部修改影响内部状态\n const metricsCopy = {};\n if (this.metrics.fcp !== undefined) metricsCopy.fcp = this.metrics.fcp;\n if (this.metrics.lcp !== undefined) metricsCopy.lcp = this.metrics.lcp;\n if (this.metrics.fid !== undefined) metricsCopy.fid = this.metrics.fid;\n if (this.metrics.cls !== undefined) metricsCopy.cls = this.metrics.cls;\n if (this.metrics.tti !== undefined) metricsCopy.tti = this.metrics.tti;\n if (this.metrics.tbt !== undefined) metricsCopy.tbt = this.metrics.tbt;\n if (this.metrics.si !== undefined) metricsCopy.si = this.metrics.si;\n this.config.onReport(metricsCopy);\n }\n }\n /**\n * 获取当前性能指标\n */ getMetrics() {\n return {\n ...this.metrics\n };\n }\n /**\n * 手动记录自定义指标\n */ recordMetric(name, value) {\n this.metrics[name] = value;\n this.reportInternal();\n }\n /**\n * 清理观察者\n */ disconnect() {\n this.observers.forEach((observer)=>observer.disconnect());\n this.observers = [];\n // 停止聚合定时器\n if (this.aggregationTimer) {\n clearInterval(this.aggregationTimer);\n this.aggregationTimer = undefined;\n }\n // 停止自动上报定时器\n if (this.autoReportTimer) {\n clearInterval(this.autoReportTimer);\n this.autoReportTimer = undefined;\n }\n }\n /**\n * 启动性能指标聚合\n */ startAggregation() {\n this.aggregationTimer = setInterval(()=>{\n this.aggregateMetrics();\n }, this.config.aggregationWindow);\n }\n /**\n * 聚合性能指标\n */ aggregateMetrics() {\n // 计算平均值、最大值、最小值等统计信息\n // 这里简化实现,实际可以根据需要扩展\n this.aggregatedMetrics = {\n ...this.metrics\n };\n }\n /**\n * 获取聚合后的性能指标\n */ getAggregatedMetrics() {\n return {\n ...this.aggregatedMetrics\n };\n }\n /**\n * 启动自动上报\n */ startAutoReport() {\n this.autoReportTimer = setInterval(()=>{\n const metrics = this.config.enableAggregation ? this.getAggregatedMetrics() : this.getMetrics();\n this.config.onReport(metrics);\n }, this.config.autoReportInterval);\n }\n /**\n * 手动上报性能指标\n */ report(metrics) {\n const metricsToReport = metrics || this.getMetrics();\n this.config.onReport(metricsToReport);\n }\n constructor(config = {}){\n _define_property(this, \"config\", void 0);\n _define_property(this, \"metrics\", {});\n _define_property(this, \"observers\", []);\n _define_property(this, \"aggregatedMetrics\", {});\n _define_property(this, \"aggregationTimer\", void 0);\n _define_property(this, \"autoReportTimer\", void 0);\n this.config = {\n collectWebVitals: config.collectWebVitals ?? true,\n onReport: config.onReport ?? (()=>{}),\n sampleRate: config.sampleRate ?? 1.0,\n enableAggregation: config.enableAggregation ?? false,\n aggregationWindow: config.aggregationWindow ?? 60000,\n autoReport: config.autoReport ?? false,\n autoReportInterval: config.autoReportInterval ?? 300000\n };\n if (this.config.collectWebVitals && typeof window !== 'undefined') {\n this.initWebVitals();\n }\n // 启动性能指标聚合\n if (this.config.enableAggregation) {\n this.startAggregation();\n }\n // 启动自动上报\n if (this.config.autoReport) {\n this.startAutoReport();\n }\n }\n}\n/**\n * 性能指标单位映射(包含所有可能的指标键)\n */ export const PERFORMANCE_METRIC_UNIT_MAP = {\n // Web Vitals 指标\n fcp: PERFORMANCE_METRIC_UNITS.ms,\n lcp: PERFORMANCE_METRIC_UNITS.ms,\n fid: PERFORMANCE_METRIC_UNITS.ms,\n cls: PERFORMANCE_METRIC_UNITS.none,\n tti: PERFORMANCE_METRIC_UNITS.ms,\n tbt: PERFORMANCE_METRIC_UNITS.ms,\n si: PERFORMANCE_METRIC_UNITS.ms,\n // 启动性能指标\n serviceInitDuration: PERFORMANCE_METRIC_UNITS.ms,\n initializationDuration: PERFORMANCE_METRIC_UNITS.ms,\n firstRenderDuration: PERFORMANCE_METRIC_UNITS.ms,\n totalStartupDuration: PERFORMANCE_METRIC_UNITS.ms\n};\n/**\n * 将性能指标转换为带单位的格式\n * \n * @param metrics - 性能指标对象(可能包含 Web Vitals 和启动性能指标)\n * @returns 带单位的性能指标对象\n */ export function convertMetricsToWithUnits(metrics) {\n const result = {};\n for (const [key, value] of Object.entries(metrics)){\n if (value !== undefined && value !== null && typeof value === 'number') {\n // 从映射中获取单位,如果没有映射则默认为毫秒\n const unit = PERFORMANCE_METRIC_UNIT_MAP[key] || PERFORMANCE_METRIC_UNITS.ms;\n result[key] = {\n value,\n unit\n };\n }\n }\n return result;\n}\n\n//# sourceMappingURL=performance.js.map","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { logger } from \"./logger\";\nimport { errorUtils } from \"./errors\";\nimport { convertMetricsToWithUnits } from \"./performance\";\n/**\n * 监控服务类\n */ export class MonitoringService {\n /**\n * 初始化错误捕获\n */ initErrorCapture() {\n // 捕获未处理的 Promise 错误\n this.unhandledRejectionHandler = (event)=>{\n const error = errorUtils.normalizeError(event.reason);\n this.captureError(error, {\n type: 'unhandledrejection',\n reason: event.reason\n });\n };\n window.addEventListener('unhandledrejection', this.unhandledRejectionHandler);\n // 捕获全局错误\n this.errorHandler = (event)=>{\n const error = errorUtils.normalizeError(event.error || new Error(event.message));\n this.captureError(error, {\n type: 'global',\n filename: event.filename,\n lineno: event.lineno,\n colno: event.colno\n });\n };\n window.addEventListener('error', this.errorHandler);\n }\n /**\n * 清理资源\n */ destroy() {\n // 移除事件监听器\n if (typeof window !== 'undefined') {\n if (this.unhandledRejectionHandler) {\n window.removeEventListener('unhandledrejection', this.unhandledRejectionHandler);\n }\n if (this.errorHandler) {\n window.removeEventListener('error', this.errorHandler);\n }\n }\n // 停止聚合定时器\n if (this.aggregationTimer) {\n clearInterval(this.aggregationTimer);\n this.aggregationTimer = undefined;\n }\n // 清空错误处理器\n this.errorHandlers = [];\n this.errorRecords = [];\n this.errorAggregations.clear();\n }\n /**\n * 启动错误聚合定时器\n */ startAggregationTimer() {\n this.aggregationTimer = setInterval(()=>{\n this.aggregateErrors();\n }, this.errorConfig.aggregationWindow);\n }\n /**\n * 聚合错误\n */ aggregateErrors() {\n const now = Date.now();\n const windowStart = now - this.errorConfig.aggregationWindow;\n // 过滤窗口内的错误\n const windowErrors = this.errorRecords.filter((record)=>record.timestamp >= windowStart);\n // 按错误代码聚合\n const aggregations = new Map();\n for (const record of windowErrors){\n const error = record.error;\n const key = `${error.code}_${error.type}`;\n if (!aggregations.has(key)) {\n aggregations.set(key, {\n code: error.code,\n message: error.message,\n type: error.type,\n count: 0,\n firstOccurrence: record.timestamp,\n lastOccurrence: record.timestamp,\n stack: error.originalError?.stack,\n context: error.context\n });\n }\n const agg = aggregations.get(key);\n agg.count++;\n agg.lastOccurrence = Math.max(agg.lastOccurrence, record.timestamp);\n }\n // 更新聚合结果\n this.errorAggregations = aggregations;\n }\n /**\n * 捕获错误\n */ captureError(error, context) {\n // 采样检查\n if (Math.random() > this.errorConfig.sampleRate) {\n return;\n }\n const normalizedError = errorUtils.normalizeError(error);\n // 创建带上下文的错误对象(使用 Object.assign 来更新只读属性)\n const errorWithContext = Object.assign(normalizedError, {\n context: {\n ...normalizedError.context,\n ...context,\n timestamp: new Date().toISOString(),\n userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : undefined,\n url: typeof window !== 'undefined' ? window.location.href : undefined\n }\n });\n // 记录错误\n const timestamp = Date.now();\n this.errorRecords.push({\n error: errorWithContext,\n timestamp\n });\n // 限制错误记录数量\n if (this.errorRecords.length > this.errorConfig.maxErrorRecords) {\n this.errorRecords.shift();\n }\n // 记录日志\n if (this.errorConfig.showInConsole) {\n logger.error('监控服务捕获到错误:', errorWithContext.toJSON());\n }\n // 调用错误回调\n this.errorConfig.onError(errorWithContext, context);\n // 调用注册的错误处理器\n this.errorHandlers.forEach((handler)=>{\n try {\n handler(errorWithContext);\n } catch (e) {\n // 忽略处理器错误\n }\n });\n }\n /**\n * 获取错误聚合信息\n * \n * @param code - 错误代码(可选,如果提供则只返回该错误的聚合信息)\n * @returns 错误聚合信息\n */ getErrorAggregations(code) {\n if (code) {\n const aggregation = this.errorAggregations.get(code);\n return aggregation ? [\n aggregation\n ] : [];\n }\n return Array.from(this.errorAggregations.values());\n }\n /**\n * 获取错误记录\n * \n * @param limit - 限制返回的记录数\n * @param since - 只返回此时间之后的错误\n * @returns 错误记录\n */ getErrorRecords(limit, since) {\n let records = this.errorRecords;\n if (since) {\n records = records.filter((record)=>record.timestamp >= since);\n }\n if (limit) {\n records = records.slice(-limit);\n }\n return [\n ...records\n ];\n }\n /**\n * 清空错误记录\n */ clearErrorRecords() {\n this.errorRecords = [];\n this.errorAggregations.clear();\n }\n /**\n * 注册错误处理器\n */ onError(handler) {\n this.errorHandlers.push(handler);\n return ()=>{\n const index = this.errorHandlers.indexOf(handler);\n if (index > -1) {\n this.errorHandlers.splice(index, 1);\n }\n };\n }\n /**\n * 上报性能指标\n */ reportPerformance(metrics, context) {\n // 将传入的指标转换为带单位的格式\n const metricsWithUnits = convertMetricsToWithUnits(metrics);\n // 合并到现有指标中\n this.performanceMetrics = {\n ...this.performanceMetrics,\n ...metricsWithUnits\n };\n // 记录性能指标(带上下文)\n if (context) {\n logger.debug('性能指标更新:', {\n metrics: metricsWithUnits,\n context\n });\n } else {\n logger.debug('性能指标更新:', metricsWithUnits);\n }\n }\n /**\n * 批量上报性能指标\n */ reportPerformanceBatch(metricsArray) {\n for (const { metrics, context } of metricsArray){\n this.reportPerformance(metrics, context);\n }\n }\n /**\n * 获取性能指标(带单位)\n */ getPerformanceMetrics() {\n return {\n ...this.performanceMetrics\n };\n }\n /**\n * 获取性能指标(原始数值格式,向后兼容)\n */ getPerformanceMetricsRaw() {\n const result = {};\n for (const [key, metricValue] of Object.entries(this.performanceMetrics)){\n if (metricValue && typeof metricValue === 'object' && 'value' in metricValue) {\n result[key] = metricValue.value;\n }\n }\n return result;\n }\n /**\n * 记录用户行为(匿名)\n */ trackEvent(eventName, properties) {\n logger.debug('用户事件:', {\n eventName,\n properties\n });\n }\n constructor(errorConfig = {}){\n _define_property(this, \"errorConfig\", void 0);\n _define_property(this, \"errorHandlers\", []);\n _define_property(this, \"performanceMetrics\", {});\n _define_property(this, \"unhandledRejectionHandler\", void 0);\n _define_property(this, \"errorHandler\", void 0);\n _define_property(this, \"errorRecords\", []);\n _define_property(this, \"errorAggregations\", new Map());\n _define_property(this, \"aggregationTimer\", void 0);\n this.errorConfig = {\n autoCapture: errorConfig.autoCapture ?? true,\n onError: errorConfig.onError ?? (()=>{}),\n sampleRate: errorConfig.sampleRate ?? 1.0,\n showInConsole: errorConfig.showInConsole ?? true,\n enableAggregation: errorConfig.enableAggregation ?? true,\n aggregationWindow: errorConfig.aggregationWindow ?? 60000,\n maxErrorRecords: errorConfig.maxErrorRecords ?? 1000\n };\n if (this.errorConfig.autoCapture && typeof window !== 'undefined') {\n this.initErrorCapture();\n }\n // 启动错误聚合定时器\n if (this.errorConfig.enableAggregation) {\n this.startAggregationTimer();\n }\n }\n}\n/**\n * 默认监控服务实例\n */ let defaultMonitoringService = null;\n/**\n * 初始化默认监控服务\n */ export function initMonitoring(config) {\n if (!defaultMonitoringService) {\n defaultMonitoringService = new MonitoringService(config);\n }\n return defaultMonitoringService;\n}\n/**\n * 获取默认监控服务\n */ export function getMonitoring() {\n if (!defaultMonitoringService) {\n return initMonitoring();\n }\n return defaultMonitoringService;\n}\n\n//# sourceMappingURL=monitoring.js.map","/**\n * 监控插件\n * \n * 提供请求监控能力,包括耗时、错误率、上报等\n */ import { PluginPriority } from \"./RequestPlugin\";\nimport { logger } from \"../../utils/logger\";\nimport { getMonitoring } from \"../../utils/monitoring\";\nimport { errorUtils } from \"../../utils/errors\";\n/**\n * 监控事件类型\n */ export var MonitoringEventType = /*#__PURE__*/ function(MonitoringEventType) {\n /**\n * 请求开始\n */ MonitoringEventType[\"REQUEST_START\"] = \"request_start\";\n /**\n * 请求成功\n */ MonitoringEventType[\"REQUEST_SUCCESS\"] = \"request_success\";\n /**\n * 请求失败\n */ MonitoringEventType[\"REQUEST_ERROR\"] = \"request_error\";\n /**\n * 请求完成(无论成功或失败)\n */ MonitoringEventType[\"REQUEST_COMPLETE\"] = \"request_complete\";\n return MonitoringEventType;\n}({});\n/**\n * 创建监控插件\n * \n * @param config - 监控插件配置\n * @returns 监控插件实例\n */ export function createMonitoringPlugin(config = {}) {\n const { enabled = true, reporter, recordStart = true, recordSuccess = true, recordError = true, recordComplete = true, slowRequestThreshold = 3000 } = config;\n // 如果没有提供上报函数,使用默认的 logger 输出\n const defaultReporter = (event)=>{\n logger.debug('[Request Monitoring]', event);\n };\n const report = reporter || defaultReporter;\n return {\n name: 'monitoring',\n priority: PluginPriority.LOW,\n async onBeforeRequest (context) {\n if (!enabled) {\n return;\n }\n if (recordStart) {\n const event = {\n type: \"request_start\",\n url: context.request.url,\n method: context.request.method || 'GET',\n tags: context.request.tags,\n timestamp: Date.now()\n };\n try {\n await report(event);\n } catch (error) {\n logger.error('监控上报失败:', error);\n // 上报错误到监控服务\n const monitoring = getMonitoring();\n monitoring.captureError(error, {\n type: 'monitoring_report_failed',\n event: 'request_start'\n });\n }\n }\n },\n async onAfterRequest (context) {\n if (!enabled || !context.response) {\n return;\n }\n const duration = context.duration || 0;\n const isSlow = duration > slowRequestThreshold;\n if (recordSuccess) {\n const event = {\n type: \"request_success\",\n url: context.request.url,\n method: context.request.method || 'GET',\n duration,\n status: context.response.status,\n tags: context.request.tags,\n timestamp: Date.now()\n };\n try {\n await report(event);\n } catch (error) {\n logger.error('监控上报失败:', error);\n // 上报错误到监控服务\n const monitoring = getMonitoring();\n monitoring.captureError(error, {\n type: 'monitoring_report_failed',\n event: 'request_start'\n });\n }\n }\n if (recordComplete) {\n const event = {\n type: \"request_complete\",\n url: context.request.url,\n method: context.request.method || 'GET',\n duration,\n status: context.response.status,\n tags: context.request.tags,\n timestamp: Date.now()\n };\n try {\n await report(event);\n } catch (error) {\n logger.error('监控上报失败:', error);\n // 上报错误到监控服务\n const monitoring = getMonitoring();\n monitoring.captureError(error, {\n type: 'monitoring_report_failed',\n event: 'request_start'\n });\n }\n }\n // 如果是慢请求,额外记录\n if (isSlow) {\n logger.warn(`[Slow Request] ${context.request.method || 'GET'} ${context.request.url} took ${duration}ms`);\n // 上报慢请求到监控服务\n const monitoring = getMonitoring();\n monitoring.captureError(new Error(`慢请求: ${context.request.method || 'GET'} ${context.request.url} 耗时 ${duration}ms`), {\n type: 'slow_request',\n duration,\n method: context.request.method || 'GET',\n url: context.request.url\n });\n }\n },\n async onError (context) {\n if (!enabled || !context.error) {\n return;\n }\n const duration = context.duration || 0;\n if (recordError) {\n const error = context.error;\n const event = {\n type: \"request_error\",\n url: context.request.url,\n method: context.request.method || 'GET',\n duration,\n status: error.status,\n error: {\n type: error.type,\n code: error.code,\n message: error.message\n },\n tags: context.request.tags,\n timestamp: Date.now()\n };\n // 上报错误到监控服务\n const monitoring = getMonitoring();\n const normalizedError = errorUtils.normalizeError(error);\n monitoring.captureError(normalizedError, {\n type: 'request_error',\n url: context.request.url,\n method: context.request.method || 'GET',\n duration,\n status: error.status,\n errorType: error.type,\n errorCode: error.code\n });\n try {\n await report(event);\n } catch (reportError) {\n logger.error('监控上报失败:', reportError);\n // 上报上报失败错误到监控服务\n monitoring.captureError(reportError, {\n type: 'monitoring_report_failed',\n event: 'request_error'\n });\n }\n }\n if (recordComplete) {\n const error = context.error;\n const event = {\n type: \"request_complete\",\n url: context.request.url,\n method: context.request.method || 'GET',\n duration,\n status: error.status,\n error: {\n type: error.type,\n code: error.code,\n message: error.message\n },\n tags: context.request.tags,\n timestamp: Date.now()\n };\n try {\n await report(event);\n } catch (reportError) {\n logger.error('监控上报失败:', reportError);\n // 上报错误到监控服务\n const monitoring = getMonitoring();\n monitoring.captureError(reportError, {\n type: 'monitoring_report_failed',\n event: context.error ? 'request_error' : 'request_complete'\n });\n }\n }\n }\n };\n}\n\n//# sourceMappingURL=monitoring.js.map","/**\n * 请求队列插件\n * \n * 当检测到特定的响应 code 或 status 时,暂停后续请求并放入队列,\n * 执行回调方法,等待回调完成后继续执行队列中的请求\n */ import { PluginPriority } from \"./RequestPlugin\";\nimport { getRequestQueueManager } from \"../utils/RequestQueueManager\";\n/**\n * 检查响应是否匹配触发条件\n */ function matchesTrigger(response, context, trigger) {\n // 检查自定义检查函数\n if (trigger.check) {\n return trigger.check(response, context);\n }\n // 检查响应数据中的 code 字段\n if (trigger.code !== undefined) {\n const responseData = response.data;\n if (responseData && typeof responseData === 'object' && 'code' in responseData) {\n const code = responseData.code;\n if (typeof trigger.code === 'function') {\n if (trigger.code(code)) {\n return true;\n }\n } else if (code === trigger.code) {\n return true;\n }\n }\n }\n // 检查 HTTP 状态码\n if (trigger.status !== undefined) {\n const status = response.status;\n if (typeof trigger.status === 'function') {\n if (trigger.status(status)) {\n return true;\n }\n } else if (Array.isArray(trigger.status)) {\n if (trigger.status.includes(status)) {\n return true;\n }\n } else if (status === trigger.status) {\n return true;\n }\n }\n return false;\n}\n/**\n * 检查响应是否匹配任一触发条件\n */ function matchesAnyTrigger(response, context, triggers) {\n return triggers.some((trigger)=>matchesTrigger(response, context, trigger));\n}\n/**\n * 创建请求队列插件\n * \n * @param config - 队列插件配置\n * @returns 队列插件实例\n * \n * @example\n * ```typescript\n * import { createRequestClient } from '@vlian/framework/request';\n * import { createQueuePlugin } from '@vlian/framework/request/plugin';\n * \n * const client = await createRequestClient({\n * plugins: [\n * createQueuePlugin({\n * triggers: [\n * { code: 401 }, // 业务 code 401 表示未授权\n * { status: 401 }, // HTTP 401 未授权\n * ],\n * onTrigger: async (response, context) => {\n * // 刷新 token 或跳转登录\n * await refreshToken();\n * },\n * }),\n * ],\n * });\n * ```\n */ export function createQueuePlugin(config = {}) {\n const { triggers = [], onTrigger, enabled = true, checkOnError = true, queueTimeout = 30000 } = config;\n if (triggers.length === 0) {\n // 如果没有配置触发条件,返回一个空插件\n return {\n name: 'queue',\n priority: PluginPriority.HIGH,\n onBeforeRequest: undefined,\n onAfterRequest: undefined,\n onError: undefined\n };\n }\n const queueManager = getRequestQueueManager();\n return {\n name: 'queue',\n priority: PluginPriority.HIGH,\n async onAfterRequest (context) {\n if (!enabled || !context.response) {\n return;\n }\n // 检查是否匹配触发条件\n const matched = matchesAnyTrigger(context.response, context, triggers);\n if (matched && onTrigger) {\n // 暂停队列(后续请求会被 RequestClient 自动放入队列)\n queueManager.pause();\n // 设置队列超时\n const timeoutId = setTimeout(()=>{\n queueManager.clear('队列超时');\n }, queueTimeout);\n try {\n // 执行回调并等待完成,然后恢复队列\n await queueManager.processAndResume(async ()=>{\n await onTrigger(context.response, context);\n });\n } catch (error) {\n // 回调执行失败,清空队列\n queueManager.clear(`回调执行失败: ${error instanceof Error ? error.message : String(error)}`);\n // 不抛出错误,让请求正常返回(但队列已被清空)\n } finally{\n clearTimeout(timeoutId);\n }\n }\n },\n async onError (context) {\n if (!enabled || !checkOnError || !context.error) {\n return;\n }\n // 如果有响应,检查是否匹配触发条件\n if (context.response) {\n const matched = matchesAnyTrigger(context.response, context, triggers);\n if (matched && onTrigger) {\n // 暂停队列(后续请求会被 RequestClient 自动放入队列)\n queueManager.pause();\n // 设置队列超时\n const timeoutId = setTimeout(()=>{\n queueManager.clear('队列超时');\n }, queueTimeout);\n try {\n // 执行回调并等待完成,然后恢复队列\n await queueManager.processAndResume(async ()=>{\n await onTrigger(context.response, context);\n });\n // 错误已被处理,返回 true 阻止错误传播\n return true;\n } catch (error) {\n // 回调执行失败,清空队列\n queueManager.clear(`回调执行失败: ${error instanceof Error ? error.message : String(error)}`);\n // 不处理错误,继续传播\n return false;\n } finally{\n clearTimeout(timeoutId);\n }\n }\n }\n return false;\n }\n };\n}\n\n//# sourceMappingURL=queue.js.map","/**\n * 请求库主入口\n * \n * 提供企业级、可扩展、类型安全的 HTTP 请求能力\n */ // 导出核心类型\nexport { RequestError, RequestErrorType, RequestErrorCode } from \"./types\";\n// 导出请求客户端\nexport { RequestClient } from \"./core/RequestClient\";\nexport { adapterRegistry } from \"./adapter/RequestAdapter\";\nexport { fetchAdapter, kyAdapter, axiosAdapter } from \"./adapter\";\n// undiciAdapter 使用懒加载,避免在未使用时触发依赖检查\nexport async function undiciAdapter() {\n const { undiciAdapter: adapter } = await import(\"./adapter\");\n return adapter();\n}\nexport { PluginManager, PluginLifecycleStage, PluginPriority } from \"./plugin/RequestPlugin\";\n// 导出企业级插件\nexport { createCachePlugin, createRetryPlugin, createValidationPlugin, createMonitoringPlugin, createQueuePlugin } from \"./plugin\";\nexport { MonitoringEventType } from \"./plugin\";\n// 导出运行时工具\nexport { createRequestContext, updateRequestContext, completeRequestContext, failRequestContext, cancelRequestContext } from \"./runtime/RequestContext\";\n/**\n * 创建请求客户端实例\n * \n * @param config - 请求客户端配置\n * @returns 请求客户端实例\n * \n * @example\n * ```typescript\n * import { createRequestClient } from '@vlian/framework/request';\n * \n * const client = createRequestClient({\n * baseURL: 'https://api.example.com',\n * defaultTimeout: 5000,\n * plugins: [\n * createCachePlugin(),\n * createRetryPlugin(),\n * ],\n * });\n * \n * const response = await client.get<User>('/user/1');\n * ```\n */ export async function createRequestClient(config) {\n const { RequestClient } = await import(\"./core/RequestClient\");\n const client = new RequestClient(config);\n await client.initialize();\n return client;\n}\n\n//# sourceMappingURL=index.js.map","/**\n * Undici 适配器\n * \n * 基于 undici 库的适配器实现(Node.js 环境,高性能)\n */ /**\n * 创建 Undici 适配器\n */ export async function undiciAdapter() {\n // 动态导入 undici(按需加载)\n // 使用多种方式尝试导入,以兼容不同的构建工具\n let undici;\n let importError = null;\n // 方法1:使用 Function 构造函数(避免构建时解析)\n try {\n // @ts-ignore - undici 是可选依赖\n undici = await new Function('return import(\"undici\")')();\n } catch (error) {\n importError = error;\n // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)\n try {\n // @ts-ignore - undici 是可选依赖\n undici = await import(\"undici\");\n } catch (error2) {\n importError = error2;\n }\n }\n // 如果两种方法都失败,检查是否是模块未找到错误\n if (!undici || !undici.request) {\n if (importError instanceof Error) {\n const errorMessage = importError.message.toLowerCase();\n // 检查是否是模块未找到相关的错误\n const isModuleNotFound = errorMessage.includes('cannot find module') || errorMessage.includes('cannot resolve') || errorMessage.includes('module not found') || errorMessage.includes('failed to resolve') || errorMessage.includes('does not exist') || errorMessage.includes('failed to fetch dynamically imported module') || errorMessage.includes('loading chunk') || errorMessage.includes('networkerror') || errorMessage.includes('undici') && (errorMessage.includes('resolve') || errorMessage.includes('find') || errorMessage.includes('not found'));\n if (isModuleNotFound) {\n // 模块未找到,抛出友好的依赖缺失错误\n const { createDependencyError } = await import(\"../utils/dependencyCheck\");\n const errorMessage = createDependencyError('undici', {\n adapterName: 'undici',\n environment: 'node'\n });\n throw new Error(errorMessage);\n }\n }\n throw new Error('undici 库导入失败,请检查安装是否正确');\n }\n return {\n name: 'undici',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: false,\n supportsInterceptors: false\n },\n async request (options) {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal } = options;\n // 构建完整 URL\n let fullUrl = url;\n if (query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)){\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n }\n const queryString = searchParams.toString();\n if (queryString) {\n fullUrl += (fullUrl.includes('?') ? '&' : '?') + queryString;\n }\n }\n // 构建请求头\n const requestHeaders = {};\n for (const [key, value] of Object.entries(headers)){\n requestHeaders[key] = String(value);\n }\n // 构建请求体\n let requestBody;\n if (body !== undefined && body !== null) {\n if (typeof body === 'string') {\n requestBody = body;\n } else if (body instanceof ArrayBuffer) {\n requestBody = Buffer.from(body);\n } else if (Buffer.isBuffer(body)) {\n requestBody = body;\n } else {\n // 对象转换为 JSON\n requestHeaders['Content-Type'] = requestHeaders['Content-Type'] || 'application/json';\n requestBody = JSON.stringify(body);\n }\n }\n // 构建 undici 选项\n // @ts-ignore - undici 类型定义\n const undiciOptions = {\n method: method,\n headers: requestHeaders,\n body: requestBody,\n signal: signal\n };\n // 如果设置了超时,使用 AbortController\n let abortController;\n let timeoutId;\n if (timeout && timeout > 0) {\n abortController = new AbortController();\n timeoutId = setTimeout(()=>{\n abortController.abort();\n }, timeout);\n undiciOptions.signal = abortController.signal;\n }\n try {\n // 执行请求\n const undiciResponse = await undici.request(fullUrl, undiciOptions);\n // 解析响应数据\n let data;\n const responseType = options.responseType || 'json';\n switch(responseType){\n case 'text':\n data = await undiciResponse.body.text();\n break;\n case 'blob':\n data = await undiciResponse.body.blob();\n break;\n case 'arrayBuffer':\n data = await undiciResponse.body.arrayBuffer();\n break;\n case 'formData':\n data = await undiciResponse.body.formData();\n break;\n case 'json':\n default:\n try {\n data = await undiciResponse.body.json();\n } catch {\n // 如果 JSON 解析失败,返回空对象\n data = {};\n }\n break;\n }\n // 构建响应头对象\n const responseHeaders = {};\n for (const [key, value] of Object.entries(undiciResponse.headers)){\n responseHeaders[key] = Array.isArray(value) ? value.join(', ') : String(value);\n }\n // 检查 HTTP 状态码\n if (undiciResponse.statusCode >= 400) {\n throw new Error(`HTTP ${undiciResponse.statusCode} ${undiciResponse.statusText || ''}`);\n }\n // 返回响应对象\n return {\n data,\n status: undiciResponse.statusCode,\n statusText: undiciResponse.statusText || '',\n headers: responseHeaders,\n raw: undiciResponse\n };\n } catch (error) {\n // 清理超时定时器\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n // 重新抛出错误\n throw error;\n }\n }\n };\n}\n\n//# sourceMappingURL=undiciAdapter.js.map","/**\n * 依赖检查工具\n * \n * 用于检查可选依赖是否已安装,并提供友好的安装提示\n */ /**\n * 依赖包信息\n */ /**\n * 已知依赖包信息\n */ const KNOWN_DEPENDENCIES = {\n ky: {\n name: 'ky',\n description: '一个轻量级的 HTTP 客户端库,基于 fetch API',\n installCommand: 'pnpm add ky',\n installCommandNpm: 'npm install ky',\n installCommandYarn: 'yarn add ky',\n documentationUrl: 'https://github.com/sindresorhus/ky'\n },\n axios: {\n name: 'axios',\n description: '一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js',\n installCommand: 'pnpm add axios',\n installCommandNpm: 'npm install axios',\n installCommandYarn: 'yarn add axios',\n documentationUrl: 'https://axios-http.com/'\n },\n undici: {\n name: 'undici',\n description: '一个高性能的 HTTP/1.1 客户端,Node.js 官方推荐',\n installCommand: 'pnpm add undici',\n installCommandNpm: 'npm install undici',\n installCommandYarn: 'yarn add undici',\n documentationUrl: 'https://undici.nodejs.org/'\n }\n};\n/**\n * 检测包管理器类型\n * \n * @returns 包管理器类型('pnpm' | 'npm' | 'yarn' | 'unknown')\n */ function detectPackageManager() {\n // 检查环境变量\n if (typeof process !== 'undefined') {\n // 检查 pnpm\n if (process.env.npm_config_user_agent?.includes('pnpm')) {\n return 'pnpm';\n }\n // 检查 yarn\n if (process.env.npm_config_user_agent?.includes('yarn')) {\n return 'yarn';\n }\n // 检查 npm\n if (process.env.npm_config_user_agent?.includes('npm')) {\n return 'npm';\n }\n }\n // 检查是否存在 lock 文件(仅在 Node.js 环境中)\n if (typeof process !== 'undefined' && typeof require !== 'undefined' && process.cwd) {\n try {\n // 动态导入 Node.js 模块(避免浏览器环境报错)\n const fs = require('fs');\n const path = require('path');\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (fs.existsSync(path.join(cwd, 'yarn.lock'))) {\n return 'yarn';\n }\n if (fs.existsSync(path.join(cwd, 'package-lock.json'))) {\n return 'npm';\n }\n } catch {\n // 忽略错误(可能是浏览器环境)\n }\n }\n return 'unknown';\n}\n/**\n * 检查依赖是否已安装\n * \n * @param packageName - 包名\n * @returns 如果已安装返回 true,否则返回 false\n */ export async function checkDependency(packageName) {\n try {\n // 在浏览器环境中,使用 Function 构造函数避免构建时解析\n // 这样可以确保动态导入在运行时执行\n if (typeof window !== 'undefined') {\n // 浏览器环境:使用 Function 构造函数\n const importFn = new Function('packageName', 'return import(packageName)');\n await importFn(packageName);\n } else {\n // Node.js 环境:直接导入\n await import(packageName);\n }\n return true;\n } catch (error) {\n // 如果导入失败,检查是否是模块未找到错误\n if (error instanceof Error) {\n const errorMessage = error.message.toLowerCase();\n // 检查各种模块未找到的错误信息\n if (errorMessage.includes('cannot find module') || errorMessage.includes('cannot resolve') || errorMessage.includes('module not found') || errorMessage.includes('failed to resolve') || errorMessage.includes('does not exist') || errorMessage.includes('resolve') && errorMessage.includes(packageName)) {\n return false;\n }\n // 在浏览器环境中,某些构建工具的错误信息可能不同\n // 如果错误包含包名,也可能是未找到\n if (errorMessage.includes(packageName) && (errorMessage.includes('resolve') || errorMessage.includes('find') || errorMessage.includes('not found'))) {\n return false;\n }\n }\n // 其他错误(如语法错误、运行时错误等)不应该认为是未安装\n // 返回 true,让实际导入时再处理这些错误\n return true;\n }\n}\n/**\n * 创建友好的依赖缺失错误消息\n * \n * @param packageName - 包名\n * @param context - 上下文信息(可选)\n * @returns 错误消息字符串\n */ export function createDependencyError(packageName, context) {\n const depInfo = KNOWN_DEPENDENCIES[packageName];\n const packageManager = detectPackageManager();\n // 构建基础错误消息\n let message = `\\n❌ 依赖包 \"${packageName}\" 未安装\\n\\n`;\n // 添加上下文信息\n if (context?.adapterName) {\n message += `适配器 \"${context.adapterName}\" 需要安装 \"${packageName}\" 依赖包。\\n\\n`;\n }\n if (depInfo) {\n message += `📦 包信息:${depInfo.description}\\n\\n`;\n }\n // 添加安装命令\n message += `📥 安装命令:\\n`;\n if (depInfo) {\n switch(packageManager){\n case 'pnpm':\n message += ` ${depInfo.installCommand}\\n`;\n break;\n case 'npm':\n message += ` ${depInfo.installCommandNpm}\\n`;\n break;\n case 'yarn':\n message += ` ${depInfo.installCommandYarn}\\n`;\n break;\n default:\n // 显示所有包管理器的命令\n message += ` ${depInfo.installCommand}\\n`;\n message += ` ${depInfo.installCommandNpm}\\n`;\n message += ` ${depInfo.installCommandYarn}\\n`;\n }\n } else {\n // 未知包,使用通用命令\n switch(packageManager){\n case 'pnpm':\n message += ` pnpm add ${packageName}\\n`;\n break;\n case 'npm':\n message += ` npm install ${packageName}\\n`;\n break;\n case 'yarn':\n message += ` yarn add ${packageName}\\n`;\n break;\n default:\n message += ` pnpm add ${packageName}\\n`;\n message += ` npm install ${packageName}\\n`;\n message += ` yarn add ${packageName}\\n`;\n }\n }\n // 添加文档链接\n if (depInfo?.documentationUrl) {\n message += `\\n📚 文档:${depInfo.documentationUrl}\\n`;\n }\n // 添加说明\n message += `\\n💡 提示:这些依赖包是可选依赖,框架不会自动安装。\\n`;\n message += ` 请根据你的项目需求,在项目根目录安装对应的依赖包。\\n`;\n return message;\n}\n/**\n * 检查依赖并抛出友好的错误(如果未安装)\n * \n * @param packageName - 包名\n * @param context - 上下文信息(可选)\n * @throws 如果依赖未安装,抛出包含友好提示的错误\n */ export async function requireDependency(packageName, context) {\n const isInstalled = await checkDependency(packageName);\n if (!isInstalled) {\n const errorMessage = createDependencyError(packageName, context);\n throw new Error(errorMessage);\n }\n}\n\n//# sourceMappingURL=dependencyCheck.js.map"],"names":["_define_property","DOMPurify","undiciAdapter"],"mappings":"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","x_google_ignoreList":[3]}
|