@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.
Files changed (456) hide show
  1. package/dist/analytics/index.cjs +24 -0
  2. package/dist/analytics/index.cjs.map +1 -0
  3. package/dist/analytics/index.d.ts +2 -0
  4. package/dist/analytics/index.js +3 -0
  5. package/dist/analytics/index.js.map +1 -0
  6. package/dist/analytics.umd.js +2406 -0
  7. package/dist/analytics.umd.js.map +1 -0
  8. package/dist/components/LocaleSwitch.cjs +118 -0
  9. package/dist/components/LocaleSwitch.cjs.map +1 -0
  10. package/dist/components/LocaleSwitch.d.ts +21 -0
  11. package/dist/components/LocaleSwitch.js +103 -0
  12. package/dist/components/LocaleSwitch.js.map +1 -0
  13. package/dist/components/ThemeSwitch.cjs +117 -0
  14. package/dist/components/ThemeSwitch.cjs.map +1 -0
  15. package/dist/components/ThemeSwitch.d.ts +20 -0
  16. package/dist/components/ThemeSwitch.js +102 -0
  17. package/dist/components/ThemeSwitch.js.map +1 -0
  18. package/dist/components/index.cjs +16 -0
  19. package/dist/components/index.cjs.map +1 -1
  20. package/dist/components/index.d.ts +5 -2
  21. package/dist/components/index.js +2 -1
  22. package/dist/components/index.js.map +1 -1
  23. package/dist/components/persistence.cjs +60 -0
  24. package/dist/components/persistence.cjs.map +1 -0
  25. package/dist/components/persistence.d.ts +12 -0
  26. package/dist/components/persistence.js +39 -0
  27. package/dist/components/persistence.js.map +1 -0
  28. package/dist/core/Test.d.ts +0 -1
  29. package/dist/core/app/AppContext.cjs +36 -30
  30. package/dist/core/app/AppContext.cjs.map +1 -1
  31. package/dist/core/app/AppContext.d.ts +9 -6
  32. package/dist/core/app/AppContext.js +36 -30
  33. package/dist/core/app/AppContext.js.map +1 -1
  34. package/dist/core/app/AppContext.types.d.ts +9 -10
  35. package/dist/core/app/AppContext.types.js.map +1 -1
  36. package/dist/core/app/BasicLayout.cjs +57 -22
  37. package/dist/core/app/BasicLayout.cjs.map +1 -1
  38. package/dist/core/app/BasicLayout.d.ts +7 -5
  39. package/dist/core/app/BasicLayout.js +57 -22
  40. package/dist/core/app/BasicLayout.js.map +1 -1
  41. package/dist/core/app/DefaultApp.cjs +104 -153
  42. package/dist/core/app/DefaultApp.cjs.map +1 -1
  43. package/dist/core/app/DefaultApp.d.ts +0 -21
  44. package/dist/core/app/DefaultApp.js +104 -153
  45. package/dist/core/app/DefaultApp.js.map +1 -1
  46. package/dist/core/app/index.d.ts +0 -1
  47. package/dist/core/config/AppConfig.cjs.map +1 -1
  48. package/dist/core/config/AppConfig.d.ts +3 -4
  49. package/dist/core/config/AppConfig.js.map +1 -1
  50. package/dist/core/config/ConfigLoader.d.ts +0 -1
  51. package/dist/core/config/ConfigValidator.d.ts +0 -1
  52. package/dist/core/config/index.d.ts +0 -1
  53. package/dist/core/dev/DevTools.cjs +141 -287
  54. package/dist/core/dev/DevTools.cjs.map +1 -1
  55. package/dist/core/dev/DevTools.d.ts +1 -32
  56. package/dist/core/dev/DevTools.js +143 -296
  57. package/dist/core/dev/DevTools.js.map +1 -1
  58. package/dist/core/error/ErrorBoundary.cjs +72 -14
  59. package/dist/core/error/ErrorBoundary.cjs.map +1 -1
  60. package/dist/core/error/ErrorBoundary.d.ts +7 -9
  61. package/dist/core/error/ErrorBoundary.js +73 -15
  62. package/dist/core/error/ErrorBoundary.js.map +1 -1
  63. package/dist/core/error/ErrorHandler.d.ts +0 -1
  64. package/dist/core/error/index.d.ts +0 -1
  65. package/dist/core/event/AppEventBus.d.ts +0 -1
  66. package/dist/core/event/frameworkEvents.d.ts +0 -1
  67. package/dist/core/event/hooks.d.ts +0 -1
  68. package/dist/core/event/index.d.ts +0 -1
  69. package/dist/core/event/types.d.ts +0 -1
  70. package/dist/core/event/useEventBus.d.ts +0 -1
  71. package/dist/core/index.cjs +2 -0
  72. package/dist/core/index.cjs.map +1 -1
  73. package/dist/core/index.d.ts +2 -1
  74. package/dist/core/index.js +2 -0
  75. package/dist/core/index.js.map +1 -1
  76. package/dist/core/initialization/InitializationErrorThrower.d.ts +0 -1
  77. package/dist/core/initialization/index.d.ts +0 -1
  78. package/dist/core/initialization/initialization.d.ts +0 -1
  79. package/dist/core/initialization/initializationErrorState.d.ts +0 -1
  80. package/dist/core/kernel/defaultAdapters.cjs +185 -0
  81. package/dist/core/kernel/defaultAdapters.cjs.map +1 -0
  82. package/dist/core/kernel/defaultAdapters.d.ts +2 -0
  83. package/dist/core/kernel/defaultAdapters.js +175 -0
  84. package/dist/core/kernel/defaultAdapters.js.map +1 -0
  85. package/dist/core/kernel/errors.cjs +71 -0
  86. package/dist/core/kernel/errors.cjs.map +1 -0
  87. package/dist/core/kernel/errors.d.ts +18 -0
  88. package/dist/core/kernel/errors.js +53 -0
  89. package/dist/core/kernel/errors.js.map +1 -0
  90. package/dist/core/kernel/index.cjs +22 -0
  91. package/dist/core/kernel/index.cjs.map +1 -0
  92. package/dist/core/kernel/index.d.ts +3 -0
  93. package/dist/core/kernel/index.js +4 -0
  94. package/dist/core/kernel/index.js.map +1 -0
  95. package/dist/core/kernel/startKernel.cjs +203 -0
  96. package/dist/core/kernel/startKernel.cjs.map +1 -0
  97. package/dist/core/kernel/startKernel.d.ts +2 -0
  98. package/dist/core/kernel/startKernel.js +193 -0
  99. package/dist/core/kernel/startKernel.js.map +1 -0
  100. package/dist/core/kernel/types.cjs +6 -0
  101. package/dist/core/kernel/types.cjs.map +1 -0
  102. package/dist/core/kernel/types.d.ts +114 -0
  103. package/dist/core/kernel/types.js +3 -0
  104. package/dist/core/kernel/types.js.map +1 -0
  105. package/dist/core/middleware.d.ts +0 -1
  106. package/dist/core/plugin/PluginEventBus.d.ts +0 -1
  107. package/dist/core/plugin/PluginSandbox.d.ts +0 -1
  108. package/dist/core/plugin.cjs +1 -1
  109. package/dist/core/plugin.cjs.map +1 -1
  110. package/dist/core/plugin.d.ts +0 -1
  111. package/dist/core/plugin.js +1 -1
  112. package/dist/core/plugin.js.map +1 -1
  113. package/dist/core/router/RouterManager.cjs +32 -2
  114. package/dist/core/router/RouterManager.cjs.map +1 -1
  115. package/dist/core/router/RouterManager.d.ts +5 -1
  116. package/dist/core/router/RouterManager.js +33 -3
  117. package/dist/core/router/RouterManager.js.map +1 -1
  118. package/dist/core/router/adapter/AdapterManager.d.ts +0 -1
  119. package/dist/core/router/adapter/index.d.ts +0 -1
  120. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
  121. package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts +0 -1
  122. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
  123. package/dist/core/router/adapter/react-router/index.d.ts +0 -1
  124. package/dist/core/router/adapter/types.cjs.map +1 -1
  125. package/dist/core/router/adapter/types.d.ts +1 -2
  126. package/dist/core/router/adapter/types.js.map +1 -1
  127. package/dist/core/router/dev/RouterDevTools.cjs +148 -296
  128. package/dist/core/router/dev/RouterDevTools.cjs.map +1 -1
  129. package/dist/core/router/dev/RouterDevTools.d.ts +1 -6
  130. package/dist/core/router/dev/RouterDevTools.js +149 -301
  131. package/dist/core/router/dev/RouterDevTools.js.map +1 -1
  132. package/dist/core/router/dev/index.d.ts +0 -1
  133. package/dist/core/router/dynamic/DynamicRouteManager.d.ts +0 -1
  134. package/dist/core/router/dynamic/index.d.ts +0 -1
  135. package/dist/core/router/errors/RouterError.d.ts +0 -1
  136. package/dist/core/router/errors/index.d.ts +0 -1
  137. package/dist/core/router/index.d.ts +0 -1
  138. package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts +0 -1
  139. package/dist/core/router/lifecycle/index.d.ts +0 -1
  140. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +24 -4
  141. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
  142. package/dist/core/router/middleware/RouterMiddlewareManager.d.ts +1 -1
  143. package/dist/core/router/middleware/RouterMiddlewareManager.js +24 -4
  144. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
  145. package/dist/core/router/middleware/auth.d.ts +0 -1
  146. package/dist/core/router/middleware/index.d.ts +0 -1
  147. package/dist/core/router/middleware/types.cjs.map +1 -1
  148. package/dist/core/router/middleware/types.d.ts +1 -2
  149. package/dist/core/router/middleware/types.js.map +1 -1
  150. package/dist/core/router/monitoring/RouterMonitoring.d.ts +0 -1
  151. package/dist/core/router/monitoring/index.d.ts +0 -1
  152. package/dist/core/router/navigation/RouterNavigation.cjs +69 -14
  153. package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
  154. package/dist/core/router/navigation/RouterNavigation.d.ts +3 -1
  155. package/dist/core/router/navigation/RouterNavigation.js +69 -14
  156. package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
  157. package/dist/core/router/navigation/index.d.ts +0 -1
  158. package/dist/core/router/performance/RouteCache.cjs +34 -13
  159. package/dist/core/router/performance/RouteCache.cjs.map +1 -1
  160. package/dist/core/router/performance/RouteCache.d.ts +8 -3
  161. package/dist/core/router/performance/RouteCache.js +34 -13
  162. package/dist/core/router/performance/RouteCache.js.map +1 -1
  163. package/dist/core/router/performance/RoutePreloader.cjs +89 -22
  164. package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
  165. package/dist/core/router/performance/RoutePreloader.d.ts +9 -2
  166. package/dist/core/router/performance/RoutePreloader.js +89 -22
  167. package/dist/core/router/performance/RoutePreloader.js.map +1 -1
  168. package/dist/core/router/performance/index.d.ts +0 -1
  169. package/dist/core/router/plugin/RouterPluginManager.d.ts +0 -1
  170. package/dist/core/router/plugin/index.d.ts +0 -1
  171. package/dist/core/router/plugin/types.d.ts +0 -1
  172. package/dist/core/router/types.d.ts +23 -7
  173. package/dist/core/router/types.js.map +1 -1
  174. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +90 -103
  175. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +1 -1
  176. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +0 -1
  177. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +91 -104
  178. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +1 -1
  179. package/dist/core/router/utils/adapters/react-router/transform.cjs +45 -63
  180. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  181. package/dist/core/router/utils/adapters/react-router/transform.d.ts +0 -1
  182. package/dist/core/router/utils/adapters/react-router/transform.js +46 -59
  183. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  184. package/dist/core/router/utils/transform.cjs +80 -71
  185. package/dist/core/router/utils/transform.cjs.map +1 -1
  186. package/dist/core/router/utils/transform.d.ts +1 -2
  187. package/dist/core/router/utils/transform.js +81 -72
  188. package/dist/core/router/utils/transform.js.map +1 -1
  189. package/dist/core/router/validation/RouterConfigValidator.d.ts +66 -5
  190. package/dist/core/router/validation/index.d.ts +0 -1
  191. package/dist/core/router/validation/schema.cjs +71 -2
  192. package/dist/core/router/validation/schema.cjs.map +1 -1
  193. package/dist/core/router/validation/schema.d.ts +102 -7
  194. package/dist/core/router/validation/schema.js +71 -2
  195. package/dist/core/router/validation/schema.js.map +1 -1
  196. package/dist/core/router/version/RouteVersionManager.d.ts +0 -1
  197. package/dist/core/router/version/index.d.ts +0 -1
  198. package/dist/core/splash/SplashScreen.cjs +101 -15
  199. package/dist/core/splash/SplashScreen.cjs.map +1 -1
  200. package/dist/core/splash/SplashScreen.d.ts +0 -1
  201. package/dist/core/splash/SplashScreen.js +101 -15
  202. package/dist/core/splash/SplashScreen.js.map +1 -1
  203. package/dist/core/splash/index.d.ts +0 -1
  204. package/dist/core/splash/splashScreenUtils.d.ts +0 -1
  205. package/dist/core/startup/AppInstance.d.ts +0 -1
  206. package/dist/core/startup/environment.d.ts +0 -1
  207. package/dist/core/startup/index.d.ts +0 -1
  208. package/dist/core/startup/initializeServices.d.ts +0 -1
  209. package/dist/core/startup/performanceTracker.d.ts +0 -1
  210. package/dist/core/startup/renderApp.cjs +12 -10
  211. package/dist/core/startup/renderApp.cjs.map +1 -1
  212. package/dist/core/startup/renderApp.d.ts +0 -1
  213. package/dist/core/startup/renderApp.js +12 -10
  214. package/dist/core/startup/renderApp.js.map +1 -1
  215. package/dist/core/startup/startApp.cjs +118 -13
  216. package/dist/core/startup/startApp.cjs.map +1 -1
  217. package/dist/core/startup/startApp.d.ts +0 -1
  218. package/dist/core/startup/startApp.js +118 -13
  219. package/dist/core/startup/startApp.js.map +1 -1
  220. package/dist/core/types.d.ts +34 -21
  221. package/dist/core/types.js.map +1 -1
  222. package/dist/core/ui-adapter/adapters.cjs +45 -0
  223. package/dist/core/ui-adapter/adapters.cjs.map +1 -0
  224. package/dist/core/ui-adapter/adapters.d.ts +4 -0
  225. package/dist/core/ui-adapter/adapters.js +27 -0
  226. package/dist/core/ui-adapter/adapters.js.map +1 -0
  227. package/dist/core/ui-adapter/index.cjs +21 -0
  228. package/dist/core/ui-adapter/index.cjs.map +1 -0
  229. package/dist/core/ui-adapter/index.d.ts +2 -0
  230. package/dist/core/ui-adapter/index.js +3 -0
  231. package/dist/core/ui-adapter/index.js.map +1 -0
  232. package/dist/core/ui-adapter/types.cjs +6 -0
  233. package/dist/core/ui-adapter/types.cjs.map +1 -0
  234. package/dist/core/ui-adapter/types.d.ts +24 -0
  235. package/dist/core/ui-adapter/types.js +3 -0
  236. package/dist/core/ui-adapter/types.js.map +1 -0
  237. package/dist/index.cjs +1 -0
  238. package/dist/index.cjs.map +1 -1
  239. package/dist/index.d.ts +1 -1
  240. package/dist/index.js +1 -0
  241. package/dist/index.js.map +1 -1
  242. package/dist/index.umd.d.ts +0 -1
  243. package/dist/index.umd.js +7684 -6056
  244. package/dist/index.umd.js.map +1 -1
  245. package/dist/library/index.d.ts +0 -1
  246. package/dist/library/locale/index.d.ts +0 -1
  247. package/dist/library/locale/langs/en-us/index.d.ts +0 -1
  248. package/dist/library/locale/langs/zh-cn/index.d.ts +0 -1
  249. package/dist/library/locale/types.d.ts +0 -1
  250. package/dist/library/storage/cache.d.ts +0 -1
  251. package/dist/library/storage/encryption.d.ts +0 -1
  252. package/dist/library/storage/index.d.ts +0 -1
  253. package/dist/request/adapter/RequestAdapter.d.ts +0 -1
  254. package/dist/request/adapter/axiosAdapter.d.ts +0 -1
  255. package/dist/request/adapter/fetchAdapter.d.ts +0 -1
  256. package/dist/request/adapter/index.d.ts +0 -1
  257. package/dist/request/adapter/kyAdapter.d.ts +0 -1
  258. package/dist/request/adapter/undiciAdapter.d.ts +0 -1
  259. package/dist/request/core/RequestClient.d.ts +0 -1
  260. package/dist/request/core/index.d.ts +0 -1
  261. package/dist/request/index.d.ts +0 -1
  262. package/dist/request/plugin/RequestPlugin.d.ts +0 -1
  263. package/dist/request/plugin/cache.d.ts +0 -1
  264. package/dist/request/plugin/csrfPlugin.d.ts +0 -1
  265. package/dist/request/plugin/index.d.ts +0 -1
  266. package/dist/request/plugin/monitoring.d.ts +0 -1
  267. package/dist/request/plugin/queue.d.ts +0 -1
  268. package/dist/request/plugin/retry.d.ts +0 -1
  269. package/dist/request/plugin/validation.d.ts +0 -1
  270. package/dist/request/runtime/RequestContext.d.ts +0 -1
  271. package/dist/request/runtime/index.d.ts +0 -1
  272. package/dist/request/types.d.ts +0 -1
  273. package/dist/request/utils/RequestQueueManager.d.ts +0 -1
  274. package/dist/request/utils/dependencyCheck.d.ts +0 -1
  275. package/dist/request/utils/index.d.ts +0 -1
  276. package/dist/request.umd.js +5392 -0
  277. package/dist/request.umd.js.map +1 -0
  278. package/dist/state/StateManager.d.ts +0 -1
  279. package/dist/state/adapters/AdapterFactory.d.ts +0 -1
  280. package/dist/state/adapters/DefaultAdapter.d.ts +0 -1
  281. package/dist/state/adapters/ReduxAdapter.d.ts +0 -1
  282. package/dist/state/adapters/ZustandAdapter.d.ts +0 -1
  283. package/dist/state/adapters/index.d.ts +0 -1
  284. package/dist/state/adapters/types.d.ts +0 -1
  285. package/dist/state/core/DerivedStateInstance.d.ts +0 -1
  286. package/dist/state/core/StateInstance.d.ts +0 -1
  287. package/dist/state/core/StateRegistry.d.ts +0 -1
  288. package/dist/state/core/StateScope.d.ts +0 -1
  289. package/dist/state/core/index.d.ts +0 -1
  290. package/dist/state/index.d.ts +0 -1
  291. package/dist/state/types.d.ts +0 -1
  292. package/dist/state.umd.js +1414 -0
  293. package/dist/state.umd.js.map +1 -0
  294. package/dist/types.d.ts +0 -1
  295. package/dist/utils/analytics.d.ts +0 -1
  296. package/dist/utils/configSecurity.d.ts +0 -1
  297. package/dist/utils/csrf.d.ts +0 -1
  298. package/dist/utils/errors/ErrorCodes.d.ts +0 -1
  299. package/dist/utils/errors.cjs +44 -1
  300. package/dist/utils/errors.cjs.map +1 -1
  301. package/dist/utils/errors.d.ts +5 -1
  302. package/dist/utils/errors.js +44 -1
  303. package/dist/utils/errors.js.map +1 -1
  304. package/dist/utils/index.d.ts +0 -1
  305. package/dist/utils/logger.d.ts +0 -1
  306. package/dist/utils/logger.types.d.ts +0 -1
  307. package/dist/utils/monitoring.d.ts +0 -1
  308. package/dist/utils/performance.d.ts +0 -1
  309. package/dist/utils/resourceLoader.d.ts +0 -1
  310. package/dist/utils/runtimeSecurity.d.ts +0 -1
  311. package/dist/utils/security.d.ts +0 -1
  312. package/dist/utils/traceId.d.ts +0 -1
  313. package/dist/utils/validation.d.ts +0 -1
  314. package/package.json +24 -9
  315. package/dist/components/index.d.ts.map +0 -1
  316. package/dist/core/Test.d.ts.map +0 -1
  317. package/dist/core/app/AppContext.d.ts.map +0 -1
  318. package/dist/core/app/AppContext.types.d.ts.map +0 -1
  319. package/dist/core/app/BasicLayout.d.ts.map +0 -1
  320. package/dist/core/app/DefaultApp.d.ts.map +0 -1
  321. package/dist/core/app/index.d.ts.map +0 -1
  322. package/dist/core/config/AppConfig.d.ts.map +0 -1
  323. package/dist/core/config/ConfigLoader.d.ts.map +0 -1
  324. package/dist/core/config/ConfigValidator.d.ts.map +0 -1
  325. package/dist/core/config/index.d.ts.map +0 -1
  326. package/dist/core/dev/DevTools.d.ts.map +0 -1
  327. package/dist/core/error/ErrorBoundary.d.ts.map +0 -1
  328. package/dist/core/error/ErrorHandler.d.ts.map +0 -1
  329. package/dist/core/error/index.d.ts.map +0 -1
  330. package/dist/core/event/AppEventBus.d.ts.map +0 -1
  331. package/dist/core/event/frameworkEvents.d.ts.map +0 -1
  332. package/dist/core/event/hooks.d.ts.map +0 -1
  333. package/dist/core/event/index.d.ts.map +0 -1
  334. package/dist/core/event/types.d.ts.map +0 -1
  335. package/dist/core/event/useEventBus.d.ts.map +0 -1
  336. package/dist/core/index.d.ts.map +0 -1
  337. package/dist/core/initialization/InitializationErrorThrower.d.ts.map +0 -1
  338. package/dist/core/initialization/index.d.ts.map +0 -1
  339. package/dist/core/initialization/initialization.d.ts.map +0 -1
  340. package/dist/core/initialization/initializationErrorState.d.ts.map +0 -1
  341. package/dist/core/middleware.d.ts.map +0 -1
  342. package/dist/core/plugin/PluginEventBus.d.ts.map +0 -1
  343. package/dist/core/plugin/PluginSandbox.d.ts.map +0 -1
  344. package/dist/core/plugin.d.ts.map +0 -1
  345. package/dist/core/router/RouterManager.d.ts.map +0 -1
  346. package/dist/core/router/adapter/AdapterManager.d.ts.map +0 -1
  347. package/dist/core/router/adapter/index.d.ts.map +0 -1
  348. package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts.map +0 -1
  349. package/dist/core/router/adapter/react-router/index.d.ts.map +0 -1
  350. package/dist/core/router/adapter/types.d.ts.map +0 -1
  351. package/dist/core/router/dev/RouterDevTools.d.ts.map +0 -1
  352. package/dist/core/router/dev/index.d.ts.map +0 -1
  353. package/dist/core/router/dynamic/DynamicRouteManager.d.ts.map +0 -1
  354. package/dist/core/router/dynamic/index.d.ts.map +0 -1
  355. package/dist/core/router/errors/RouterError.d.ts.map +0 -1
  356. package/dist/core/router/errors/index.d.ts.map +0 -1
  357. package/dist/core/router/index.d.ts.map +0 -1
  358. package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts.map +0 -1
  359. package/dist/core/router/lifecycle/index.d.ts.map +0 -1
  360. package/dist/core/router/middleware/RouterMiddlewareManager.d.ts.map +0 -1
  361. package/dist/core/router/middleware/auth.d.ts.map +0 -1
  362. package/dist/core/router/middleware/index.d.ts.map +0 -1
  363. package/dist/core/router/middleware/types.d.ts.map +0 -1
  364. package/dist/core/router/monitoring/RouterMonitoring.d.ts.map +0 -1
  365. package/dist/core/router/monitoring/index.d.ts.map +0 -1
  366. package/dist/core/router/navigation/RouterNavigation.d.ts.map +0 -1
  367. package/dist/core/router/navigation/index.d.ts.map +0 -1
  368. package/dist/core/router/performance/RouteCache.d.ts.map +0 -1
  369. package/dist/core/router/performance/RoutePreloader.d.ts.map +0 -1
  370. package/dist/core/router/performance/index.d.ts.map +0 -1
  371. package/dist/core/router/plugin/RouterPluginManager.d.ts.map +0 -1
  372. package/dist/core/router/plugin/index.d.ts.map +0 -1
  373. package/dist/core/router/plugin/types.d.ts.map +0 -1
  374. package/dist/core/router/types.d.ts.map +0 -1
  375. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts.map +0 -1
  376. package/dist/core/router/utils/adapters/react-router/transform.d.ts.map +0 -1
  377. package/dist/core/router/utils/transform.d.ts.map +0 -1
  378. package/dist/core/router/validation/RouterConfigValidator.d.ts.map +0 -1
  379. package/dist/core/router/validation/index.d.ts.map +0 -1
  380. package/dist/core/router/validation/schema.d.ts.map +0 -1
  381. package/dist/core/router/version/RouteVersionManager.d.ts.map +0 -1
  382. package/dist/core/router/version/index.d.ts.map +0 -1
  383. package/dist/core/splash/SplashScreen.d.ts.map +0 -1
  384. package/dist/core/splash/index.d.ts.map +0 -1
  385. package/dist/core/splash/splashScreenUtils.d.ts.map +0 -1
  386. package/dist/core/startup/AppInstance.d.ts.map +0 -1
  387. package/dist/core/startup/environment.d.ts.map +0 -1
  388. package/dist/core/startup/index.d.ts.map +0 -1
  389. package/dist/core/startup/initializeServices.d.ts.map +0 -1
  390. package/dist/core/startup/performanceTracker.d.ts.map +0 -1
  391. package/dist/core/startup/renderApp.d.ts.map +0 -1
  392. package/dist/core/startup/startApp.d.ts.map +0 -1
  393. package/dist/core/types.d.ts.map +0 -1
  394. package/dist/index.d.ts.map +0 -1
  395. package/dist/index.umd.d.ts.map +0 -1
  396. package/dist/library/index.d.ts.map +0 -1
  397. package/dist/library/locale/index.d.ts.map +0 -1
  398. package/dist/library/locale/langs/en-us/index.d.ts.map +0 -1
  399. package/dist/library/locale/langs/zh-cn/index.d.ts.map +0 -1
  400. package/dist/library/locale/types.d.ts.map +0 -1
  401. package/dist/library/storage/cache.d.ts.map +0 -1
  402. package/dist/library/storage/encryption.d.ts.map +0 -1
  403. package/dist/library/storage/index.d.ts.map +0 -1
  404. package/dist/request/adapter/RequestAdapter.d.ts.map +0 -1
  405. package/dist/request/adapter/axiosAdapter.d.ts.map +0 -1
  406. package/dist/request/adapter/fetchAdapter.d.ts.map +0 -1
  407. package/dist/request/adapter/index.d.ts.map +0 -1
  408. package/dist/request/adapter/kyAdapter.d.ts.map +0 -1
  409. package/dist/request/adapter/undiciAdapter.d.ts.map +0 -1
  410. package/dist/request/core/RequestClient.d.ts.map +0 -1
  411. package/dist/request/core/index.d.ts.map +0 -1
  412. package/dist/request/index.d.ts.map +0 -1
  413. package/dist/request/plugin/RequestPlugin.d.ts.map +0 -1
  414. package/dist/request/plugin/cache.d.ts.map +0 -1
  415. package/dist/request/plugin/csrfPlugin.d.ts.map +0 -1
  416. package/dist/request/plugin/index.d.ts.map +0 -1
  417. package/dist/request/plugin/monitoring.d.ts.map +0 -1
  418. package/dist/request/plugin/queue.d.ts.map +0 -1
  419. package/dist/request/plugin/retry.d.ts.map +0 -1
  420. package/dist/request/plugin/validation.d.ts.map +0 -1
  421. package/dist/request/runtime/RequestContext.d.ts.map +0 -1
  422. package/dist/request/runtime/index.d.ts.map +0 -1
  423. package/dist/request/types.d.ts.map +0 -1
  424. package/dist/request/utils/RequestQueueManager.d.ts.map +0 -1
  425. package/dist/request/utils/dependencyCheck.d.ts.map +0 -1
  426. package/dist/request/utils/index.d.ts.map +0 -1
  427. package/dist/state/StateManager.d.ts.map +0 -1
  428. package/dist/state/adapters/AdapterFactory.d.ts.map +0 -1
  429. package/dist/state/adapters/DefaultAdapter.d.ts.map +0 -1
  430. package/dist/state/adapters/ReduxAdapter.d.ts.map +0 -1
  431. package/dist/state/adapters/ZustandAdapter.d.ts.map +0 -1
  432. package/dist/state/adapters/index.d.ts.map +0 -1
  433. package/dist/state/adapters/types.d.ts.map +0 -1
  434. package/dist/state/core/DerivedStateInstance.d.ts.map +0 -1
  435. package/dist/state/core/StateInstance.d.ts.map +0 -1
  436. package/dist/state/core/StateRegistry.d.ts.map +0 -1
  437. package/dist/state/core/StateScope.d.ts.map +0 -1
  438. package/dist/state/core/index.d.ts.map +0 -1
  439. package/dist/state/index.d.ts.map +0 -1
  440. package/dist/state/types.d.ts.map +0 -1
  441. package/dist/types.d.ts.map +0 -1
  442. package/dist/utils/analytics.d.ts.map +0 -1
  443. package/dist/utils/configSecurity.d.ts.map +0 -1
  444. package/dist/utils/csrf.d.ts.map +0 -1
  445. package/dist/utils/errors/ErrorCodes.d.ts.map +0 -1
  446. package/dist/utils/errors.d.ts.map +0 -1
  447. package/dist/utils/index.d.ts.map +0 -1
  448. package/dist/utils/logger.d.ts.map +0 -1
  449. package/dist/utils/logger.types.d.ts.map +0 -1
  450. package/dist/utils/monitoring.d.ts.map +0 -1
  451. package/dist/utils/performance.d.ts.map +0 -1
  452. package/dist/utils/resourceLoader.d.ts.map +0 -1
  453. package/dist/utils/runtimeSecurity.d.ts.map +0 -1
  454. package/dist/utils/security.d.ts.map +0 -1
  455. package/dist/utils/traceId.d.ts.map +0 -1
  456. package/dist/utils/validation.d.ts.map +0 -1
