@vlian/framework 1.2.57 → 1.2.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/README.md +15 -3
  2. package/dist/analytics/index.cjs +1 -24
  3. package/dist/analytics/index.js +1 -3
  4. package/dist/analytics.umd.js +8 -208
  5. package/dist/components/LocaleSwitch.cjs +1 -118
  6. package/dist/components/LocaleSwitch.js +1 -103
  7. package/dist/components/ThemeSwitch.cjs +1 -117
  8. package/dist/components/ThemeSwitch.js +1 -102
  9. package/dist/components/index.cjs +1 -22
  10. package/dist/components/index.js +1 -4
  11. package/dist/components/persistence.cjs +1 -60
  12. package/dist/components/persistence.js +1 -39
  13. package/dist/core/Test.cjs +1 -66
  14. package/dist/core/Test.js +1 -15
  15. package/dist/core/app/AppContext.cjs +1 -350
  16. package/dist/core/app/AppContext.js +1 -339
  17. package/dist/core/app/AppContext.types.cjs +1 -6
  18. package/dist/core/app/AppContext.types.js +1 -5
  19. package/dist/core/app/BasicLayout.cjs +1 -124
  20. package/dist/core/app/BasicLayout.js +1 -74
  21. package/dist/core/app/DefaultApp.cjs +1 -152
  22. package/dist/core/app/DefaultApp.js +1 -143
  23. package/dist/core/app/index.cjs +1 -43
  24. package/dist/core/app/index.js +1 -7
  25. package/dist/core/config/AppConfig.cjs +1 -141
  26. package/dist/core/config/AppConfig.js +1 -133
  27. package/dist/core/config/ConfigLoader.cjs +1 -325
  28. package/dist/core/config/ConfigLoader.js +1 -311
  29. package/dist/core/config/ConfigValidator.cjs +2 -135
  30. package/dist/core/config/ConfigValidator.js +2 -121
  31. package/dist/core/config/index.cjs +1 -30
  32. package/dist/core/config/index.js +1 -7
  33. package/dist/core/dev/DevTools.cjs +1 -228
  34. package/dist/core/dev/DevTools.js +1 -210
  35. package/dist/core/error/ErrorBoundary.cjs +1 -403
  36. package/dist/core/error/ErrorBoundary.js +1 -399
  37. package/dist/core/error/ErrorHandler.cjs +1 -277
  38. package/dist/core/error/ErrorHandler.js +1 -261
  39. package/dist/core/error/index.cjs +1 -36
  40. package/dist/core/error/index.js +1 -6
  41. package/dist/core/event/AppEventBus.cjs +1 -446
  42. package/dist/core/event/AppEventBus.js +1 -438
  43. package/dist/core/event/frameworkEvents.cjs +1 -143
  44. package/dist/core/event/frameworkEvents.js +1 -135
  45. package/dist/core/event/hooks.cjs +1 -71
  46. package/dist/core/event/hooks.js +1 -95
  47. package/dist/core/event/index.cjs +1 -43
  48. package/dist/core/event/index.js +1 -10
  49. package/dist/core/event/types.cjs +1 -64
  50. package/dist/core/event/types.js +1 -56
  51. package/dist/core/event/useEventBus.cjs +1 -27
  52. package/dist/core/event/useEventBus.js +1 -39
  53. package/dist/core/index.cjs +1 -142
  54. package/dist/core/index.js +1 -69
  55. package/dist/core/initialization/InitializationErrorThrower.cjs +1 -77
  56. package/dist/core/initialization/InitializationErrorThrower.js +1 -30
  57. package/dist/core/initialization/index.cjs +1 -28
  58. package/dist/core/initialization/index.js +1 -7
  59. package/dist/core/initialization/initialization.cjs +1 -66
  60. package/dist/core/initialization/initialization.js +1 -78
  61. package/dist/core/initialization/initializationErrorState.cjs +1 -68
  62. package/dist/core/initialization/initializationErrorState.js +1 -60
  63. package/dist/core/kernel/defaultAdapters.cjs +1 -186
  64. package/dist/core/kernel/defaultAdapters.js +1 -176
  65. package/dist/core/kernel/errors.cjs +1 -71
  66. package/dist/core/kernel/errors.js +1 -53
  67. package/dist/core/kernel/index.cjs +1 -22
  68. package/dist/core/kernel/index.js +1 -4
  69. package/dist/core/kernel/startKernel.cjs +1 -202
  70. package/dist/core/kernel/startKernel.js +1 -192
  71. package/dist/core/kernel/types.cjs +1 -6
  72. package/dist/core/kernel/types.js +1 -3
  73. package/dist/core/middleware.cjs +1 -75
  74. package/dist/core/middleware.js +1 -61
  75. package/dist/core/plugin/PluginEventBus.cjs +1 -300
  76. package/dist/core/plugin/PluginEventBus.js +1 -286
  77. package/dist/core/plugin/PluginSandbox.cjs +1 -139
  78. package/dist/core/plugin/PluginSandbox.js +1 -125
  79. package/dist/core/plugin.cjs +1 -496
  80. package/dist/core/plugin.js +1 -438
  81. package/dist/core/router/RouterManager.cjs +1 -288
  82. package/dist/core/router/RouterManager.js +1 -272
  83. package/dist/core/router/adapter/AdapterManager.cjs +1 -237
  84. package/dist/core/router/adapter/AdapterManager.js +1 -221
  85. package/dist/core/router/adapter/index.cjs +1 -24
  86. package/dist/core/router/adapter/index.js +1 -7
  87. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -130
  88. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -116
  89. package/dist/core/router/adapter/react-router/index.cjs +1 -22
  90. package/dist/core/router/adapter/react-router/index.js +1 -5
  91. package/dist/core/router/adapter/types.cjs +1 -8
  92. package/dist/core/router/adapter/types.js +1 -7
  93. package/dist/core/router/dev/RouterDevTools.cjs +1 -262
  94. package/dist/core/router/dev/RouterDevTools.js +1 -211
  95. package/dist/core/router/dev/index.cjs +1 -22
  96. package/dist/core/router/dev/index.js +1 -5
  97. package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -195
  98. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -179
  99. package/dist/core/router/dynamic/index.cjs +1 -22
  100. package/dist/core/router/dynamic/index.js +1 -5
  101. package/dist/core/router/errors/RouterError.cjs +1 -63
  102. package/dist/core/router/errors/RouterError.js +1 -48
  103. package/dist/core/router/errors/index.cjs +1 -22
  104. package/dist/core/router/errors/index.js +1 -5
  105. package/dist/core/router/index.cjs +1 -38
  106. package/dist/core/router/index.js +1 -32
  107. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -146
  108. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -130
  109. package/dist/core/router/lifecycle/index.cjs +1 -22
  110. package/dist/core/router/lifecycle/index.js +1 -5
  111. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -195
  112. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -179
  113. package/dist/core/router/middleware/auth.cjs +1 -68
  114. package/dist/core/router/middleware/auth.js +1 -63
  115. package/dist/core/router/middleware/index.cjs +1 -24
  116. package/dist/core/router/middleware/index.js +1 -7
  117. package/dist/core/router/middleware/types.cjs +1 -8
  118. package/dist/core/router/middleware/types.js +1 -7
  119. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -229
  120. package/dist/core/router/monitoring/RouterMonitoring.js +1 -213
  121. package/dist/core/router/monitoring/index.cjs +1 -22
  122. package/dist/core/router/monitoring/index.js +1 -5
  123. package/dist/core/router/navigation/RouterNavigation.cjs +1 -241
  124. package/dist/core/router/navigation/RouterNavigation.js +1 -192
  125. package/dist/core/router/navigation/index.cjs +1 -22
  126. package/dist/core/router/navigation/index.js +1 -5
  127. package/dist/core/router/performance/RouteCache.cjs +1 -307
  128. package/dist/core/router/performance/RouteCache.js +1 -291
  129. package/dist/core/router/performance/RoutePreloader.cjs +1 -294
  130. package/dist/core/router/performance/RoutePreloader.js +1 -277
  131. package/dist/core/router/performance/index.cjs +1 -23
  132. package/dist/core/router/performance/index.js +1 -6
  133. package/dist/core/router/plugin/RouterPluginManager.cjs +1 -264
  134. package/dist/core/router/plugin/RouterPluginManager.js +1 -248
  135. package/dist/core/router/plugin/index.cjs +1 -23
  136. package/dist/core/router/plugin/index.js +1 -6
  137. package/dist/core/router/plugin/types.cjs +1 -41
  138. package/dist/core/router/plugin/types.js +1 -33
  139. package/dist/core/router/types.cjs +1 -6
  140. package/dist/core/router/types.js +1 -5
  141. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -131
  142. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +1 -121
  143. package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -252
  144. package/dist/core/router/utils/adapters/react-router/transform.js +1 -242
  145. package/dist/core/router/utils/transform.cjs +1 -782
  146. package/dist/core/router/utils/transform.js +1 -791
  147. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -85
  148. package/dist/core/router/validation/RouterConfigValidator.js +2 -77
  149. package/dist/core/router/validation/index.cjs +1 -23
  150. package/dist/core/router/validation/index.js +1 -6
  151. package/dist/core/router/validation/schema.cjs +1 -161
  152. package/dist/core/router/validation/schema.js +1 -151
  153. package/dist/core/router/version/RouteVersionManager.cjs +1 -207
  154. package/dist/core/router/version/RouteVersionManager.js +1 -191
  155. package/dist/core/router/version/index.cjs +1 -22
  156. package/dist/core/router/version/index.js +1 -5
  157. package/dist/core/splash/SplashScreen.cjs +1 -343
  158. package/dist/core/splash/SplashScreen.js +1 -293
  159. package/dist/core/splash/index.cjs +1 -24
  160. package/dist/core/splash/index.js +1 -6
  161. package/dist/core/splash/splashScreenUtils.cjs +1 -40
  162. package/dist/core/splash/splashScreenUtils.js +1 -30
  163. package/dist/core/startup/AppInstance.cjs +1 -241
  164. package/dist/core/startup/AppInstance.js +1 -226
  165. package/dist/core/startup/environment.cjs +1 -171
  166. package/dist/core/startup/environment.js +1 -154
  167. package/dist/core/startup/index.cjs +1 -25
  168. package/dist/core/startup/index.js +1 -8
  169. package/dist/core/startup/initializeServices.cjs +1 -228
  170. package/dist/core/startup/initializeServices.js +1 -188
  171. package/dist/core/startup/performanceTracker.cjs +1 -181
  172. package/dist/core/startup/performanceTracker.js +1 -167
  173. package/dist/core/startup/renderApp.cjs +1 -316
  174. package/dist/core/startup/renderApp.js +1 -267
  175. package/dist/core/startup/startApp.cjs +1 -319
  176. package/dist/core/startup/startApp.js +1 -315
  177. package/dist/core/types.cjs +1 -6
  178. package/dist/core/types.js +1 -5
  179. package/dist/index.cjs +1 -54
  180. package/dist/index.js +1 -11
  181. package/dist/index.umd.cjs +1 -29
  182. package/dist/index.umd.js +362 -13233
  183. package/dist/kernel/constants.cjs +1 -67
  184. package/dist/kernel/constants.js +1 -43
  185. package/dist/kernel/index.cjs +1 -40
  186. package/dist/kernel/index.js +1 -4
  187. package/dist/kernel/kernel.cjs +1 -297
  188. package/dist/kernel/kernel.js +1 -273
  189. package/dist/kernel/manager/cacheManager.cjs +1 -48
  190. package/dist/kernel/manager/cacheManager.js +1 -38
  191. package/dist/kernel/manager/i18n/I18nManager.cjs +1 -93
  192. package/dist/kernel/manager/i18n/I18nManager.js +1 -83
  193. package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -62
  194. package/dist/kernel/manager/i18n/i18n.persistence.js +1 -41
  195. package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -88
  196. package/dist/kernel/manager/i18n/i18n.schema.js +1 -64
  197. package/dist/kernel/manager/i18n/index.cjs +1 -13
  198. package/dist/kernel/manager/i18n/index.js +1 -3
  199. package/dist/kernel/manager/i18nManager.cjs +1 -13
  200. package/dist/kernel/manager/i18nManager.js +1 -3
  201. package/dist/kernel/manager/index.cjs +1 -30
  202. package/dist/kernel/manager/index.js +1 -6
  203. package/dist/kernel/manager/logger/LoggerManager.cjs +1 -109
  204. package/dist/kernel/manager/logger/LoggerManager.js +1 -99
  205. package/dist/kernel/manager/logger/index.cjs +1 -13
  206. package/dist/kernel/manager/logger/index.js +1 -3
  207. package/dist/kernel/manager/logger/logger.persistence.cjs +1 -64
  208. package/dist/kernel/manager/logger/logger.persistence.js +1 -43
  209. package/dist/kernel/manager/logger/logger.schema.cjs +1 -76
  210. package/dist/kernel/manager/logger/logger.schema.js +1 -55
  211. package/dist/kernel/manager/loggerManager.cjs +1 -13
  212. package/dist/kernel/manager/loggerManager.js +1 -3
  213. package/dist/kernel/manager/theme/ThemeManager.cjs +1 -86
  214. package/dist/kernel/manager/theme/ThemeManager.js +1 -76
  215. package/dist/kernel/manager/theme/index.cjs +1 -13
  216. package/dist/kernel/manager/theme/index.js +1 -3
  217. package/dist/kernel/manager/theme/theme.dom.cjs +1 -63
  218. package/dist/kernel/manager/theme/theme.dom.js +1 -45
  219. package/dist/kernel/manager/theme/theme.persistence.cjs +1 -59
  220. package/dist/kernel/manager/theme/theme.persistence.js +1 -38
  221. package/dist/kernel/manager/theme/theme.schema.cjs +1 -124
  222. package/dist/kernel/manager/theme/theme.schema.js +1 -97
  223. package/dist/kernel/manager/themeManager.cjs +1 -13
  224. package/dist/kernel/manager/themeManager.js +1 -3
  225. package/dist/kernel/types.cjs +1 -6
  226. package/dist/kernel/types.js +1 -3
  227. package/dist/library/index.cjs +1 -21
  228. package/dist/library/index.js +1 -4
  229. package/dist/library/locale/index.cjs +1 -41
  230. package/dist/library/locale/index.js +1 -12
  231. package/dist/library/locale/langs/en-us/index.cjs +1 -34
  232. package/dist/library/locale/langs/en-us/index.js +1 -24
  233. package/dist/library/locale/langs/zh-cn/index.cjs +1 -34
  234. package/dist/library/locale/langs/zh-cn/index.js +1 -24
  235. package/dist/library/locale/types.cjs +1 -6
  236. package/dist/library/locale/types.js +1 -3
  237. package/dist/library/storage/cache.cjs +1 -245
  238. package/dist/library/storage/cache.js +1 -237
  239. package/dist/library/storage/encryption.cjs +1 -149
  240. package/dist/library/storage/encryption.js +1 -141
  241. package/dist/library/storage/index.cjs +1 -126
  242. package/dist/library/storage/index.js +1 -106
  243. package/dist/state/StateManager.cjs +1 -168
  244. package/dist/state/StateManager.js +1 -160
  245. package/dist/state/adapters/AdapterFactory.cjs +1 -91
  246. package/dist/state/adapters/AdapterFactory.js +1 -85
  247. package/dist/state/adapters/DefaultAdapter.cjs +1 -77
  248. package/dist/state/adapters/DefaultAdapter.js +1 -71
  249. package/dist/state/adapters/ReduxAdapter.cjs +1 -445
  250. package/dist/state/adapters/ReduxAdapter.js +1 -439
  251. package/dist/state/adapters/ZustandAdapter.cjs +1 -71
  252. package/dist/state/adapters/ZustandAdapter.js +1 -70
  253. package/dist/state/adapters/index.cjs +1 -46
  254. package/dist/state/adapters/index.js +1 -9
  255. package/dist/state/adapters/types.cjs +1 -22
  256. package/dist/state/adapters/types.js +1 -5
  257. package/dist/state/core/DerivedStateInstance.cjs +1 -176
  258. package/dist/state/core/DerivedStateInstance.js +1 -173
  259. package/dist/state/core/StateInstance.cjs +1 -172
  260. package/dist/state/core/StateInstance.js +1 -168
  261. package/dist/state/core/StateRegistry.cjs +1 -112
  262. package/dist/state/core/StateRegistry.js +1 -106
  263. package/dist/state/core/StateScope.cjs +1 -139
  264. package/dist/state/core/StateScope.js +1 -133
  265. package/dist/state/core/index.cjs +1 -32
  266. package/dist/state/core/index.js +1 -8
  267. package/dist/state/index.cjs +1 -32
  268. package/dist/state/index.js +1 -12
  269. package/dist/state/types.cjs +1 -14
  270. package/dist/state/types.js +1 -13
  271. package/dist/state.umd.js +22 -1395
  272. package/dist/types.cjs +1 -6
  273. package/dist/types.js +1 -3
  274. package/dist/utils/analytics.cjs +1 -219
  275. package/dist/utils/analytics.js +1 -204
  276. package/dist/utils/configSecurity.cjs +3 -184
  277. package/dist/utils/configSecurity.js +3 -176
  278. package/dist/utils/csrf.cjs +1 -20
  279. package/dist/utils/csrf.js +1 -3
  280. package/dist/utils/errors/ErrorCodes.cjs +1 -27
  281. package/dist/utils/errors/ErrorCodes.js +1 -3
  282. package/dist/utils/errors.cjs +1 -113
  283. package/dist/utils/errors.js +1 -18
  284. package/dist/utils/index.cjs +1 -137
  285. package/dist/utils/index.js +1 -48
  286. package/dist/utils/logger.cjs +1 -27
  287. package/dist/utils/logger.js +1 -3
  288. package/dist/utils/logger.types.cjs +1 -13
  289. package/dist/utils/logger.types.js +1 -3
  290. package/dist/utils/monitoring.cjs +1 -20
  291. package/dist/utils/monitoring.js +1 -3
  292. package/dist/utils/performance.cjs +1 -24
  293. package/dist/utils/performance.js +1 -3
  294. package/dist/utils/resourceLoader.cjs +1 -24
  295. package/dist/utils/resourceLoader.js +1 -3
  296. package/dist/utils/runtimeSecurity.cjs +1 -13
  297. package/dist/utils/runtimeSecurity.js +1 -3
  298. package/dist/utils/security.cjs +1 -21
  299. package/dist/utils/security.js +1 -3
  300. package/dist/utils/traceId.cjs +1 -39
  301. package/dist/utils/traceId.js +1 -3
  302. package/dist/utils/validation.cjs +1 -21
  303. package/dist/utils/validation.js +1 -3
  304. package/package.json +9 -6
  305. package/dist/analytics/index.cjs.map +0 -1
  306. package/dist/analytics/index.js.map +0 -1
  307. package/dist/analytics.umd.js.map +0 -1
  308. package/dist/components/LocaleSwitch.cjs.map +0 -1
  309. package/dist/components/LocaleSwitch.js.map +0 -1
  310. package/dist/components/ThemeSwitch.cjs.map +0 -1
  311. package/dist/components/ThemeSwitch.js.map +0 -1
  312. package/dist/components/index.cjs.map +0 -1
  313. package/dist/components/index.js.map +0 -1
  314. package/dist/components/persistence.cjs.map +0 -1
  315. package/dist/components/persistence.js.map +0 -1
  316. package/dist/core/Test.cjs.map +0 -1
  317. package/dist/core/Test.js.map +0 -1
  318. package/dist/core/app/AppContext.cjs.map +0 -1
  319. package/dist/core/app/AppContext.js.map +0 -1
  320. package/dist/core/app/AppContext.types.cjs.map +0 -1
  321. package/dist/core/app/AppContext.types.js.map +0 -1
  322. package/dist/core/app/BasicLayout.cjs.map +0 -1
  323. package/dist/core/app/BasicLayout.js.map +0 -1
  324. package/dist/core/app/DefaultApp.cjs.map +0 -1
  325. package/dist/core/app/DefaultApp.js.map +0 -1
  326. package/dist/core/app/index.cjs.map +0 -1
  327. package/dist/core/app/index.js.map +0 -1
  328. package/dist/core/config/AppConfig.cjs.map +0 -1
  329. package/dist/core/config/AppConfig.js.map +0 -1
  330. package/dist/core/config/ConfigLoader.cjs.map +0 -1
  331. package/dist/core/config/ConfigLoader.js.map +0 -1
  332. package/dist/core/config/ConfigValidator.cjs.map +0 -1
  333. package/dist/core/config/ConfigValidator.js.map +0 -1
  334. package/dist/core/config/index.cjs.map +0 -1
  335. package/dist/core/config/index.js.map +0 -1
  336. package/dist/core/dev/DevTools.cjs.map +0 -1
  337. package/dist/core/dev/DevTools.js.map +0 -1
  338. package/dist/core/error/ErrorBoundary.cjs.map +0 -1
  339. package/dist/core/error/ErrorBoundary.js.map +0 -1
  340. package/dist/core/error/ErrorHandler.cjs.map +0 -1
  341. package/dist/core/error/ErrorHandler.js.map +0 -1
  342. package/dist/core/error/index.cjs.map +0 -1
  343. package/dist/core/error/index.js.map +0 -1
  344. package/dist/core/event/AppEventBus.cjs.map +0 -1
  345. package/dist/core/event/AppEventBus.js.map +0 -1
  346. package/dist/core/event/frameworkEvents.cjs.map +0 -1
  347. package/dist/core/event/frameworkEvents.js.map +0 -1
  348. package/dist/core/event/hooks.cjs.map +0 -1
  349. package/dist/core/event/hooks.js.map +0 -1
  350. package/dist/core/event/index.cjs.map +0 -1
  351. package/dist/core/event/index.js.map +0 -1
  352. package/dist/core/event/types.cjs.map +0 -1
  353. package/dist/core/event/types.js.map +0 -1
  354. package/dist/core/event/useEventBus.cjs.map +0 -1
  355. package/dist/core/event/useEventBus.js.map +0 -1
  356. package/dist/core/index.cjs.map +0 -1
  357. package/dist/core/index.js.map +0 -1
  358. package/dist/core/initialization/InitializationErrorThrower.cjs.map +0 -1
  359. package/dist/core/initialization/InitializationErrorThrower.js.map +0 -1
  360. package/dist/core/initialization/index.cjs.map +0 -1
  361. package/dist/core/initialization/index.js.map +0 -1
  362. package/dist/core/initialization/initialization.cjs.map +0 -1
  363. package/dist/core/initialization/initialization.js.map +0 -1
  364. package/dist/core/initialization/initializationErrorState.cjs.map +0 -1
  365. package/dist/core/initialization/initializationErrorState.js.map +0 -1
  366. package/dist/core/kernel/defaultAdapters.cjs.map +0 -1
  367. package/dist/core/kernel/defaultAdapters.js.map +0 -1
  368. package/dist/core/kernel/errors.cjs.map +0 -1
  369. package/dist/core/kernel/errors.js.map +0 -1
  370. package/dist/core/kernel/index.cjs.map +0 -1
  371. package/dist/core/kernel/index.js.map +0 -1
  372. package/dist/core/kernel/startKernel.cjs.map +0 -1
  373. package/dist/core/kernel/startKernel.js.map +0 -1
  374. package/dist/core/kernel/types.cjs.map +0 -1
  375. package/dist/core/kernel/types.js.map +0 -1
  376. package/dist/core/middleware.cjs.map +0 -1
  377. package/dist/core/middleware.js.map +0 -1
  378. package/dist/core/plugin/PluginEventBus.cjs.map +0 -1
  379. package/dist/core/plugin/PluginEventBus.js.map +0 -1
  380. package/dist/core/plugin/PluginSandbox.cjs.map +0 -1
  381. package/dist/core/plugin/PluginSandbox.js.map +0 -1
  382. package/dist/core/plugin.cjs.map +0 -1
  383. package/dist/core/plugin.js.map +0 -1
  384. package/dist/core/router/RouterManager.cjs.map +0 -1
  385. package/dist/core/router/RouterManager.js.map +0 -1
  386. package/dist/core/router/adapter/AdapterManager.cjs.map +0 -1
  387. package/dist/core/router/adapter/AdapterManager.js.map +0 -1
  388. package/dist/core/router/adapter/index.cjs.map +0 -1
  389. package/dist/core/router/adapter/index.js.map +0 -1
  390. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +0 -1
  391. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +0 -1
  392. package/dist/core/router/adapter/react-router/index.cjs.map +0 -1
  393. package/dist/core/router/adapter/react-router/index.js.map +0 -1
  394. package/dist/core/router/adapter/types.cjs.map +0 -1
  395. package/dist/core/router/adapter/types.js.map +0 -1
  396. package/dist/core/router/dev/RouterDevTools.cjs.map +0 -1
  397. package/dist/core/router/dev/RouterDevTools.js.map +0 -1
  398. package/dist/core/router/dev/index.cjs.map +0 -1
  399. package/dist/core/router/dev/index.js.map +0 -1
  400. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +0 -1
  401. package/dist/core/router/dynamic/DynamicRouteManager.js.map +0 -1
  402. package/dist/core/router/dynamic/index.cjs.map +0 -1
  403. package/dist/core/router/dynamic/index.js.map +0 -1
  404. package/dist/core/router/errors/RouterError.cjs.map +0 -1
  405. package/dist/core/router/errors/RouterError.js.map +0 -1
  406. package/dist/core/router/errors/index.cjs.map +0 -1
  407. package/dist/core/router/errors/index.js.map +0 -1
  408. package/dist/core/router/index.cjs.map +0 -1
  409. package/dist/core/router/index.js.map +0 -1
  410. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +0 -1
  411. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +0 -1
  412. package/dist/core/router/lifecycle/index.cjs.map +0 -1
  413. package/dist/core/router/lifecycle/index.js.map +0 -1
  414. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +0 -1
  415. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +0 -1
  416. package/dist/core/router/middleware/auth.cjs.map +0 -1
  417. package/dist/core/router/middleware/auth.js.map +0 -1
  418. package/dist/core/router/middleware/index.cjs.map +0 -1
  419. package/dist/core/router/middleware/index.js.map +0 -1
  420. package/dist/core/router/middleware/types.cjs.map +0 -1
  421. package/dist/core/router/middleware/types.js.map +0 -1
  422. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +0 -1
  423. package/dist/core/router/monitoring/RouterMonitoring.js.map +0 -1
  424. package/dist/core/router/monitoring/index.cjs.map +0 -1
  425. package/dist/core/router/monitoring/index.js.map +0 -1
  426. package/dist/core/router/navigation/RouterNavigation.cjs.map +0 -1
  427. package/dist/core/router/navigation/RouterNavigation.js.map +0 -1
  428. package/dist/core/router/navigation/index.cjs.map +0 -1
  429. package/dist/core/router/navigation/index.js.map +0 -1
  430. package/dist/core/router/performance/RouteCache.cjs.map +0 -1
  431. package/dist/core/router/performance/RouteCache.js.map +0 -1
  432. package/dist/core/router/performance/RoutePreloader.cjs.map +0 -1
  433. package/dist/core/router/performance/RoutePreloader.js.map +0 -1
  434. package/dist/core/router/performance/index.cjs.map +0 -1
  435. package/dist/core/router/performance/index.js.map +0 -1
  436. package/dist/core/router/plugin/RouterPluginManager.cjs.map +0 -1
  437. package/dist/core/router/plugin/RouterPluginManager.js.map +0 -1
  438. package/dist/core/router/plugin/index.cjs.map +0 -1
  439. package/dist/core/router/plugin/index.js.map +0 -1
  440. package/dist/core/router/plugin/types.cjs.map +0 -1
  441. package/dist/core/router/plugin/types.js.map +0 -1
  442. package/dist/core/router/types.cjs.map +0 -1
  443. package/dist/core/router/types.js.map +0 -1
  444. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +0 -1
  445. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +0 -1
  446. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +0 -1
  447. package/dist/core/router/utils/adapters/react-router/transform.js.map +0 -1
  448. package/dist/core/router/utils/transform.cjs.map +0 -1
  449. package/dist/core/router/utils/transform.js.map +0 -1
  450. package/dist/core/router/validation/RouterConfigValidator.cjs.map +0 -1
  451. package/dist/core/router/validation/RouterConfigValidator.js.map +0 -1
  452. package/dist/core/router/validation/index.cjs.map +0 -1
  453. package/dist/core/router/validation/index.js.map +0 -1
  454. package/dist/core/router/validation/schema.cjs.map +0 -1
  455. package/dist/core/router/validation/schema.js.map +0 -1
  456. package/dist/core/router/version/RouteVersionManager.cjs.map +0 -1
  457. package/dist/core/router/version/RouteVersionManager.js.map +0 -1
  458. package/dist/core/router/version/index.cjs.map +0 -1
  459. package/dist/core/router/version/index.js.map +0 -1
  460. package/dist/core/splash/SplashScreen.cjs.map +0 -1
  461. package/dist/core/splash/SplashScreen.js.map +0 -1
  462. package/dist/core/splash/index.cjs.map +0 -1
  463. package/dist/core/splash/index.js.map +0 -1
  464. package/dist/core/splash/splashScreenUtils.cjs.map +0 -1
  465. package/dist/core/splash/splashScreenUtils.js.map +0 -1
  466. package/dist/core/startup/AppInstance.cjs.map +0 -1
  467. package/dist/core/startup/AppInstance.js.map +0 -1
  468. package/dist/core/startup/environment.cjs.map +0 -1
  469. package/dist/core/startup/environment.js.map +0 -1
  470. package/dist/core/startup/index.cjs.map +0 -1
  471. package/dist/core/startup/index.js.map +0 -1
  472. package/dist/core/startup/initializeServices.cjs.map +0 -1
  473. package/dist/core/startup/initializeServices.js.map +0 -1
  474. package/dist/core/startup/performanceTracker.cjs.map +0 -1
  475. package/dist/core/startup/performanceTracker.js.map +0 -1
  476. package/dist/core/startup/renderApp.cjs.map +0 -1
  477. package/dist/core/startup/renderApp.js.map +0 -1
  478. package/dist/core/startup/startApp.cjs.map +0 -1
  479. package/dist/core/startup/startApp.js.map +0 -1
  480. package/dist/core/types.cjs.map +0 -1
  481. package/dist/core/types.js.map +0 -1
  482. package/dist/index.cjs.map +0 -1
  483. package/dist/index.js.map +0 -1
  484. package/dist/index.umd.cjs.map +0 -1
  485. package/dist/index.umd.js.map +0 -1
  486. package/dist/kernel/constants.cjs.map +0 -1
  487. package/dist/kernel/constants.js.map +0 -1
  488. package/dist/kernel/index.cjs.map +0 -1
  489. package/dist/kernel/index.js.map +0 -1
  490. package/dist/kernel/kernel.cjs.map +0 -1
  491. package/dist/kernel/kernel.js.map +0 -1
  492. package/dist/kernel/manager/cacheManager.cjs.map +0 -1
  493. package/dist/kernel/manager/cacheManager.js.map +0 -1
  494. package/dist/kernel/manager/i18n/I18nManager.cjs.map +0 -1
  495. package/dist/kernel/manager/i18n/I18nManager.js.map +0 -1
  496. package/dist/kernel/manager/i18n/i18n.persistence.cjs.map +0 -1
  497. package/dist/kernel/manager/i18n/i18n.persistence.js.map +0 -1
  498. package/dist/kernel/manager/i18n/i18n.schema.cjs.map +0 -1
  499. package/dist/kernel/manager/i18n/i18n.schema.js.map +0 -1
  500. package/dist/kernel/manager/i18n/index.cjs.map +0 -1
  501. package/dist/kernel/manager/i18n/index.js.map +0 -1
  502. package/dist/kernel/manager/i18nManager.cjs.map +0 -1
  503. package/dist/kernel/manager/i18nManager.js.map +0 -1
  504. package/dist/kernel/manager/index.cjs.map +0 -1
  505. package/dist/kernel/manager/index.js.map +0 -1
  506. package/dist/kernel/manager/logger/LoggerManager.cjs.map +0 -1
  507. package/dist/kernel/manager/logger/LoggerManager.js.map +0 -1
  508. package/dist/kernel/manager/logger/index.cjs.map +0 -1
  509. package/dist/kernel/manager/logger/index.js.map +0 -1
  510. package/dist/kernel/manager/logger/logger.persistence.cjs.map +0 -1
  511. package/dist/kernel/manager/logger/logger.persistence.js.map +0 -1
  512. package/dist/kernel/manager/logger/logger.schema.cjs.map +0 -1
  513. package/dist/kernel/manager/logger/logger.schema.js.map +0 -1
  514. package/dist/kernel/manager/loggerManager.cjs.map +0 -1
  515. package/dist/kernel/manager/loggerManager.js.map +0 -1
  516. package/dist/kernel/manager/persistence.cjs +0 -78
  517. package/dist/kernel/manager/persistence.cjs.map +0 -1
  518. package/dist/kernel/manager/persistence.d.ts +0 -3
  519. package/dist/kernel/manager/persistence.js +0 -60
  520. package/dist/kernel/manager/persistence.js.map +0 -1
  521. package/dist/kernel/manager/theme/ThemeManager.cjs.map +0 -1
  522. package/dist/kernel/manager/theme/ThemeManager.js.map +0 -1
  523. package/dist/kernel/manager/theme/index.cjs.map +0 -1
  524. package/dist/kernel/manager/theme/index.js.map +0 -1
  525. package/dist/kernel/manager/theme/theme.dom.cjs.map +0 -1
  526. package/dist/kernel/manager/theme/theme.dom.js.map +0 -1
  527. package/dist/kernel/manager/theme/theme.persistence.cjs.map +0 -1
  528. package/dist/kernel/manager/theme/theme.persistence.js.map +0 -1
  529. package/dist/kernel/manager/theme/theme.schema.cjs.map +0 -1
  530. package/dist/kernel/manager/theme/theme.schema.js.map +0 -1
  531. package/dist/kernel/manager/themeManager.cjs.map +0 -1
  532. package/dist/kernel/manager/themeManager.js.map +0 -1
  533. package/dist/kernel/types.cjs.map +0 -1
  534. package/dist/kernel/types.js.map +0 -1
  535. package/dist/library/index.cjs.map +0 -1
  536. package/dist/library/index.js.map +0 -1
  537. package/dist/library/locale/index.cjs.map +0 -1
  538. package/dist/library/locale/index.js.map +0 -1
  539. package/dist/library/locale/langs/en-us/index.cjs.map +0 -1
  540. package/dist/library/locale/langs/en-us/index.js.map +0 -1
  541. package/dist/library/locale/langs/zh-cn/index.cjs.map +0 -1
  542. package/dist/library/locale/langs/zh-cn/index.js.map +0 -1
  543. package/dist/library/locale/types.cjs.map +0 -1
  544. package/dist/library/locale/types.js.map +0 -1
  545. package/dist/library/storage/cache.cjs.map +0 -1
  546. package/dist/library/storage/cache.js.map +0 -1
  547. package/dist/library/storage/encryption.cjs.map +0 -1
  548. package/dist/library/storage/encryption.js.map +0 -1
  549. package/dist/library/storage/index.cjs.map +0 -1
  550. package/dist/library/storage/index.js.map +0 -1
  551. package/dist/request/adapter/RequestAdapter.d.ts +0 -85
  552. package/dist/request/adapter/RequestAdapter.js +0 -70
  553. package/dist/request/adapter/RequestAdapter.js.map +0 -1
  554. package/dist/request/adapter/axiosAdapter.d.ts +0 -10
  555. package/dist/request/adapter/axiosAdapter.js +0 -115
  556. package/dist/request/adapter/axiosAdapter.js.map +0 -1
  557. package/dist/request/adapter/fetchAdapter.d.ts +0 -10
  558. package/dist/request/adapter/fetchAdapter.js +0 -126
  559. package/dist/request/adapter/fetchAdapter.js.map +0 -1
  560. package/dist/request/adapter/index.d.ts +0 -9
  561. package/dist/request/adapter/index.js +0 -14
  562. package/dist/request/adapter/index.js.map +0 -1
  563. package/dist/request/adapter/kyAdapter.d.ts +0 -10
  564. package/dist/request/adapter/kyAdapter.js +0 -142
  565. package/dist/request/adapter/kyAdapter.js.map +0 -1
  566. package/dist/request/adapter/undiciAdapter.d.ts +0 -10
  567. package/dist/request/adapter/undiciAdapter.js +0 -164
  568. package/dist/request/adapter/undiciAdapter.js.map +0 -1
  569. package/dist/request/adapter.d.ts +0 -1
  570. package/dist/request/core/RequestClient.d.ts +0 -134
  571. package/dist/request/core/RequestClient.js +0 -509
  572. package/dist/request/core/RequestClient.js.map +0 -1
  573. package/dist/request/core/index.d.ts +0 -5
  574. package/dist/request/core/index.js +0 -5
  575. package/dist/request/core/index.js.map +0 -1
  576. package/dist/request/core.d.ts +0 -1
  577. package/dist/request/index.d.ts +0 -1
  578. package/dist/request/index.js +0 -50
  579. package/dist/request/index.js.map +0 -1
  580. package/dist/request/plugin/RequestPlugin.d.ts +0 -170
  581. package/dist/request/plugin/RequestPlugin.js +0 -203
  582. package/dist/request/plugin/RequestPlugin.js.map +0 -1
  583. package/dist/request/plugin/cache.d.ts +0 -33
  584. package/dist/request/plugin/cache.js +0 -264
  585. package/dist/request/plugin/cache.js.map +0 -1
  586. package/dist/request/plugin/csrfPlugin.d.ts +0 -21
  587. package/dist/request/plugin/csrfPlugin.js +0 -44
  588. package/dist/request/plugin/csrfPlugin.js.map +0 -1
  589. package/dist/request/plugin/index.d.ts +0 -11
  590. package/dist/request/plugin/index.js +0 -12
  591. package/dist/request/plugin/index.js.map +0 -1
  592. package/dist/request/plugin/monitoring.d.ts +0 -112
  593. package/dist/request/plugin/monitoring.js +0 -205
  594. package/dist/request/plugin/monitoring.js.map +0 -1
  595. package/dist/request/plugin/queue.d.ts +0 -91
  596. package/dist/request/plugin/queue.js +0 -156
  597. package/dist/request/plugin/queue.js.map +0 -1
  598. package/dist/request/plugin/retry.d.ts +0 -34
  599. package/dist/request/plugin/retry.js +0 -93
  600. package/dist/request/plugin/retry.js.map +0 -1
  601. package/dist/request/plugin/validation.d.ts +0 -26
  602. package/dist/request/plugin/validation.js +0 -116
  603. package/dist/request/plugin/validation.js.map +0 -1
  604. package/dist/request/plugin.d.ts +0 -1
  605. package/dist/request/runtime/RequestContext.d.ts +0 -50
  606. package/dist/request/runtime/RequestContext.js +0 -86
  607. package/dist/request/runtime/RequestContext.js.map +0 -1
  608. package/dist/request/runtime/index.d.ts +0 -4
  609. package/dist/request/runtime/index.js +0 -5
  610. package/dist/request/runtime/index.js.map +0 -1
  611. package/dist/request/runtime.d.ts +0 -1
  612. package/dist/request/types.d.ts +0 -1
  613. package/dist/request/types.js +0 -97
  614. package/dist/request/types.js.map +0 -1
  615. package/dist/request/utils/RequestQueueManager.d.ts +0 -74
  616. package/dist/request/utils/RequestQueueManager.js +0 -160
  617. package/dist/request/utils/RequestQueueManager.js.map +0 -1
  618. package/dist/request/utils/dependencyCheck.d.ts +0 -63
  619. package/dist/request/utils/dependencyCheck.js +0 -192
  620. package/dist/request/utils/dependencyCheck.js.map +0 -1
  621. package/dist/request/utils/index.d.ts +0 -5
  622. package/dist/request/utils/index.js +0 -6
  623. package/dist/request/utils/index.js.map +0 -1
  624. package/dist/request/utils.d.ts +0 -1
  625. package/dist/state/StateManager.cjs.map +0 -1
  626. package/dist/state/StateManager.js.map +0 -1
  627. package/dist/state/adapters/AdapterFactory.cjs.map +0 -1
  628. package/dist/state/adapters/AdapterFactory.js.map +0 -1
  629. package/dist/state/adapters/DefaultAdapter.cjs.map +0 -1
  630. package/dist/state/adapters/DefaultAdapter.js.map +0 -1
  631. package/dist/state/adapters/ReduxAdapter.cjs.map +0 -1
  632. package/dist/state/adapters/ReduxAdapter.js.map +0 -1
  633. package/dist/state/adapters/ZustandAdapter.cjs.map +0 -1
  634. package/dist/state/adapters/ZustandAdapter.js.map +0 -1
  635. package/dist/state/adapters/index.cjs.map +0 -1
  636. package/dist/state/adapters/index.js.map +0 -1
  637. package/dist/state/adapters/types.cjs.map +0 -1
  638. package/dist/state/adapters/types.js.map +0 -1
  639. package/dist/state/core/DerivedStateInstance.cjs.map +0 -1
  640. package/dist/state/core/DerivedStateInstance.js.map +0 -1
  641. package/dist/state/core/StateInstance.cjs.map +0 -1
  642. package/dist/state/core/StateInstance.js.map +0 -1
  643. package/dist/state/core/StateRegistry.cjs.map +0 -1
  644. package/dist/state/core/StateRegistry.js.map +0 -1
  645. package/dist/state/core/StateScope.cjs.map +0 -1
  646. package/dist/state/core/StateScope.js.map +0 -1
  647. package/dist/state/core/index.cjs.map +0 -1
  648. package/dist/state/core/index.js.map +0 -1
  649. package/dist/state/index.cjs.map +0 -1
  650. package/dist/state/index.js.map +0 -1
  651. package/dist/state/types.cjs.map +0 -1
  652. package/dist/state/types.js.map +0 -1
  653. package/dist/state.umd.js.map +0 -1
  654. package/dist/types.cjs.map +0 -1
  655. package/dist/types.js.map +0 -1
  656. package/dist/utils/analytics.cjs.map +0 -1
  657. package/dist/utils/analytics.js.map +0 -1
  658. package/dist/utils/configSecurity.cjs.map +0 -1
  659. package/dist/utils/configSecurity.js.map +0 -1
  660. package/dist/utils/csrf.cjs.map +0 -1
  661. package/dist/utils/csrf.js.map +0 -1
  662. package/dist/utils/errors/ErrorCodes.cjs.map +0 -1
  663. package/dist/utils/errors/ErrorCodes.js.map +0 -1
  664. package/dist/utils/errors.cjs.map +0 -1
  665. package/dist/utils/errors.js.map +0 -1
  666. package/dist/utils/index.cjs.map +0 -1
  667. package/dist/utils/index.js.map +0 -1
  668. package/dist/utils/logger.cjs.map +0 -1
  669. package/dist/utils/logger.js.map +0 -1
  670. package/dist/utils/logger.types.cjs.map +0 -1
  671. package/dist/utils/logger.types.js.map +0 -1
  672. package/dist/utils/monitoring.cjs.map +0 -1
  673. package/dist/utils/monitoring.js.map +0 -1
  674. package/dist/utils/performance.cjs.map +0 -1
  675. package/dist/utils/performance.js.map +0 -1
  676. package/dist/utils/resourceLoader.cjs.map +0 -1
  677. package/dist/utils/resourceLoader.js.map +0 -1
  678. package/dist/utils/runtimeSecurity.cjs.map +0 -1
  679. package/dist/utils/runtimeSecurity.js.map +0 -1
  680. package/dist/utils/security.cjs.map +0 -1
  681. package/dist/utils/security.js.map +0 -1
  682. package/dist/utils/traceId.cjs.map +0 -1
  683. package/dist/utils/traceId.js.map +0 -1
  684. package/dist/utils/validation.cjs.map +0 -1
  685. package/dist/utils/validation.js.map +0 -1
