@vlian/framework 1.2.59 → 1.2.61

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.
Files changed (154) hide show
  1. package/dist/analytics/index.cjs +1 -22
  2. package/dist/analytics.umd.js +1 -1
  3. package/dist/components/LocaleSwitch.cjs +1 -116
  4. package/dist/components/ThemeSwitch.cjs +1 -115
  5. package/dist/components/index.cjs +1 -20
  6. package/dist/components/persistence.cjs +1 -58
  7. package/dist/core/Test.cjs +1 -64
  8. package/dist/core/app/AppContext.cjs +1 -348
  9. package/dist/core/app/AppContext.types.cjs +1 -4
  10. package/dist/core/app/BasicLayout.cjs +1 -122
  11. package/dist/core/app/DefaultApp.cjs +1 -150
  12. package/dist/core/app/index.cjs +1 -41
  13. package/dist/core/config/AppConfig.cjs +1 -139
  14. package/dist/core/config/ConfigLoader.cjs +1 -323
  15. package/dist/core/config/ConfigValidator.cjs +2 -133
  16. package/dist/core/config/index.cjs +1 -28
  17. package/dist/core/dev/DevTools.cjs +1 -226
  18. package/dist/core/error/ErrorBoundary.cjs +1 -401
  19. package/dist/core/error/ErrorHandler.cjs +1 -275
  20. package/dist/core/error/index.cjs +1 -34
  21. package/dist/core/event/AppEventBus.cjs +1 -444
  22. package/dist/core/event/frameworkEvents.cjs +1 -141
  23. package/dist/core/event/hooks.cjs +1 -69
  24. package/dist/core/event/index.cjs +1 -41
  25. package/dist/core/event/types.cjs +1 -62
  26. package/dist/core/event/useEventBus.cjs +1 -25
  27. package/dist/core/index.cjs +1 -140
  28. package/dist/core/initialization/InitializationErrorThrower.cjs +1 -75
  29. package/dist/core/initialization/index.cjs +1 -26
  30. package/dist/core/initialization/initialization.cjs +1 -64
  31. package/dist/core/initialization/initializationErrorState.cjs +1 -66
  32. package/dist/core/kernel/defaultAdapters.cjs +1 -184
  33. package/dist/core/kernel/errors.cjs +1 -69
  34. package/dist/core/kernel/index.cjs +1 -20
  35. package/dist/core/kernel/startKernel.cjs +1 -200
  36. package/dist/core/kernel/types.cjs +1 -4
  37. package/dist/core/middleware.cjs +1 -73
  38. package/dist/core/plugin/PluginEventBus.cjs +1 -298
  39. package/dist/core/plugin/PluginSandbox.cjs +1 -137
  40. package/dist/core/plugin.cjs +1 -494
  41. package/dist/core/router/RouterManager.cjs +1 -286
  42. package/dist/core/router/adapter/AdapterManager.cjs +1 -235
  43. package/dist/core/router/adapter/index.cjs +1 -22
  44. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -128
  45. package/dist/core/router/adapter/react-router/index.cjs +1 -20
  46. package/dist/core/router/adapter/types.cjs +1 -6
  47. package/dist/core/router/dev/RouterDevTools.cjs +1 -260
  48. package/dist/core/router/dev/index.cjs +1 -20
  49. package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -193
  50. package/dist/core/router/dynamic/index.cjs +1 -20
  51. package/dist/core/router/errors/RouterError.cjs +1 -61
  52. package/dist/core/router/errors/index.cjs +1 -20
  53. package/dist/core/router/index.cjs +1 -36
  54. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -144
  55. package/dist/core/router/lifecycle/index.cjs +1 -20
  56. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -193
  57. package/dist/core/router/middleware/auth.cjs +1 -66
  58. package/dist/core/router/middleware/index.cjs +1 -22
  59. package/dist/core/router/middleware/types.cjs +1 -6
  60. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -227
  61. package/dist/core/router/monitoring/index.cjs +1 -20
  62. package/dist/core/router/navigation/RouterNavigation.cjs +1 -239
  63. package/dist/core/router/navigation/index.cjs +1 -20
  64. package/dist/core/router/performance/RouteCache.cjs +1 -305
  65. package/dist/core/router/performance/RoutePreloader.cjs +1 -292
  66. package/dist/core/router/performance/index.cjs +1 -21
  67. package/dist/core/router/plugin/RouterPluginManager.cjs +1 -262
  68. package/dist/core/router/plugin/index.cjs +1 -21
  69. package/dist/core/router/plugin/types.cjs +1 -39
  70. package/dist/core/router/types.cjs +1 -4
  71. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -129
  72. package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -250
  73. package/dist/core/router/utils/transform.cjs +1 -780
  74. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -83
  75. package/dist/core/router/validation/index.cjs +1 -21
  76. package/dist/core/router/validation/schema.cjs +1 -159
  77. package/dist/core/router/version/RouteVersionManager.cjs +1 -205
  78. package/dist/core/router/version/index.cjs +1 -20
  79. package/dist/core/splash/SplashScreen.cjs +1 -341
  80. package/dist/core/splash/index.cjs +1 -22
  81. package/dist/core/splash/splashScreenUtils.cjs +1 -38
  82. package/dist/core/startup/AppInstance.cjs +1 -239
  83. package/dist/core/startup/environment.cjs +1 -169
  84. package/dist/core/startup/index.cjs +1 -23
  85. package/dist/core/startup/initializeServices.cjs +1 -226
  86. package/dist/core/startup/performanceTracker.cjs +1 -179
  87. package/dist/core/startup/renderApp.cjs +1 -314
  88. package/dist/core/startup/startApp.cjs +1 -317
  89. package/dist/core/types.cjs +1 -4
  90. package/dist/index.cjs +1 -52
  91. package/dist/index.umd.cjs +1 -27
  92. package/dist/index.umd.js +1 -1
  93. package/dist/kernel/constants.cjs +1 -65
  94. package/dist/kernel/index.cjs +1 -38
  95. package/dist/kernel/kernel.cjs +1 -295
  96. package/dist/kernel/manager/cacheManager.cjs +1 -46
  97. package/dist/kernel/manager/i18n/I18nManager.cjs +1 -91
  98. package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -60
  99. package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -86
  100. package/dist/kernel/manager/i18n/index.cjs +1 -11
  101. package/dist/kernel/manager/i18nManager.cjs +1 -11
  102. package/dist/kernel/manager/index.cjs +1 -28
  103. package/dist/kernel/manager/logger/LoggerManager.cjs +1 -107
  104. package/dist/kernel/manager/logger/index.cjs +1 -11
  105. package/dist/kernel/manager/logger/logger.persistence.cjs +1 -62
  106. package/dist/kernel/manager/logger/logger.schema.cjs +1 -74
  107. package/dist/kernel/manager/loggerManager.cjs +1 -11
  108. package/dist/kernel/manager/theme/ThemeManager.cjs +1 -84
  109. package/dist/kernel/manager/theme/index.cjs +1 -11
  110. package/dist/kernel/manager/theme/theme.dom.cjs +1 -61
  111. package/dist/kernel/manager/theme/theme.persistence.cjs +1 -57
  112. package/dist/kernel/manager/theme/theme.schema.cjs +1 -122
  113. package/dist/kernel/manager/themeManager.cjs +1 -11
  114. package/dist/kernel/types.cjs +1 -4
  115. package/dist/library/index.cjs +1 -19
  116. package/dist/library/locale/index.cjs +1 -39
  117. package/dist/library/locale/langs/en-us/index.cjs +1 -32
  118. package/dist/library/locale/langs/zh-cn/index.cjs +1 -32
  119. package/dist/library/locale/types.cjs +1 -4
  120. package/dist/library/storage/cache.cjs +1 -243
  121. package/dist/library/storage/encryption.cjs +1 -147
  122. package/dist/library/storage/index.cjs +1 -124
  123. package/dist/state/StateManager.cjs +1 -166
  124. package/dist/state/adapters/AdapterFactory.cjs +1 -89
  125. package/dist/state/adapters/DefaultAdapter.cjs +1 -75
  126. package/dist/state/adapters/ReduxAdapter.cjs +1 -443
  127. package/dist/state/adapters/ZustandAdapter.cjs +1 -69
  128. package/dist/state/adapters/index.cjs +1 -44
  129. package/dist/state/adapters/types.cjs +1 -20
  130. package/dist/state/core/DerivedStateInstance.cjs +1 -174
  131. package/dist/state/core/StateInstance.cjs +1 -170
  132. package/dist/state/core/StateRegistry.cjs +1 -110
  133. package/dist/state/core/StateScope.cjs +1 -137
  134. package/dist/state/core/index.cjs +1 -30
  135. package/dist/state/index.cjs +1 -30
  136. package/dist/state/types.cjs +1 -12
  137. package/dist/state.umd.js +1 -1
  138. package/dist/types.cjs +1 -4
  139. package/dist/utils/analytics.cjs +1 -217
  140. package/dist/utils/configSecurity.cjs +3 -182
  141. package/dist/utils/csrf.cjs +1 -18
  142. package/dist/utils/errors/ErrorCodes.cjs +1 -25
  143. package/dist/utils/errors.cjs +1 -111
  144. package/dist/utils/index.cjs +1 -135
  145. package/dist/utils/logger.cjs +1 -25
  146. package/dist/utils/logger.types.cjs +1 -11
  147. package/dist/utils/monitoring.cjs +1 -18
  148. package/dist/utils/performance.cjs +1 -22
  149. package/dist/utils/resourceLoader.cjs +1 -22
  150. package/dist/utils/runtimeSecurity.cjs +1 -11
  151. package/dist/utils/security.cjs +1 -19
  152. package/dist/utils/traceId.cjs +1 -37
  153. package/dist/utils/validation.cjs +1 -19
  154. package/package.json +12 -3
