@real-router/core 0.79.0 → 0.80.0

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 (338) hide show
  1. package/dist/cjs/Router-DGUed2F4.js +2 -0
  2. package/dist/cjs/{Router-BRuC-daj.js.map → Router-DGUed2F4.js.map} +1 -1
  3. package/dist/cjs/{Router-BG5yNYUG.d.ts → Router.d.ts} +5 -4
  4. package/dist/cjs/Router.d.ts.map +1 -0
  5. package/dist/cjs/Router.js +2 -0
  6. package/dist/cjs/Router.js.map +1 -0
  7. package/dist/cjs/RouterError.d.ts +182 -0
  8. package/dist/cjs/RouterError.d.ts.map +1 -0
  9. package/dist/cjs/RouterError.js +2 -0
  10. package/dist/cjs/RouterError.js.map +1 -0
  11. package/dist/cjs/api/cloneRouter.d.ts +86 -0
  12. package/dist/cjs/api/cloneRouter.d.ts.map +1 -0
  13. package/dist/cjs/api/cloneRouter.js +2 -0
  14. package/dist/cjs/api/cloneRouter.js.map +1 -0
  15. package/dist/cjs/api/getDependenciesApi.d.ts +7 -0
  16. package/dist/cjs/api/getDependenciesApi.d.ts.map +1 -0
  17. package/dist/cjs/api/getDependenciesApi.js +2 -0
  18. package/dist/cjs/api/getDependenciesApi.js.map +1 -0
  19. package/dist/cjs/api/getLifecycleApi.d.ts +7 -0
  20. package/dist/cjs/api/getLifecycleApi.d.ts.map +1 -0
  21. package/dist/cjs/api/getLifecycleApi.js +2 -0
  22. package/dist/cjs/api/getLifecycleApi.js.map +1 -0
  23. package/dist/cjs/api/getPluginApi.d.ts +7 -0
  24. package/dist/cjs/api/getPluginApi.d.ts.map +1 -0
  25. package/dist/cjs/api/getPluginApi.js +2 -0
  26. package/dist/cjs/api/getPluginApi.js.map +1 -0
  27. package/dist/cjs/api/getRoutesApi.d.ts +7 -0
  28. package/dist/cjs/api/getRoutesApi.d.ts.map +1 -0
  29. package/dist/cjs/api/getRoutesApi.js +2 -0
  30. package/dist/cjs/api/getRoutesApi.js.map +1 -0
  31. package/dist/cjs/api/helpers.js +2 -0
  32. package/dist/cjs/api/helpers.js.map +1 -0
  33. package/dist/cjs/api/types.d.ts +9 -0
  34. package/dist/cjs/api/types.d.ts.map +1 -0
  35. package/dist/cjs/api.d.ts +8 -105
  36. package/dist/cjs/api.js +1 -2
  37. package/dist/cjs/api.js.map +1 -1
  38. package/dist/cjs/buildParamMeta-DniluAIV.js.map +1 -1
  39. package/dist/cjs/constants.d.ts +25 -0
  40. package/dist/cjs/constants.d.ts.map +1 -0
  41. package/dist/cjs/constants.js +2 -0
  42. package/dist/cjs/constants.js.map +1 -0
  43. package/dist/cjs/createRouter.d.ts +23 -0
  44. package/dist/cjs/createRouter.d.ts.map +1 -0
  45. package/dist/cjs/createRouter.js +2 -0
  46. package/dist/cjs/createRouter.js.map +1 -0
  47. package/dist/cjs/engine/builder/buildTree.js +2 -0
  48. package/dist/cjs/engine/builder/buildTree.js.map +1 -0
  49. package/dist/cjs/engine/builder/computeCaches.js +2 -0
  50. package/dist/cjs/engine/builder/computeCaches.js.map +1 -0
  51. package/dist/cjs/engine/builder/createRouteTree.js +2 -0
  52. package/dist/cjs/engine/builder/createRouteTree.js.map +1 -0
  53. package/dist/cjs/engine/builder/types.d.ts +48 -0
  54. package/dist/cjs/engine/builder/types.d.ts.map +1 -0
  55. package/dist/cjs/engine/createMatcher.d.ts +29 -0
  56. package/dist/cjs/engine/createMatcher.d.ts.map +1 -0
  57. package/dist/cjs/engine/createMatcher.js +2 -0
  58. package/dist/cjs/engine/createMatcher.js.map +1 -0
  59. package/dist/cjs/engine/operations/routeTreeToDefinitions.js +2 -0
  60. package/dist/cjs/engine/operations/routeTreeToDefinitions.js.map +1 -0
  61. package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts +16 -0
  62. package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts.map +1 -0
  63. package/dist/cjs/engine/path-matcher/SegmentMatcher.js +2 -0
  64. package/dist/cjs/engine/path-matcher/SegmentMatcher.js.map +1 -0
  65. package/dist/cjs/engine/path-matcher/buildParamMeta.js +2 -0
  66. package/dist/cjs/engine/path-matcher/buildParamMeta.js.map +1 -0
  67. package/dist/cjs/engine/path-matcher/encoding.js +2 -0
  68. package/dist/cjs/engine/path-matcher/encoding.js.map +1 -0
  69. package/dist/cjs/engine/path-matcher/parseSegment.js +2 -0
  70. package/dist/cjs/engine/path-matcher/parseSegment.js.map +1 -0
  71. package/dist/cjs/engine/path-matcher/pathUtils.js +2 -0
  72. package/dist/cjs/engine/path-matcher/pathUtils.js.map +1 -0
  73. package/dist/cjs/engine/path-matcher/percentEncoding.js +2 -0
  74. package/dist/cjs/engine/path-matcher/percentEncoding.js.map +1 -0
  75. package/dist/cjs/engine/path-matcher/registration/buildParts.js +2 -0
  76. package/dist/cjs/engine/path-matcher/registration/buildParts.js.map +1 -0
  77. package/dist/cjs/engine/path-matcher/registration/context.js +2 -0
  78. package/dist/cjs/engine/path-matcher/registration/context.js.map +1 -0
  79. package/dist/cjs/engine/path-matcher/registration/errors.js +2 -0
  80. package/dist/cjs/engine/path-matcher/registration/errors.js.map +1 -0
  81. package/dist/cjs/engine/path-matcher/registration/index.js +2 -0
  82. package/dist/cjs/engine/path-matcher/registration/index.js.map +1 -0
  83. package/dist/cjs/engine/path-matcher/registration/trie.js +2 -0
  84. package/dist/cjs/engine/path-matcher/registration/trie.js.map +1 -0
  85. package/dist/cjs/engine/path-matcher/registration/trieNodes.js +2 -0
  86. package/dist/cjs/engine/path-matcher/registration/trieNodes.js.map +1 -0
  87. package/dist/cjs/{types-DaXCTxi1.d.ts → engine/path-matcher/types.d.ts} +2 -47
  88. package/dist/cjs/engine/path-matcher/types.d.ts.map +1 -0
  89. package/dist/cjs/engine/search-params/decode.js +2 -0
  90. package/dist/cjs/engine/search-params/decode.js.map +1 -0
  91. package/dist/cjs/engine/search-params/encode.js +2 -0
  92. package/dist/cjs/engine/search-params/encode.js.map +1 -0
  93. package/dist/cjs/engine/search-params/searchParams.js +2 -0
  94. package/dist/cjs/engine/search-params/searchParams.js.map +1 -0
  95. package/dist/cjs/engine/search-params/strategies/array.js +2 -0
  96. package/dist/cjs/engine/search-params/strategies/array.js.map +1 -0
  97. package/dist/cjs/engine/search-params/strategies/boolean.js +2 -0
  98. package/dist/cjs/engine/search-params/strategies/boolean.js.map +1 -0
  99. package/dist/cjs/engine/search-params/strategies/index.js +2 -0
  100. package/dist/cjs/engine/search-params/strategies/index.js.map +1 -0
  101. package/dist/cjs/engine/search-params/strategies/null.js +2 -0
  102. package/dist/cjs/engine/search-params/strategies/null.js.map +1 -0
  103. package/dist/cjs/engine/search-params/strategies/number.js +2 -0
  104. package/dist/cjs/engine/search-params/strategies/number.js.map +1 -0
  105. package/dist/cjs/engine/search-params/types.d.ts +72 -0
  106. package/dist/cjs/engine/search-params/types.d.ts.map +1 -0
  107. package/dist/cjs/engine/search-params/utils.js +2 -0
  108. package/dist/cjs/engine/search-params/utils.js.map +1 -0
  109. package/dist/cjs/engine/validation/route-batch.d.ts +38 -0
  110. package/dist/cjs/engine/validation/route-batch.d.ts.map +1 -0
  111. package/dist/cjs/engine/validation/route-batch.js +2 -0
  112. package/dist/cjs/engine/validation/route-batch.js.map +1 -0
  113. package/dist/cjs/engine/validation/routes.js +2 -0
  114. package/dist/cjs/engine/validation/routes.js.map +1 -0
  115. package/dist/cjs/foundation/event-emitter/EventEmitter.js +2 -0
  116. package/dist/cjs/foundation/event-emitter/EventEmitter.js.map +1 -0
  117. package/dist/cjs/foundation/fsm/fsm.js +2 -0
  118. package/dist/cjs/foundation/fsm/fsm.js.map +1 -0
  119. package/dist/cjs/foundation/logger/RouterLogger.js +2 -0
  120. package/dist/cjs/foundation/logger/RouterLogger.js.map +1 -0
  121. package/dist/cjs/foundation/logger/constants.js +2 -0
  122. package/dist/cjs/foundation/logger/constants.js.map +1 -0
  123. package/dist/cjs/getNavigator.d.ts +6 -0
  124. package/dist/cjs/getNavigator.d.ts.map +1 -0
  125. package/dist/cjs/getNavigator.js +2 -0
  126. package/dist/cjs/getNavigator.js.map +1 -0
  127. package/dist/cjs/guards.js +2 -0
  128. package/dist/cjs/guards.js.map +1 -0
  129. package/dist/cjs/helpers.js +2 -0
  130. package/dist/cjs/helpers.js.map +1 -0
  131. package/dist/cjs/index.d.ts +17 -239
  132. package/dist/cjs/index.js +1 -2
  133. package/dist/cjs/internals.d.ts +98 -0
  134. package/dist/cjs/internals.d.ts.map +1 -0
  135. package/dist/cjs/internals.js +2 -0
  136. package/dist/cjs/internals.js.map +1 -0
  137. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts +10 -0
  138. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts.map +1 -0
  139. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js +2 -0
  140. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js.map +1 -0
  141. package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js +2 -0
  142. package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js.map +1 -0
  143. package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js +2 -0
  144. package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js.map +1 -0
  145. package/dist/cjs/namespaces/NavigationNamespace/constants.js +2 -0
  146. package/dist/cjs/namespaces/NavigationNamespace/constants.js.map +1 -0
  147. package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js +2 -0
  148. package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js.map +1 -0
  149. package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js +2 -0
  150. package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js.map +1 -0
  151. package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js +2 -0
  152. package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js.map +1 -0
  153. package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js +2 -0
  154. package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js.map +1 -0
  155. package/dist/cjs/namespaces/OptionsNamespace/constants.js +2 -0
  156. package/dist/cjs/namespaces/OptionsNamespace/constants.js.map +1 -0
  157. package/dist/cjs/namespaces/OptionsNamespace/helpers.js +2 -0
  158. package/dist/cjs/namespaces/OptionsNamespace/helpers.js.map +1 -0
  159. package/dist/cjs/namespaces/OptionsNamespace/validators.js +2 -0
  160. package/dist/cjs/namespaces/OptionsNamespace/validators.js.map +1 -0
  161. package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js +2 -0
  162. package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js.map +1 -0
  163. package/dist/cjs/namespaces/PluginsNamespace/constants.js +2 -0
  164. package/dist/cjs/namespaces/PluginsNamespace/constants.js.map +1 -0
  165. package/dist/cjs/namespaces/PluginsNamespace/validators.js +2 -0
  166. package/dist/cjs/namespaces/PluginsNamespace/validators.js.map +1 -0
  167. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts +174 -0
  168. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts.map +1 -0
  169. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js +2 -0
  170. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js.map +1 -0
  171. package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts +17 -0
  172. package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts.map +1 -0
  173. package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js +2 -0
  174. package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js.map +1 -0
  175. package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js +2 -0
  176. package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js.map +1 -0
  177. package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js +2 -0
  178. package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js.map +1 -0
  179. package/dist/cjs/namespaces/RoutesNamespace/constants.js +2 -0
  180. package/dist/cjs/namespaces/RoutesNamespace/constants.js.map +1 -0
  181. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts +5 -0
  182. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts.map +1 -0
  183. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js +2 -0
  184. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js.map +1 -0
  185. package/dist/cjs/namespaces/RoutesNamespace/helpers.js +2 -0
  186. package/dist/cjs/namespaces/RoutesNamespace/helpers.js.map +1 -0
  187. package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js +2 -0
  188. package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js.map +1 -0
  189. package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts +42 -0
  190. package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts.map +1 -0
  191. package/dist/cjs/namespaces/RoutesNamespace/routesStore.js +2 -0
  192. package/dist/cjs/namespaces/RoutesNamespace/routesStore.js.map +1 -0
  193. package/dist/cjs/namespaces/RoutesNamespace/types.d.ts +57 -0
  194. package/dist/cjs/namespaces/RoutesNamespace/types.d.ts.map +1 -0
  195. package/dist/cjs/namespaces/StateNamespace/StateNamespace.js +2 -0
  196. package/dist/cjs/namespaces/StateNamespace/StateNamespace.js.map +1 -0
  197. package/dist/cjs/namespaces/StateNamespace/helpers.js +2 -0
  198. package/dist/cjs/namespaces/StateNamespace/helpers.js.map +1 -0
  199. package/dist/cjs/routerFSM.js +2 -0
  200. package/dist/cjs/routerFSM.js.map +1 -0
  201. package/dist/cjs/stateMetaStore.js +2 -0
  202. package/dist/cjs/stateMetaStore.js.map +1 -0
  203. package/dist/cjs/transitionPath.js +2 -0
  204. package/dist/cjs/transitionPath.js.map +1 -0
  205. package/dist/cjs/{RouterValidator-CZ8kPkrI.d.ts → types/RouterValidator.d.ts} +2 -2
  206. package/dist/cjs/types/RouterValidator.d.ts.map +1 -0
  207. package/dist/cjs/types/api.d.ts +184 -0
  208. package/dist/cjs/types/api.d.ts.map +1 -0
  209. package/dist/cjs/types/base.d.ts +95 -0
  210. package/dist/cjs/types/base.d.ts.map +1 -0
  211. package/dist/cjs/types/constants.d.ts +72 -0
  212. package/dist/cjs/types/constants.d.ts.map +1 -0
  213. package/dist/cjs/types/internal.d.ts +9 -0
  214. package/dist/cjs/types/internal.d.ts.map +1 -0
  215. package/dist/cjs/types/limits.d.ts +45 -0
  216. package/dist/cjs/types/limits.d.ts.map +1 -0
  217. package/dist/cjs/types/route-node-types.d.ts +46 -0
  218. package/dist/cjs/types/route-node-types.d.ts.map +1 -0
  219. package/dist/cjs/types/router.d.ts +313 -0
  220. package/dist/cjs/types/router.d.ts.map +1 -0
  221. package/dist/cjs/types/tree-changed.d.ts +55 -0
  222. package/dist/cjs/types/tree-changed.d.ts.map +1 -0
  223. package/dist/cjs/types.d.ts +208 -2
  224. package/dist/cjs/types.d.ts.map +1 -0
  225. package/dist/cjs/validation.d.ts +6 -518
  226. package/dist/cjs/validation.js +1 -2
  227. package/dist/cjs/wiring/wireNamespaces.js +2 -0
  228. package/dist/cjs/wiring/wireNamespaces.js.map +1 -0
  229. package/dist/esm/Router-Bk6PfSE8.mjs +2 -0
  230. package/dist/esm/{Router-DikzugaD.mjs.map → Router-Bk6PfSE8.mjs.map} +1 -1
  231. package/dist/esm/{Router-Cy75qbgU.d.mts → Router.d.mts} +5 -4
  232. package/dist/esm/Router.d.mts.map +1 -0
  233. package/dist/esm/RouterError.d.mts +182 -0
  234. package/dist/esm/RouterError.d.mts.map +1 -0
  235. package/dist/esm/api/cloneRouter.d.mts +86 -0
  236. package/dist/esm/api/cloneRouter.d.mts.map +1 -0
  237. package/dist/esm/api/getDependenciesApi.d.mts +7 -0
  238. package/dist/esm/api/getDependenciesApi.d.mts.map +1 -0
  239. package/dist/esm/api/getLifecycleApi.d.mts +7 -0
  240. package/dist/esm/api/getLifecycleApi.d.mts.map +1 -0
  241. package/dist/esm/api/getPluginApi.d.mts +7 -0
  242. package/dist/esm/api/getPluginApi.d.mts.map +1 -0
  243. package/dist/esm/api/getRoutesApi.d.mts +7 -0
  244. package/dist/esm/api/getRoutesApi.d.mts.map +1 -0
  245. package/dist/esm/api/types.d.mts +9 -0
  246. package/dist/esm/api/types.d.mts.map +1 -0
  247. package/dist/esm/api.d.mts +8 -105
  248. package/dist/esm/api.mjs +1 -1
  249. package/dist/esm/api.mjs.map +1 -1
  250. package/dist/esm/buildParamMeta-bOLhLF9h.mjs.map +1 -1
  251. package/dist/esm/constants.d.mts +25 -0
  252. package/dist/esm/constants.d.mts.map +1 -0
  253. package/dist/esm/createRouter.d.mts +23 -0
  254. package/dist/esm/createRouter.d.mts.map +1 -0
  255. package/dist/esm/engine/builder/types.d.mts +48 -0
  256. package/dist/esm/engine/builder/types.d.mts.map +1 -0
  257. package/dist/esm/engine/createMatcher.d.mts +29 -0
  258. package/dist/esm/engine/createMatcher.d.mts.map +1 -0
  259. package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts +16 -0
  260. package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts.map +1 -0
  261. package/dist/esm/{types-DaXCTxi1.d.mts → engine/path-matcher/types.d.mts} +2 -47
  262. package/dist/esm/engine/path-matcher/types.d.mts.map +1 -0
  263. package/dist/esm/engine/search-params/types.d.mts +72 -0
  264. package/dist/esm/engine/search-params/types.d.mts.map +1 -0
  265. package/dist/esm/engine/validation/route-batch.d.mts +38 -0
  266. package/dist/esm/engine/validation/route-batch.d.mts.map +1 -0
  267. package/dist/esm/getNavigator.d.mts +6 -0
  268. package/dist/esm/getNavigator.d.mts.map +1 -0
  269. package/dist/esm/index.d.mts +17 -239
  270. package/dist/esm/index.mjs +1 -1
  271. package/dist/esm/internals.d.mts +98 -0
  272. package/dist/esm/internals.d.mts.map +1 -0
  273. package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts +10 -0
  274. package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts.map +1 -0
  275. package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts +174 -0
  276. package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts.map +1 -0
  277. package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts +17 -0
  278. package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts.map +1 -0
  279. package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts +5 -0
  280. package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts.map +1 -0
  281. package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts +42 -0
  282. package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts.map +1 -0
  283. package/dist/esm/namespaces/RoutesNamespace/types.d.mts +57 -0
  284. package/dist/esm/namespaces/RoutesNamespace/types.d.mts.map +1 -0
  285. package/dist/esm/{RouterValidator-CZ8kPkrI.d.mts → types/RouterValidator.d.mts} +2 -2
  286. package/dist/esm/types/RouterValidator.d.mts.map +1 -0
  287. package/dist/esm/types/api.d.mts +184 -0
  288. package/dist/esm/types/api.d.mts.map +1 -0
  289. package/dist/esm/types/base.d.mts +95 -0
  290. package/dist/esm/types/base.d.mts.map +1 -0
  291. package/dist/esm/types/constants.d.mts +72 -0
  292. package/dist/esm/types/constants.d.mts.map +1 -0
  293. package/dist/esm/types/internal.d.mts +9 -0
  294. package/dist/esm/types/internal.d.mts.map +1 -0
  295. package/dist/esm/types/limits.d.mts +45 -0
  296. package/dist/esm/types/limits.d.mts.map +1 -0
  297. package/dist/esm/types/route-node-types.d.mts +46 -0
  298. package/dist/esm/types/route-node-types.d.mts.map +1 -0
  299. package/dist/esm/types/router.d.mts +313 -0
  300. package/dist/esm/types/router.d.mts.map +1 -0
  301. package/dist/esm/types/tree-changed.d.mts +55 -0
  302. package/dist/esm/types/tree-changed.d.mts.map +1 -0
  303. package/dist/esm/types.d.mts +208 -2
  304. package/dist/esm/types.d.mts.map +1 -0
  305. package/dist/esm/validation.d.mts +6 -518
  306. package/package.json +5 -14
  307. package/dist/cjs/Router-BG5yNYUG.d.ts.map +0 -1
  308. package/dist/cjs/Router-BRuC-daj.js +0 -2
  309. package/dist/cjs/RouterValidator-CZ8kPkrI.d.ts.map +0 -1
  310. package/dist/cjs/api.d.ts.map +0 -1
  311. package/dist/cjs/cloneRouter-3AOUeQ8M.js +0 -2
  312. package/dist/cjs/cloneRouter-3AOUeQ8M.js.map +0 -1
  313. package/dist/cjs/index-CAnGQpnz.d.ts +0 -974
  314. package/dist/cjs/index-CAnGQpnz.d.ts.map +0 -1
  315. package/dist/cjs/index-DDrryY2U.d.ts +0 -309
  316. package/dist/cjs/index-DDrryY2U.d.ts.map +0 -1
  317. package/dist/cjs/index.d.ts.map +0 -1
  318. package/dist/cjs/types-DaXCTxi1.d.ts.map +0 -1
  319. package/dist/cjs/utils.d.ts +0 -2
  320. package/dist/cjs/utils.js +0 -2
  321. package/dist/cjs/utils.js.map +0 -1
  322. package/dist/cjs/validation.d.ts.map +0 -1
  323. package/dist/esm/Router-Cy75qbgU.d.mts.map +0 -1
  324. package/dist/esm/Router-DikzugaD.mjs +0 -2
  325. package/dist/esm/RouterValidator-CZ8kPkrI.d.mts.map +0 -1
  326. package/dist/esm/api.d.mts.map +0 -1
  327. package/dist/esm/cloneRouter-CAh5vA3l.mjs +0 -2
  328. package/dist/esm/cloneRouter-CAh5vA3l.mjs.map +0 -1
  329. package/dist/esm/index-CAnGQpnz.d.mts +0 -974
  330. package/dist/esm/index-CAnGQpnz.d.mts.map +0 -1
  331. package/dist/esm/index-DnSU6huX.d.mts +0 -309
  332. package/dist/esm/index-DnSU6huX.d.mts.map +0 -1
  333. package/dist/esm/index.d.mts.map +0 -1
  334. package/dist/esm/types-DaXCTxi1.d.mts.map +0 -1
  335. package/dist/esm/utils.d.mts +0 -2
  336. package/dist/esm/utils.mjs +0 -2
  337. package/dist/esm/utils.mjs.map +0 -1
  338. package/dist/esm/validation.d.mts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CAnGQpnz.d.ts","names":[],"sources":["../../src/types/route-node-types.ts","../../src/types/base.ts","../../src/types/limits.ts","../../src/types/router.ts","../../src/types/constants.ts","../../src/types/tree-changed.ts","../../src/types/api.ts"],"mappings":"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"}