@@ -1,782 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "transformRoutes", {
6
- enumerable: true,
7
- get: function() {
8
- return transformRoutes;
9
- }
10
- });
11
- const _logger = require("@vlian/logger");
12
- const _utils = require("@vlian/utils");
13
- function _define_property(obj, key, value) {
14
- if (key in obj) {
15
- Object.defineProperty(obj, key, {
16
- value: value,
17
- enumerable: true,
18
- configurable: true,
19
- writable: true
20
- });
21
- } else {
22
- obj[key] = value;
23
- }
24
- return obj;
25
- }
26
- function _getRequireWildcardCache(nodeInterop) {
27
- if (typeof WeakMap !== "function") return null;
28
- var cacheBabelInterop = new WeakMap();
29
- var cacheNodeInterop = new WeakMap();
30
- return (_getRequireWildcardCache = function(nodeInterop) {
31
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
32
- })(nodeInterop);
33
- }
34
- function _interop_require_wildcard(obj, nodeInterop) {
35
- if (!nodeInterop && obj && obj.__esModule) {
36
- return obj;
37
- }
38
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
39
- return {
40
- default: obj
41
- };
42
- }
43
- var cache = _getRequireWildcardCache(nodeInterop);
44
- if (cache && cache.has(obj)) {
45
- return cache.get(obj);
46
- }
47
- var newObj = {
48
- __proto__: null
49
- };
50
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
51
- for(var key in obj){
52
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
53
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
54
- if (desc && (desc.get || desc.set)) {
55
- Object.defineProperty(newObj, key, desc);
56
- } else {
57
- newObj[key] = obj[key];
58
- }
59
- }
60
- }
61
- newObj.default = obj;
62
- if (cache) {
63
- cache.set(obj, newObj);
64
- }
65
- return newObj;
66
- }
67
- /**
68
- * LRU 缓存实现
69
- */ let LRUCache = class LRUCache {
70
- get(key) {
71
- const item = this.cache.get(key);
72
- if (item) {
73
- // 更新访问时间
74
- item.accessTime = Date.now();
75
- // 移动到末尾(最近使用)
76
- this.cache.delete(key);
77
- this.cache.set(key, item);
78
- }
79
- return item;
80
- }
81
- set(key, value) {
82
- // 如果已存在,先删除
83
- if (this.cache.has(key)) {
84
- this.cache.delete(key);
85
- } else if (this.cache.size >= this.maxSize) {
86
- // 如果达到最大大小,删除最久未使用的项(第一个)
87
- const firstKey = this.cache.keys().next().value;
88
- if (firstKey) {
89
- this.cache.delete(firstKey);
90
- }
91
- }
92
- value.accessTime = Date.now();
93
- this.cache.set(key, value);
94
- }
95
- delete(key) {
96
- return this.cache.delete(key);
97
- }
98
- clear() {
99
- this.cache.clear();
100
- }
101
- size() {
102
- return this.cache.size;
103
- }
104
- cleanupExpired(cacheTTL) {
105
- const now = Date.now();
106
- for (const [key, item] of this.cache.entries()){
107
- if (now - item.timestamp > cacheTTL) {
108
- this.cache.delete(key);
109
- }
110
- }
111
- }
112
- constructor(maxSize = 50){
113
- _define_property(this, "cache", new Map());
114
- _define_property(this, "maxSize", void 0);
115
- this.maxSize = maxSize;
116
- }
117
- };
118
- /**
119
- * 转换缓存(使用 LRU 缓存)
120
- */ let transformCache = null;
121
- /**
122
- * 默认配置
123
- */ const DEFAULT_OPTIONS = {
124
- pathValidation: {
125
- enablePathValidation: true,
126
- // 默认仅允许常见本地模块路径,生产环境建议进一步收紧。
127
- allowedPathPrefixes: [
128
- '@/',
129
- './',
130
- '../'
131
- ],
132
- maxPathLength: 500,
133
- allowAbsolutePaths: false
134
- },
135
- performance: {
136
- enableCache: true,
137
- cacheTTL: 5 * 60 * 1000,
138
- maxCacheSize: 50,
139
- maxRecursionDepth: 100,
140
- enableParallelProcessing: true,
141
- parallelBatchSize: 10
142
- },
143
- enableDebugLog: false
144
- };
145
- /**
146
- * 优化的字符串哈希函数(用于缓存键)
147
- * 使用更高效的哈希算法,支持大字符串
148
- */ function optimizedHash(str) {
149
- // 对于小字符串,使用快速哈希
150
- if (str.length < 100) {
151
- let hash = 0;
152
- for(let i = 0; i < str.length; i++){
153
- const char = str.charCodeAt(i);
154
- hash = (hash << 5) - hash + char;
155
- hash = hash & hash; // 转换为 32 位整数
156
- }
157
- return Math.abs(hash).toString(36);
158
- }
159
- // 对于大字符串,使用分段哈希
160
- let hash = 0;
161
- const step = Math.max(1, Math.floor(str.length / 100));
162
- for(let i = 0; i < str.length; i += step){
163
- const char = str.charCodeAt(i);
164
- hash = (hash << 5) - hash + char;
165
- hash = hash & hash;
166
- }
167
- return Math.abs(hash).toString(36);
168
- }
169
- /**
170
- * 使用 crypto API 的哈希函数(如果可用)
171
- * 保留此函数供未来使用(异步哈希场景)
172
- */ // async function cryptoHash(str: string): Promise<string> {
173
- // // 检查是否支持 crypto API
174
- // if (typeof crypto !== 'undefined' && crypto.subtle && crypto.subtle.digest) {
175
- // try {
176
- // const encoder = new TextEncoder();
177
- // const data = encoder.encode(str);
178
- // const hashBuffer = await crypto.subtle.digest('SHA-256', data);
179
- // const hashArray = Array.from(new Uint8Array(hashBuffer));
180
- // return hashArray.map(b => b.toString(16).padStart(2, '0')).join('').substring(0, 16);
181
- // } catch {
182
- // // 如果 crypto API 失败,回退到优化哈希
183
- // return optimizedHash(str);
184
- // }
185
- // }
186
- // return optimizedHash(str);
187
- // }
188
- /**
189
- * 同步哈希函数(用于同步场景)
190
- */ function simpleHash(str) {
191
- return optimizedHash(str);
192
- }
193
- function serializeComponentRef(value) {
194
- if (typeof value === 'string') {
195
- return {
196
- str: value
197
- };
198
- }
199
- if (typeof value === 'function') {
200
- // 函数引用无法稳定序列化源码,使用名称和长度参与哈希,避免同名不同体完全碰撞。
201
- const fnText = String(value);
202
- return {
203
- fn: `${value.name || 'anonymous'}:${fnText.length}`
204
- };
205
- }
206
- return {};
207
- }
208
- function serializeRouteConfig(route) {
209
- const page = serializeComponentRef(route.page);
210
- const layout = serializeComponentRef(route.layout);
211
- const routeError = serializeComponentRef(route.error ?? route.errors);
212
- const loading = serializeComponentRef(route.loading);
213
- return {
214
- name: route.name,
215
- path: route.path,
216
- page: page.str,
217
- pageFn: page.fn,
218
- layout: layout.str,
219
- layoutFn: layout.fn,
220
- error: routeError.str,
221
- errorFn: routeError.fn,
222
- loading: loading.str,
223
- loadingFn: loading.fn,
224
- isGroup: route.isGroup,
225
- enableRedirection: route.enableRedirection,
226
- handle: route.handle ? {
227
- title: route.handle.title,
228
- order: route.handle.order,
229
- needLogin: route.handle.needLogin,
230
- roles: Array.isArray(route.handle.roles) ? [
231
- ...route.handle.roles
232
- ] : undefined
233
- } : undefined,
234
- children: route.children?.map((child)=>serializeRouteConfig(child))
235
- };
236
- }
237
- /**
238
- * 生成配置哈希(用于缓存键)
239
- * 优化:缓存序列化结果,避免重复序列化
240
- */ function generateConfigHash(routes) {
241
- try {
242
- if (routes.length === 0) {
243
- return 'empty';
244
- }
245
- const serializedRoutes = routes.map((route)=>serializeRouteConfig(route));
246
- const configStr = JSON.stringify(serializedRoutes);
247
- return simpleHash(configStr);
248
- } catch {
249
- return '';
250
- }
251
- }
252
- /**
253
- * 路径验证缓存(已验证的路径)
254
- */ const validatedPathCache = new Set();
255
- /**
256
- * 预编译的正则表达式(用于路径验证)
257
- */ const PATH_TRAVERSAL_REGEX = /\.\.(\/|\\)|\.\.%2[Ff]|\.\.%5[Cc]|%2[Ee]%2[Ee]%2[Ff]|%2[Ee]%2[Ee]%5[Cc]/i;
258
- const ABSOLUTE_PATH_REGEX = /^\/|^[A-Za-z]:\\/;
259
- const CONTROL_CHAR_REGEX = /[\x00-\x1f\x7f]/;
260
- const NULL_BYTE_REGEX = /%00|\\0|\x00/;
261
- const URL_SCHEME_REGEX = /^[A-Za-z][A-Za-z0-9+.-]*:/;
262
- // 保留供未来使用(命令注入检测)
263
- // const COMMAND_INJECTION_REGEX = /[;|&$`]/;
264
- // const ALLOWED_CHARS_REGEX = /^[a-zA-Z0-9\/\-_.@]+$/;
265
- /**
266
- * 验证路径是否安全
267
- * 优化:添加验证缓存、预编译正则、早期返回
268
- */ function validatePath(path, config) {
269
- // 早期返回:检查缓存
270
- if (validatedPathCache.has(path)) {
271
- return {
272
- valid: true
273
- };
274
- }
275
- // 早期返回:检查路径长度(最快检查)
276
- if (path.length > config.maxPathLength) {
277
- return {
278
- valid: false,
279
- error: process.env.NODE_ENV === 'development' ? `路径长度超过最大限制 ${config.maxPathLength} 字符` : '路径验证失败'
280
- };
281
- }
282
- // 早期返回:检查空字符串
283
- if (path.length === 0) {
284
- return {
285
- valid: false,
286
- error: '路径不能为空'
287
- };
288
- }
289
- // 检查路径遍历攻击(使用预编译正则)
290
- if (PATH_TRAVERSAL_REGEX.test(path)) {
291
- return {
292
- valid: false,
293
- error: process.env.NODE_ENV === 'development' ? '路径包含路径遍历字符(../),可能存在安全风险' : '路径验证失败'
294
- };
295
- }
296
- // 检查空字节注入
297
- if (NULL_BYTE_REGEX.test(path)) {
298
- return {
299
- valid: false,
300
- error: process.env.NODE_ENV === 'development' ? '路径包含空字节,可能存在安全风险' : '路径验证失败'
301
- };
302
- }
303
- // 检查控制字符
304
- if (CONTROL_CHAR_REGEX.test(path)) {
305
- return {
306
- valid: false,
307
- error: process.env.NODE_ENV === 'development' ? '路径包含控制字符,可能存在安全风险' : '路径验证失败'
308
- };
309
- }
310
- // 检查命令注入字符(可选,根据需求决定是否启用)
311
- // if (COMMAND_INJECTION_REGEX.test(path)) {
312
- // return {
313
- // valid: false,
314
- // error: process.env.NODE_ENV === 'development'
315
- // ? '路径包含潜在的命令注入字符'
316
- // : '路径验证失败',
317
- // };
318
- // }
319
- // 禁止 URL scheme 导入(如 http:, https:, data:, javascript:)
320
- if (URL_SCHEME_REGEX.test(path)) {
321
- return {
322
- valid: false,
323
- error: process.env.NODE_ENV === 'development' ? '不允许使用带协议的路径' : '路径验证失败'
324
- };
325
- }
326
- // 检查绝对路径(使用预编译正则)
327
- if (!config.allowAbsolutePaths && ABSOLUTE_PATH_REGEX.test(path)) {
328
- return {
329
- valid: false,
330
- error: process.env.NODE_ENV === 'development' ? '不允许使用绝对路径' : '路径验证失败'
331
- };
332
- }
333
- // 默认仅允许相对路径和别名路径,避免把第三方包名作为动态入口。
334
- if (!path.startsWith('@/') && !path.startsWith('./') && !path.startsWith('../')) {
335
- return {
336
- valid: false,
337
- error: process.env.NODE_ENV === 'development' ? '仅允许使用 @/、./、../ 开头的模块路径' : '路径验证失败'
338
- };
339
- }
340
- // 检查路径前缀白名单(优化:使用 Set 提高查找速度)
341
- if (config.allowedPathPrefixes.length > 0) {
342
- const prefixSet = new Set(config.allowedPathPrefixes);
343
- const isAllowed = Array.from(prefixSet).some((prefix)=>path.startsWith(prefix));
344
- if (!isAllowed) {
345
- return {
346
- valid: false,
347
- error: process.env.NODE_ENV === 'development' ? `路径不在允许的前缀列表中: ${config.allowedPathPrefixes.join(', ')}` : '路径验证失败'
348
- };
349
- }
350
- }
351
- // 使用 SecurityUtils 验证输入(最后检查,因为可能较慢)
352
- const validation = _utils.SecurityUtils.validateInput(path);
353
- if (!validation.safe) {
354
- return {
355
- valid: false,
356
- error: process.env.NODE_ENV === 'development' ? validation.reason || '路径包含潜在的危险内容' : '路径验证失败'
357
- };
358
- }
359
- // 验证通过,添加到缓存(限制缓存大小)
360
- if (validatedPathCache.size < 1000) {
361
- validatedPathCache.add(path);
362
- }
363
- return {
364
- valid: true
365
- };
366
- }
367
- /**
368
- * 预编译的正则表达式(用于路径规范化)
369
- */ const NORMALIZE_REGEX = {
370
- multipleSlashes: /\/+/g,
371
- dotSlash: /\/\.\//g,
372
- trailingDot: /\/\.$/
373
- };
374
- /**
375
- * 规范化路径
376
- * 优化:合并正则表达式,减少替换次数
377
- */ function normalizePath(path) {
378
- // 合并多个替换操作,减少字符串遍历次数
379
- return path.replace(NORMALIZE_REGEX.multipleSlashes, '/').replace(NORMALIZE_REGEX.dotSlash, '/').replace(NORMALIZE_REGEX.trailingDot, '').trim();
380
- }
381
- /**
382
- * 类型守卫:检查是否为有效路径字符串
383
- */ function isValidPathString(path) {
384
- return typeof path === 'string' && path.length > 0;
385
- }
386
- /**
387
- * 类型守卫:检查是否为动态导入函数
388
- */ function isComponentImport(path) {
389
- return typeof path === 'function';
390
- }
391
- /**
392
- * 创建动态导入函数
393
- *
394
- * 将组件路径字符串转换为动态导入函数,用于代码分割和懒加载
395
- *
396
- * @param path - 组件路径字符串,支持相对路径和别名路径(如 '@/pages/home.tsx')
397
- * @returns 返回动态导入函数,调用后会返回 Promise,resolve 后的值为组件模块对象
398
- *
399
- * @remarks
400
- * - 使用 `@vite-ignore` 注释告诉 Vite 忽略此动态导入的静态分析
401
- * - 使用类型断言 `as any` 是因为 TypeScript 的 `import()` 需要静态字符串字面量
402
- * - 在运行时,我们可以使用动态路径进行导入
403
- * - 组件必须使用默认导出(export default)
404
- *
405
- * @example
406
- * ```typescript
407
- * const importFn = createDynamicImport('@/pages/home.tsx');
408
- * const module = await importFn();
409
- * const HomePage = module.default;
410
- * ```
411
- */ function createDynamicImport(path) {
412
- // 使用类型断言,因为 TypeScript 的 import() 需要静态字符串
413
- // 但在运行时,我们可以使用动态路径
414
- return ()=>Promise.resolve(/* @vite-ignore */ path).then((p)=>/*#__PURE__*/ _interop_require_wildcard(require(p)));
415
- }
416
- /**
417
- * 提取并验证组件路径到 Map 中
418
- *
419
- * 如果路径有效且 Map 中不存在,则创建动态导入函数并存储到 Map 中
420
- * 这样可以避免重复创建相同路径的动态导入函数,提高性能
421
- *
422
- * @param path - 组件路径,可能是字符串、动态导入函数、null 或 undefined
423
- * @param map - 目标 Map,用于存储路径到动态导入函数的映射
424
- * @param config - 路径验证配置
425
- * @param options - 转换选项
426
- * @returns 如果成功提取,返回动态导入函数;否则返回 null
427
- *
428
- * @remarks
429
- * - 如果 path 是函数,直接返回,不添加到 Map(函数本身就可以直接使用)
430
- * - 只有当路径是有效的非空字符串时才会处理并添加到 Map
431
- * - 如果 Map 中已存在该路径,则直接返回已有的导入函数
432
- * - 优化:使用 `get()` 一次获取,判断是否为 undefined,减少函数调用
433
- * - 会进行路径验证和清理
434
- *
435
- * @example
436
- * ```typescript
437
- * const pages = new Map<string, () => Promise<any>>();
438
- * const importFn1 = extractAndValidatePath('@/pages/home.tsx', pages, config, options);
439
- * const importFn2 = extractAndValidatePath(() => import('@/pages/home.tsx'), pages, config, options);
440
- * ```
441
- */ function extractAndValidatePath(path, map, config, options) {
442
- // 早期返回:如果是函数,直接返回,不添加到 Map
443
- if (isComponentImport(path)) {
444
- return path;
445
- }
446
- // 早期返回:检查是否为有效路径字符串
447
- if (!isValidPathString(path)) {
448
- return null;
449
- }
450
- // 规范化路径
451
- const normalizedPath = normalizePath(path);
452
- // 优化:先检查 Map 中是否已存在(避免不必要的验证)
453
- const existingImport = map.get(normalizedPath);
454
- if (existingImport !== undefined) {
455
- return existingImport;
456
- }
457
- // 路径验证(仅在 Map 中不存在时进行)
458
- if (config.enablePathValidation) {
459
- const validation = validatePath(normalizedPath, config);
460
- if (!validation.valid) {
461
- // 生产环境错误信息脱敏
462
- const errorMessage = process.env.NODE_ENV === 'development' ? `路径验证失败: ${validation.error}` : '路径验证失败';
463
- const error = new _utils.SecurityError(errorMessage, undefined, process.env.NODE_ENV === 'development' ? {
464
- path: normalizedPath
465
- } : {});
466
- if (options.enableDebugLog) {
467
- _logger.logger.error('路径验证失败:', error);
468
- }
469
- // 开发环境抛出错误,生产环境记录警告并跳过
470
- if (process.env.NODE_ENV === 'development') {
471
- throw error;
472
- } else {
473
- // 生产环境日志脱敏
474
- _logger.logger.warn('路径验证失败,已跳过');
475
- return null;
476
- }
477
- }
478
- }
479
- // 创建动态导入函数并存储
480
- const importFn = createDynamicImport(normalizedPath);
481
- map.set(normalizedPath, importFn);
482
- if (options.enableDebugLog) {
483
- _logger.logger.debug('提取路径:', normalizedPath);
484
- }
485
- return importFn;
486
- }
487
- /**
488
- * 对象池:复用栈节点对象,减少 GC 压力
489
- */ let StackNodePool = class StackNodePool {
490
- acquire(route, depth) {
491
- if (this.pool.length > 0) {
492
- const node = this.pool.pop();
493
- node.route = route;
494
- node.depth = depth;
495
- return node;
496
- }
497
- return {
498
- route,
499
- depth
500
- };
501
- }
502
- release(node) {
503
- if (this.pool.length < this.maxPoolSize) {
504
- this.pool.push(node);
505
- }
506
- }
507
- constructor(){
508
- _define_property(this, "pool", []);
509
- _define_property(this, "maxPoolSize", 100);
510
- }
511
- };
512
- const stackNodePool = new StackNodePool();
513
- /**
514
- * 只提取组件路径到 Map 中,不转换路由配置
515
- *
516
- * 使用迭代方式遍历所有路由(包括子路由),提取组件路径到对应的 Map 中
517
- * 这种设计可以确保:
518
- * - 相同的组件路径只会创建一个动态导入函数
519
- * - 使用迭代而非递归,避免栈溢出
520
- * - 优化:支持并行处理、使用对象池、预分配数组
521
- *
522
- * @param routes - 原始路由配置列表
523
- * @param result - 结果对象,用于累积收集的组件路径
524
- * @param config - 路径验证配置
525
- * @param options - 转换选项
526
- * @param maxDepth - 最大递归深度
527
- */ async function extractPathsOnly(routes, result, config, options, maxDepth) {
528
- const enableParallel = options.performance?.enableParallelProcessing ?? true;
529
- const batchSize = options.performance?.parallelBatchSize ?? 10;
530
- // 如果启用并行处理且路由数量较多,使用并行处理
531
- if (enableParallel && routes.length > batchSize) {
532
- // 收集所有需要处理的路径(只收集字符串类型,函数类型不需要处理)
533
- const pathsToProcess = [];
534
- // 遍历所有路由,收集路径
535
- const stack = [];
536
- for(let i = routes.length - 1; i >= 0; i--){
537
- stack.push({
538
- route: routes[i],
539
- depth: 0
540
- });
541
- }
542
- while(stack.length > 0){
543
- const { route, depth } = stack.pop();
544
- if (depth > maxDepth) {
545
- _logger.logger.warn(`路径提取达到最大深度 ${maxDepth},跳过路由:`, route.name);
546
- continue;
547
- }
548
- // 收集路径(只收集字符串类型,函数类型不需要处理,会直接使用)
549
- if (route.page && typeof route.page === 'string') {
550
- pathsToProcess.push({
551
- path: route.page,
552
- map: result.pages
553
- });
554
- }
555
- if (route.layout && typeof route.layout === 'string') {
556
- pathsToProcess.push({
557
- path: route.layout,
558
- map: result.layouts
559
- });
560
- }
561
- const routeError = route.error ?? route.errors;
562
- if (routeError && typeof routeError === 'string') {
563
- pathsToProcess.push({
564
- path: routeError,
565
- map: result.errors
566
- });
567
- }
568
- if (route.loading && typeof route.loading === 'string') {
569
- pathsToProcess.push({
570
- path: route.loading,
571
- map: result.loadings
572
- });
573
- }
574
- // 处理子路由
575
- if (route.children && Array.isArray(route.children) && route.children.length > 0) {
576
- for(let i = route.children.length - 1; i >= 0; i--){
577
- stack.push({
578
- route: route.children[i],
579
- depth: depth + 1
580
- });
581
- }
582
- }
583
- }
584
- // 并行处理路径(分批处理)
585
- for(let i = 0; i < pathsToProcess.length; i += batchSize){
586
- const batch = pathsToProcess.slice(i, i + batchSize);
587
- await Promise.all(batch.map(({ path, map })=>Promise.resolve(extractAndValidatePath(path, map, config, options))));
588
- }
589
- } else {
590
- // 串行处理(原有逻辑,优化:使用对象池)
591
- const stack = [];
592
- // 初始化栈:将所有路由推入栈中
593
- for(let i = routes.length - 1; i >= 0; i--){
594
- stack.push(stackNodePool.acquire(routes[i], 0));
595
- }
596
- // 迭代处理栈中的路由
597
- while(stack.length > 0){
598
- const node = stack.pop();
599
- const { route, depth } = node;
600
- // 检查递归深度
601
- if (depth > maxDepth) {
602
- _logger.logger.warn(`路径提取达到最大深度 ${maxDepth},跳过路由:`, route.name);
603
- stackNodePool.release(node);
604
- continue;
605
- }
606
- // 提取组件路径到 Map 中(同时进行验证)
607
- extractAndValidatePath(route.page, result.pages, config, options);
608
- extractAndValidatePath(route.layout, result.layouts, config, options);
609
- extractAndValidatePath(route.error ?? route.errors, result.errors, config, options);
610
- extractAndValidatePath(route.loading, result.loadings, config, options);
611
- // 处理子路由
612
- if (route.children && Array.isArray(route.children) && route.children.length > 0) {
613
- // 将子路由推入栈中(逆序推入,保证处理顺序正确)
614
- for(let i = route.children.length - 1; i >= 0; i--){
615
- stack.push(stackNodePool.acquire(route.children[i], depth + 1));
616
- }
617
- }
618
- // 释放节点到对象池
619
- stackNodePool.release(node);
620
- }
621
- }
622
- }
623
- /**
624
- * 清理过期缓存
625
- * 优化:使用 LRU 缓存的清理方法
626
- */ function cleanupExpiredCache(cacheTTL) {
627
- if (transformCache) {
628
- transformCache.cleanupExpired(cacheTTL);
629
- }
630
- }
631
- async function transformRoutes(routes, options = {}) {
632
- const startTime = performance.now();
633
- const mergedOptions = {
634
- pathValidation: {
635
- ...DEFAULT_OPTIONS.pathValidation,
636
- ...options.pathValidation
637
- },
638
- performance: {
639
- ...DEFAULT_OPTIONS.performance,
640
- ...options.performance
641
- },
642
- enableDebugLog: options.enableDebugLog ?? DEFAULT_OPTIONS.enableDebugLog
643
- };
644
- // 早期返回:如果 routes 为空或未定义,直接返回空结果
645
- if (!routes) {
646
- if (mergedOptions.enableDebugLog) {
647
- _logger.logger.debug('路由配置为空,返回空结果');
648
- }
649
- return {
650
- pages: new Map(),
651
- layouts: new Map(),
652
- errors: new Map(),
653
- loadings: new Map(),
654
- routes: []
655
- };
656
- }
657
- // 处理 routes 可能是函数的情况
658
- let routesArray;
659
- try {
660
- routesArray = typeof routes === 'function' ? await routes() : routes;
661
- } catch (error) {
662
- const err = error instanceof Error ? error : new Error('路由配置加载失败');
663
- _logger.logger.error('路由配置加载失败:', err);
664
- throw new _utils.ValidationError('路由配置加载失败', {
665
- originalError: err
666
- });
667
- }
668
- // 早期返回:如果 routesArray 不是数组,直接返回空结果
669
- if (!Array.isArray(routesArray) || routesArray.length === 0) {
670
- if (mergedOptions.enableDebugLog) {
671
- _logger.logger.debug('路由配置不是数组或为空,返回空结果');
672
- }
673
- return {
674
- pages: new Map(),
675
- layouts: new Map(),
676
- errors: new Map(),
677
- loadings: new Map(),
678
- routes: []
679
- };
680
- }
681
- // 检查缓存
682
- const cacheTTL = mergedOptions.performance.cacheTTL ?? DEFAULT_OPTIONS.performance.cacheTTL;
683
- const maxCacheSize = mergedOptions.performance.maxCacheSize ?? DEFAULT_OPTIONS.performance.maxCacheSize;
684
- if (mergedOptions.performance.enableCache) {
685
- // 初始化 LRU 缓存(如果尚未初始化或大小发生变化)
686
- if (!transformCache || transformCache.size() !== maxCacheSize) {
687
- transformCache = new LRUCache(maxCacheSize);
688
- }
689
- const configHash = generateConfigHash(routesArray);
690
- if (configHash) {
691
- const cached = transformCache.get(configHash);
692
- if (cached && Date.now() - cached.timestamp < cacheTTL) {
693
- if (mergedOptions.enableDebugLog) {
694
- _logger.logger.debug('使用缓存结果');
695
- }
696
- // 直接返回缓存结果(LRU 缓存已处理访问时间更新)
697
- return cached.result;
698
- }
699
- }
700
- // 清理过期缓存
701
- cleanupExpiredCache(cacheTTL);
702
- }
703
- // 初始化结果对象
704
- const result = {
705
- pages: new Map(),
706
- layouts: new Map(),
707
- errors: new Map(),
708
- loadings: new Map(),
709
- routes: []
710
- };
711
- try {
712
- // 性能监控:记录各阶段耗时
713
- const extractStartTime = performance.now();
714
- // 提取组件路径到 Map 中(不转换路由配置)
715
- const pathValidation = {
716
- enablePathValidation: mergedOptions.pathValidation.enablePathValidation ?? DEFAULT_OPTIONS.pathValidation.enablePathValidation,
717
- allowedPathPrefixes: mergedOptions.pathValidation.allowedPathPrefixes ?? DEFAULT_OPTIONS.pathValidation.allowedPathPrefixes,
718
- maxPathLength: mergedOptions.pathValidation.maxPathLength ?? DEFAULT_OPTIONS.pathValidation.maxPathLength,
719
- allowAbsolutePaths: mergedOptions.pathValidation.allowAbsolutePaths ?? DEFAULT_OPTIONS.pathValidation.allowAbsolutePaths
720
- };
721
- const maxRecursionDepth = mergedOptions.performance.maxRecursionDepth ?? DEFAULT_OPTIONS.performance.maxRecursionDepth;
722
- // 异步提取路径(支持并行处理)
723
- await extractPathsOnly(routesArray, result, pathValidation, mergedOptions, maxRecursionDepth);
724
- const extractEndTime = performance.now();
725
- const extractDuration = extractEndTime - extractStartTime;
726
- // 直接使用原始路由配置,不进行转换
727
- result.routes = routesArray;
728
- // 缓存结果
729
- const cacheStartTime = performance.now();
730
- if (mergedOptions.performance.enableCache && transformCache) {
731
- const configHash = generateConfigHash(routesArray);
732
- if (configHash) {
733
- // 注意:Map 中包含函数值,structuredClone 会失败;统一使用手动克隆。
734
- const cachedResult = {
735
- pages: new Map(result.pages),
736
- layouts: new Map(result.layouts),
737
- errors: new Map(result.errors),
738
- loadings: new Map(result.loadings),
739
- routes: JSON.parse(JSON.stringify(result.routes))
740
- };
741
- transformCache.set(configHash, {
742
- result: cachedResult,
743
- timestamp: Date.now(),
744
- hash: configHash,
745
- accessTime: Date.now()
746
- });
747
- }
748
- }
749
- const cacheEndTime = performance.now();
750
- const cacheDuration = cacheEndTime - cacheStartTime;
751
- const endTime = performance.now();
752
- const totalDuration = endTime - startTime;
753
- if (mergedOptions.enableDebugLog) {
754
- // 详细的性能报告
755
- _logger.logger.debug(`路由转换完成,总耗时: ${totalDuration.toFixed(2)}ms`, {
756
- routeCount: result.routes.length,
757
- pageCount: result.pages.size,
758
- layoutCount: result.layouts.size,
759
- errorCount: result.errors.size,
760
- loadingCount: result.loadings.size,
761
- performance: {
762
- extractDuration: `${extractDuration.toFixed(2)}ms`,
763
- cacheDuration: `${cacheDuration.toFixed(2)}ms`,
764
- totalDuration: `${totalDuration.toFixed(2)}ms`
765
- },
766
- cache: {
767
- hit: transformCache ? 'miss' : 'disabled',
768
- size: transformCache?.size() ?? 0
769
- }
770
- });
771
- }
772
- return result;
773
- } catch (error) {
774
- const err = error instanceof Error ? error : new Error('路由转换失败');
775
- _logger.logger.error('路由转换失败:', err);
776
- throw new _utils.ValidationError('路由转换失败', {
777
- originalError: err
778
- });
779
- }
780
- }
781
-
782
- //# sourceMappingURL=transform.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"transformRoutes",{enumerable:true,get:function(){return transformRoutes}});const _logger=require("@vlian/logger");const _utils=require("@vlian/utils");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}let LRUCache=class LRUCache{get(key){const item=this.cache.get(key);if(item){item.accessTime=Date.now();this.cache.delete(key);this.cache.set(key,item)}return item}set(key,value){if(this.cache.has(key)){this.cache.delete(key)}else if(this.cache.size>=this.maxSize){const firstKey=this.cache.keys().next().value;if(firstKey){this.cache.delete(firstKey)}}value.accessTime=Date.now();this.cache.set(key,value)}delete(key){return this.cache.delete(key)}clear(){this.cache.clear()}size(){return this.cache.size}cleanupExpired(cacheTTL){const now=Date.now();for(const[key,item]of this.cache.entries()){if(now-item.timestamp>cacheTTL){this.cache.delete(key)}}}constructor(maxSize=50){_define_property(this,"cache",new Map);_define_property(this,"maxSize",void 0);this.maxSize=maxSize}};let transformCache=null;const DEFAULT_OPTIONS={pathValidation:{enablePathValidation:true,allowedPathPrefixes:["@/","./","../"],maxPathLength:500,allowAbsolutePaths:false},performance:{enableCache:true,cacheTTL:5*60*1e3,maxCacheSize:50,maxRecursionDepth:100,enableParallelProcessing:true,parallelBatchSize:10},enableDebugLog:false};function optimizedHash(str){if(str.length<100){let hash=0;for(let i=0;i<str.length;i++){const char=str.charCodeAt(i);hash=(hash<<5)-hash+char;hash=hash&hash}return Math.abs(hash).toString(36)}let hash=0;const step=Math.max(1,Math.floor(str.length/100));for(let i=0;i<str.length;i+=step){const char=str.charCodeAt(i);hash=(hash<<5)-hash+char;hash=hash&hash}return Math.abs(hash).toString(36)}function simpleHash(str){return optimizedHash(str)}function serializeComponentRef(value){if(typeof value==="string"){return{str:value}}if(typeof value==="function"){const fnText=String(value);return{fn:`${value.name||"anonymous"}:${fnText.length}`}}return{}}function serializeRouteConfig(route){const page=serializeComponentRef(route.page);const layout=serializeComponentRef(route.layout);const routeError=serializeComponentRef(route.error??route.errors);const loading=serializeComponentRef(route.loading);return{name:route.name,path:route.path,page:page.str,pageFn:page.fn,layout:layout.str,layoutFn:layout.fn,error:routeError.str,errorFn:routeError.fn,loading:loading.str,loadingFn:loading.fn,isGroup:route.isGroup,enableRedirection:route.enableRedirection,handle:route.handle?{title:route.handle.title,order:route.handle.order,needLogin:route.handle.needLogin,roles:Array.isArray(route.handle.roles)?[...route.handle.roles]:undefined}:undefined,children:route.children?.map(child=>serializeRouteConfig(child))}}function generateConfigHash(routes){try{if(routes.length===0){return"empty"}const serializedRoutes=routes.map(route=>serializeRouteConfig(route));const configStr=JSON.stringify(serializedRoutes);return simpleHash(configStr)}catch{return""}}const validatedPathCache=new Set;const PATH_TRAVERSAL_REGEX=/\.\.(\/|\\)|\.\.%2[Ff]|\.\.%5[Cc]|%2[Ee]%2[Ee]%2[Ff]|%2[Ee]%2[Ee]%5[Cc]/i;const ABSOLUTE_PATH_REGEX=/^\/|^[A-Za-z]:\\/;const CONTROL_CHAR_REGEX=/[\x00-\x1f\x7f]/;const NULL_BYTE_REGEX=/%00|\\0|\x00/;const URL_SCHEME_REGEX=/^[A-Za-z][A-Za-z0-9+.-]*:/;function validatePath(path,config){if(validatedPathCache.has(path)){return{valid:true}}if(path.length>config.maxPathLength){return{valid:false,error:process.env.NODE_ENV==="development"?`路径长度超过最大限制 ${config.maxPathLength} 字符`:"路径验证失败"}}if(path.length===0){return{valid:false,error:"路径不能为空"}}if(PATH_TRAVERSAL_REGEX.test(path)){return{valid:false,error:process.env.NODE_ENV==="development"?"路径包含路径遍历字符(../),可能存在安全风险":"路径验证失败"}}if(NULL_BYTE_REGEX.test(path)){return{valid:false,error:process.env.NODE_ENV==="development"?"路径包含空字节,可能存在安全风险":"路径验证失败"}}if(CONTROL_CHAR_REGEX.test(path)){return{valid:false,error:process.env.NODE_ENV==="development"?"路径包含控制字符,可能存在安全风险":"路径验证失败"}}if(URL_SCHEME_REGEX.test(path)){return{valid:false,error:process.env.NODE_ENV==="development"?"不允许使用带协议的路径":"路径验证失败"}}if(!config.allowAbsolutePaths&&ABSOLUTE_PATH_REGEX.test(path)){return{valid:false,error:process.env.NODE_ENV==="development"?"不允许使用绝对路径":"路径验证失败"}}if(!path.startsWith("@/")&&!path.startsWith("./")&&!path.startsWith("../")){return{valid:false,error:process.env.NODE_ENV==="development"?"仅允许使用 @/、./、../ 开头的模块路径":"路径验证失败"}}if(config.allowedPathPrefixes.length>0){const prefixSet=new Set(config.allowedPathPrefixes);const isAllowed=Array.from(prefixSet).some(prefix=>path.startsWith(prefix));if(!isAllowed){return{valid:false,error:process.env.NODE_ENV==="development"?`路径不在允许的前缀列表中: ${config.allowedPathPrefixes.join(", ")}`:"路径验证失败"}}}const validation=_utils.SecurityUtils.validateInput(path);if(!validation.safe){return{valid:false,error:process.env.NODE_ENV==="development"?validation.reason||"路径包含潜在的危险内容":"路径验证失败"}}if(validatedPathCache.size<1e3){validatedPathCache.add(path)}return{valid:true}}const NORMALIZE_REGEX={multipleSlashes:/\/+/g,dotSlash:/\/\.\//g,trailingDot:/\/\.$/};function normalizePath(path){return path.replace(NORMALIZE_REGEX.multipleSlashes,"/").replace(NORMALIZE_REGEX.dotSlash,"/").replace(NORMALIZE_REGEX.trailingDot,"").trim()}function isValidPathString(path){return typeof path==="string"&&path.length>0}function isComponentImport(path){return typeof path==="function"}function createDynamicImport(path){return()=>Promise.resolve(path).then(p=>/*#__PURE__*/_interop_require_wildcard(require(p)))}function extractAndValidatePath(path,map,config,options){if(isComponentImport(path)){return path}if(!isValidPathString(path)){return null}const normalizedPath=normalizePath(path);const existingImport=map.get(normalizedPath);if(existingImport!==undefined){return existingImport}if(config.enablePathValidation){const validation=validatePath(normalizedPath,config);if(!validation.valid){const errorMessage=process.env.NODE_ENV==="development"?`路径验证失败: ${validation.error}`:"路径验证失败";const error=new _utils.SecurityError(errorMessage,undefined,process.env.NODE_ENV==="development"?{path:normalizedPath}:{});if(options.enableDebugLog){_logger.logger.error("路径验证失败:",error)}if(process.env.NODE_ENV==="development"){throw error}else{_logger.logger.warn("路径验证失败,已跳过");return null}}}const importFn=createDynamicImport(normalizedPath);map.set(normalizedPath,importFn);if(options.enableDebugLog){_logger.logger.debug("提取路径:",normalizedPath)}return importFn}let StackNodePool=class StackNodePool{acquire(route,depth){if(this.pool.length>0){const node=this.pool.pop();node.route=route;node.depth=depth;return node}return{route,depth}}release(node){if(this.pool.length<this.maxPoolSize){this.pool.push(node)}}constructor(){_define_property(this,"pool",[]);_define_property(this,"maxPoolSize",100)}};const stackNodePool=new StackNodePool;async function extractPathsOnly(routes,result,config,options,maxDepth){const enableParallel=options.performance?.enableParallelProcessing??true;const batchSize=options.performance?.parallelBatchSize??10;if(enableParallel&&routes.length>batchSize){const pathsToProcess=[];const stack=[];for(let i=routes.length-1;i>=0;i--){stack.push({route:routes[i],depth:0})}while(stack.length>0){const{route,depth}=stack.pop();if(depth>maxDepth){_logger.logger.warn(`路径提取达到最大深度 ${maxDepth},跳过路由:`,route.name);continue}if(route.page&&typeof route.page==="string"){pathsToProcess.push({path:route.page,map:result.pages})}if(route.layout&&typeof route.layout==="string"){pathsToProcess.push({path:route.layout,map:result.layouts})}const routeError=route.error??route.errors;if(routeError&&typeof routeError==="string"){pathsToProcess.push({path:routeError,map:result.errors})}if(route.loading&&typeof route.loading==="string"){pathsToProcess.push({path:route.loading,map:result.loadings})}if(route.children&&Array.isArray(route.children)&&route.children.length>0){for(let i=route.children.length-1;i>=0;i--){stack.push({route:route.children[i],depth:depth+1})}}}for(let i=0;i<pathsToProcess.length;i+=batchSize){const batch=pathsToProcess.slice(i,i+batchSize);await Promise.all(batch.map(({path,map})=>Promise.resolve(extractAndValidatePath(path,map,config,options))))}}else{const stack=[];for(let i=routes.length-1;i>=0;i--){stack.push(stackNodePool.acquire(routes[i],0))}while(stack.length>0){const node=stack.pop();const{route,depth}=node;if(depth>maxDepth){_logger.logger.warn(`路径提取达到最大深度 ${maxDepth},跳过路由:`,route.name);stackNodePool.release(node);continue}extractAndValidatePath(route.page,result.pages,config,options);extractAndValidatePath(route.layout,result.layouts,config,options);extractAndValidatePath(route.error??route.errors,result.errors,config,options);extractAndValidatePath(route.loading,result.loadings,config,options);if(route.children&&Array.isArray(route.children)&&route.children.length>0){for(let i=route.children.length-1;i>=0;i--){stack.push(stackNodePool.acquire(route.children[i],depth+1))}}stackNodePool.release(node)}}}function cleanupExpiredCache(cacheTTL){if(transformCache){transformCache.cleanupExpired(cacheTTL)}}async function transformRoutes(routes,options={}){const startTime=performance.now();const mergedOptions={pathValidation:{...DEFAULT_OPTIONS.pathValidation,...options.pathValidation},performance:{...DEFAULT_OPTIONS.performance,...options.performance},enableDebugLog:options.enableDebugLog??DEFAULT_OPTIONS.enableDebugLog};if(!routes){if(mergedOptions.enableDebugLog){_logger.logger.debug("路由配置为空,返回空结果")}return{pages:new Map,layouts:new Map,errors:new Map,loadings:new Map,routes:[]}}let routesArray;try{routesArray=typeof routes==="function"?await routes():routes}catch(error){const err=error instanceof Error?error:new Error("路由配置加载失败");_logger.logger.error("路由配置加载失败:",err);throw new _utils.ValidationError("路由配置加载失败",{originalError:err})}if(!Array.isArray(routesArray)||routesArray.length===0){if(mergedOptions.enableDebugLog){_logger.logger.debug("路由配置不是数组或为空,返回空结果")}return{pages:new Map,layouts:new Map,errors:new Map,loadings:new Map,routes:[]}}const cacheTTL=mergedOptions.performance.cacheTTL??DEFAULT_OPTIONS.performance.cacheTTL;const maxCacheSize=mergedOptions.performance.maxCacheSize??DEFAULT_OPTIONS.performance.maxCacheSize;if(mergedOptions.performance.enableCache){if(!transformCache||transformCache.size()!==maxCacheSize){transformCache=new LRUCache(maxCacheSize)}const configHash=generateConfigHash(routesArray);if(configHash){const cached=transformCache.get(configHash);if(cached&&Date.now()-cached.timestamp<cacheTTL){if(mergedOptions.enableDebugLog){_logger.logger.debug("使用缓存结果")}return cached.result}}cleanupExpiredCache(cacheTTL)}const result={pages:new Map,layouts:new Map,errors:new Map,loadings:new Map,routes:[]};try{const extractStartTime=performance.now();const pathValidation={enablePathValidation:mergedOptions.pathValidation.enablePathValidation??DEFAULT_OPTIONS.pathValidation.enablePathValidation,allowedPathPrefixes:mergedOptions.pathValidation.allowedPathPrefixes??DEFAULT_OPTIONS.pathValidation.allowedPathPrefixes,maxPathLength:mergedOptions.pathValidation.maxPathLength??DEFAULT_OPTIONS.pathValidation.maxPathLength,allowAbsolutePaths:mergedOptions.pathValidation.allowAbsolutePaths??DEFAULT_OPTIONS.pathValidation.allowAbsolutePaths};const maxRecursionDepth=mergedOptions.performance.maxRecursionDepth??DEFAULT_OPTIONS.performance.maxRecursionDepth;await extractPathsOnly(routesArray,result,pathValidation,mergedOptions,maxRecursionDepth);const extractEndTime=performance.now();const extractDuration=extractEndTime-extractStartTime;result.routes=routesArray;const cacheStartTime=performance.now();if(mergedOptions.performance.enableCache&&transformCache){const configHash=generateConfigHash(routesArray);if(configHash){const cachedResult={pages:new Map(result.pages),layouts:new Map(result.layouts),errors:new Map(result.errors),loadings:new Map(result.loadings),routes:JSON.parse(JSON.stringify(result.routes))};transformCache.set(configHash,{result:cachedResult,timestamp:Date.now(),hash:configHash,accessTime:Date.now()})}}const cacheEndTime=performance.now();const cacheDuration=cacheEndTime-cacheStartTime;const endTime=performance.now();const totalDuration=endTime-startTime;if(mergedOptions.enableDebugLog){_logger.logger.debug(`路由转换完成,总耗时: ${totalDuration.toFixed(2)}ms`,{routeCount:result.routes.length,pageCount:result.pages.size,layoutCount:result.layouts.size,errorCount:result.errors.size,loadingCount:result.loadings.size,performance:{extractDuration:`${extractDuration.toFixed(2)}ms`,cacheDuration:`${cacheDuration.toFixed(2)}ms`,totalDuration:`${totalDuration.toFixed(2)}ms`},cache:{hit:transformCache?"miss":"disabled",size:transformCache?.size()??0}})}return result}catch(error){const err=error instanceof Error?error:new Error("路由转换失败");_logger.logger.error("路由转换失败:",err);throw new _utils.ValidationError("路由转换失败",{originalError:err})}}