@@ -1,250 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "transformRoutesToReactRoutes", {
6
- enumerable: true,
7
- get: function() {
8
- return transformRoutesToReactRoutes;
9
- }
10
- });
11
- const _jsxruntime = require("react/jsx-runtime");
12
- const _reactrouterdom = require("react-router-dom");
13
- const _RouteErrorBoundary = require("./RouteErrorBoundary");
14
- const _logger = require("@vlian/logger");
15
- function DefaultRouteHydrateFallback() {
16
- return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
17
- style: {
18
- padding: 16,
19
- textAlign: 'center',
20
- color: '#5f6c7b'
21
- },
22
- children: "Loading..."
23
- });
24
- }
25
- const transformRoutesToReactRoutes = async (routes, transformResult, defaultRouteErrorComponent, defaultRouteLoadingComponent, enableHydrateFallback = false)=>{
26
- /**
27
- * 批量处理路由
28
- * @param routes 路由组
29
- */ function transformRouteToReactRoutes(routes) {
30
- return routes.flatMap((route)=>transformRouteToReactRoute(route));
31
- }
32
- /**
33
- * 处理单个路由
34
- * @param route 路由
35
- */ function transformRouteToReactRoute(route) {
36
- const { isGroup = false, enableRedirection = false, name, path, handle, children, page, layout, error, errors, loading } = route;
37
- const routeError = error ?? errors;
38
- // 获取错误组件
39
- async function getErrorComponent() {
40
- // 如果 error/errors 是函数,直接使用
41
- if (typeof routeError === 'function') {
42
- return routeError();
43
- }
44
- const errorsMap = transformResult.errors;
45
- // 判断 error/errors 是否为 string 且不是空字符串
46
- if (typeof routeError === 'string' && routeError !== '') {
47
- // 使用 routeError 作为 key 获取 transformResult.errors 的值
48
- const errorResolver = errorsMap.get(routeError);
49
- // 如果获取不到,返回 null
50
- if (!errorResolver) {
51
- return null;
52
- }
53
- // 如果获取到,返回对应的值(调用动态导入函数)
54
- if (typeof errorResolver === 'function') {
55
- return errorResolver();
56
- }
57
- return null;
58
- }
59
- // 如果 errors 为空,使用配置的默认错误组件或内置的 RouteErrorBoundary 组件
60
- if (defaultRouteErrorComponent) {
61
- // 如果配置了默认错误组件,使用配置的组件
62
- return defaultRouteErrorComponent();
63
- }
64
- // 如果没有配置默认错误组件,使用内置的 RouteErrorBoundary 组件
65
- // 直接导入而非懒加载,因为:
66
- // 1. RouteErrorBoundary 是框架核心组件,体积小
67
- // 2. 错误边界需要快速响应,直接导入速度更快
68
- // 3. 作为基础设施组件,应该保证可用性
69
- return {
70
- default: _RouteErrorBoundary.RouteErrorBoundary
71
- };
72
- }
73
- // 获取转换配置
74
- function convertConfig(m) {
75
- if (!m) {
76
- return null;
77
- }
78
- const { action, loader, shouldRevalidate, default: Component } = m;
79
- // 如果 Component 不存在,记录警告
80
- if (!Component) {
81
- _logger.logger.warn(`路由组件未找到 default 导出: ${name}`, m);
82
- }
83
- return {
84
- action,
85
- loader,
86
- shouldRevalidate,
87
- Component
88
- };
89
- }
90
- // 获取加载组件
91
- async function getLoadingComponent() {
92
- if (typeof loading === 'function') {
93
- return loading();
94
- }
95
- if (typeof loading === 'string' && loading !== '') {
96
- const loadingResolver = transformResult.loadings.get(loading);
97
- if (typeof loadingResolver === 'function') {
98
- return loadingResolver();
99
- }
100
- }
101
- if (defaultRouteLoadingComponent) {
102
- return defaultRouteLoadingComponent();
103
- }
104
- return null;
105
- }
106
- // 获取配置
107
- async function getConfig(index = false) {
108
- // 如果有layout和不是index,返回布局配置
109
- if (layout && !index) {
110
- // 如果 layout 是函数,直接使用
111
- if (typeof layout === 'function') {
112
- const config = await layout();
113
- return convertConfig(config);
114
- }
115
- // 如果 layout 是字符串,从 Map 中获取
116
- if (typeof layout === 'string') {
117
- const layoutResolver = transformResult.layouts.get(layout);
118
- if (!layoutResolver) {
119
- throw new Error(`未找到名为 ${layout} 的布局组件`);
120
- }
121
- const config = await layoutResolver();
122
- return convertConfig(config);
123
- }
124
- }
125
- let pageName = name;
126
- // 如果是notFound则转成404
127
- if (pageName === 'notFound') {
128
- pageName = '404';
129
- }
130
- if (page && (!children?.length || index)) {
131
- // 如果 page 是函数,直接使用
132
- if (typeof page === 'function') {
133
- const config = await page();
134
- return convertConfig(config);
135
- }
136
- // 如果 page 是字符串,从 Map 中获取
137
- if (typeof page === 'string') {
138
- const viewResolver = transformResult.pages.get(page);
139
- if (!viewResolver) {
140
- throw new Error(`未找到名为 ${page} 的页面组件`);
141
- }
142
- const config = await viewResolver();
143
- return convertConfig(config);
144
- }
145
- }
146
- return null;
147
- }
148
- // 获取处理信息,即额外的配置信息
149
- function getHandle(index = false) {
150
- if ((layout || isGroup) && !index) {
151
- return null;
152
- }
153
- return {
154
- ...handle,
155
- name,
156
- path
157
- };
158
- }
159
- const reactRoute = {
160
- children: [],
161
- id: name,
162
- handle: getHandle(),
163
- lazy: async ()=>{
164
- const ErrorBoundary = await getErrorComponent();
165
- const config = await getConfig();
166
- const LoadingComponent = await getLoadingComponent();
167
- const HydrateFallback = LoadingComponent?.default ?? DefaultRouteHydrateFallback;
168
- // 如果配置为空,确保至少返回一个空对象,避免展开 undefined
169
- if (!config) {
170
- return {
171
- ErrorBoundary: ErrorBoundary?.default,
172
- HydrateFallback
173
- };
174
- }
175
- return {
176
- ErrorBoundary: ErrorBoundary?.default,
177
- HydrateFallback,
178
- ...config
179
- };
180
- },
181
- path
182
- };
183
- if (enableHydrateFallback) {
184
- reactRoute.hydrateFallbackElement = /*#__PURE__*/ (0, _jsxruntime.jsx)(DefaultRouteHydrateFallback, {});
185
- }
186
- // 处理子路由
187
- if (children?.length) {
188
- reactRoute.children = children.flatMap((child)=>transformRouteToReactRoute(child)).sort((a, b)=>{
189
- const orderA = a.handle?.order ?? 99;
190
- const orderB = b.handle?.order ?? 99;
191
- return orderA - orderB;
192
- });
193
- if (page && !isGroup) {
194
- reactRoute.children.unshift({
195
- handle: getHandle(true),
196
- index: true,
197
- lazy: async ()=>{
198
- const ErrorBoundary = await getErrorComponent();
199
- const LoadingComponent = await getLoadingComponent();
200
- const HydrateFallback = LoadingComponent?.default ?? DefaultRouteHydrateFallback;
201
- const Component = page;
202
- return {
203
- ErrorBoundary: ErrorBoundary?.default,
204
- HydrateFallback,
205
- Component,
206
- ...await getConfig(true)
207
- };
208
- }
209
- });
210
- }
211
- if (enableRedirection && isGroup) {
212
- const [firstChild] = reactRoute.children;
213
- if (firstChild?.path) {
214
- reactRoute.children.unshift({
215
- index: true,
216
- handle: getHandle(true),
217
- element: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactrouterdom.Navigate, {
218
- to: firstChild.path,
219
- replace: true
220
- })
221
- });
222
- }
223
- }
224
- }
225
- // 若存在 layout 且没有子路由,但同时声明了 page,则自动生成 index 子路由以渲染页面
226
- // 场景:/test 使用自定义 layout,且没有 children 时仍应渲染 page
227
- if ((!children || children.length === 0) && layout && page && !isGroup) {
228
- reactRoute.children = [
229
- {
230
- handle: getHandle(true),
231
- index: true,
232
- lazy: async ()=>{
233
- const ErrorBoundary = await getErrorComponent();
234
- const LoadingComponent = await getLoadingComponent();
235
- const HydrateFallback = LoadingComponent?.default ?? DefaultRouteHydrateFallback;
236
- const Component = page;
237
- return {
238
- ErrorBoundary: ErrorBoundary?.default,
239
- HydrateFallback,
240
- Component,
241
- ...await getConfig(true)
242
- };
243
- }
244
- }
245
- ];
246
- }
247
- return reactRoute;
248
- }
249
- return transformRouteToReactRoutes(routes);
250
- };
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"transformRoutesToReactRoutes",{enumerable:true,get:function(){return transformRoutesToReactRoutes}});const _jsxruntime=require("react/jsx-runtime");const _reactrouterdom=require("react-router-dom");const _RouteErrorBoundary=require("./RouteErrorBoundary");const _logger=require("@vlian/logger");function DefaultRouteHydrateFallback(){return(0,_jsxruntime.jsx)("div",{style:{padding:16,textAlign:"center",color:"#5f6c7b"},children:"Loading..."})}const transformRoutesToReactRoutes=async(routes,transformResult,defaultRouteErrorComponent,defaultRouteLoadingComponent,enableHydrateFallback=false)=>{function transformRouteToReactRoutes(routes){return routes.flatMap(route=>transformRouteToReactRoute(route))}function transformRouteToReactRoute(route){const{isGroup=false,enableRedirection=false,name,path,handle,children,page,layout,error,errors,loading}=route;const routeError=error??errors;async function getErrorComponent(){if(typeof routeError==="function"){return routeError()}const errorsMap=transformResult.errors;if(typeof routeError==="string"&&routeError!==""){const errorResolver=errorsMap.get(routeError);if(!errorResolver){return null}if(typeof errorResolver==="function"){return errorResolver()}return null}if(defaultRouteErrorComponent){return defaultRouteErrorComponent()}return{default:_RouteErrorBoundary.RouteErrorBoundary}}function convertConfig(m){if(!m){return null}const{action,loader,shouldRevalidate,default:Component}=m;if(!Component){_logger.logger.warn(`路由组件未找到 default 导出: ${name}`,m)}return{action,loader,shouldRevalidate,Component}}async function getLoadingComponent(){if(typeof loading==="function"){return loading()}if(typeof loading==="string"&&loading!==""){const loadingResolver=transformResult.loadings.get(loading);if(typeof loadingResolver==="function"){return loadingResolver()}}if(defaultRouteLoadingComponent){return defaultRouteLoadingComponent()}return null}async function getConfig(index=false){if(layout&&!index){if(typeof layout==="function"){const config=await layout();return convertConfig(config)}if(typeof layout==="string"){const layoutResolver=transformResult.layouts.get(layout);if(!layoutResolver){throw new Error(`未找到名为 ${layout} 的布局组件`)}const config=await layoutResolver();return convertConfig(config)}}let pageName=name;if(pageName==="notFound"){pageName="404"}if(page&&(!children?.length||index)){if(typeof page==="function"){const config=await page();return convertConfig(config)}if(typeof page==="string"){const viewResolver=transformResult.pages.get(page);if(!viewResolver){throw new Error(`未找到名为 ${page} 的页面组件`)}const config=await viewResolver();return convertConfig(config)}}return null}function getHandle(index=false){if((layout||isGroup)&&!index){return null}return{...handle,name,path}}const reactRoute={children:[],id:name,handle:getHandle(),lazy:async()=>{const ErrorBoundary=await getErrorComponent();const config=await getConfig();const LoadingComponent=await getLoadingComponent();const HydrateFallback=LoadingComponent?.default??DefaultRouteHydrateFallback;if(!config){return{ErrorBoundary:ErrorBoundary?.default,HydrateFallback}}return{ErrorBoundary:ErrorBoundary?.default,HydrateFallback,...config}},path};if(enableHydrateFallback){reactRoute.hydrateFallbackElement=(0,_jsxruntime.jsx)(DefaultRouteHydrateFallback,{})}if(children?.length){reactRoute.children=children.flatMap(child=>transformRouteToReactRoute(child)).sort((a,b)=>{const orderA=a.handle?.order??99;const orderB=b.handle?.order??99;return orderA-orderB});if(page&&!isGroup){reactRoute.children.unshift({handle:getHandle(true),index:true,lazy:async()=>{const ErrorBoundary=await getErrorComponent();const LoadingComponent=await getLoadingComponent();const HydrateFallback=LoadingComponent?.default??DefaultRouteHydrateFallback;const Component=page;return{ErrorBoundary:ErrorBoundary?.default,HydrateFallback,Component,...await getConfig(true)}}})}if(enableRedirection&&isGroup){const[firstChild]=reactRoute.children;if(firstChild?.path){reactRoute.children.unshift({index:true,handle:getHandle(true),element:(0,_jsxruntime.jsx)(_reactrouterdom.Navigate,{to:firstChild.path,replace:true})})}}}if((!children||children.length===0)&&layout&&page&&!isGroup){reactRoute.children=[{handle:getHandle(true),index:true,lazy:async()=>{const ErrorBoundary=await getErrorComponent();const LoadingComponent=await getLoadingComponent();const HydrateFallback=LoadingComponent?.default??DefaultRouteHydrateFallback;const Component=page;return{ErrorBoundary:ErrorBoundary?.default,HydrateFallback,Component,...await getConfig(true)}}}]}return reactRoute}return transformRouteToReactRoutes(routes)};