@@ -1,8 +1,17 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import React from "react";
3
2
  import { Navigate } from "react-router-dom";
4
3
  import { RouteErrorBoundary } from "./RouteErrorBoundary";
5
- import { Spin } from "antd";
4
+ import { logger } from "../../../../../utils";
5
+ function DefaultRouteHydrateFallback() {
6
+ return /*#__PURE__*/ _jsx("div", {
7
+ style: {
8
+ padding: 16,
9
+ textAlign: 'center',
10
+ color: '#5f6c7b'
11
+ },
12
+ children: "Loading..."
13
+ });
14
+ }
6
15
  export const transformRoutesToReactRoutes = async (routes, transformResult, defaultRouteErrorComponent, defaultRouteLoadingComponent)=>{
7
16
  /**
8
17
  * 批量处理路由
@@ -14,18 +23,19 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
14
23
  * 处理单个路由
15
24
  * @param route 路由
16
25
  */ function transformRouteToReactRoute(route) {
17
- const { isGroup = false, enableRedirection = false, name, path, handle, children, page, layout, loading, errors } = route;
26
+ const { isGroup = false, enableRedirection = false, name, path, handle, children, page, layout, error, errors, loading } = route;
27
+ const routeError = error ?? errors;
18
28
  // 获取错误组件
19
29
  async function getErrorComponent() {
20
- // 如果 errors 是函数,直接使用
21
- if (typeof errors === 'function') {
22
- return errors();
30
+ // 如果 error/errors 是函数,直接使用
31
+ if (typeof routeError === 'function') {
32
+ return routeError();
23
33
  }
24
34
  const errorsMap = transformResult.errors;
25
- // 判断 errors 是否为 string 且不是空字符串
26
- if (typeof errors === 'string' && errors !== '') {
27
- // 使用 errors 作为 key 获取 transformResult.errors 的值
28
- const errorResolver = errorsMap.get(errors);
35
+ // 判断 error/errors 是否为 string 且不是空字符串
36
+ if (typeof routeError === 'string' && routeError !== '') {
37
+ // 使用 routeError 作为 key 获取 transformResult.errors 的值
38
+ const errorResolver = errorsMap.get(routeError);
29
39
  // 如果获取不到,返回 null
30
40
  if (!errorResolver) {
31
41
  return null;
@@ -50,52 +60,6 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
50
60
  default: RouteErrorBoundary
51
61
  };
52
62
  }
53
- // 获取默认加载组件(配置的或内置的 Spin)
54
- function getDefaultLoadingComponent() {
55
- if (defaultRouteLoadingComponent) {
56
- // 如果配置了默认加载组件,使用 React.lazy 包装
57
- // 使用懒加载是因为用户可能希望自定义组件支持代码分割
58
- return /*#__PURE__*/ React.lazy(()=>defaultRouteLoadingComponent().then((module)=>({
59
- default: module.default || module
60
- })));
61
- }
62
- // 如果没有配置默认加载组件,使用 antd 的 Spin 作为默认组件
63
- // 直接导入而非懒加载,因为:
64
- // 1. Spin 是 antd 的基础组件,体积小
65
- // 2. 加载组件需要快速显示,直接导入速度更快
66
- // 3. 作为基础设施组件,应该保证可用性
67
- return Spin;
68
- }
69
- // 获取加载组件
70
- function getLoadingComponent() {
71
- // 如果 loading 是函数,直接使用 React.lazy 包装
72
- if (typeof loading === 'function') {
73
- return /*#__PURE__*/ React.lazy(()=>loading().then((module)=>({
74
- default: module.default || module
75
- })));
76
- }
77
- const loadingsMap = transformResult.loadings;
78
- // 判断 loading 是否为 string 且不是空字符串
79
- if (typeof loading === 'string' && loading !== '') {
80
- // 使用 loading 作为 key 获取 transformResult.loadings 的值
81
- const loadingResolver = loadingsMap.get(loading);
82
- // 如果获取不到,使用默认加载组件
83
- if (!loadingResolver) {
84
- return getDefaultLoadingComponent();
85
- }
86
- // 如果获取到,使用 React.lazy 包装动态导入函数
87
- // loadingResolver 是一个返回 Promise 的函数,Promise resolve 后的值是组件模块
88
- if (typeof loadingResolver === 'function') {
89
- return /*#__PURE__*/ React.lazy(()=>loadingResolver().then((module)=>({
90
- default: module.default || module
91
- })));
92
- }
93
- // 如果 loadingResolver 不是函数,使用默认加载组件
94
- return getDefaultLoadingComponent();
95
- }
96
- // 如果 loading 为空,使用默认加载组件
97
- return getDefaultLoadingComponent();
98
- }
99
63
  // 获取转换配置
100
64
  function convertConfig(m) {
101
65
  if (!m) {
@@ -104,7 +68,7 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
104
68
  const { action, loader, shouldRevalidate, default: Component } = m;
105
69
  // 如果 Component 不存在,记录警告
106
70
  if (!Component) {
107
- console.warn(`路由组件未找到 default 导出: ${name}`, m);
71
+ logger.warn(`路由组件未找到 default 导出: ${name}`, m);
108
72
  }
109
73
  return {
110
74
  action,
@@ -113,6 +77,22 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
113
77
  Component
114
78
  };
115
79
  }
80
+ // 获取加载组件
81
+ async function getLoadingComponent() {
82
+ if (typeof loading === 'function') {
83
+ return loading();
84
+ }
85
+ if (typeof loading === 'string' && loading !== '') {
86
+ const loadingResolver = transformResult.loadings.get(loading);
87
+ if (typeof loadingResolver === 'function') {
88
+ return loadingResolver();
89
+ }
90
+ }
91
+ if (defaultRouteLoadingComponent) {
92
+ return defaultRouteLoadingComponent();
93
+ }
94
+ return null;
95
+ }
116
96
  // 获取配置
117
97
  async function getConfig(index = false) {
118
98
  // 如果有layout和不是index,返回布局配置
@@ -168,20 +148,23 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
168
148
  }
169
149
  const reactRoute = {
170
150
  children: [],
171
- HydrateFallback: getLoadingComponent(),
151
+ hydrateFallbackElement: /*#__PURE__*/ _jsx(DefaultRouteHydrateFallback, {}),
172
152
  id: name,
173
153
  handle: getHandle(),
174
154
  lazy: async ()=>{
175
155
  const ErrorBoundary = await getErrorComponent();
176
156
  const config = await getConfig();
157
+ const LoadingComponent = await getLoadingComponent();
177
158
  // 如果配置为空,确保至少返回一个空对象,避免展开 undefined
178
159
  if (!config) {
179
160
  return {
180
- ErrorBoundary: ErrorBoundary?.default
161
+ ErrorBoundary: ErrorBoundary?.default,
162
+ HydrateFallback: LoadingComponent?.default
181
163
  };
182
164
  }
183
165
  return {
184
166
  ErrorBoundary: ErrorBoundary?.default,
167
+ HydrateFallback: LoadingComponent?.default,
185
168
  ...config
186
169
  };
187
170
  },
@@ -200,8 +183,10 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
200
183
  index: true,
201
184
  lazy: async ()=>{
202
185
  const ErrorBoundary = await getErrorComponent();
186
+ const LoadingComponent = await getLoadingComponent();
203
187
  return {
204
188
  ErrorBoundary: ErrorBoundary?.default,
189
+ HydrateFallback: LoadingComponent?.default,
205
190
  ...await getConfig(true)
206
191
  };
207
192
  }
@@ -230,8 +215,10 @@ export const transformRoutesToReactRoutes = async (routes, transformResult, defa
230
215
  index: true,
231
216
  lazy: async ()=>{
232
217
  const ErrorBoundary = await getErrorComponent();
218
+ const LoadingComponent = await getLoadingComponent();
233
219
  return {
234
220
  ErrorBoundary: ErrorBoundary?.default,
221
+ HydrateFallback: LoadingComponent?.default,
235
222
  ...await getConfig(true)
236
223
  };
237
224
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/core/router/utils/adapters/react-router/transform.tsx"],"sourcesContent":["import type { RouteConfig } from '../../../types';\nimport React from \"react\";\nimport {\n type RouteObject,\n Navigate\n} from 'react-router-dom';\nimport type { TransformRoutesResult } from '../../transform';\nimport { RouteErrorBoundary } from './RouteErrorBoundary';\nimport { Spin } from 'antd';\nimport type { ComponentImport } from '../../../types';\n\n\nexport const transformRoutesToReactRoutes = async (\n routes: RouteConfig[], \n transformResult: TransformRoutesResult,\n defaultRouteErrorComponent?: ComponentImport,\n defaultRouteLoadingComponent?: ComponentImport\n): Promise<RouteObject[]> => {\n\n /**\n * 批量处理路由\n * @param routes 路由组\n */\n function transformRouteToReactRoutes(routes: RouteConfig[]) {\n return routes.flatMap((route: RouteConfig) => transformRouteToReactRoute(route))\n }\n\n /**\n * 处理单个路由\n * @param route 路由\n */\n function transformRouteToReactRoute(route: RouteConfig): RouteObject {\n const {\n isGroup = false,\n enableRedirection = false,\n name,\n path,\n handle,\n children,\n page,\n layout,\n loading,\n errors\n } = route;\n\n // 获取错误组件\n async function getErrorComponent() {\n // 如果 errors 是函数,直接使用\n if (typeof errors === 'function') {\n return errors();\n }\n\n const errorsMap = transformResult.errors;\n\n // 判断 errors 是否为 string 且不是空字符串\n if (typeof errors === 'string' && errors !== '') {\n // 使用 errors 作为 key 获取 transformResult.errors 的值\n const errorResolver = errorsMap.get(errors);\n\n // 如果获取不到,返回 null\n if (!errorResolver) {\n return null;\n }\n\n // 如果获取到,返回对应的值(调用动态导入函数)\n if (typeof errorResolver === 'function') {\n return errorResolver();\n }\n\n return null;\n }\n\n // 如果 errors 为空,使用配置的默认错误组件或内置的 RouteErrorBoundary 组件\n if (defaultRouteErrorComponent) {\n // 如果配置了默认错误组件,使用配置的组件\n return defaultRouteErrorComponent();\n }\n\n // 如果没有配置默认错误组件,使用内置的 RouteErrorBoundary 组件\n // 直接导入而非懒加载,因为:\n // 1. RouteErrorBoundary 是框架核心组件,体积小\n // 2. 错误边界需要快速响应,直接导入速度更快\n // 3. 作为基础设施组件,应该保证可用性\n return { default: RouteErrorBoundary };\n }\n\n // 获取默认加载组件(配置的或内置的 Spin)\n function getDefaultLoadingComponent() {\n if (defaultRouteLoadingComponent) {\n // 如果配置了默认加载组件,使用 React.lazy 包装\n // 使用懒加载是因为用户可能希望自定义组件支持代码分割\n return React.lazy(() => defaultRouteLoadingComponent().then(module => ({ default: module.default || module })));\n }\n // 如果没有配置默认加载组件,使用 antd 的 Spin 作为默认组件\n // 直接导入而非懒加载,因为:\n // 1. Spin 是 antd 的基础组件,体积小\n // 2. 加载组件需要快速显示,直接导入速度更快\n // 3. 作为基础设施组件,应该保证可用性\n return Spin;\n }\n\n // 获取加载组件\n function getLoadingComponent() {\n // 如果 loading 是函数,直接使用 React.lazy 包装\n if (typeof loading === 'function') {\n return React.lazy(() => loading().then(module => ({ default: module.default || module })));\n }\n\n const loadingsMap = transformResult.loadings;\n\n // 判断 loading 是否为 string 且不是空字符串\n if (typeof loading === 'string' && loading !== '') {\n // 使用 loading 作为 key 获取 transformResult.loadings 的值\n const loadingResolver = loadingsMap.get(loading);\n\n // 如果获取不到,使用默认加载组件\n if (!loadingResolver) {\n return getDefaultLoadingComponent();\n }\n\n // 如果获取到,使用 React.lazy 包装动态导入函数\n // loadingResolver 是一个返回 Promise 的函数,Promise resolve 后的值是组件模块\n if (typeof loadingResolver === 'function') {\n return React.lazy(() => loadingResolver().then(module => ({ default: module.default || module })));\n }\n\n // 如果 loadingResolver 不是函数,使用默认加载组件\n return getDefaultLoadingComponent();\n }\n\n // 如果 loading 为空,使用默认加载组件\n return getDefaultLoadingComponent();\n }\n\n // 获取转换配置\n function convertConfig(m: any) {\n if (!m) {\n return null;\n }\n const { action, loader, shouldRevalidate, default: Component } = m;\n\n // 如果 Component 不存在,记录警告\n if (!Component) {\n console.warn(`路由组件未找到 default 导出: ${name}`, m);\n }\n\n return {\n action, // always use action\n loader, // always use loader\n shouldRevalidate,\n Component\n };\n }\n\n // 获取配置\n async function getConfig(index: boolean = false) {\n // 如果有layout和不是index,返回布局配置\n if (layout && !index) {\n // 如果 layout 是函数,直接使用\n if (typeof layout === 'function') {\n const config = await layout();\n return convertConfig(config);\n }\n\n // 如果 layout 是字符串,从 Map 中获取\n if (typeof layout === 'string') {\n const layoutResolver = transformResult.layouts.get(layout);\n if (!layoutResolver) {\n throw new Error(`未找到名为 ${layout} 的布局组件`);\n }\n const config = await layoutResolver();\n return convertConfig(config);\n }\n }\n\n let pageName = name;\n\n // 如果是notFound则转成404\n if (pageName === 'notFound') {\n pageName = '404'\n }\n\n if (page && (!children?.length || index)) {\n // 如果 page 是函数,直接使用\n if (typeof page === 'function') {\n const config = await page();\n return convertConfig(config);\n }\n\n // 如果 page 是字符串,从 Map 中获取\n if (typeof page === 'string') {\n const viewResolver = transformResult.pages.get(page);\n if (!viewResolver) {\n throw new Error(`未找到名为 ${page} 的页面组件`);\n }\n const config = await viewResolver();\n return convertConfig(config);\n }\n }\n\n return null;\n }\n\n // 获取处理信息,即额外的配置信息\n function getHandle(index: boolean = false) {\n if ((layout || isGroup) && !index) {\n return null\n }\n return {\n ...handle,\n name,\n path\n }\n }\n\n\n const reactRoute: RouteObject = {\n children: [],\n HydrateFallback: getLoadingComponent(),\n id: name,\n handle: getHandle(),\n lazy: async () => {\n const ErrorBoundary = await getErrorComponent();\n const config = await getConfig();\n\n // 如果配置为空,确保至少返回一个空对象,避免展开 undefined\n if (!config) {\n return {\n ErrorBoundary: ErrorBoundary?.default,\n };\n }\n\n return {\n ErrorBoundary: ErrorBoundary?.default,\n ...config\n };\n },\n path\n };\n\n // 处理子路由\n if (children?.length) {\n reactRoute.children = children.flatMap(child => transformRouteToReactRoute(child)).sort((a, b) => {\n const orderA = a.handle?.order ?? 99;\n const orderB = b.handle?.order ?? 99;\n return orderA - orderB;\n });\n\n if (page && !isGroup) {\n reactRoute.children.unshift({\n handle: getHandle(true),\n index: true,\n lazy: async () => {\n const ErrorBoundary = await getErrorComponent();\n return {\n ErrorBoundary: ErrorBoundary?.default,\n ...(await getConfig(true))\n };\n }\n });\n }\n\n if (enableRedirection && isGroup) {\n const [firstChild] = reactRoute.children;\n if (firstChild?.path) {\n reactRoute.children.unshift({\n index: true,\n handle: getHandle(true),\n element: <Navigate to={firstChild.path as string} replace />\n });\n }\n }\n\n }\n // 若存在 layout 且没有子路由,但同时声明了 page,则自动生成 index 子路由以渲染页面\n // 场景:/test 使用自定义 layout,且没有 children 时仍应渲染 page\n if ((!children || children.length === 0) && layout && page && !isGroup) {\n reactRoute.children = [{\n handle: getHandle(true),\n index: true,\n lazy: async () => {\n const ErrorBoundary = await getErrorComponent();\n return {\n ErrorBoundary: ErrorBoundary?.default,\n ...(await getConfig(true))\n };\n }\n }];\n }\n\n return reactRoute;\n }\n\n return transformRouteToReactRoutes(routes);\n}\n\n\n\n\n"],"names":["React","Navigate","RouteErrorBoundary","Spin","transformRoutesToReactRoutes","routes","transformResult","defaultRouteErrorComponent","defaultRouteLoadingComponent","transformRouteToReactRoutes","flatMap","route","transformRouteToReactRoute","isGroup","enableRedirection","name","path","handle","children","page","layout","loading","errors","getErrorComponent","errorsMap","errorResolver","get","default","getDefaultLoadingComponent","lazy","then","module","getLoadingComponent","loadingsMap","loadings","loadingResolver","convertConfig","m","action","loader","shouldRevalidate","Component","console","warn","getConfig","index","config","layoutResolver","layouts","Error","pageName","length","viewResolver","pages","getHandle","reactRoute","HydrateFallback","id","ErrorBoundary","child","sort","a","b","orderA","order","orderB","unshift","firstChild","element","to","replace"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/core/router/utils/adapters/react-router/transform.tsx"],"sourcesContent":["import type { RouteConfig } from '../../../types';\nimport {\n type RouteObject,\n Navigate\n} from 'react-router-dom';\nimport type { TransformRoutesResult } from '../../transform';\nimport { RouteErrorBoundary } from './RouteErrorBoundary';\nimport type { ComponentImport } from '../../../types';\nimport { logger } from '../../../../../utils';\n\nfunction DefaultRouteHydrateFallback() {\n return (\n <div style={{ padding: 16, textAlign: 'center', color: '#5f6c7b' }}>\n Loading...\n </div>\n );\n}\n\nexport const transformRoutesToReactRoutes = async (\n routes: RouteConfig[], \n transformResult: TransformRoutesResult,\n defaultRouteErrorComponent?: ComponentImport,\n defaultRouteLoadingComponent?: ComponentImport,\n): Promise<RouteObject[]> => {\n\n /**\n * 批量处理路由\n * @param routes 路由组\n */\n function transformRouteToReactRoutes(routes: RouteConfig[]) {\n return routes.flatMap((route: RouteConfig) => transformRouteToReactRoute(route))\n }\n\n /**\n * 处理单个路由\n * @param route 路由\n */\n function transformRouteToReactRoute(route: RouteConfig): RouteObject {\n const {\n isGroup = false,\n enableRedirection = false,\n name,\n path,\n handle,\n children,\n page,\n layout,\n error,\n errors,\n loading,\n } = route;\n const routeError = error ?? errors;\n\n // 获取错误组件\n async function getErrorComponent() {\n // 如果 error/errors 是函数,直接使用\n if (typeof routeError === 'function') {\n return routeError();\n }\n\n const errorsMap = transformResult.errors;\n\n // 判断 error/errors 是否为 string 且不是空字符串\n if (typeof routeError === 'string' && routeError !== '') {\n // 使用 routeError 作为 key 获取 transformResult.errors 的值\n const errorResolver = errorsMap.get(routeError);\n\n // 如果获取不到,返回 null\n if (!errorResolver) {\n return null;\n }\n\n // 如果获取到,返回对应的值(调用动态导入函数)\n if (typeof errorResolver === 'function') {\n return errorResolver();\n }\n\n return null;\n }\n\n // 如果 errors 为空,使用配置的默认错误组件或内置的 RouteErrorBoundary 组件\n if (defaultRouteErrorComponent) {\n // 如果配置了默认错误组件,使用配置的组件\n return defaultRouteErrorComponent();\n }\n\n // 如果没有配置默认错误组件,使用内置的 RouteErrorBoundary 组件\n // 直接导入而非懒加载,因为:\n // 1. RouteErrorBoundary 是框架核心组件,体积小\n // 2. 错误边界需要快速响应,直接导入速度更快\n // 3. 作为基础设施组件,应该保证可用性\n return { default: RouteErrorBoundary };\n }\n\n // 获取转换配置\n function convertConfig(m: any) {\n if (!m) {\n return null;\n }\n const { action, loader, shouldRevalidate, default: Component } = m;\n\n // 如果 Component 不存在,记录警告\n if (!Component) {\n logger.warn(`路由组件未找到 default 导出: ${name}`, m);\n }\n\n return {\n action, // always use action\n loader, // always use loader\n shouldRevalidate,\n Component\n };\n }\n\n // 获取加载组件\n async function getLoadingComponent() {\n if (typeof loading === 'function') {\n return loading();\n }\n\n if (typeof loading === 'string' && loading !== '') {\n const loadingResolver = transformResult.loadings.get(loading);\n if (typeof loadingResolver === 'function') {\n return loadingResolver();\n }\n }\n\n if (defaultRouteLoadingComponent) {\n return defaultRouteLoadingComponent();\n }\n\n return null;\n }\n\n // 获取配置\n async function getConfig(index: boolean = false) {\n // 如果有layout和不是index,返回布局配置\n if (layout && !index) {\n // 如果 layout 是函数,直接使用\n if (typeof layout === 'function') {\n const config = await layout();\n return convertConfig(config);\n }\n\n // 如果 layout 是字符串,从 Map 中获取\n if (typeof layout === 'string') {\n const layoutResolver = transformResult.layouts.get(layout);\n if (!layoutResolver) {\n throw new Error(`未找到名为 ${layout} 的布局组件`);\n }\n const config = await layoutResolver();\n return convertConfig(config);\n }\n }\n\n let pageName = name;\n\n // 如果是notFound则转成404\n if (pageName === 'notFound') {\n pageName = '404'\n }\n\n if (page && (!children?.length || index)) {\n // 如果 page 是函数,直接使用\n if (typeof page === 'function') {\n const config = await page();\n return convertConfig(config);\n }\n\n // 如果 page 是字符串,从 Map 中获取\n if (typeof page === 'string') {\n const viewResolver = transformResult.pages.get(page);\n if (!viewResolver) {\n throw new Error(`未找到名为 ${page} 的页面组件`);\n }\n const config = await viewResolver();\n return convertConfig(config);\n }\n }\n\n return null;\n }\n\n // 获取处理信息,即额外的配置信息\n function getHandle(index: boolean = false) {\n if ((layout || isGroup) && !index) {\n return null\n }\n return {\n ...handle,\n name,\n path\n }\n }\n\n\n const reactRoute: RouteObject = {\n children: [],\n hydrateFallbackElement: <DefaultRouteHydrateFallback />,\n id: name,\n handle: getHandle(),\n lazy: async () => {\n const ErrorBoundary = await getErrorComponent();\n const config = await getConfig();\n const LoadingComponent = await getLoadingComponent();\n\n // 如果配置为空,确保至少返回一个空对象,避免展开 undefined\n if (!config) {\n return {\n ErrorBoundary: ErrorBoundary?.default,\n HydrateFallback: LoadingComponent?.default,\n };\n }\n\n return {\n ErrorBoundary: ErrorBoundary?.default,\n HydrateFallback: LoadingComponent?.default,\n ...config\n };\n },\n path\n };\n\n // 处理子路由\n if (children?.length) {\n reactRoute.children = children.flatMap(child => transformRouteToReactRoute(child)).sort((a, b) => {\n const orderA = a.handle?.order ?? 99;\n const orderB = b.handle?.order ?? 99;\n return orderA - orderB;\n });\n\n if (page && !isGroup) {\n reactRoute.children.unshift({\n handle: getHandle(true),\n index: true,\n lazy: async () => {\n const ErrorBoundary = await getErrorComponent();\n const LoadingComponent = await getLoadingComponent();\n return {\n ErrorBoundary: ErrorBoundary?.default,\n HydrateFallback: LoadingComponent?.default,\n ...(await getConfig(true))\n };\n }\n });\n }\n\n if (enableRedirection && isGroup) {\n const [firstChild] = reactRoute.children;\n if (firstChild?.path) {\n reactRoute.children.unshift({\n index: true,\n handle: getHandle(true),\n element: <Navigate to={firstChild.path as string} replace />\n });\n }\n }\n\n }\n // 若存在 layout 且没有子路由,但同时声明了 page,则自动生成 index 子路由以渲染页面\n // 场景:/test 使用自定义 layout,且没有 children 时仍应渲染 page\n if ((!children || children.length === 0) && layout && page && !isGroup) {\n reactRoute.children = [{\n handle: getHandle(true),\n index: true,\n lazy: async () => {\n const ErrorBoundary = await getErrorComponent();\n const LoadingComponent = await getLoadingComponent();\n return {\n ErrorBoundary: ErrorBoundary?.default,\n HydrateFallback: LoadingComponent?.default,\n ...(await getConfig(true))\n };\n }\n }];\n }\n\n return reactRoute;\n }\n\n return transformRouteToReactRoutes(routes);\n}\n"],"names":["Navigate","RouteErrorBoundary","logger","DefaultRouteHydrateFallback","div","style","padding","textAlign","color","transformRoutesToReactRoutes","routes","transformResult","defaultRouteErrorComponent","defaultRouteLoadingComponent","transformRouteToReactRoutes","flatMap","route","transformRouteToReactRoute","isGroup","enableRedirection","name","path","handle","children","page","layout","error","errors","loading","routeError","getErrorComponent","errorsMap","errorResolver","get","default","convertConfig","m","action","loader","shouldRevalidate","Component","warn","getLoadingComponent","loadingResolver","loadings","getConfig","index","config","layoutResolver","layouts","Error","pageName","length","viewResolver","pages","getHandle","reactRoute","hydrateFallbackElement","id","lazy","ErrorBoundary","LoadingComponent","HydrateFallback","child","sort","a","b","orderA","order","orderB","unshift","firstChild","element","to","replace"],"mappings":"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"}
@@ -122,7 +122,12 @@ function _interop_require_wildcard(obj, nodeInterop) {
122
122
  */ const DEFAULT_OPTIONS = {
123
123
  pathValidation: {
124
124
  enablePathValidation: true,
125
- allowedPathPrefixes: [],
125
+ // 默认仅允许常见本地模块路径,生产环境建议进一步收紧。
126
+ allowedPathPrefixes: [
127
+ '@/',
128
+ './',
129
+ '../'
130
+ ],
126
131
  maxPathLength: 500,
127
132
  allowAbsolutePaths: false
128
133
  },
@@ -184,62 +189,62 @@ function _interop_require_wildcard(obj, nodeInterop) {
184
189
  */ function simpleHash(str) {
185
190
  return optimizedHash(str);
186
191
  }
187
- /**
188
- * 配置序列化缓存(避免重复序列化)
189
- */ const configStringCache = new Map();
192
+ function serializeComponentRef(value) {
193
+ if (typeof value === 'string') {
194
+ return {
195
+ str: value
196
+ };
197
+ }
198
+ if (typeof value === 'function') {
199
+ // 函数引用无法稳定序列化源码,使用名称和长度参与哈希,避免同名不同体完全碰撞。
200
+ const fnText = String(value);
201
+ return {
202
+ fn: `${value.name || 'anonymous'}:${fnText.length}`
203
+ };
204
+ }
205
+ return {};
206
+ }
207
+ function serializeRouteConfig(route) {
208
+ const page = serializeComponentRef(route.page);
209
+ const layout = serializeComponentRef(route.layout);
210
+ const routeError = serializeComponentRef(route.error ?? route.errors);
211
+ const loading = serializeComponentRef(route.loading);
212
+ return {
213
+ name: route.name,
214
+ path: route.path,
215
+ page: page.str,
216
+ pageFn: page.fn,
217
+ layout: layout.str,
218
+ layoutFn: layout.fn,
219
+ error: routeError.str,
220
+ errorFn: routeError.fn,
221
+ loading: loading.str,
222
+ loadingFn: loading.fn,
223
+ isGroup: route.isGroup,
224
+ enableRedirection: route.enableRedirection,
225
+ handle: route.handle ? {
226
+ title: route.handle.title,
227
+ order: route.handle.order,
228
+ needLogin: route.handle.needLogin,
229
+ roles: Array.isArray(route.handle.roles) ? [
230
+ ...route.handle.roles
231
+ ] : undefined
232
+ } : undefined,
233
+ children: route.children?.map((child)=>serializeRouteConfig(child))
234
+ };
235
+ }
190
236
  /**
191
237
  * 生成配置哈希(用于缓存键)
192
238
  * 优化:缓存序列化结果,避免重复序列化
193
239
  */ function generateConfigHash(routes) {
194
240
  try {
195
- // 快速检查:如果路由数量为 0,直接返回
196
241
  if (routes.length === 0) {
197
242
  return 'empty';
198
243
  }
199
- // 使用路由数量作为快速键的一部分
200
- const quickKey = `${routes.length}_${routes[0]?.name || ''}_${routes[routes.length - 1]?.name || ''}`;
201
- // 检查序列化缓存
202
- if (configStringCache.has(quickKey)) {
203
- const cachedStr = configStringCache.get(quickKey);
204
- // 验证缓存是否仍然有效(简单检查)
205
- const currentStr = JSON.stringify(routes, null, 0).substring(0, 100);
206
- if (cachedStr.startsWith(currentStr.substring(0, 50))) {
207
- return simpleHash(cachedStr);
208
- }
209
- }
210
- // 使用 JSON.stringify 生成配置的字符串表示
211
- // 只包含影响转换结果的字段
212
- const configStr = JSON.stringify(routes, (key, value)=>{
213
- // 只序列化相关字段
214
- if ([
215
- 'name',
216
- 'path',
217
- 'page',
218
- 'layout',
219
- 'errors',
220
- 'loading',
221
- 'isGroup',
222
- 'enableRedirection',
223
- 'children'
224
- ].includes(key)) {
225
- return value;
226
- }
227
- if (key === 'handle' && value && typeof value === 'object') {
228
- // 只序列化 handle 的基本字段
229
- return {
230
- title: value.title,
231
- order: value.order
232
- };
233
- }
234
- return undefined;
235
- });
236
- // 缓存序列化结果(限制缓存大小)
237
- if (configStringCache.size < 20) {
238
- configStringCache.set(quickKey, configStr);
239
- }
244
+ const serializedRoutes = routes.map((route)=>serializeRouteConfig(route));
245
+ const configStr = JSON.stringify(serializedRoutes);
240
246
  return simpleHash(configStr);
241
247
  } catch {
242
- // 如果序列化失败,返回空字符串(不使用缓存)
243
248
  return '';
244
249
  }
245
250
  }
@@ -252,6 +257,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
252
257
  const ABSOLUTE_PATH_REGEX = /^\/|^[A-Za-z]:\\/;
253
258
  const CONTROL_CHAR_REGEX = /[\x00-\x1f\x7f]/;
254
259
  const NULL_BYTE_REGEX = /%00|\\0|\x00/;
260
+ const URL_SCHEME_REGEX = /^[A-Za-z][A-Za-z0-9+.-]*:/;
255
261
  // 保留供未来使用(命令注入检测)
256
262
  // const COMMAND_INJECTION_REGEX = /[;|&$`]/;
257
263
  // const ALLOWED_CHARS_REGEX = /^[a-zA-Z0-9\/\-_.@]+$/;
@@ -309,6 +315,13 @@ const NULL_BYTE_REGEX = /%00|\\0|\x00/;
309
315
  // : '路径验证失败',
310
316
  // };
311
317
  // }
318
+ // 禁止 URL scheme 导入(如 http:, https:, data:, javascript:)
319
+ if (URL_SCHEME_REGEX.test(path)) {
320
+ return {
321
+ valid: false,
322
+ error: process.env.NODE_ENV === 'development' ? '不允许使用带协议的路径' : '路径验证失败'
323
+ };
324
+ }
312
325
  // 检查绝对路径(使用预编译正则)
313
326
  if (!config.allowAbsolutePaths && ABSOLUTE_PATH_REGEX.test(path)) {
314
327
  return {
@@ -316,6 +329,13 @@ const NULL_BYTE_REGEX = /%00|\\0|\x00/;
316
329
  error: process.env.NODE_ENV === 'development' ? '不允许使用绝对路径' : '路径验证失败'
317
330
  };
318
331
  }
332
+ // 默认仅允许相对路径和别名路径,避免把第三方包名作为动态入口。
333
+ if (!path.startsWith('@/') && !path.startsWith('./') && !path.startsWith('../')) {
334
+ return {
335
+ valid: false,
336
+ error: process.env.NODE_ENV === 'development' ? '仅允许使用 @/、./、../ 开头的模块路径' : '路径验证失败'
337
+ };
338
+ }
319
339
  // 检查路径前缀白名单(优化:使用 Set 提高查找速度)
320
340
  if (config.allowedPathPrefixes.length > 0) {
321
341
  const prefixSet = new Set(config.allowedPathPrefixes);
@@ -390,7 +410,7 @@ const NULL_BYTE_REGEX = /%00|\\0|\x00/;
390
410
  */ function createDynamicImport(path) {
391
411
  // 使用类型断言,因为 TypeScript 的 import() 需要静态字符串
392
412
  // 但在运行时,我们可以使用动态路径
393
- return ()=>Promise.resolve(path).then((p)=>/*#__PURE__*/ _interop_require_wildcard(require(p)));
413
+ return ()=>Promise.resolve(/* @vite-ignore */ path).then((p)=>/*#__PURE__*/ _interop_require_wildcard(require(p)));
394
414
  }
395
415
  /**
396
416
  * 提取并验证组件路径到 Map 中
@@ -537,9 +557,10 @@ const stackNodePool = new StackNodePool();
537
557
  map: result.layouts
538
558
  });
539
559
  }
540
- if (route.errors && typeof route.errors === 'string') {
560
+ const routeError = route.error ?? route.errors;
561
+ if (routeError && typeof routeError === 'string') {
541
562
  pathsToProcess.push({
542
- path: route.errors,
563
+ path: routeError,
543
564
  map: result.errors
544
565
  });
545
566
  }
@@ -584,7 +605,7 @@ const stackNodePool = new StackNodePool();
584
605
  // 提取组件路径到 Map 中(同时进行验证)
585
606
  extractAndValidatePath(route.page, result.pages, config, options);
586
607
  extractAndValidatePath(route.layout, result.layouts, config, options);
587
- extractAndValidatePath(route.errors, result.errors, config, options);
608
+ extractAndValidatePath(route.error ?? route.errors, result.errors, config, options);
588
609
  extractAndValidatePath(route.loading, result.loadings, config, options);
589
610
  // 处理子路由
590
611
  if (route.children && Array.isArray(route.children) && route.children.length > 0) {
@@ -708,26 +729,14 @@ async function transformRoutes(routes, options = {}) {
708
729
  if (mergedOptions.performance.enableCache && transformCache) {
709
730
  const configHash = generateConfigHash(routesArray);
710
731
  if (configHash) {
711
- // 使用结构化克隆(如果可用)或浅拷贝 + 深拷贝 routes
712
- let cachedResult;
713
- if (typeof structuredClone !== 'undefined') {
714
- // 使用结构化克隆(更快且更安全)
715
- cachedResult = structuredClone(result);
716
- // Map 需要手动克隆(structuredClone 可能不支持 Map
717
- cachedResult.pages = new Map(result.pages);
718
- cachedResult.layouts = new Map(result.layouts);
719
- cachedResult.errors = new Map(result.errors);
720
- cachedResult.loadings = new Map(result.loadings);
721
- } else {
722
- // 回退到手动深拷贝
723
- cachedResult = {
724
- pages: new Map(result.pages),
725
- layouts: new Map(result.layouts),
726
- errors: new Map(result.errors),
727
- loadings: new Map(result.loadings),
728
- routes: JSON.parse(JSON.stringify(result.routes))
729
- };
730
- }
732
+ // 注意:Map 中包含函数值,structuredClone 会失败;统一使用手动克隆。
733
+ const cachedResult = {
734
+ pages: new Map(result.pages),
735
+ layouts: new Map(result.layouts),
736
+ errors: new Map(result.errors),
737
+ loadings: new Map(result.loadings),
738
+ routes: JSON.parse(JSON.stringify(result.routes))
739
+ };
731
740
  transformCache.set(configHash, {
732
741
  result: cachedResult,
733
742
  timestamp: Date.now(),