@@ -1,309 +0,0 @@
1
- import { $ as State, U as Router, X as Params, w as DefaultDependencies } from "./index-CAnGQpnz.js";
2
- import { t as Router$1 } from "./Router-BG5yNYUG.js";
3
-
4
- //#region src/utils/createRequestScope.d.ts
5
- /**
6
- * Subset of Node's `http.IncomingMessage` that `createRequestScope` relies on:
7
- * a `"close"` event indicating that the client disconnected (or the response
8
- * was fully sent) and the standard `removeListener` cleanup hook.
9
- */
10
- interface IncomingMessageLike {
11
- on: (event: "close", listener: () => void) => unknown;
12
- removeListener?: (event: "close", listener: () => void) => unknown;
13
- }
14
- /**
15
- * Web `Request`-shaped object — anything carrying an `AbortSignal`. Web
16
- * runtimes (Bun, Cloudflare Workers, Vite RSC) surface client-disconnect via
17
- * `request.signal` directly, so no listener attachment is needed.
18
- */
19
- interface RequestLike {
20
- signal: AbortSignal;
21
- }
22
- type RequestScopeSource = IncomingMessageLike | RequestLike;
23
- interface RequestScope<Dependencies extends DefaultDependencies = DefaultDependencies> extends AsyncDisposable {
24
- /**
25
- * Per-request router clone. Carries `abortSignal` injected into its
26
- * dependencies — loaders can `getDep("abortSignal")` and pass it to fetch /
27
- * `withTimeout` for cooperative cancellation when the client disconnects.
28
- */
29
- readonly router: Router$1<Dependencies>;
30
- /**
31
- * Aborts when the request closes (Node `IncomingMessage`'s `"close"` event)
32
- * or when the upstream Web `Request.signal` aborts.
33
- */
34
- readonly signal: AbortSignal;
35
- /**
36
- * Detach the close listener (if attached to a Node `IncomingMessage`) and
37
- * dispose the cloned router. Idempotent — safe to call multiple times or in
38
- * combination with `Symbol.asyncDispose`.
39
- */
40
- dispose: () => Promise<void>;
41
- }
42
- /**
43
- * Build a per-request router scope: clones `base`, attaches an `AbortSignal`
44
- * tied to the request's lifetime, and exposes `dispose()` (plus
45
- * `Symbol.asyncDispose` for `await using` declarations).
46
- *
47
- * Replaces the four-step boilerplate that every server entry repeats:
48
- *
49
- * 1. `new AbortController()` per request
50
- * 2. `req.on("close", () => controller.abort())`
51
- * 3. `cloneRouter(base, { ...deps, abortSignal: signal })`
52
- * 4. `try { ... } finally { router.dispose() }`
53
- *
54
- * The signal is injected into the router clone under `abortSignal` so existing
55
- * loaders that read `getDep("abortSignal")` keep working without changes. If
56
- * `deps` already carries an `abortSignal`, the request-tied signal **wins** (it
57
- * is spread last) — a caller-supplied `abortSignal` is intentionally overridden,
58
- * since the scope's purpose is to own the request-lifecycle signal.
59
- *
60
- * ## `await using` compatibility
61
- *
62
- * The scope implements `Symbol.asyncDispose`, so `await using scope = …` is
63
- * supported on runtimes that ship the well-known `Symbol.asyncDispose`:
64
- *
65
- * - **Node.js 24+** (full support; partial in 20.4–20.17 only for `fs`/`stream`)
66
- * - **Bun 1.0.23+**, **Deno 1.37+**
67
- * - **Chrome / Edge 127+**, **Firefox 141+**
68
- * - **Safari**: not yet supported (irrelevant in practice — this helper is
69
- * server-side only and never reaches the browser)
70
- *
71
- * On Node.js 22 LTS the well-known symbol is unavailable, so `await using`
72
- * fails. **The bundled SSR examples therefore use the explicit
73
- * `try/finally` + `await scope.dispose()` form**, which works on every
74
- * runtime. Use `await using` only when you control the deployment target and
75
- * know it ships the symbol.
76
- *
77
- * @example
78
- * ```typescript
79
- * // Explicit dispose — works on Node 18+, all browsers, every CI image
80
- * export async function render(url: string, req: IncomingMessage) {
81
- * const scope = createRequestScope(req, baseRouter, { currentUser });
82
- * try {
83
- * scope.router.usePlugin(ssrDataPluginFactory(loaders));
84
- * return await renderShell(scope.router, url);
85
- * } finally {
86
- * await scope.dispose();
87
- * }
88
- * }
89
- *
90
- * // `await using` — Node 24+, Bun, Deno, modern browsers
91
- * export async function render(url: string, req: IncomingMessage) {
92
- * await using scope = createRequestScope(req, baseRouter, { currentUser });
93
- * scope.router.usePlugin(ssrDataPluginFactory(loaders));
94
- * return await renderShell(scope.router, url);
95
- * }
96
- *
97
- * // Web runtime (signal already on the request)
98
- * async function handler(request: Request) {
99
- * const scope = createRequestScope(request, baseRouter, { db });
100
- * try {
101
- * scope.router.usePlugin(rscServerPluginFactory(loaders));
102
- * return await render(scope.router, request.url);
103
- * } finally {
104
- * await scope.dispose();
105
- * }
106
- * }
107
- * ```
108
- */
109
- declare function createRequestScope<Dependencies extends DefaultDependencies = DefaultDependencies>(request: RequestScopeSource, base: Router<Dependencies>, deps?: Partial<Dependencies>): RequestScope<Dependencies>;
110
- //#endregion
111
- //#region src/utils/getStaticPaths.d.ts
112
- type StaticPathEntries = Record<string, () => Promise<Record<string, string>[]>>;
113
- declare function getStaticPaths<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>, entries?: StaticPathEntries): Promise<string[]>;
114
- //#endregion
115
- //#region src/utils/hydrateRouter.d.ts
116
- /**
117
- * Custom deserializer signature for {@link hydrateRouter} (#606). Compatible
118
- * with `JSON.parse` (default), `devalue.parse`, `superjson.parse`, or any
119
- * user-supplied function.
120
- */
121
- type Deserialize = (json: string) => unknown;
122
- interface HydrateRouterOptions {
123
- /**
124
- * Custom deserializer (e.g., `devalue.parse` / `superjson.parse`) for
125
- * matching the `serialize` passed to {@link serializeRouterState}. Defaults
126
- * to `JSON.parse`. Ignored when `source` is already an object.
127
- *
128
- * @default JSON.parse
129
- *
130
- * @example
131
- * ```typescript
132
- * import * as devalue from "devalue";
133
- * await hydrateRouter(router, ssrJson, { deserialize: devalue.parse });
134
- * ```
135
- */
136
- deserialize?: Deserialize;
137
- }
138
- /**
139
- * Hydrate a fresh router from server-serialized State (#563, #596).
140
- *
141
- * Accepts either a JSON string (parsed via `JSON.parse` by default, or
142
- * `options.deserialize` when provided) or a State-shaped object. Extracts
143
- * `state.path` and delegates to `router.start(state.path)` — the canonical
144
- * URL is the source of truth for the router on hydration.
145
- *
146
- * The full parsed state (incl. `state.context.<namespace>` payloads) is
147
- * deposited into a one-shot scratchpad on `RouterInternals.hydrationState`
148
- * before `start()` is invoked and cleared in the matching `finally`. SSR
149
- * loader plugins (`@real-router/ssr-data-plugin`,
150
- * `@real-router/rsc-server-plugin`) read this scratchpad to skip their loader
151
- * call when the server-resolved namespace value is already present — avoiding
152
- * the post-hydration loader re-run on first paint.
153
- *
154
- * Single-shot semantics: the scratchpad is consumed during the first `start()`
155
- * triggered by `hydrateRouter` regardless of route mismatch; subsequent
156
- * `start()` calls run loaders normally.
157
- *
158
- * @example
159
- * ```typescript
160
- * // Client
161
- * const router = createAppRouter();
162
- * router.usePlugin(browserPluginFactory());
163
- * await hydrateRouter(router, window.__SSR_STATE__);
164
- * ```
165
- *
166
- * @example
167
- * ```typescript
168
- * // With non-JSON types (Date / Map / Set / RegExp / BigInt) via devalue (#606)
169
- * import * as devalue from "devalue";
170
- *
171
- * await hydrateRouter(router, window.__SSR_STATE__, {
172
- * deserialize: devalue.parse,
173
- * });
174
- * ```
175
- */
176
- declare function hydrateRouter(router: Router, source: string | {
177
- path: string;
178
- }, options?: HydrateRouterOptions): Promise<State>;
179
- //#endregion
180
- //#region src/utils/serializeState.d.ts
181
- /**
182
- * Custom serializer signature for {@link serializeState} (#606).
183
- *
184
- * Compatible with `JSON.stringify` (default) as well as `devalue.stringify`,
185
- * `superjson.stringify`, or any user-supplied function that returns a JSON
186
- * string. The output is run through XSS-safe character escapes regardless
187
- * of which serializer produced it.
188
- */
189
- type Serialize = (data: unknown) => string;
190
- interface SerializeStateOptions {
191
- /**
192
- * Custom serializer (e.g., `devalue.stringify` / `superjson.stringify`) to
193
- * support non-JSON types (Date / Map / Set / RegExp / BigInt). Defaults to
194
- * `JSON.stringify`. Output is still XSS-escaped.
195
- *
196
- * @default JSON.stringify
197
- */
198
- serialize?: Serialize;
199
- }
200
- /**
201
- * XSS-safe JSON serialization for embedding data in HTML `<script>` tags.
202
- *
203
- * Escapes `<`, `>`, and `&` to their Unicode equivalents to prevent
204
- * injection via `</script>` or HTML entities inside inline scripts.
205
- *
206
- * Pass `options.serialize` to use a custom serializer such as `devalue` or
207
- * `superjson` for non-JSON types (Date/Map/Set/RegExp/BigInt). The serializer
208
- * must return a string; XSS-escape is applied to its output.
209
- *
210
- * @example
211
- * ```typescript
212
- * const json = serializeState({ name: "home", path: "/" });
213
- * const html = `<script>window.__STATE__=${json}</script>`;
214
- * ```
215
- *
216
- * @example
217
- * ```typescript
218
- * import * as devalue from "devalue";
219
- *
220
- * const json = serializeState(
221
- * { date: new Date(), tags: new Set(["a", "b"]) },
222
- * { serialize: devalue.stringify },
223
- * );
224
- * ```
225
- */
226
- declare function serializeState(data: unknown, options?: SerializeStateOptions): string;
227
- //#endregion
228
- //#region src/utils/serializeRouterState.d.ts
229
- /**
230
- * Parsed shape produced by {@link serializeRouterState} (after `JSON.parse`).
231
- *
232
- * Identical to {@link State} minus `transition` (per-navigation `TransitionMeta`
233
- * is meaningless after hydration; the client builds its own on commit). Used as
234
- * the input shape for {@link hydrateRouter} and as the type of the one-shot
235
- * hydration scratchpad consumed by SSR loader plugins.
236
- */
237
- type SerializedRouterState<P extends Params = Params> = Omit<State<P>, "transition">;
238
- interface SerializeRouterStateOptions {
239
- /**
240
- * Plugin context namespaces to strip from the serialized output.
241
- * Use when a plugin populates `state.context.<ns>` with non-JSON-serializable
242
- * values (e.g., RSC payload: ReactNode trees containing functions/symbols).
243
- *
244
- * @default []
245
- */
246
- excludeContext?: readonly string[];
247
- /**
248
- * Custom serializer (e.g., `devalue.stringify` / `superjson.stringify`) to
249
- * support non-JSON types in `state.params` and `state.context.<ns>` payloads
250
- * (Date / Map / Set / RegExp / BigInt). Defaults to `JSON.stringify`.
251
- *
252
- * Pair with the matching `deserialize` on `hydrateRouter` to round-trip the
253
- * extended types on the client.
254
- *
255
- * @default JSON.stringify
256
- *
257
- * @example
258
- * ```typescript
259
- * import * as devalue from "devalue";
260
- *
261
- * const json = serializeRouterState(state, { serialize: devalue.stringify });
262
- * ```
263
- */
264
- serialize?: Serialize;
265
- }
266
- /**
267
- * XSS-safe JSON serialization of router State for SSR → client transport (#563).
268
- *
269
- * Strips `state.transition` (per-navigation `TransitionMeta` — meaningless after
270
- * hydration; the client's hydration commit produces its own `transition`).
271
- * Keeps `name`, `params`, `path`, and `context` (plugin context namespaces are
272
- * preserved as-is — server's `state.context.data` from `ssr-data-plugin` and
273
- * any other plugin claims travel to the client untouched).
274
- *
275
- * Pass `options.excludeContext` to strip specific namespaces from the output —
276
- * required for plugins that publish non-JSON-serializable values (e.g., RSC
277
- * `ReactNode` trees from `@real-router/rsc-server-plugin`).
278
- *
279
- * @example
280
- * ```typescript
281
- * // Server
282
- * const state = await router.start(req.url);
283
- * const html = `<script>window.__SSR_STATE__=${serializeRouterState(state)}</script>`;
284
- *
285
- * // Client
286
- * await hydrateRouter(router, window.__SSR_STATE__);
287
- * ```
288
- *
289
- * @example
290
- * ```typescript
291
- * // With RSC plugin: strip the "rsc" namespace before transport
292
- * const state = await router.start(url);
293
- * const json = serializeRouterState(state, { excludeContext: ["rsc"] });
294
- * ```
295
- *
296
- * @example
297
- * ```typescript
298
- * // Non-JSON types (Date / Map / Set / RegExp / BigInt) via devalue (#606)
299
- * import * as devalue from "devalue";
300
- *
301
- * const json = serializeRouterState(state, { serialize: devalue.stringify });
302
- * // On the client:
303
- * await hydrateRouter(router, json, { deserialize: devalue.parse });
304
- * ```
305
- */
306
- declare function serializeRouterState(state: State, options?: SerializeRouterStateOptions): string;
307
- //#endregion
308
- export { SerializeStateOptions as a, HydrateRouterOptions as c, getStaticPaths as d, IncomingMessageLike as f, createRequestScope as g, RequestScopeSource as h, Serialize as i, hydrateRouter as l, RequestScope as m, SerializedRouterState as n, serializeState as o, RequestLike as p, serializeRouterState as r, Deserialize as s, SerializeRouterStateOptions as t, StaticPathEntries as u };
309
- //# sourceMappingURL=index-DDrryY2U.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DDrryY2U.d.ts","names":[],"sources":["../../src/utils/createRequestScope.ts","../../src/utils/getStaticPaths.ts","../../src/utils/hydrateRouter.ts","../../src/utils/serializeState.ts","../../src/utils/serializeRouterState.ts"],"mappings":";;;;;;AAUA;;;UAAiB,mBAAA;EACf,EAAA,GAAK,KAAA,WAAgB,QAAA;EACrB,cAAA,IAAkB,KAAA,WAAgB,QAAA;AAAA;;;;;AAAoB;UAQvC,WAAA;EACf,MAAA,EAAQ,WAAW;AAAA;AAAA,KAGT,kBAAA,GAAqB,mBAAA,GAAsB,WAAW;AAAA,UAEjD,YAAA,sBACM,mBAAA,GAAsB,mBAAA,UACnC,eAAA;EAJE;;;;AAAsD;EAAtD,SAUD,MAAA,EAAQ,QAAA,CAAY,YAAA;EARF;;;;EAAA,SAclB,MAAA,EAAQ,WAAA;EANA;;;;;EAajB,OAAA,QAAe,OAAA;AAAA;;;;;;;;;;;;AAAO;AA+ExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAM4B;;;;AC/H5B;;;;;;;;;;;;AAEsB;AA2BtB;;;;;;;;;;iBD4FgB,kBAAA,sBACO,mBAAA,GAAsB,mBAAA,EAE3C,OAAA,EAAS,kBAAA,EACT,IAAA,EAAM,MAAA,CAAO,YAAA,GACb,IAAA,GAAO,OAAA,CAAQ,YAAA,IACd,YAAA,CAAa,YAAA;;;KC/HJ,iBAAA,GAAoB,MAAA,eAExB,OAAA,CAAQ,MAAA;AAAA,iBA2BM,cAAA,sBACC,mBAAA,GAAsB,mBAAA,EAE3C,MAAA,EAAQ,MAAA,CAAO,YAAA,GACf,OAAA,GAAU,iBAAA,GACT,OAAA;;;;;;AD7BH;;KEAY,WAAA,IAAe,IAAY;AAAA,UAEtB,oBAAA;EFDf;;;;;;;AACsD;AAQxD;;;;AACqB;EEKnB,WAAA,GAAc,WAAW;AAAA;;;AFFuC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;AAqBwB;AA+ExB;;;;;;;;;;iBE3DsB,aAAA,CACpB,MAAA,EAAQ,MAAA,EACR,MAAA;EAAmB,IAAA;AAAA,GACnB,OAAA,GAAU,oBAAA,GACT,OAAA,CAAQ,KAAA;;;;;;;AF7DX;;;;KGFY,SAAA,IAAa,IAAa;AAAA,UAErB,qBAAA;EHCM;;;;;AACiC;AAQxD;EGFE,SAAA,GAAY,SAAS;AAAA;;AHGF;AAGrB;;;;AAAkE;AAElE;;;;;;;;;;;;;;;;;;;iBGqBgB,cAAA,CACd,IAAA,WACA,OAAA,GAAU,qBAAqB;;;;;AHvCjC;;;;;;KIGY,qBAAA,WAAgC,MAAA,GAAS,MAAA,IAAU,IAAA,CAC7D,KAAA,CAAM,CAAA;AAAA,UAIS,2BAAA;EJNG;;;AAAoC;AAQxD;;;EIME,cAAA;EJLmB;AAGrB;;;;AAAkE;AAElE;;;;;;;;;;;EImBE,SAAA,GAAY,SAAS;AAAA;;;;;;;;;;;;AJEC;AA+ExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBItCgB,oBAAA,CACd,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,2BAA2B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/constants.ts","../../src/RouterError.ts","../../src/createRouter.ts","../../src/getNavigator.ts","../../src/namespaces/RoutesNamespace/forwardChain.ts"],"mappings":";;;;;;KAWY,aAAA;AAAA,KAEA,SAAA,GAAY,MAAM,CAAC,aAAA;AAAA,KAMnB,UAAA,GAAa,MAAA,CAAO,aAAA,EAAe,eAAA;;;AAR/C;;;cAea,UAAA,EAAY,mBAevB;AA9BuB;AAEzB;;;AAFyB,cAoCZ,aAAA;AAAA,cAEA,SAAA,EAAW,SAEvB;;;;;cAoBY,MAAA,EAAQ,cAQpB;;;cC1DY,WAAA,SAAoB,KAAA;EAAA,CAC9B,GAAA;EAAA,SAIQ,OAAA;EAAA,SACA,IAAA;EAIT,IAAA;;ADpBF;;;;AAAyB;AAEzB;;;;AAA4C;AAM5C;;;;;;;;;;;;AAA8D;AAO9D;;;;AAeE;cCsBE,IAAA;IAEE,OAAA;IACA,OAAA;IACA,IAAA;IAAA,GACG;EAAA;IAAA,CAEF,GAAA;IACD,OAAA;IACA,OAAA;IACA,IAAA;EAAA;EDtBL;;;AAAA;AAoBD;;;;AAQC;;;;AC1DD;;;;;;;;;EAsGE,OAAA,CAAQ,OAAA;EAtG4B;;;;;;;;;;;;;;;;;;;;EAmIpC,gBAAA,CAAiB,GAAA,EAAK,KAAA;EA7Bd;;;;;;;;;;;;;;AA2JQ;;;;AChQlB;;;;;;EDuKE,mBAAA,CAAoB,MAAA,EAAQ,MAAA;ECnKX;;;;;;;;;;;;;;;;;;;EDqMjB,QAAA,CAAS,GAAA;ECnMW;AAAA;;;;ACxBtB;;;;;;;;;;;;;;;EFmPE,QAAA,CAAS,GAAA;EE/OR;;AAiBF;;;;ACvBD;;;;;;;;;AAGgB;;;;;;;;;;;;EHiRd,MAAA,IAAU,MAAA;AAAA;;;;;;;AD3QZ;;;;AAAyB;AAEzB;;;;AAA4C;AAM5C;;cEGa,YAAA,wBACU,mBAAA,GAAsB,mBAAA,EAE3C,MAAA,GAAQ,KAAA,CAAM,YAAA,KACd,OAAA,GAAS,OAAA,CAAQ,OAAA,GACjB,YAAA,GAAc,YAAA,KACb,MAAA,CAAO,YAAA;;;cCxBG,YAAA,wBACU,mBAAA,GAAsB,mBAAA,EAE3C,MAAA,EAAQ,QAAA,CAAO,YAAA,MACd,SAAA;;;iBCNa,mBAAA,CACd,UAAA,UACA,UAAA,EAAY,MAAM,kBAClB,QAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-DaXCTxi1.d.ts","names":[],"sources":["../../src/engine/path-matcher/types.ts","../../src/engine/builder/types.ts"],"mappings":";;AAWA;;;;;;;;;UAAiB,SAAA;EAkCN;;AAAW;AAetB;;EAfW,SA5BA,SAAA;EA2CsB;AAAA;AAMjC;;;EANiC,SApCtB,WAAA;EA+CU;;;;;EAAA,SAxCV,UAAA;EA2CsB;;;;;EAAA,SApCtB,YAAA,EAAc,QAAQ,CAAC,MAAA;EAiCb;;;;;EAAA,SA1BV,WAAA;AAAA;;;;AA6B6B;AAqCxC;;;;KAnDY,qBAAA;AAAA,UAMK,gBAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA,EAAU,WAAA,SAAoB,gBAAA;EAAA,SAC9B,mBAAA,WAA8B,gBAAA;EAAA,SAC9B,SAAA,EAAW,SAAA;EAAA,SACX,YAAA,EAAc,QAAA,CAAS,MAAA;AAAA;;;;UAqCjB,gBAAA;EAAA,SACN,eAAA;EAAA,SACA,aAAa;AAAA;AAAA,UA0BP,WAAA;EAAA,SACN,QAAA,WAAmB,gBAAA;EAAA,SACnB,MAAA,EAAQ,QAAA,CAAS,MAAA;EAAA,SACjB,IAAA,EAAM,QAAA,CAAS,MAAA,SAAe,MAAA;AAAA;AAAA,UAOxB,qBAAA;EACf,aAAA;EACA,mBAAA;EACA,iBAAA;EACA,iBAAA,GAAoB,qBAAA;EACpB,gBAAA,GAAmB,WAAA,aAAwB,MAAA;EAC3C,gBAAA,GAAmB,MAAA,EAAQ,MAAA;AAAA;AAAA,UAGZ,sBAAA;EAAA,SACN,aAAA;EAAA,SACA,mBAAA;EAAA,SACA,iBAAA;EAAA,SACA,iBAAA,EAAmB,qBAAA;EAAA,SACnB,gBAAA,GAAmB,WAAA,aAAwB,MAAA;EAAA,SAC3C,gBAAA,GAAmB,MAAA,EAAQ,MAAA;AAAA;;;;;;UCnJrB,eAAA;EAAA,CACd,GAAA;EACD,IAAA;EACA,IAAA;EACA,QAAA,GAAW,eAAe;AAAA;;ADuCK;AAMjC;;;;;;;;UC5BiB,SAAA;EDoCgB;EAAA,SChCtB,IAAA;EDyBA;EAAA,SCtBA,IAAA;EDwBA;EAAA,SCrBA,QAAA;EDuBA;EAAA,SCpBA,QAAA,EAAU,WAAA,SAAoB,SAAA;EDoBA;EAAA,SCjB9B,SAAA,EAAW,SAAA;EDkBmB;EAAA,SCb9B,MAAA,EAAQ,SAAA;EDcG;EAAA,SCXX,mBAAA,WAA8B,SAAA;EDYhB;EAAA,SCTd,QAAA;EDS6B;AAAA;AAqCxC;;;EArCwC,SCF7B,YAAA,EAAc,QAAA,CAAS,MAAA;AAAA"}
@@ -1,2 +0,0 @@
1
- import { a as SerializeStateOptions, c as HydrateRouterOptions, d as getStaticPaths, f as IncomingMessageLike, g as createRequestScope, h as RequestScopeSource, i as Serialize, l as hydrateRouter, m as RequestScope, n as SerializedRouterState, o as serializeState, p as RequestLike, r as serializeRouterState, s as Deserialize, t as SerializeRouterStateOptions, u as StaticPathEntries } from "./index-DDrryY2U.js";
2
- export { type Deserialize, type HydrateRouterOptions, type IncomingMessageLike, type RequestLike, type RequestScope, type RequestScopeSource, type Serialize, type SerializeRouterStateOptions, type SerializeStateOptions, type SerializedRouterState, type StaticPathEntries, createRequestScope, getStaticPaths, hydrateRouter, serializeRouterState, serializeState };
package/dist/cjs/utils.js DELETED
@@ -1,2 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./buildParamMeta-DniluAIV.js"),t=require("./cloneRouter-3AOUeQ8M.js");function n(e){return`signal`in e&&typeof e.signal==`object`&&e.signal!==void 0&&typeof e.signal.aborted==`boolean`}function r(e,r,i){let a,o,s;if(n(e))s=e.signal;else{let t=new AbortController,n=()=>{t.abort()};s=t.signal,o=()=>{e.on(`close`,n)},a=()=>{e.removeListener?.(`close`,n)}}let c=t.t(r,{...i,abortSignal:s});o?.();let l=!1,u=()=>l?Promise.resolve():(l=!0,a?.(),c.dispose(),Promise.resolve());return{router:c,signal:s,dispose:u,[Symbol.asyncDispose]:u}}function i(e,t){for(let n of e.children.values())n.children.size===0?t.push(n.fullName):i(n,t)}function a(e){let t=[];return i(e,t),t}async function o(e,n){let r=a(t.r(e).getTree()),i=[];for(let t of r){let r=n?.[t];if(r){let n=await r();for(let r of n)i.push(e.buildPath(t,r))}else i.push(e.buildPath(t,{}))}return i}async function s(t,n,r){let i=r?.deserialize??JSON.parse,a=typeof n==`string`?i(n):n,o=e.u(t),s=o.hydrationState;o.hydrationState=a;try{return await t.start(a.path)}finally{o.hydrationState=s}}function c(e,t){return((t?.serialize??JSON.stringify)(e)??`null`).replaceAll(`<`,String.raw`\u003c`).replaceAll(`>`,String.raw`\u003e`).replaceAll(`&`,String.raw`\u0026`)}function l(e,t){let n=t?.excludeContext,r=e.context;if(n?.length){let t=Object.create(null),i=e.context;for(let[e,r]of Object.entries(i))n.includes(e)||(t[e]=r);r=t}let i={name:e.name,params:e.params,path:e.path,context:r};return t?.serialize?c(i,{serialize:t.serialize}):c(i)}exports.createRequestScope=r,exports.getStaticPaths=o,exports.hydrateRouter=s,exports.serializeRouterState=l,exports.serializeState=c;
2
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["cloneRouter","getPluginApi","getInternals"],"sources":["../../src/utils/createRequestScope.ts","../../src/utils/getStaticPaths.ts","../../src/utils/hydrateRouter.ts","../../src/utils/serializeState.ts","../../src/utils/serializeRouterState.ts"],"sourcesContent":["import { cloneRouter } from \"../api/cloneRouter\";\n\nimport type { Router as RouterClass } from \"../Router\";\nimport type { DefaultDependencies, Router } from \"../types\";\n\n/**\n * Subset of Node's `http.IncomingMessage` that `createRequestScope` relies on:\n * a `\"close\"` event indicating that the client disconnected (or the response\n * was fully sent) and the standard `removeListener` cleanup hook.\n */\nexport interface IncomingMessageLike {\n on: (event: \"close\", listener: () => void) => unknown;\n removeListener?: (event: \"close\", listener: () => void) => unknown;\n}\n\n/**\n * Web `Request`-shaped object — anything carrying an `AbortSignal`. Web\n * runtimes (Bun, Cloudflare Workers, Vite RSC) surface client-disconnect via\n * `request.signal` directly, so no listener attachment is needed.\n */\nexport interface RequestLike {\n signal: AbortSignal;\n}\n\nexport type RequestScopeSource = IncomingMessageLike | RequestLike;\n\nexport interface RequestScope<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n> extends AsyncDisposable {\n /**\n * Per-request router clone. Carries `abortSignal` injected into its\n * dependencies — loaders can `getDep(\"abortSignal\")` and pass it to fetch /\n * `withTimeout` for cooperative cancellation when the client disconnects.\n */\n readonly router: RouterClass<Dependencies>;\n\n /**\n * Aborts when the request closes (Node `IncomingMessage`'s `\"close\"` event)\n * or when the upstream Web `Request.signal` aborts.\n */\n readonly signal: AbortSignal;\n\n /**\n * Detach the close listener (if attached to a Node `IncomingMessage`) and\n * dispose the cloned router. Idempotent — safe to call multiple times or in\n * combination with `Symbol.asyncDispose`.\n */\n dispose: () => Promise<void>;\n}\n\nfunction isRequestLike(request: RequestScopeSource): request is RequestLike {\n return (\n \"signal\" in request &&\n typeof (request as Partial<RequestLike>).signal === \"object\" &&\n (request as Partial<RequestLike>).signal !== undefined &&\n typeof request.signal.aborted === \"boolean\"\n );\n}\n\n/**\n * Build a per-request router scope: clones `base`, attaches an `AbortSignal`\n * tied to the request's lifetime, and exposes `dispose()` (plus\n * `Symbol.asyncDispose` for `await using` declarations).\n *\n * Replaces the four-step boilerplate that every server entry repeats:\n *\n * 1. `new AbortController()` per request\n * 2. `req.on(\"close\", () => controller.abort())`\n * 3. `cloneRouter(base, { ...deps, abortSignal: signal })`\n * 4. `try { ... } finally { router.dispose() }`\n *\n * The signal is injected into the router clone under `abortSignal` so existing\n * loaders that read `getDep(\"abortSignal\")` keep working without changes. If\n * `deps` already carries an `abortSignal`, the request-tied signal **wins** (it\n * is spread last) — a caller-supplied `abortSignal` is intentionally overridden,\n * since the scope's purpose is to own the request-lifecycle signal.\n *\n * ## `await using` compatibility\n *\n * The scope implements `Symbol.asyncDispose`, so `await using scope = …` is\n * supported on runtimes that ship the well-known `Symbol.asyncDispose`:\n *\n * - **Node.js 24+** (full support; partial in 20.4–20.17 only for `fs`/`stream`)\n * - **Bun 1.0.23+**, **Deno 1.37+**\n * - **Chrome / Edge 127+**, **Firefox 141+**\n * - **Safari**: not yet supported (irrelevant in practice — this helper is\n * server-side only and never reaches the browser)\n *\n * On Node.js 22 LTS the well-known symbol is unavailable, so `await using`\n * fails. **The bundled SSR examples therefore use the explicit\n * `try/finally` + `await scope.dispose()` form**, which works on every\n * runtime. Use `await using` only when you control the deployment target and\n * know it ships the symbol.\n *\n * @example\n * ```typescript\n * // Explicit dispose — works on Node 18+, all browsers, every CI image\n * export async function render(url: string, req: IncomingMessage) {\n * const scope = createRequestScope(req, baseRouter, { currentUser });\n * try {\n * scope.router.usePlugin(ssrDataPluginFactory(loaders));\n * return await renderShell(scope.router, url);\n * } finally {\n * await scope.dispose();\n * }\n * }\n *\n * // `await using` — Node 24+, Bun, Deno, modern browsers\n * export async function render(url: string, req: IncomingMessage) {\n * await using scope = createRequestScope(req, baseRouter, { currentUser });\n * scope.router.usePlugin(ssrDataPluginFactory(loaders));\n * return await renderShell(scope.router, url);\n * }\n *\n * // Web runtime (signal already on the request)\n * async function handler(request: Request) {\n * const scope = createRequestScope(request, baseRouter, { db });\n * try {\n * scope.router.usePlugin(rscServerPluginFactory(loaders));\n * return await render(scope.router, request.url);\n * } finally {\n * await scope.dispose();\n * }\n * }\n * ```\n */\nexport function createRequestScope<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(\n request: RequestScopeSource,\n base: Router<Dependencies>,\n deps?: Partial<Dependencies>,\n): RequestScope<Dependencies> {\n let detach: (() => void) | undefined;\n let attach: (() => void) | undefined;\n let signal: AbortSignal;\n\n if (isRequestLike(request)) {\n signal = request.signal;\n } else {\n const controller = new AbortController();\n const onClose = (): void => {\n controller.abort();\n };\n\n signal = controller.signal;\n // Clone-before-attach (#969): defer attaching the \"close\" listener until\n // after cloneRouter succeeds. cloneRouter is synchronous, so no \"close\"\n // macrotask can fire in the gap; and if it throws (e.g. ROUTER_DISPOSED on\n // an already-disposed base) the helper exits without returning a scope\n // handle — so a listener attached here would strand on the request with no\n // way to detach it.\n attach = () => {\n request.on(\"close\", onClose);\n };\n detach = () => {\n request.removeListener?.(\"close\", onClose);\n };\n }\n\n const router = cloneRouter(base, {\n ...deps,\n abortSignal: signal,\n } as Dependencies);\n\n // The clone exists — now it is safe to attach the close listener (Node path\n // only; `attach` is undefined for the Web path).\n attach?.();\n\n let disposed = false;\n\n const dispose = (): Promise<void> => {\n if (disposed) {\n return Promise.resolve();\n }\n\n disposed = true;\n detach?.();\n router.dispose();\n\n return Promise.resolve();\n };\n\n return {\n router,\n signal,\n dispose,\n // eslint-disable-next-line unicorn/no-nonstandard-builtin-properties -- Symbol.asyncDispose is a standard ES2023 well-known symbol (`await using`)\n [Symbol.asyncDispose]: dispose,\n };\n}\n","import { getPluginApi } from \"../api/getPluginApi\";\n\nimport type { RouteTree } from \"../engine\";\nimport type { DefaultDependencies, Router } from \"../types\";\n\nexport type StaticPathEntries = Record<\n string,\n () => Promise<Record<string, string>[]>\n>;\n\nfunction collectLeafRouteNames(node: RouteTree, result: string[]): void {\n for (const child of node.children.values()) {\n if (child.children.size === 0) {\n result.push(child.fullName);\n } else {\n // Accumulate into the shared array rather than\n // `result.push(...getLeafRouteNames(child))`: the spread passes one\n // argument per leaf, and V8 caps spread/apply arguments (~124k on Node 24),\n // so a section with that many static leaf routes threw\n // `RangeError: Maximum call stack size exceeded`. Accumulating also drops\n // the per-subtree intermediate-array allocation.\n collectLeafRouteNames(child, result);\n }\n }\n}\n\nfunction getLeafRouteNames(node: RouteTree): string[] {\n const result: string[] = [];\n\n collectLeafRouteNames(node, result);\n\n return result;\n}\n\nexport async function getStaticPaths<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(\n router: Router<Dependencies>,\n entries?: StaticPathEntries,\n): Promise<string[]> {\n const tree = getPluginApi(router).getTree();\n const leafRoutes = getLeafRouteNames(tree);\n const paths: string[] = [];\n\n for (const routeName of leafRoutes) {\n const entryFn = entries?.[routeName];\n\n if (entryFn) {\n const paramSets = await entryFn();\n\n for (const params of paramSets) {\n paths.push(router.buildPath(routeName, params));\n }\n } else {\n paths.push(router.buildPath(routeName, {}));\n }\n }\n\n return paths;\n}\n","import { getInternals } from \"../internals\";\n\nimport type { SerializedRouterState } from \"./serializeRouterState\";\nimport type { Router, State } from \"../types\";\n\n/**\n * Custom deserializer signature for {@link hydrateRouter} (#606). Compatible\n * with `JSON.parse` (default), `devalue.parse`, `superjson.parse`, or any\n * user-supplied function.\n */\nexport type Deserialize = (json: string) => unknown;\n\nexport interface HydrateRouterOptions {\n /**\n * Custom deserializer (e.g., `devalue.parse` / `superjson.parse`) for\n * matching the `serialize` passed to {@link serializeRouterState}. Defaults\n * to `JSON.parse`. Ignored when `source` is already an object.\n *\n * @default JSON.parse\n *\n * @example\n * ```typescript\n * import * as devalue from \"devalue\";\n * await hydrateRouter(router, ssrJson, { deserialize: devalue.parse });\n * ```\n */\n deserialize?: Deserialize;\n}\n\n/**\n * Hydrate a fresh router from server-serialized State (#563, #596).\n *\n * Accepts either a JSON string (parsed via `JSON.parse` by default, or\n * `options.deserialize` when provided) or a State-shaped object. Extracts\n * `state.path` and delegates to `router.start(state.path)` — the canonical\n * URL is the source of truth for the router on hydration.\n *\n * The full parsed state (incl. `state.context.<namespace>` payloads) is\n * deposited into a one-shot scratchpad on `RouterInternals.hydrationState`\n * before `start()` is invoked and cleared in the matching `finally`. SSR\n * loader plugins (`@real-router/ssr-data-plugin`,\n * `@real-router/rsc-server-plugin`) read this scratchpad to skip their loader\n * call when the server-resolved namespace value is already present — avoiding\n * the post-hydration loader re-run on first paint.\n *\n * Single-shot semantics: the scratchpad is consumed during the first `start()`\n * triggered by `hydrateRouter` regardless of route mismatch; subsequent\n * `start()` calls run loaders normally.\n *\n * @example\n * ```typescript\n * // Client\n * const router = createAppRouter();\n * router.usePlugin(browserPluginFactory());\n * await hydrateRouter(router, window.__SSR_STATE__);\n * ```\n *\n * @example\n * ```typescript\n * // With non-JSON types (Date / Map / Set / RegExp / BigInt) via devalue (#606)\n * import * as devalue from \"devalue\";\n *\n * await hydrateRouter(router, window.__SSR_STATE__, {\n * deserialize: devalue.parse,\n * });\n * ```\n */\nexport async function hydrateRouter(\n router: Router,\n source: string | { path: string },\n options?: HydrateRouterOptions,\n): Promise<State> {\n const deserialize: Deserialize = options?.deserialize ?? JSON.parse;\n const parsed =\n typeof source === \"string\"\n ? (deserialize(source) as SerializedRouterState)\n : (source as SerializedRouterState);\n\n const ctx = getInternals(router);\n const previous = ctx.hydrationState;\n\n ctx.hydrationState = parsed;\n\n try {\n return await router.start(parsed.path);\n } finally {\n ctx.hydrationState = previous;\n }\n}\n","/**\n * Custom serializer signature for {@link serializeState} (#606).\n *\n * Compatible with `JSON.stringify` (default) as well as `devalue.stringify`,\n * `superjson.stringify`, or any user-supplied function that returns a JSON\n * string. The output is run through XSS-safe character escapes regardless\n * of which serializer produced it.\n */\nexport type Serialize = (data: unknown) => string;\n\nexport interface SerializeStateOptions {\n /**\n * Custom serializer (e.g., `devalue.stringify` / `superjson.stringify`) to\n * support non-JSON types (Date / Map / Set / RegExp / BigInt). Defaults to\n * `JSON.stringify`. Output is still XSS-escaped.\n *\n * @default JSON.stringify\n */\n serialize?: Serialize;\n}\n\n/**\n * XSS-safe JSON serialization for embedding data in HTML `<script>` tags.\n *\n * Escapes `<`, `>`, and `&` to their Unicode equivalents to prevent\n * injection via `</script>` or HTML entities inside inline scripts.\n *\n * Pass `options.serialize` to use a custom serializer such as `devalue` or\n * `superjson` for non-JSON types (Date/Map/Set/RegExp/BigInt). The serializer\n * must return a string; XSS-escape is applied to its output.\n *\n * @example\n * ```typescript\n * const json = serializeState({ name: \"home\", path: \"/\" });\n * const html = `<script>window.__STATE__=${json}</script>`;\n * ```\n *\n * @example\n * ```typescript\n * import * as devalue from \"devalue\";\n *\n * const json = serializeState(\n * { date: new Date(), tags: new Set([\"a\", \"b\"]) },\n * { serialize: devalue.stringify },\n * );\n * ```\n */\nexport function serializeState(\n data: unknown,\n options?: SerializeStateOptions,\n): string {\n const serialize = options?.serialize ?? JSON.stringify;\n // JSON.stringify returns undefined for top-level `undefined`, Symbol,\n // function, and other non-serializable values (lib.d.ts types it as\n // `string` but the runtime can return undefined). A custom serializer\n // that returns undefined for unsupported input is normalized the same way.\n const serialized = (serialize(data) as string | undefined) ?? \"null\";\n\n return serialized\n .replaceAll(\"<\", String.raw`\\u003c`)\n .replaceAll(\">\", String.raw`\\u003e`)\n .replaceAll(\"&\", String.raw`\\u0026`);\n}\n","import { serializeState } from \"./serializeState\";\n\nimport type { Serialize } from \"./serializeState\";\nimport type { Params, State } from \"../types\";\n\n/**\n * Parsed shape produced by {@link serializeRouterState} (after `JSON.parse`).\n *\n * Identical to {@link State} minus `transition` (per-navigation `TransitionMeta`\n * is meaningless after hydration; the client builds its own on commit). Used as\n * the input shape for {@link hydrateRouter} and as the type of the one-shot\n * hydration scratchpad consumed by SSR loader plugins.\n */\nexport type SerializedRouterState<P extends Params = Params> = Omit<\n State<P>,\n \"transition\"\n>;\n\nexport interface SerializeRouterStateOptions {\n /**\n * Plugin context namespaces to strip from the serialized output.\n * Use when a plugin populates `state.context.<ns>` with non-JSON-serializable\n * values (e.g., RSC payload: ReactNode trees containing functions/symbols).\n *\n * @default []\n */\n excludeContext?: readonly string[];\n\n /**\n * Custom serializer (e.g., `devalue.stringify` / `superjson.stringify`) to\n * support non-JSON types in `state.params` and `state.context.<ns>` payloads\n * (Date / Map / Set / RegExp / BigInt). Defaults to `JSON.stringify`.\n *\n * Pair with the matching `deserialize` on `hydrateRouter` to round-trip the\n * extended types on the client.\n *\n * @default JSON.stringify\n *\n * @example\n * ```typescript\n * import * as devalue from \"devalue\";\n *\n * const json = serializeRouterState(state, { serialize: devalue.stringify });\n * ```\n */\n serialize?: Serialize;\n}\n\n/**\n * XSS-safe JSON serialization of router State for SSR → client transport (#563).\n *\n * Strips `state.transition` (per-navigation `TransitionMeta` — meaningless after\n * hydration; the client's hydration commit produces its own `transition`).\n * Keeps `name`, `params`, `path`, and `context` (plugin context namespaces are\n * preserved as-is — server's `state.context.data` from `ssr-data-plugin` and\n * any other plugin claims travel to the client untouched).\n *\n * Pass `options.excludeContext` to strip specific namespaces from the output —\n * required for plugins that publish non-JSON-serializable values (e.g., RSC\n * `ReactNode` trees from `@real-router/rsc-server-plugin`).\n *\n * @example\n * ```typescript\n * // Server\n * const state = await router.start(req.url);\n * const html = `<script>window.__SSR_STATE__=${serializeRouterState(state)}</script>`;\n *\n * // Client\n * await hydrateRouter(router, window.__SSR_STATE__);\n * ```\n *\n * @example\n * ```typescript\n * // With RSC plugin: strip the \"rsc\" namespace before transport\n * const state = await router.start(url);\n * const json = serializeRouterState(state, { excludeContext: [\"rsc\"] });\n * ```\n *\n * @example\n * ```typescript\n * // Non-JSON types (Date / Map / Set / RegExp / BigInt) via devalue (#606)\n * import * as devalue from \"devalue\";\n *\n * const json = serializeRouterState(state, { serialize: devalue.stringify });\n * // On the client:\n * await hydrateRouter(router, json, { deserialize: devalue.parse });\n * ```\n */\nexport function serializeRouterState(\n state: State,\n options?: SerializeRouterStateOptions,\n): string {\n const exclude = options?.excludeContext;\n\n let context = state.context;\n\n if (exclude?.length) {\n // Null-proto target so a literal \"__proto__\" namespace (a real own key on\n // state.context, e.g. written by claimContextNamespace) is copied as a\n // genuine own entry by the plain assignment below — a `{}` target would\n // instead dispatch into the inherited Object.prototype.__proto__ setter and\n // silently drop the data (#1191, same hazard the write path guards).\n const filtered: Record<string, unknown> = Object.create(null) as Record<\n string,\n unknown\n >;\n const source = state.context;\n\n for (const [key, value] of Object.entries(source)) {\n if (!exclude.includes(key)) {\n filtered[key] = value;\n }\n }\n\n context = filtered;\n }\n\n const payload = {\n name: state.name,\n params: state.params,\n path: state.path,\n context,\n };\n\n return options?.serialize\n ? serializeState(payload, { serialize: options.serialize })\n : serializeState(payload);\n}\n"],"mappings":"0JAkDA,SAAS,EAAc,EAAqD,CAC1E,MACE,WAAY,GACZ,OAAQ,EAAiC,QAAW,UACnD,EAAiC,SAAW,IAAA,IAC7C,OAAO,EAAQ,OAAO,SAAY,SAEtC,CAqEA,SAAgB,EAGd,EACA,EACA,EAC4B,CAC5B,IAAI,EACA,EACA,EAEJ,GAAI,EAAc,CAAO,EACvB,EAAS,EAAQ,WACZ,CACL,IAAM,EAAa,IAAI,gBACjB,MAAsB,CAC1B,EAAW,MAAM,CACnB,EAEA,EAAS,EAAW,OAOpB,MAAe,CACb,EAAQ,GAAG,QAAS,CAAO,CAC7B,EACA,MAAe,CACb,EAAQ,iBAAiB,QAAS,CAAO,CAC3C,CACF,CAEA,IAAM,EAASA,EAAAA,EAAY,EAAM,CAC/B,GAAG,EACH,YAAa,CACf,CAAiB,EAIjB,IAAS,EAET,IAAI,EAAW,GAET,MACA,EACK,QAAQ,QAAQ,GAGzB,EAAW,GACX,IAAS,EACT,EAAO,QAAQ,EAER,QAAQ,QAAQ,GAGzB,MAAO,CACL,SACA,SACA,WAEC,OAAO,cAAe,CACzB,CACF,CCpLA,SAAS,EAAsB,EAAiB,EAAwB,CACtE,IAAK,IAAM,KAAS,EAAK,SAAS,OAAO,EACnC,EAAM,SAAS,OAAS,EAC1B,EAAO,KAAK,EAAM,QAAQ,EAQ1B,EAAsB,EAAO,CAAM,CAGzC,CAEA,SAAS,EAAkB,EAA2B,CACpD,IAAM,EAAmB,CAAC,EAI1B,OAFA,EAAsB,EAAM,CAAM,EAE3B,CACT,CAEA,eAAsB,EAGpB,EACA,EACmB,CAEnB,IAAM,EAAa,EADNC,EAAAA,EAAa,CAAM,CAAC,CAAC,QACM,CAAC,EACnC,EAAkB,CAAC,EAEzB,IAAK,IAAM,KAAa,EAAY,CAClC,IAAM,EAAU,IAAU,GAE1B,GAAI,EAAS,CACX,IAAM,EAAY,MAAM,EAAQ,EAEhC,IAAK,IAAM,KAAU,EACnB,EAAM,KAAK,EAAO,UAAU,EAAW,CAAM,CAAC,CAElD,MACE,EAAM,KAAK,EAAO,UAAU,EAAW,CAAC,CAAC,CAAC,CAE9C,CAEA,OAAO,CACT,CCQA,eAAsB,EACpB,EACA,EACA,EACgB,CAChB,IAAM,EAA2B,GAAS,aAAe,KAAK,MACxD,EACJ,OAAO,GAAW,SACb,EAAY,CAAM,EAClB,EAED,EAAMC,EAAAA,EAAa,CAAM,EACzB,EAAW,EAAI,eAErB,EAAI,eAAiB,EAErB,GAAI,CACF,OAAO,MAAM,EAAO,MAAM,EAAO,IAAI,CACvC,QAAU,CACR,EAAI,eAAiB,CACvB,CACF,CCzCA,SAAgB,EACd,EACA,EACQ,CAQR,QAPkB,GAAS,WAAa,KAAK,UAAA,CAKf,CAAI,GAA4B,OAAA,CAG3D,WAAW,IAAK,OAAO,GAAG,QAAQ,CAAC,CACnC,WAAW,IAAK,OAAO,GAAG,QAAQ,CAAC,CACnC,WAAW,IAAK,OAAO,GAAG,QAAQ,CACvC,CC0BA,SAAgB,EACd,EACA,EACQ,CACR,IAAM,EAAU,GAAS,eAErB,EAAU,EAAM,QAEpB,GAAI,GAAS,OAAQ,CAMnB,IAAM,EAAoC,OAAO,OAAO,IAAI,EAItD,EAAS,EAAM,QAErB,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,CAAM,EACzC,EAAQ,SAAS,CAAG,IACvB,EAAS,GAAO,GAIpB,EAAU,CACZ,CAEA,IAAM,EAAU,CACd,KAAM,EAAM,KACZ,OAAQ,EAAM,OACd,KAAM,EAAM,KACZ,SACF,EAEA,OAAO,GAAS,UACZ,EAAe,EAAS,CAAE,UAAW,EAAQ,SAAU,CAAC,EACxD,EAAe,CAAO,CAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/engine/search-params/types.ts","../../src/engine/path-matcher/SegmentMatcher.ts","../../src/engine/createMatcher.ts","../../src/engine/validation/route-batch.ts","../../src/types/internal.ts","../../src/namespaces/DependenciesNamespace/dependenciesStore.ts","../../src/namespaces/RouteLifecycleNamespace/types.ts","../../src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.ts","../../src/namespaces/RoutesNamespace/types.ts","../../src/namespaces/RoutesNamespace/routesStore.ts","../../src/internals.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Router-Cy75qbgU.d.mts","names":[],"sources":["../../src/Router.ts"],"mappings":";;;;;AA4FA;;;;;;;;;;;;;;cAAa,MAAA,sBACU,mBAAA,GAAsB,mBAAA,aAChC,QAAA,CAAgB,YAAA;EAAA;GAC1B,GAAA;EA4ZmB;;;;;cAhXlB,MAAA,GAAQ,KAAA,CAAM,YAAA,KACd,OAAA,GAAS,OAAA,CAAQ,OAAA,GACjB,YAAA,GAAc,YAAA;EAyThB,aAAA,CACE,IAAA,UACA,MAAA,GAAS,MAAA,EACT,cAAA,YACA,iBAAA;EAgCF,SAAA,CAAU,KAAA,UAAe,MAAA,GAAS,MAAA;EAalC,QAAA,WAAmB,MAAA,GAAS,MAAA,KAAW,KAAA,CAAM,CAAA;EAI7C,gBAAA,IAAoB,KAAA;EAIpB,cAAA,CACE,MAAA,EAAQ,KAAA,cACR,MAAA,EAAQ,KAAA,cACR,iBAAA;EAWF,gBAAA,CACE,QAAA,YACE,OAAA,EAAS,KAAA,EAAO,SAAA,GAAY,KAAA;EAUhC,QAAA;EAIA,KAAA,CAAM,SAAA,WAAoB,OAAA,CAAQ,KAAA;EA4DlC,IAAA;EAyBA,OAAA;EAsDA,aAAA,CAAc,IAAA,UAAc,MAAA,GAAS,MAAA;EAiErC,SAAA,IACK,OAAA,GAAU,aAAA,CAAc,YAAA,kCAC1B,WAAA;EAyCH,SAAA,CAAU,QAAA,EAAU,WAAA,GAAc,WAAA;EAMlC,cAAA,CAAe,QAAA,EAAU,OAAA,GAAU,WAAA;EAMnC,eAAA;EAQA,QAAA,CACE,SAAA,UACA,WAAA,GAAc,MAAA,EACd,OAAA,GAAU,iBAAA,GACT,OAAA,CAAQ,KAAA;EA8BX,iBAAA,CAAkB,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,KAAA;EA2BxD,kBAAA,CAAmB,IAAA,YAAgB,KAAA;AAAA"}
@@ -1,2 +0,0 @@
1
- import{c as e,d as t,l as n,n as r,o as i,r as a,s as o,t as s,u as c}from"./buildParamMeta-bOLhLF9h.mjs";const l=Object.freeze({ROUTER_NOT_STARTED:`NOT_STARTED`,NO_START_PATH_OR_STATE:`NO_START_PATH_OR_STATE`,ROUTER_ALREADY_STARTED:`ALREADY_STARTED`,ROUTE_NOT_FOUND:`ROUTE_NOT_FOUND`,SAME_STATES:`SAME_STATES`,CANNOT_DEACTIVATE:`CANNOT_DEACTIVATE`,CANNOT_ACTIVATE:`CANNOT_ACTIVATE`,TRANSITION_ERR:`TRANSITION_ERR`,TRANSITION_CANCELLED:`CANCELLED`,ROUTER_DISPOSED:`DISPOSED`,PLUGIN_CONFLICT:`PLUGIN_CONFLICT`,CONTEXT_NAMESPACE_ALREADY_CLAIMED:`CONTEXT_NAMESPACE_ALREADY_CLAIMED`,REENTRANT_NAVIGATION:`REENTRANT_NAVIGATION`,REENTRANT_TREE_MUTATION:`REENTRANT_TREE_MUTATION`}),u=`@@router/UNKNOWN_ROUTE`,d={UNKNOWN_ROUTE:u},f={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},p={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},m={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},h=Object.freeze({}),g=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),_=Object.freeze({phase:`activating`,reason:`success`,segments:g}),ee={maxListeners:0,warnListeners:0};var v=class{#e=new Map;#t=new Set;#n=null;#r=ee;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw Error(`Listener limit (${i}) reached for "${e}"`);a!==0&&r===a&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#a(e,a),this.#n.add(e)));let o=n;return o===void 0&&(o=new Set,this.#e.set(e,o)),o.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0||this.#t.has(e))return;let o=arguments.length-1;this.#t.add(e);try{if(a.size===1){let[s]=a;this.#o(e,s,o,t,n,r,i)}else{let s=[...a];for(let a of s)this.#o(e,a,o,t,n,r,i)}}finally{this.#t.delete(e)}}clearAll(){this.#e.clear(),this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}isDispatching(e){return this.#t.has(e)}#o(e,t,n,r,i,a,o){try{let s=this.#s(t,n,r,i,a,o);s!=null&&typeof s.then==`function`&&Promise.resolve(s).catch(t=>{this.#i?.(e,t)})}catch(t){this.#i?.(e,t)}}#s(e,t,n,r,i,a){switch(t){case 0:return e();case 1:return e(n);case 2:return e(n,r);case 3:return e(n,r,i);default:return e(n,r,i,a)}}};const y=Object.freeze({log:0,warn:1,error:2}),b=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3});var te=class{#e={level:`all`,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=e.level;if(t!==void 0){if(!Object.hasOwn(b,t))throw Error(`Invalid log level: "${t}". Valid levels are: ${Object.keys(b).join(`, `)}`);this.#e.level=t,this.#t=b[t]}Object.hasOwn(e,`callback`)&&(this.#e.callback=e.callback);let n=e.callbackIgnoresLevel;n!==void 0&&(this.#e.callbackIgnoresLevel=n)}getConfig(){return{level:this.#e.level,callback:this.#e.callback,callbackIgnoresLevel:this.#e.callbackIgnoresLevel}}log(e,t,...n){this.#r(`log`,e,t,n)}warn(e,t,...n){this.#r(`warn`,e,t,n)}error(e,t,...n){this.#r(`error`,e,t,n)}#r(e,t,n,r){if(this.#e.level===`none`&&!this.#e.callbackIgnoresLevel)return;let i=y[e]<this.#t;i||this.#i(e,t,n,r),this.#a(e,t,n,i,r)}#i(e,t,n,r){if(typeof console<`u`&&typeof console[e]==`function`){let i=t?`[${t}] ${n}`:n;console[e](i,...r)}}#a(e,t,n,r,i){if(!(!this.#e.callback||!this.#e.callbackIgnoresLevel&&r)&&!this.#n){this.#n=!0;try{let r=this.#e.callback(e,t,n,...i);r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#o(`[Logger] Error in async callback:`,e)})}catch(e){this.#o(`[Logger] Error in callback:`,e)}finally{this.#n=!1}}}#o(e,t){typeof console<`u`&&typeof console.error==`function`&&console.error(e,t)}};function ne(e){if(!e||typeof e!=`object`||e.constructor!==Object)throw TypeError(`dependencies must be a plain object`);for(let t in e)if(Object.getOwnPropertyDescriptor(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function x(e,t){for(let n of e){let e=n;if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`route must be a non-array object`);t?.routes.guardRouteCallbacks(n),t?.routes.guardNoAsyncCallbacks(n);let r=n.children;r&&x(r,t)}}const re=new Set([`all`,`warn-error`,`error-only`,`none`]);function ie(e){return typeof e==`string`&&re.has(e)}function ae(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function oe(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!ie(t.level))throw TypeError(`Invalid logger level: ${ae(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}function se(e){return Object.freeze(e)}function ce(e={}){return{...m,...e}}function S(e){if(e===void 0)return e;let t;for(let n in e){if(!Object.hasOwn(e,n))continue;let r=e[n];r!==void 0&&(t??={},t[n]=r)}return t??h}function le(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:m}}function C(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a={name:e.name,path:i,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=C(t,a);a.children.push(e)}return a}function ue(e,t,n){let r=C({name:e,path:t},null);for(let e of n){let t=C(e,r);r.children.push(t)}return r}const de=/[^\w!$'()*+,.:;|~-]/gu,fe=/[^\w!$'()*+,.:;|~-]/u,pe=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,w=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(pe,`�`))}},me=w(e=>e.replaceAll(de,e=>encodeURIComponent(e))),he={default:e=>fe.test(e)?me(e):e,uri:w(encodeURI),uriComponent:w(encodeURIComponent),none:e=>e},ge={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},_e=(e,t)=>{let n=he[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},ve=Object.freeze(Object.create(null));function T(){return{staticChildren:ve,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function E(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function ye(e,t){return e===``?t:t===``?e:e+t}function be(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function xe(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!be(n)||!be(r))return!1;t+=3}else t++;return!0}const Se=Object.freeze([]),Ce=Object.freeze(new Set),we=Object.freeze([]),Te=Object.freeze({}),Ee=Object.freeze({});function De(e,t,n){let r=t.has(e.name);return{paramName:e.name,encoder:r?e=>_e(e,n):he[n]}}function Oe(e,t,n){let r=new Set,a=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)r.add(t);for(let t of e.paramMeta.spatParams)a.add(t)}if(r.size===0)return{buildStaticParts:[e],buildParamSlots:we};let s=[],c=[],l=``,u=o(e);for(let[e,t]of u.entries()){e>0&&(l+=`/`);let r=i(t);if(`error`in r||r.kind===`static`){l+=t;continue}s.push(l),l=``,c.push(De(r,a,n))}return s.push(l),{buildStaticParts:s,buildParamSlots:c}}function ke(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function Ae(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a parameter marker (':' or '*') must be followed by a name (e.g. ':id', '*rest'). A name-less marker, or a trailing '?' with no parameter name, would capture under an empty key at match but emit a literal at build — the two disagree, so it is rejected.`)}function je(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function Me(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*' (e.g. ':y*' — the name is 'y' plus a stray marker). build/meta would capture the marker into the name while the gate rejects it as name-less — the two disagree, so it is rejected.`)}function Ne(e){throw Error(`[SegmentMatcher.registerTree] Optional params are not supported: "${e}" — declare two sibling routes instead (one with the segment, one without). The route hierarchy already expresses optionality.`)}function Pe(e){throw Error(`[SegmentMatcher.registerTree] Regex constraints are not supported: "<"/">" are reserved in path segments ("${e}"). Match the segment as a plain string and validate the value in a guard (canActivate) or app code.`)}function Fe(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment "${e}": match rejects non-ASCII input and compares static keys raw, so this route would never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`)}function Ie(e,t){switch(e){case`name-less`:return Ae();case`trailing-marker`:return Me(t);case`fused-marker`:return je(t);case`optional-removed`:return Ne(t);case`constraint-removed`:return Pe(t)}}function Le(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name ':${r}' in route "${e}": a param name must be unique within a route — two positions cannot both bind ':${r}' (the second silently overwrites the first). Rename one.`)}function Re(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>' — it would never round-trip. Rename the query param.`)}function ze(e,t){throw Error(`[SegmentMatcher.registerTree] Name collision in route "${e}": "${t}" is declared as BOTH a path param (':${t}') and a query param ('?${t}'). buildPath would emit its value twice (once in the path, once in the query). Rename one.`)}function Be(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL. The later registration would silently shadow the earlier (its deep link would resolve to the other route). Give them distinct paths.`)}function Ve(e,t){throw Error(`[SegmentMatcher.registerTree] Index route "${e}" (path "/") under the splat parent "${t}" is not supported: the index sits on the splat node, which the wildcard match never reaches, so it is unreachable. Give the index a distinct path, or make the parent static.`)}function He(e){let t=i(e);return(`error`in t||t.kind===`static`)&&Ae(),t.name}function Ue(e,t){return e.paramChild?e.paramChild.name!==t&&ke(e.paramChild.name,t,`:`):e.paramChild={node:T(),name:t},e.paramChild.node}function We(e,t){return e.splatChild?e.splatChild.name!==t&&ke(e.splatChild.name,t,`*`):e.splatChild={node:T(),name:t},e.splatChild.node}function Ge(e,t){e.route!==void 0&&e.route!==t&&Be(e.route.name,t.name),e.route=t}function Ke(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function qe(e,t,n){let r=E(n);if(r===`/`){Ge(e.root,t);return}Je(e,e.root,r,1,t)}function Je(e,t,n,r,i){let a=n.length;for(;r<=a;){let i=n.indexOf(`/`,r),o=i===-1?a:i,s=n.slice(r,o);t=Qe(e,t,s),r=o+1}Ge(t,i)}function Ye(e,t,n){n.slice(n.lastIndexOf(`/`)+1).startsWith(`*`)&&Ve(t.name,n);let r=Xe(e,n);r.slashChildRoute=t}function Xe(e,t){return Ze(e,e.root,t)}function Ze(e,t,n){let r=E(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let s=r.slice(a,n);i=Qe(e,i,s),a=n+1}return i}function Qe(e,t,n){if(n.startsWith(`*`)){let e=We(t,He(n));return t.hasChildren=!0,e}if(n.startsWith(`:`)){let e=Ue(t,He(n));return t.hasChildren=!0,e}Ke(n)&&Fe(n);let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren===ve&&(t.staticChildren=Object.create(null)),t.staticChildren[r]=T(),t.hasChildren=!0),t.staticChildren[r]}function $e(e,t,n,r,a){let c=t.fullName===``;c||r.push(t);let l=t.absolute,u=t.paramMeta===s?t.path:t.paramMeta.pathPattern,d=l&&u.startsWith(`~`)?u.slice(1):u,f=l?d:u;for(let e of o(f)){let t=i(e);`error`in t&&Ie(t.error,e)}let p=f,m=l?p:ye(n,p),h=c?a:et(e,t,m,l?``:n,r,a);for(let n of t.children.values())$e(e,n,m,r,h);c||r.pop()}function et(e,t,n,r,i,a){let o=at(n,r),s=Object.freeze([...i]),c=tt(s),l=E(n),u=ot(e.rootQueryParams,i),{buildStaticParts:d,buildParamSlots:f}=Oe(o?E(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),p=f.map(e=>e.paramName),m=p.length===0?Ce:new Set(p);m.size!==p.length&&Le(t.fullName,p),st(t.fullName,u,m);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?Ce:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),buildStaticParts:d,buildParamSlots:f,buildParamNamesSet:m,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(h.cachedResult=Object.freeze({segments:h.matchSegments,params:Te,meta:h.meta})),e.routesByName.set(t.fullName,h),o?rt(e,h,r):it(e,h,n,l,t),h}function tt(e){let t;for(let n of e)nt(n.paramTypeMap)&&(t??={},t[n.fullName]=n.paramTypeMap);return t===void 0?Ee:Object.freeze(t)}function nt(e){for(let t in e)if(Object.hasOwn(e,t))return!0;return!1}function rt(e,t,n){Ye(e,t,n);let r=E(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function it(e,t,n,r,i){if(qe(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function at(e,t){return E(e)===E(t)}function ot(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?Se:n}function st(e,t,n){for(let i of t)r.test(i)&&Re(e,i),n.has(i)&&ze(e,i)}function ct(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}function lt(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}var ut=class{get options(){return this.#e}#e;#t=T();#n=new Map;#r=new Map;#i={cleanPath:``,normalized:``,queryString:void 0};#a=[];#o=``;#s;#c;constructor(e){this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:e.urlParamsEncoding??`default`,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:ge[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,$e({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a},e,``,[],null)}match(e){if(!this.#f(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#i,i=this.#s?n:n.toLowerCase(),a=this.#r.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#g(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#m(a,{},r);let o={},s=this.#_(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#g(t,s))&&this.#b(o))return this.#m(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);let i=this.#l(r,t),a=this.#u(i,n?.trailingSlash),o=this.#d(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}hasRoute(e){return this.#n.has(e)}#l(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);if(r===``)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(ct(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)n in t&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n in t)Object.hasOwn(t,n)&&!e.declaredQueryParamsSet.has(n)&&!e.buildParamNamesSet.has(n)&&(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#f(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#p(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=E(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#p(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#o=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#m(e,t,n){if(!(n!==void 0&&!this.#h(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#h(e,t,n){let r;try{r=this.#e.parseQueryString(n)}catch{return!1}if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return!1;lt(t,e,r[e])}}else for(let e in r)lt(t,e,r[e]);return!0}#g(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#_(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#v(this.#t,e,1,t)}#v(e,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild){let e=i.paramChild;if(i.splatChild!==void 0){let a={[e.name]:c},o=this.#v(e.node,t,s+1,a);return o===void 0?this.#y(i.splatChild,t,n,r):(Object.assign(r,a),o)}u=e.node,r[e.name]=c}else if(i.splatChild)return this.#y(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#y(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#v(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!xe(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const dt=Object.freeze(new Map),ft=Object.freeze([]);function pt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function mt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function ht(e,t){let n=[],r=[];for(let i of e){let e=gt(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:mt(n),nonAbsoluteChildren:r}}function gt(e,t){let n=a(e.path),r=n.urlParams.length===0&&n.queryParams.length===0&&n.spatParams.length===0&&n.pathPattern===e.path?s:n,i=r.paramTypeMap,o={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:i};if(o.fullName=pt(o),e.children.length===0)o.children=dt,o.nonAbsoluteChildren=ft;else{let{childrenMap:t,nonAbsoluteChildren:n}=ht(e.children,o);o.children=t,o.nonAbsoluteChildren=n,Object.freeze(o.nonAbsoluteChildren),Object.freeze(o.children)}return Object.freeze(i),Object.freeze(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(o),o}function _t(e){return gt(e,null)}function vt(e,t,n){return _t(ue(e,t,n))}function D(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),D)),n}function yt(e){return Array.from(e.children.values(),D)}const bt=e=>{let t=e.indexOf(`%`),n=e.indexOf(`+`);if(t===-1&&n===-1)return e;let r=n===-1?e:e.replaceAll(`+`,` `);return t===-1?r:decodeURIComponent(r)},xt=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=bt(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},St=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,Ct=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(St,`�`))}},O=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[search-params] Array element must be a string, number, or boolean — received ${t}`);return Ct(e)},wt=(e,t,n,r)=>{let i=`${e}${n}`,a=[];for(let e of t)if(e===null){let e=r.encode(i);e&&a.push(e)}else a.push(`${i}=${O(e)}`);return a.join(`&`)},Tt={none:{encodeArray:(e,t,n)=>wt(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>wt(e,t,`[]`,n)},index:{encodeArray:(e,t,n)=>{let r=[];for(let[i,a]of t.entries()){let t=`${e}[${i}]`;if(a===null){let e=n.encode(t);e&&r.push(e)}else r.push(`${t}=${O(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(O(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Et={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e}},Dt={default:{encode:e=>e},hidden:{encode:()=>``}},Ot={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=+(e.codePointAt(0)===45);if(n===t||t-n>1&&e.codePointAt(n)===48&&e.codePointAt(n+1)!==46)return null;let r=!1;for(let i=n;i<t;i++){let a=e.codePointAt(i);if(!(a!==void 0&&a>=48&&a<=57)){if(a===46&&!r&&i!==n&&i!==t-1){r=!0;continue}return null}}let i=Number(e);return Object.is(i,-0)||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},k=(e,t,n,r)=>{if(e===void 0)throw TypeError(`[search-params] Unknown ${t} "${n}" — expected ${r}`);return e},kt=(e,t,n,r)=>({boolean:k(Et[t],`booleanFormat`,t,`"none" | "auto" | "empty-true"`),null:k(Dt[n],`nullFormat`,n,`"default" | "hidden"`),number:k(Ot[r],`numberFormat`,r,`"none" | "auto"`),array:k(Tt[e],`arrayFormat`,e,`"none" | "brackets" | "index" | "comma"`)}),At={boolean:Et.auto,null:Dt.default,number:Ot.auto,array:Tt.none},A={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},jt={...A,strategies:At},Mt=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return jt;let t=e.arrayFormat??A.arrayFormat,n=e.booleanFormat??A.booleanFormat,r=e.nullFormat??A.nullFormat,i=e.numberFormat??A.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:kt(t,n,r,i)}},j=e=>Ct(e),Nt=(e,t,n)=>{let r=j(e);switch(typeof t){case`string`:case`number`:return`${r}=${j(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t,n.strategies.null):`${r}=${j(t)}`;default:return`${r}=${j(t)}`}};function Pt(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Ft(e,t,n,r){if(!Object.hasOwn(e,t)){Pt(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):Pt(e,t,[i,n])}function It(e,t,n,r,i){return xt(r?e.slice(t+1,n):void 0,i)}function Lt(e,t,n){let r=t+1,i=0,a=!1;for(;r<n;){let t=e.codePointAt(r);if(t===93)return a?i:null;if(t!==void 0&&t>=48&&t<=57){i=i*10+(t-48),a=!0,r++;continue}return null}return null}function Rt(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=Lt(r,i,a);if(u===null)return!1;let d=It(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function zt(e,t,n,r,i,a,o){let s=a!==-1&&a<n,c=s?a:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=bt(e.slice(t,l));if(!(o!==void 0&&u&&Rt({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:a,end:n,hasValue:s,decodedName:d},i,o))){if(!u&&s&&i.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)Ft(r,d,xt(e,i),!0);return}}Ft(r,d,It(e,a,n,s,i),u)}}const Bt=(e,t)=>{if(e===``||e===`?`)return{};let n={};return Vt(e,n,Mt(t).strategies),n};function Vt(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length,o=-2;for(;i<a;){let s=e.indexOf(`&`,i);s===-1&&(s=a),s>i&&(o!==-1&&o<i&&(o=e.indexOf(`=`,i)),zt(e,i,s,t,n,o,r)),i=s+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),Pt(t,e,n.map(e=>e[1]))}const Ht=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=Mt(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=Nt(t,n,r);a&&i.push(a)}return i.join(`&`)};function Ut(e){let t=e?.queryParams;return new ut({...e?.caseSensitive!==void 0&&{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash!==void 0&&{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams!==void 0&&{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding!==void 0&&{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>Bt(e,t),buildQueryString:e=>Ht(e,t)})}const Wt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:A,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Gt(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&Gt(t);return e}function Kt(e,t){return typeof e==`function`?e(t):e}function qt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Jt=class{#e;constructor(e={}){this.#e=Gt({...Wt,...e})}static validateOptionsIsObject(e){qt(e)}get(){return this.#e}};function Yt(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Yt(e[n],t[n]))return!1;return!0}return!1}const Xt=new WeakMap;function Zt(e){return Xt.get(e)}function Qt(e,t){Xt.set(e,t)}var $t=class{#e=void 0;#t=void 0;#n;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?se(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0}setDependencies(e){this.#n=e}makeState(e,t,n,r,i){let a=this.#n.getDefaultParams(),o=Object.hasOwn(a,e),s;s=o?Object.freeze({...a[e],...t}):!t||t===h?h:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:_}};return r&&Qt(c,r),i?c:se(c)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#n.getUrlParams(e.name);for(let r of n)if(!Yt(e.params[r],t.params[r]))return!1;return!0}let r=Object.keys(e.params),i=Object.keys(t.params);if(r.length!==i.length)return!1;for(let n of r)if(!(n in t.params)||!Yt(e.params[n],t.params[n]))return!1;return!0}};const en={[f.ROUTER_START]:p.ROUTER_START,[f.ROUTER_STOP]:p.ROUTER_STOP,[f.TRANSITION_SUCCESS]:p.TRANSITION_SUCCESS,[f.TRANSITION_START]:p.TRANSITION_START,[f.TRANSITION_LEAVE_APPROVE]:p.TRANSITION_LEAVE_APPROVE,[f.TRANSITION_ERROR]:p.TRANSITION_ERROR,[f.TRANSITION_CANCEL]:p.TRANSITION_CANCEL},tn=Object.keys(en),nn=`router.usePlugin`;function rn(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}var an=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){rn(e)}setDependencies(e){this.#n=e}count(){return this.#e.size}use(...e){if(this.#n.getValidator()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],n=this.#i(t);this.#e.add(t);let r=!1,i=()=>{if(!r){r=!0,this.#e.delete(t),this.#t.delete(i);try{n()}catch(e){this.#n.logger.error(nn,`Error during cleanup:`,e)}}};return this.#t.add(i),i}let t=this.#r(e),n=[];try{for(let e of t){let t=this.#i(e);n.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of n)try{e()}catch(e){this.#n.logger.error(nn,`Cleanup error:`,e)}throw e}for(let{factory:e}of n)this.#e.add(e);let r=!1,i=()=>{if(!r){r=!0,this.#t.delete(i);for(let{factory:e}of n)this.#e.delete(e);for(let{cleanup:e}of n)try{e()}catch(e){this.#n.logger.error(nn,`Error during cleanup:`,e)}}};return this.#t.add(i),i}getAll(){return[...this.#e]}has(e){return this.#e.has(e)}disposeAll(){for(let e of this.#t)e();this.#e.clear(),this.#t.clear()}#r(e){let t=new Set;for(let n of e)t.has(n)?this.#n.getValidator()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#i(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#n.getValidator()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of tn)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(en[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#n.getValidator()?.plugins.warnPluginAfterStart(e)):this.#n.getValidator()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};const on=()=>!0,sn=()=>!1,cn=()=>on,ln=()=>sn;function un(e){return e?cn:ln}var dn=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=[this.#i,this.#a];#s;setDependencies(e){this.#s=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}preflightHandlerLimit(e,t,n){let r=this.#s.getValidator();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#d(e),s=0;for(let e of t)(n?o.has(e):a.has(e)||o.has(e))||s++;if(s===0)return;let c=n?o.size:this.getHandlerCount(e);r.lifecycle.validateHandlerLimit(c+s-1,i)};i(`activate`,e,`canActivate`),i(`deactivate`,t,`canDeactivate`)}addCanActivate(e,t,n=!1,r){this.#c(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,r){this.#c(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t){this.#l(`activate`,e,t)}clearCanDeactivate(e,t){this.#l(`deactivate`,e,t)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#t.has(e)?this.#u(`activate`,e):this.#a.delete(e);for(let e of this.#n.keys())this.#r.has(e)?this.#u(`deactivate`,e):this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#n)e[t]=n;for(let[t,n]of this.#r)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFactoriesByOrigin(){let e={},t={},n={},r={};for(let[t,n]of this.#n)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,t]of this.#r)n[e]=t;for(let[e,t]of this.#t)r[e]=t;return{definition:[e,t],external:[n,r]}}getFunctions(){return this.#o}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}compileGuardFactory(e,t){let n=typeof e==`boolean`?un(e):e,r=this.#s.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] Factory must return a function, got ${typeof r}`);return r}#c(e,t,n,r,i,a){let o=this.#d(e),s=e===`activate`?this.#a:this.#i,c=r?o.definition:o.external,l=r?o.external:o.definition;if(c.has(t)||l.has(t))this.#s.getValidator()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#s.getValidator();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?un(n):n,d=c.get(t);c.set(t,u);let f=r&&l.has(t);try{let e=a??this.compileGuardFactory(u,i);f||s.set(t,e)}catch(n){throw d===void 0?c.delete(t):c.set(t,d),this.#u(e,t),n}}#l(e,t,n){let{definition:r,external:i}=this.#d(e),a=n===`external`?!1:r.delete(t),o=n===`definition`?!1:i.delete(t);(a||o)&&this.#u(e,t)}#u(e,t){let n=this.#d(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}try{let e=this.#s.compileFactory(i);if(typeof e!=`function`){r.delete(t);return}r.set(t,e)}catch{r.delete(t)}}#d(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#f(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#s.getValidator()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch(e){return this.#s.logger.warn(`router.${i}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const fn=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function M(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function pn(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function mn(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function hn(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function gn(e,t){if(!t||!_n(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function _n(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function N(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>N(e))),t}function vn(e,t,n=``){for(let r=0;r<e.length;r++){let i=e[r],a=n?`${n}.${i.name}`:i.name;if(a===t)return e.splice(r,1),!0;if(i.children&&t.startsWith(`${a}.`)&&vn(i.children,t,a))return!0}return!1}function yn(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function bn(e,t){let n=t.search(/[?#]/),r=n===-1?t:t.slice(0,n);if(r===`/`||r.endsWith(`/`))return t;let i=e.search(/[?#]/),a=i===-1?e:e.slice(0,i);return a.length>1&&a.endsWith(`/`)?`${r}/${n===-1?``:t.slice(n)}`:t}function xn(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}function Sn(e,t,n){let r=vt(``,t,e),i=Ut(n);return i.registerTree(r),{tree:r,matcher:i}}function P(e,t=e.definitions){let n=Sn(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear()}function Cn(e,t){P(e,t),e.resolvedForwardMap=F(e.config)}function wn(e){Tn(e),P(e,[])}function Tn(e){Object.assign(e.config,M()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function F(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=xn(n,e.forwardMap);return t}function En(e,t){if(typeof e!=`function`)return;let n=e.constructor.name===`AsyncFunction`,r=e.toString().includes(`__awaiter`);if(n||r)throw TypeError(`forwardTo callback cannot be async for route "${t}". Async functions break matchPath/buildPath.`)}function Dn(e,t,n,r){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`real-router`,`Route "${t}" has both forwardTo and canActivate. canActivate will be ignored because forwardTo creates a redirect (industry standard). Move canActivate to the target route "${n}".`)}if(e.canDeactivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`real-router`,`Route "${t}" has both forwardTo and canDeactivate. canDeactivate will be ignored because forwardTo creates a redirect (industry standard). Move canDeactivate to the target route "${n}".`)}En(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function On(e,t,n,r,i,a,o){let s=Object.fromEntries(Object.entries(e).filter(([e])=>!fn.has(e)));Object.keys(s).length>0&&(r[t]=s),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&Dn(e,t,n,o),e.decodeParams&&(n.decoders[t]=t=>e.decodeParams?.(t)??t),e.encodeParams&&(n.encoders[t]=t=>e.encodeParams?.(t)??t),e.defaultParams&&(n.defaultParams[t]=e.defaultParams)}function kn(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;On(s,e,t,n,r,i,a),s.children&&kn(s.children,t,n,r,i,a,e)}}function An(e){let t=M();return pn(t,e),t}function jn(e,t,n){if(n.length===0)return[...e,...t];let[r,...i]=n;return e.map(e=>{if(e.name!==r)return e;let n=e.children??[];return{...e,children:i.length===0?[...n,...t]:jn(n,t,i)}})}function I(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&I(r.children,e,n)}}function L(e,t,n){let r=new Set;I(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function Mn(e,t){if(e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function R(e,t){for(let n of e)Mn(n.name,t),n.children&&R(n.children,t)}function Nn(e,t,n){let r=new Map,i=(e,t)=>{for(let a of e){let e=r.get(t);if(e?.has(a.path))throw Error(`[router.${n}] Path "${a.path}" is already defined`);e?e.add(a.path):r.set(t,new Set([a.path])),a.children&&i(a.children,t?`${t}.${a.name}`:a.name)}};i(e,t)}function Pn(e,t,n){if(R(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);I(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),L(t,n??``,`addRoute`),Nn(t,n??``,`addRoute`)}function Fn({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;kn(t,n,r,c,l,s,i);let u=F(n),{tree:d,matcher:f}=Sn(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function In(e,t,n,r){return Fn({definitions:jn(e.definitions,t.map(e=>N(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:An(e.config),routeCustomFields:Object.assign(Object.create(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function Ln(e,t,n,r){return Fn({definitions:e.map(e=>N(e)),routesForHandlers:e,config:M(),routeCustomFields:Object.create(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function Rn(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function zn(e,t){return{activate:Rn(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:Rn(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Bn(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??zn(t,r);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.resolvedForwardMap=t.resolvedForwardMap;for(let[e,t,n]of i)r.addActivateGuard(e,t,n);for(let[e,t,n]of a)r.addDeactivateGuard(e,t,n)}function Vn(e,t,n,r){let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r,u=i===void 0?void 0:Hn(n,i,e.config),d=Un(e,n,r),f=c==null?void 0:t.compileGuardFactory(c,`canActivate`),p=l==null?void 0:t.compileGuardFactory(l,`canDeactivate`);return t.preflightHandlerLimit(f===void 0?[]:[n],p===void 0?[]:[n],!1),d!==void 0&&(Object.keys(d).length>0?e.routeCustomFields[n]=d:delete e.routeCustomFields[n]),u!==void 0&&(e.config.forwardMap=u.forwardMap,e.config.forwardFnMap=u.forwardFnMap,e.resolvedForwardMap=u.resolved),Wn(e,n,{defaultParams:a,decodeParams:o,encodeParams:s}),Gn(t,`activate`,n,c,f),Gn(t,`deactivate`,n,l,p),{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}}function Hn(e,t,n){En(t,e);let r=Object.assign(Object.create(null),n.forwardMap),i=Object.assign(Object.create(null),n.forwardFnMap);return t===null?(delete r[e],delete i[e]):typeof t==`string`?(delete i[e],r[e]=t):(delete r[e],i[e]=t),{forwardMap:r,forwardFnMap:i,resolved:F({...n,forwardMap:r})}}function Un(e,t,n){let r;for(let i of Object.keys(n)){if(fn.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:r[i]=a)}return r}function Wn(e,t,n){if(n.defaultParams!==void 0&&(n.defaultParams===null?delete e.config.defaultParams[t]:e.config.defaultParams[t]=n.defaultParams),n.decodeParams!==void 0)if(n.decodeParams===null)delete e.config.decoders[t];else{let r=n.decodeParams;e.config.decoders[t]=e=>r(e)??e}if(n.encodeParams!==void 0)if(n.encodeParams===null)delete e.config.encoders[t];else{let r=n.encodeParams;e.config.encoders[t]=e=>r(e)??e}}function Gn(e,t,n,r,i){r!==void 0&&(t===`activate`?r===null?e.clearCanActivate(n,`definition`):e.addCanActivate(n,r,!0,i):r===null?e.clearCanDeactivate(n,`definition`):e.addCanDeactivate(n,r,!0,i))}function Kn(e,t,n){R(e,`addRoute`),L(e,``,`addRoute`);let r=Ln(e,``,t,n),i={get definitions(){return yt(i.tree)},config:r.config,tree:r.tree,matcher:r.matcher,urlParamsCache:new Map,resolvedForwardMap:r.resolvedForwardMap,routeCustomFields:r.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:r.pendingCanActivate,pendingCanDeactivate:r.pendingCanDeactivate};return i}const z=[];Object.freeze(z);function qn(e){let t=e.split(`.`),n=t.length,r=[t[0]],i=t[0].length;for(let a=1;a<n-1;a++)i+=1+t[a].length,r.push(e.slice(0,i));return r.push(e),r}const Jn=new Set([`string`,`number`,`boolean`]);function Yn(e){return Jn.has(typeof e)}function Xn(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of Object.keys(i)){let t=n.params[e],i=r.params[e];if(Yn(t)&&Yn(i)&&String(t)!==String(i))return!1}return!0}function Zn(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Xn(a,e,t,n))return o}return a}const Qn=new Map;function B(e){let t=Qn.get(e);if(t)return t;let n=$n(e);return Object.freeze(n),Qn.set(e,n),n}function $n(e){if(!e)return[``];let t=e.indexOf(`.`);if(t===-1)return[e];let n=e.indexOf(`.`,t+1);if(n===-1)return[e.slice(0,t),e];let r=e.indexOf(`.`,n+1);return r===-1?[e.slice(0,t),e.slice(0,n),e]:e.indexOf(`.`,r+1)===-1?[e.slice(0,t),e.slice(0,n),e.slice(0,r),e]:qn(e)}let V,H,U=null,er,tr,W=null;function nr(e,t){if(!t)return{intersection:``,toActivate:B(e.name),toDeactivate:z};let n=Zt(e),r=Zt(t);if(!n&&!r)return{intersection:``,toActivate:B(e.name),toDeactivate:B(t.name)};let i=B(e.name),a=B(t.name),o=Math.min(a.length,i.length),s=Zn(n??r,e,t,i,a,o),c;if(s>=a.length)c=z;else if(s===0&&a.length===1)c=a;else{c=[];for(let e=a.length-1;e>=s;e--)c.push(a[e])}let l=s===0?i:i.slice(s);return{intersection:s>0?a[s-1]:``,toDeactivate:c,toActivate:l}}function G(e,t){if(U!==null&&e===V&&t===H)return U;if(W!==null&&e===er&&t===tr)return W;let n=nr(e,t);return er=V,tr=H,W=U,V=e,H=t,U=n,n}function rr(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function ir(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var ar=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=Kn(e,t,n)}static shouldUpdateNode(e){return(t,n)=>{if(!(t&&typeof t==`object`&&`name`in t))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(t.transition.reload||e===``)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=G(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e}flushPendingGuards(){let e=this.#r;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,P(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){wn(this.#e)}buildPath(e,t,n){if(e===d.UNKNOWN_ROUTE)return typeof t?.path==`string`?t.path:``;let r=Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t??{},i=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...r}):r;return this.#e.matcher.buildPath(e,i,this.#a(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=ir(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#r.forwardState(i,s),u=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,r=n.trailingSlash;try{u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=bn(e,u))}catch{u=e}}return this.#r.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#i(e,t),r=this.#e.config.forwardFnMap[e],i=this.#o(e,r,t);return{name:i,params:this.#i(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#i(e,t),i=this.#e.config.forwardFnMap[n],a=this.#o(n,i,t);return{name:a,params:this.#i(a,r)}}if(n!==e){let r=this.#i(e,t);return{name:n,params:this.#i(n,r)}}return{name:e,params:this.#i(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return ir({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#r.getState();if(!i)return!1;let a=i.name;if(a!==e&&!a.startsWith(`${e}.`)&&!e.startsWith(`${a}.`))return!1;let o=this.#e.config.defaultParams[e];if(n||a===e){let n={name:e,params:o?{...o,...t}:t,path:``,transition:_,context:{}};return this.#r.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return mn(t,s)?o?hn(r?gn(o,this.#e.matcher.getMetaByName(e)?.[e]):o,s,t):!0:!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.urlParamsCache.get(e);if(t!==void 0)return t;let n=this.#e.matcher.getSegmentsByName(e),r=n?rr(n):[];return this.#e.urlParamsCache.set(e,r),r}getStore(){return this.#e}#i(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#a(e){if(this.#t)return e!==this.#n&&this.#r.logger.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#o(e,t,n){let r=new Set([e]),i=t(this.#r.getDependency,n),a=0;if(typeof i!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof i}`);for(;a<100;){if(this.#e.matcher.getSegmentsByName(i)===void 0)throw Error(`Route "${i}" does not exist`);if(r.has(i)){let e=[...r,i].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(r.add(i),Object.hasOwn(this.#e.config.forwardFnMap,i)){let e=this.#e.config.forwardFnMap[i];i=e(this.#r.getDependency,n),a++;continue}let e=this.#e.config.forwardMap[i];if(e!==void 0){i=e,a++;continue}return i}throw Error(`forwardTo exceeds maximum depth of 100`)}};const or=new Set(Object.values(l)),sr=new Set([`code`,`segment`,`path`]),cr=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var K=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(sr.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);cr.has(e)||(this[e]=t)}}setCode(e){this.code=e,or.has(this.message)&&(this.message=e)}setErrorInstance(e){if(!e)throw TypeError(`[RouterError.setErrorInstance] err parameter is required and must be an Error instance`);this.message=e.message,this.cause=e.cause,this.stack=e.stack??``}setAdditionalFields(e){for(let[t,n]of Object.entries(e)){if(sr.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);cr.has(t)||(this[t]=n)}}hasField(e){return e in this}getField(e){return this[e]}toJSON(){let e={code:this.code,message:this.message};this.segment!==void 0&&(e.segment=this.segment),this.path!==void 0&&(e.path=this.path);let t=new Set([`code`,`message`,`segment`,`path`,`stack`,`name`]);for(let n in this)Object.hasOwn(this,n)&&!t.has(n)&&(e[n]=this[n]);return e}};const lr=new K(l.ROUTER_NOT_STARTED),ur=new K(l.ROUTE_NOT_FOUND),dr=new K(l.SAME_STATES),q=Promise.reject(lr),fr=Promise.reject(ur),pr=Promise.reject(dr);q.catch(()=>{}),fr.catch(()=>{}),pr.catch(()=>{});function mr(e,t,n,r,i){Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({deactivated:n,activated:r,intersection:i})};return e?.name!==void 0&&(a.from=e.name),t.reload!==void 0&&(a.reload=t.reload),t.replace!==void 0&&(a.replace=t.replace),t.redirected!==void 0&&(a.redirected=t.redirected),Object.freeze(a)}function hr({signal:e,...t}){return t}function gr(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:o,intersection:s}=t;if(n.name!==d.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new K(l.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of a)!o.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=mr(r,i,a,o,s);let c=Object.freeze(n);e.setState(c);let u=i.signal===void 0?i:hr(i);return e.sendTransitionDone(c,r,u),c}function _r(e,t,n,r){let i=t;i.code===l.TRANSITION_CANCELLED||i.code===l.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function J(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new K(l.TRANSITION_CANCELLED);if(e instanceof K&&e.code===l.TRANSITION_CANCELLED)throw e;vr(e,t,n)}function vr(e,t,n){throw e instanceof K?(e.setCode(t),e):new K(t,br(e,n))}const yr=new Set([`code`,`segment`,`path`,`then`]);function br(e,t){let n={segment:t};if(e instanceof Error)return{...n,message:e.message,stack:e.stack,...`cause`in e&&e.cause!==void 0&&{cause:e.cause}};if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))yr.has(n)||(t[n]=r);return{...n,...t}}return n}async function xr(e,t,n){let r;try{r=await e}catch(e){J(e,t,n);return}if(!r)throw new K(t,{segment:n})}async function Sr(e,t,n,r,i,a,o,s,c,u){await xr(c,n,u);for(let c=s;c<t.length;c++){if(!o())throw new K(l.TRANSITION_CANCELLED);let s=t[c],u=e.get(s);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){J(e,n,s)}if(d instanceof Promise){await xr(d,n,s);continue}if(!d)throw new K(n,{segment:s})}}async function Cr(e,t,n,r,i,a,o,s,c){if(await e,!s())throw new K(l.TRANSITION_CANCELLED);let u=c();if(u!==void 0&&(await u,!s()))throw new K(l.TRANSITION_CANCELLED);if(r){let e=Y(t,n,l.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new K(l.TRANSITION_CANCELLED)}}function wr(e,t,n,r,i,a,o,s,c,u,d){if(i){let i=Y(e,n,l.CANNOT_DEACTIVATE,o,s,c,u);if(i!==void 0)return Cr(i,t,r,a,o,s,c,u,d)}if(!u())throw new K(l.TRANSITION_CANCELLED);let f=d();if(f!==void 0)return Tr(f,a?t:void 0,r,o,s,c,u);if(a)return Y(t,r,l.CANNOT_ACTIVATE,o,s,c,u)}async function Tr(e,t,n,r,i,a,o){if(await e,!o())throw new K(l.TRANSITION_CANCELLED);if(t!==void 0){let e=Y(t,n,l.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new K(l.TRANSITION_CANCELLED)}}function Y(e,t,n,r,i,a,o){for(let[s,c]of t.entries()){if(!o())throw new K(l.TRANSITION_CANCELLED);let u=e.get(c);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){J(e,n,c)}if(d instanceof Promise)return Sr(e,t,n,r,i,a,o,s+1,d,c);if(!d)throw new K(n,{segment:c})}}const Er=Object.freeze([d.UNKNOWN_ROUTE]),Dr=Object.freeze({replace:!0});function Or(e,t){return t?.name===d.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function kr(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var Ar=class{lastSyncResolved=!1;lastSyncRejected=!1;#e;#t=null;#n=0;setDependencies(e){this.#e=e}navigate(e,t,n){this.lastSyncResolved=!1;let r=this.#e;if(!r.canNavigate())return this.lastSyncRejected=!0,q;let i;try{i=r.buildNavigateState(e,t)}catch(e){return Promise.reject(e)}return i?this.#r(i,n):(r.emitTransitionError(void 0,r.getState(),ur),this.lastSyncRejected=!0,fr)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,q;if(e.name!==d.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new K(l.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let r={name:e.name,params:e.params,path:e.path,context:{...e.context}},i=Zt(e);return i!==void 0&&Qt(r,i),this.#r(r,t)}navigateToDefault(e){this.lastSyncResolved=!1;let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new K(l.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r;try{({route:n,params:r}=t.resolveDefault())}catch(e){return Promise.reject(e)}return n?this.navigate(n,r,e):Promise.reject(new K(l.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){if(!this.#e.isActive())throw new K(l.ROUTER_DISPOSED);this.#c();let t=this.#e.getState(),n=t?B(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:Er,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:d.UNKNOWN_ROUTE,params:h,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,Dr),a}abortCurrentController(e){this.#t?.abort(e??new K(l.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=Or(t,r),kr(r,t,e))return n.emitTransitionError(e,r,dr),this.lastSyncRejected=!0,pr;this.#c(t.signal);let o=++this.#n,s=t.signal!==void 0||n.hasLeaveListeners()||n.hasPreCommitListeners();n.startTransition(e,r),i=!0;let[c,u]=n.getLifecycleFunctions(),f=e.name===d.UNKNOWN_ROUTE,p=G(e,r),{toDeactivate:m,toActivate:h,intersection:g}=p,_=r&&!t.forceDeactivate&&m.length>0,ee=!f&&h.length>0,v=c.size>0||u.size>0,y=e;if(!v){let e=this.#o(y,r,o,t,p,c);if(e!==void 0)return e}if(v){a=new AbortController,this.#t=a;let i=()=>this.#n===o&&n.isActive(),s=a.signal,d=wr(c,u,m,h,!!_,ee,e,r,s,i,()=>{if(n.sendLeaveApprove(y,r),n.hasLeaveListeners())return n.awaitLeaveListeners(y,r,s)});if(d!==void 0)return this.#i(d,{toState:e,fromState:r,opts:t,toDeactivate:m,toActivate:h,intersection:g,canDeactivateFunctions:c},a,o);if(!i())throw new K(l.TRANSITION_CANCELLED);this.#s(a,!1)}if(s&&(!n.isActive()||t.signal?.aborted===!0))throw new K(l.TRANSITION_CANCELLED);let b=gr(n,{toState:e,fromState:r,opts:t,toDeactivate:m,toActivate:h,intersection:g,canDeactivateFunctions:c});return this.lastSyncResolved=!0,Promise.resolve(b)}catch(t){return this.#a(t,a,i,e,r),Promise.reject(t)}}async#i(e,t,n,r){let i=this.#e,a=()=>this.#n===r&&!n.signal.aborted&&i.isActive(),o=t.opts.signal,s,c,u=!1,d,f=new Promise(e=>{if(n.signal.aborted){e();return}c=()=>{e()},n.signal.addEventListener(`abort`,c,{once:!0})});e.catch(()=>{});try{if(o){if(o.aborted)throw new K(l.TRANSITION_CANCELLED,{reason:o.reason});s=()=>{i.cancelNavigation(o.reason)},o.addEventListener(`abort`,s,{once:!0})}if(await Promise.race([e,f]),!a())throw new K(l.TRANSITION_CANCELLED);let n=gr(i,t);return u=!0,n}catch(e){throw d=e,_r(i,e,t.toState,t.fromState),e}finally{s&&o?.removeEventListener(`abort`,s),c&&n.signal.removeEventListener(`abort`,c),this.#s(n,!u,d)}}#a(e,t,n,r,i){t&&this.#s(t,!0,e),n&&r&&_r(this.#e,e,r,i)}#o(e,t,n,r,i,a){let o=this.#e;if(o.sendLeaveApprove(e,t),o.hasLeaveListeners()){let s=new AbortController;this.#t=s;let c;try{c=o.awaitLeaveListeners(e,t,s.signal)}catch(e){throw this.#s(s,!0,e),e}if(c!==void 0)return this.#i(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},s,n);this.#s(s,!1);return}}#s(e,t,n){t&&e.abort(n),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(this.#e.logger.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#e.cancelNavigation()),e?.aborted)throw new K(l.TRANSITION_CANCELLED,{reason:e.reason})}};const jr=Object.freeze({replace:!0});var Mr=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw new K(l.TRANSITION_CANCELLED);let n=t.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let r=t.matchPath(e);if(!r&&!n.allowNotFound){let n=new K(l.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,jr):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};function Nr(e,t,n){let r=e[t];if(r===void 0)throw Error(`[FSM.${n}] state "${t}" is not declared in config.transitions`);return r}var Pr=class{#e;#t;#n=0;#r=null;#i;#a;#o=[];constructor(e){this.#e=e.initial,this.#i=e.context,this.#a=e.transitions,this.#t=Nr(e.transitions,e.initial,`constructor`);for(let t of Object.keys(e.transitions)){let n=e.transitions[t];for(let t of Object.keys(n)){let r=n[t];r!==void 0&&Nr(e.transitions,r,`constructor`)}}}send(e,...t){let n=this.#t[e];if(n===void 0)return this.#e;let r=this.#e;this.#e=n,this.#t=this.#a[n];let i=t[0];if(this.#r!==null){let t=this.#r.get(r)?.get(e);t!==void 0&&t(i)}if(this.#n>0){let t={from:r,to:n,event:e,payload:i};for(let e of this.#o)e!==null&&e(t)}return this.#e}canSend(e){return this.#t[e]!==void 0}getState(){return this.#e}getContext(){return this.#i}on(e,t,n){Nr(this.#a,e,`on`),this.#r??=new Map;let r=this.#r.get(e);r||(r=new Map,this.#r.set(e,r));let i=n;return r.set(t,i),()=>{let n=this.#r?.get(e);n?.get(t)===i&&n.delete(t)}}onTransition(e){let t=this.#o.indexOf(null),n;t===-1?(n=this.#o.length,this.#o.push(e)):(this.#o[t]=e,n=t),this.#n++;let r=!0;return()=>{r&&(r=!1,this.#o[n]=null,this.#n--)}}};const X={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},Z={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},Fr={initial:X.IDLE,context:null,transitions:{[X.IDLE]:{[Z.START]:X.STARTING,[Z.DISPOSE]:X.DISPOSED},[X.STARTING]:{[Z.STARTED]:X.READY,[Z.FAIL]:X.IDLE,[Z.STOP]:X.IDLE,[Z.DISPOSE]:X.DISPOSED},[X.READY]:{[Z.NAVIGATE]:X.TRANSITION_STARTED,[Z.FAIL]:X.READY,[Z.STOP]:X.IDLE,[Z.DISPOSE]:X.DISPOSED},[X.TRANSITION_STARTED]:{[Z.NAVIGATE]:X.TRANSITION_STARTED,[Z.LEAVE_APPROVE]:X.LEAVE_APPROVED,[Z.CANCEL]:X.READY,[Z.FAIL]:X.READY,[Z.DISPOSE]:X.DISPOSED},[X.LEAVE_APPROVED]:{[Z.NAVIGATE]:X.TRANSITION_STARTED,[Z.COMPLETE]:X.READY,[Z.CANCEL]:X.READY,[Z.FAIL]:X.READY,[Z.DISPOSE]:X.DISPOSED},[X.DISPOSED]:{}}};function Ir(){return new Pr(Fr)}const Q=`TREE_CHANGED`;function Lr(e){return e instanceof Error?e:Error(String(e))}function Rr(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof K&&e.code===l.TRANSITION_CANCELLED?e:new K(l.TRANSITION_CANCELLED,{reason:e}))};if(n.aborted){a();return}n.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e).then(e=>{if(n.removeEventListener(`abort`,a),n.aborted)return;if(t!==void 0){i(Lr(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(Lr(o.reason));return}r()})})}var zr=class{#e;#t;#n;#r;#i=[];#a=0;#o;#s;#c;#l;#u;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=e.abortController,this.#o=void 0,this.#p()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(p.ROUTER_START)}emitRouterStop(){this.#t.emit(p.ROUTER_STOP)}emitTransitionStart(e,t){this.#a++;try{this.#t.emit(p.TRANSITION_START,e,t)}finally{this.#a--}}emitTransitionSuccess(e,t,n){this.#a++;try{this.#t.emit(p.TRANSITION_SUCCESS,e,t,n)}finally{this.#a--}}emitTransitionError(e,t,n){this.#a++;try{this.#t.emit(p.TRANSITION_ERROR,e,t,n)}finally{this.#a--}}emitTransitionCancel(e,t){this.#a++;try{this.#t.emit(p.TRANSITION_CANCEL,e,t)}finally{this.#a--}}emitTransitionLeaveApprove(e,t){this.#a++;try{this.#t.emit(p.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#a--}}isProcessing(){return this.#a>0}emitTreeChanged(e){this.#t.emit(Q,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Q)}subscribeTreeChanged(e){if(this.isDisposed())throw new K(l.ROUTER_DISPOSED);return this.#t.on(Q,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Q)}sendStart(){this.#e.send(Z.START)}sendStop(){this.#e.send(Z.STOP)}sendDispose(){this.#e.send(Z.DISPOSE)}sendStarted(){this.#e.send(Z.STARTED)}sendNavigate(e,t){this.#o=e,this.#e.send(Z.NAVIGATE,{toState:e,fromState:t})}sendComplete(e,t,n={}){this.#e.send(Z.COMPLETE,{toState:e,fromState:t,opts:n}),this.#o=void 0}sendLeaveApprove(e,t){this.#e.send(Z.LEAVE_APPROVE,{toState:e,fromState:t})}sendFail(e,t,n){this.#s=e,this.#c=t,this.#l=n,this.#e.send(Z.FAIL),this.#o=void 0}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t,n){this.#s=e,this.#c=t,this.#u=n,this.#e.send(Z.CANCEL),this.#o=void 0}canBeginTransition(){return this.#e.canSend(Z.NAVIGATE)}canStart(){return this.#e.canSend(Z.START)}canCancel(){return this.#e.canSend(Z.CANCEL)}isActive(){let e=this.#e.getState();return e!==X.IDLE&&e!==X.DISPOSED}isDisposed(){return this.#e.getState()===X.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===X.TRANSITION_STARTED||e===X.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===X.LEAVE_APPROVED}isReady(){return this.#e.getState()===X.READY}isStarting(){return this.#e.getState()===X.STARTING}isIdle(){return this.#e.getState()===X.IDLE}addEventListener(e,t){return this.#d(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new K(l.ROUTER_DISPOSED);return this.#d(p.TRANSITION_SUCCESS,`subscribe`),this.#t.on(p.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw new K(l.ROUTER_DISPOSED);this.#i.push(e);let t=!1;return()=>{if(t)return;t=!0;let n=this.#i.indexOf(e);n!==-1&&this.#i.splice(n,1)}}hasLeaveListeners(){return this.#i.length>0}hasPreCommitListeners(){return this.#t.listenerCount(p.TRANSITION_START)>0||this.#t.listenerCount(p.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#i];this.#a++;try{for(let e of o)try{let t=e(r);t!==void 0&&typeof t.then==`function`&&(i??=[],i.push(t))}catch(e){a===void 0&&(a=e)}}finally{this.#a--}if(i===void 0){if(a!==void 0)throw Lr(a);return}return Rr(i,a,n)}clearAll(){this.#t.clearAll(),this.#i.length=0}setLimits(e){this.#t.setLimits(e)}setValidatorAccessor(e){this.#r=e}sendCancelIfPossible(e,t){let n=this.#o;!this.canCancel()||n===void 0||this.sendCancel(n,e,t)}#d(e,t){let n=this.#r?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#f(){this.emitTransitionError(this.#s,this.#c,this.#l),this.#s=void 0,this.#c=void 0,this.#l=void 0}#p(){let e=this.#e;e.on(X.STARTING,Z.STARTED,()=>{this.emitRouterStart()}),e.on(X.READY,Z.STOP,()=>{this.emitRouterStop()});let t=e=>{this.emitTransitionStart(e.toState,e.fromState)};e.on(X.READY,Z.NAVIGATE,t),e.on(X.TRANSITION_STARTED,Z.NAVIGATE,t),e.on(X.LEAVE_APPROVED,Z.NAVIGATE,t),e.on(X.TRANSITION_STARTED,Z.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(X.LEAVE_APPROVED,Z.COMPLETE,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let n=()=>{let e=this.#s,t=this.#u;this.#u=void 0,this.#n(t),e!==void 0&&this.emitTransitionCancel(e,this.#c)};e.on(X.TRANSITION_STARTED,Z.CANCEL,n),e.on(X.LEAVE_APPROVED,Z.CANCEL,n),e.on(X.LEAVE_APPROVED,Z.FAIL,()=>{this.#f()}),e.on(X.STARTING,Z.FAIL,()=>{this.#f()}),e.on(X.READY,Z.FAIL,()=>{this.#f()}),e.on(X.TRANSITION_STARTED,Z.FAIL,()=>{this.#f()})}};const Br=new K(l.ROUTER_ALREADY_STARTED);function Vr(e){let t=Hr(e),n=()=>c(e.router).validator;Ur(e),Wr(e,n),Gr(e,t,n),Kr(e),qr(e,t,n),Jr(e),Yr(e),Xr(e)}function Hr(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Ur(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Wr(e,t){e.eventBus.setValidatorAccessor(t)}function Gr(e,t,n){let r={logger:c(e.router).logger,compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function Kr(e){let t={logger:c(e.router).logger,addActivateGuard:(t,n,r)=>{e.routeLifecycle.addCanActivate(t,n,!0,r)},addDeactivateGuard:(t,n,r)=>{e.routeLifecycle.addCanDeactivate(t,n,!0,r)},compileGuard:(t,n)=>e.routeLifecycle.compileGuardFactory(t,n),makeState:(t,n,r,i)=>e.state.makeState(t,n,r,i),getState:()=>e.state.get(),areStatesEqual:(t,n,r)=>e.state.areStatesEqual(t,n,r),getDependency:t=>e.dependenciesStore.dependencies[t],forwardState:(t,n)=>{let r=c(e.router);return r.validator?.routes.validateStateBuilderArgs(t,n,`forwardState`),r.forwardState(t,n)}};e.routes.setDependencies(t),e.routes.setLifecycleNamespace(e.routeLifecycle)}function qr(e,t,n){let r={logger:c(e.router).logger,addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n};e.plugins.setDependencies(r)}function Jr(e){let t={logger:c(e.router).logger,getOptions:()=>e.options.get(),hasRoute:t=>e.routes.hasRoute(t),getState:()=>e.state.get(),setState:t=>{e.state.set(t)},buildNavigateState:(t,n)=>{let r=c(e.router);r.validator?.routes.validateStateBuilderArgs(t,n,`navigate`);let i=r.forwardState(t,n),a=i.name,o=S(i.params),s=e.routes.getMetaForState(a);if(s===void 0)return;let l=r.buildPath(a,o);return e.state.makeState(a,o,l,s,!0)},resolveDefault:()=>{let t=e.options.get(),n=c(e.router),r=Kt(t.defaultRoute,t=>e.dependenciesStore.dependencies[t]),i=Kt(t.defaultParams,t=>e.dependenciesStore.dependencies[t]);return typeof t.defaultRoute==`function`&&n.validator?.options.validateResolvedDefaultRoute(r,n.routeGetStore()),{route:r,params:i}},startTransition:(t,n)=>{e.eventBus.sendNavigate(t,n)},cancelNavigation:t=>{e.eventBus.sendCancelIfPossible(e.state.get(),t)},sendTransitionDone:(t,n,r)=>{e.eventBus.sendComplete(t,n,r)},sendTransitionFail:(t,n,r)=>{e.eventBus.sendFail(t,n,r)},emitTransitionError:(t,n,r)=>{e.eventBus.sendFailSafe(t,n,r)},emitTransitionSuccess:(t,n,r)=>{e.eventBus.emitTransitionSuccess(t,n,r)},sendLeaveApprove:(t,n)=>{e.eventBus.sendLeaveApprove(t,n)},canNavigate:()=>e.eventBus.canBeginTransition(),getLifecycleFunctions:()=>e.routeLifecycle.getFunctions(),isActive:()=>e.router.isActive(),isTransitioning:()=>e.eventBus.isTransitioning(),clearCanDeactivate:t=>{e.routeLifecycle.clearCanDeactivate(t,`external`)},hasLeaveListeners:()=>e.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>e.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(t,n,r)=>e.eventBus.awaitLeaveListeners(t,n,r)};e.navigation.setDependencies(t)}function Yr(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),clearState:()=>{e.state.set(void 0)},matchPath:t=>e.routes.matchPath(t,e.options.get()),completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle(),emitTransitionError:(t,n,r)=>{e.eventBus.sendFail(t,n,r)}})}function Xr(e){e.state.setDependencies({getDefaultParams:()=>e.routes.getStore().config.defaultParams,buildPath:(t,n)=>c(e.router).buildPath(t,n),getUrlParams:t=>e.routes.getUrlParams(t)})}const Zr=Object.freeze({}),Qr=new Set([l.SAME_STATES,l.TRANSITION_CANCELLED,l.ROUTER_NOT_STARTED,l.ROUTE_NOT_FOUND,l.CANNOT_ACTIVATE,l.CANNOT_DEACTIVATE]);var $r=class r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;constructor(i=[],a={},o={}){let{logger:s,...c}=a;s&&oe(s);let l=new te(s);this.#u=e=>{r.#f(e)||l.error(`router.navigate`,`Unexpected navigation error`,e)},this.#d=e=>{r.#f(e)||l.error(`router.start`,`Unexpected start error`,e)},Jt.validateOptionsIsObject(a),ne(o),i.length>0&&x(i),this.#e=new Jt(c),this.#t=ce(c.limits),this.#n=le(o),this.#r=new $t,this.#i=new ar(i,ei(this.#e.get()),l),this.#a=new dn,this.#o=new an,this.#s=new Ar,this.#c=new Mr;let u=Ir(),d=new v({onListenerError:(e,t)=>{l.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{l.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new zr({routerFSM:u,emitter:d,abortController:e=>{this.#s.abortCurrentController(e)}});let f=new Map;t(this,{logger:l,makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:e(`forwardState`,(e,t)=>this.#i.forwardState(e,t),f),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:e(`buildPath`,(e,t)=>this.#i.buildPath(e,t??h,this.#e.get()),f),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},emitTransitionSuccess:(e,t,n)=>{this.#l.emitTransitionSuccess(e,t,n)},navigateToNotFound:e=>this.#s.navigateToNotFound(e),start:n(`start`,e=>this.#c.start(e),f),navigateToState:(e,t)=>{this.#m();let n=this.#s.navigateToState(e,t??Zr);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:this.#p(n),n},interceptors:f,setRootPath:e=>{this.#i.setRootPath(e)},getRootPath:()=>this.#i.getStore().rootPath,getTree:()=>this.#i.getStore().tree,isDisposed:()=>this.#l.isDisposed(),validator:null,dependenciesGetStore:()=>this.#n,getCloneState:()=>({options:{...this.#e.get()},dependencies:{...this.#n.dependencies},pluginFactories:this.#o.getAll(),loggerConfig:l.getConfig()}),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),clearState:()=>{this.#r.set(void 0)},setState:e=>{this.#r.set(e)},routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),Vr({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#n,state:this.#r,routes:this.#i,routeLifecycle:this.#a,plugins:this.#o,navigation:this.#s,lifecycle:this.#c,eventBus:this.#l}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this);try{this.#i.flushPendingGuards()}catch(e){throw this.dispose(),e}}isActiveRoute(e,t,n,r){return c(this).validator?.routes.validateIsActiveRouteArgs(e,t,n,r),c(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(c(this).logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,n,r)}buildPath(e,t){let n=c(this);return n.validator?.routes.validateBuildPathArgs(e),n.validator?.navigation.validateParams(t,`buildPath`),n.buildPath(e,S(t))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,n=!0){return c(this).validator?.state.validateAreStatesEqualArgs(e,t,n),this.#r.areStatesEqual(e,t,n)}shouldUpdateNode(e){return c(this).validator?.routes.validateShouldUpdateNodeArgs(e),ar.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(e){if(!this.#l.canStart())return Promise.reject(Br);c(this).validator?.navigation.validateStartArgs(e),this.#l.sendStart();let t;try{let n=c(this).start(e);t=typeof n?.then==`function`?n:Promise.reject(TypeError("[router.start] a `start` interceptor returned without calling next(). Every start interceptor must return `next(path)`."))}catch(e){t=Promise.reject(e)}let n=t.catch(e=>this.#h(e));return this.#p(n,this.#d),n}stop(){return this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()&&!this.#l.isStarting()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&(this.#c.stop(),this.#l.sendStop()),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let e=c(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),e.interceptors.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#g()}canNavigateTo(e,t){let n=c(this);if(n.validator?.routes.validateRouteName(e,`canNavigateTo`),n.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:r,params:i}=n.forwardState(e,t??{}),a;try{let e=S(i),t=this.#i.getMetaForState(r),o=n.buildPath(r,e);a=this.#r.makeState(r,e,o,t,!0)}catch{return!1}let o=this.#r.get(),{toDeactivate:s,toActivate:l}=G(a,o);return this.#a.canNavigateTo(s,l,a,o)}usePlugin(...e){if(this.#l.isDisposed())throw new K(l.ROUTER_DISPOSED);let t=e.filter(Boolean);if(t.length===0)return()=>{};let n=c(this);n.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)n.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return zr.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return zr.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(e,t,n){this.#m();let r=c(this);r.validator?.navigation.validateNavigateArgs(e),r.validator?.navigation.validateParams(t,`navigate`);let i=n??Zr;r.validator?.navigation.validateNavigationOptions(i,`navigate`);let a=this.#s.navigate(e,t??h,i);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:this.#p(a),a}navigateToDefault(e){this.#m();let t=c(this);t.validator?.navigation.validateNavigateToDefaultArgs(e);let n=e??Zr;t.validator?.navigation.validateNavigationOptions(n,`navigateToDefault`);let r=this.#s.navigateToDefault(n);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:this.#p(r),r}navigateToNotFound(e){if(this.#m(),!this.#l.isActive())throw new K(l.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);if(e!==void 0)return this.#s.navigateToNotFound(e);let t=this.#r.get();if(t===void 0)throw new K(l.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] cannot derive the path before the start navigation commits — pass an explicit path`});return this.#s.navigateToNotFound(t.path)}static#f(e){return e instanceof K&&Qr.has(e.code)}#p(e,t=this.#u){e.catch(t)}#m(){if(this.#l.isProcessing())throw new K(l.REENTRANT_NAVIGATION)}#h(e){throw this.#l.isReady()&&this.#r.get()===void 0?(this.#c.stop(),this.#l.sendStop()):this.#l.isStarting()&&this.#l.sendFail(void 0,void 0,e),e}#g(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new K(l.ROUTER_DISPOSED)}function ei(e){return{strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{u as C,p as E,x as S,l as T,pn as _,Pn as a,D as b,R as c,Ln as d,Vn as f,xn as g,wn as h,Bn as i,Mn as l,zn as m,K as n,L as o,Cn as p,G as r,Nn as s,$r as t,In as u,yn as v,d as w,yt as x,vn as y};
2
- //# sourceMappingURL=Router-DikzugaD.mjs.map