@real-router/core 0.78.0 → 0.79.1

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 (378) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/Router-DGUed2F4.js +2 -0
  3. package/dist/cjs/Router-DGUed2F4.js.map +1 -0
  4. package/dist/cjs/{Router-BG5yNYUG.d.ts → Router.d.ts} +5 -4
  5. package/dist/cjs/Router.d.ts.map +1 -0
  6. package/dist/cjs/Router.js +2 -0
  7. package/dist/cjs/Router.js.map +1 -0
  8. package/dist/cjs/RouterError.d.ts +182 -0
  9. package/dist/cjs/RouterError.d.ts.map +1 -0
  10. package/dist/cjs/RouterError.js +2 -0
  11. package/dist/cjs/RouterError.js.map +1 -0
  12. package/dist/cjs/api/cloneRouter.d.ts +86 -0
  13. package/dist/cjs/api/cloneRouter.d.ts.map +1 -0
  14. package/dist/cjs/api/cloneRouter.js +2 -0
  15. package/dist/cjs/api/cloneRouter.js.map +1 -0
  16. package/dist/cjs/api/getDependenciesApi.d.ts +7 -0
  17. package/dist/cjs/api/getDependenciesApi.d.ts.map +1 -0
  18. package/dist/cjs/api/getDependenciesApi.js +2 -0
  19. package/dist/cjs/api/getDependenciesApi.js.map +1 -0
  20. package/dist/cjs/api/getLifecycleApi.d.ts +7 -0
  21. package/dist/cjs/api/getLifecycleApi.d.ts.map +1 -0
  22. package/dist/cjs/api/getLifecycleApi.js +2 -0
  23. package/dist/cjs/api/getLifecycleApi.js.map +1 -0
  24. package/dist/cjs/api/getPluginApi.d.ts +7 -0
  25. package/dist/cjs/api/getPluginApi.d.ts.map +1 -0
  26. package/dist/cjs/api/getPluginApi.js +2 -0
  27. package/dist/cjs/api/getPluginApi.js.map +1 -0
  28. package/dist/cjs/api/getRoutesApi.d.ts +7 -0
  29. package/dist/cjs/api/getRoutesApi.d.ts.map +1 -0
  30. package/dist/cjs/api/getRoutesApi.js +2 -0
  31. package/dist/cjs/api/getRoutesApi.js.map +1 -0
  32. package/dist/cjs/api/helpers.js +2 -0
  33. package/dist/cjs/api/helpers.js.map +1 -0
  34. package/dist/cjs/api/types.d.ts +9 -0
  35. package/dist/cjs/api/types.d.ts.map +1 -0
  36. package/dist/cjs/api.d.ts +8 -105
  37. package/dist/cjs/api.js +1 -1
  38. package/dist/cjs/api.js.map +1 -1
  39. package/dist/cjs/buildParamMeta-DniluAIV.js +2 -0
  40. package/dist/cjs/buildParamMeta-DniluAIV.js.map +1 -0
  41. package/dist/cjs/{cloneRouter-a6LJt-zh.js → cloneRouter-Ch25z3Z2.js} +2 -2
  42. package/dist/cjs/{cloneRouter-a6LJt-zh.js.map → cloneRouter-Ch25z3Z2.js.map} +1 -1
  43. package/dist/cjs/constants.d.ts +25 -0
  44. package/dist/cjs/constants.d.ts.map +1 -0
  45. package/dist/cjs/constants.js +2 -0
  46. package/dist/cjs/constants.js.map +1 -0
  47. package/dist/cjs/createRouter.d.ts +23 -0
  48. package/dist/cjs/createRouter.d.ts.map +1 -0
  49. package/dist/cjs/createRouter.js +2 -0
  50. package/dist/cjs/createRouter.js.map +1 -0
  51. package/dist/cjs/engine/builder/buildTree.js +2 -0
  52. package/dist/cjs/engine/builder/buildTree.js.map +1 -0
  53. package/dist/cjs/engine/builder/computeCaches.js +2 -0
  54. package/dist/cjs/engine/builder/computeCaches.js.map +1 -0
  55. package/dist/cjs/engine/builder/createRouteTree.js +2 -0
  56. package/dist/cjs/engine/builder/createRouteTree.js.map +1 -0
  57. package/dist/cjs/engine/builder/types.d.ts +48 -0
  58. package/dist/cjs/engine/builder/types.d.ts.map +1 -0
  59. package/dist/cjs/engine/createMatcher.d.ts +29 -0
  60. package/dist/cjs/engine/createMatcher.d.ts.map +1 -0
  61. package/dist/cjs/engine/createMatcher.js +2 -0
  62. package/dist/cjs/engine/createMatcher.js.map +1 -0
  63. package/dist/cjs/engine/operations/routeTreeToDefinitions.js +2 -0
  64. package/dist/cjs/engine/operations/routeTreeToDefinitions.js.map +1 -0
  65. package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts +16 -0
  66. package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts.map +1 -0
  67. package/dist/cjs/engine/path-matcher/SegmentMatcher.js +2 -0
  68. package/dist/cjs/engine/path-matcher/SegmentMatcher.js.map +1 -0
  69. package/dist/cjs/engine/path-matcher/buildParamMeta.js +2 -0
  70. package/dist/cjs/engine/path-matcher/buildParamMeta.js.map +1 -0
  71. package/dist/cjs/engine/path-matcher/encoding.js +2 -0
  72. package/dist/cjs/engine/path-matcher/encoding.js.map +1 -0
  73. package/dist/cjs/engine/path-matcher/parseSegment.js +2 -0
  74. package/dist/cjs/engine/path-matcher/parseSegment.js.map +1 -0
  75. package/dist/cjs/engine/path-matcher/pathUtils.js +2 -0
  76. package/dist/cjs/engine/path-matcher/pathUtils.js.map +1 -0
  77. package/dist/cjs/engine/path-matcher/percentEncoding.js +2 -0
  78. package/dist/cjs/engine/path-matcher/percentEncoding.js.map +1 -0
  79. package/dist/cjs/engine/path-matcher/registration/buildParts.js +2 -0
  80. package/dist/cjs/engine/path-matcher/registration/buildParts.js.map +1 -0
  81. package/dist/cjs/engine/path-matcher/registration/context.js +2 -0
  82. package/dist/cjs/engine/path-matcher/registration/context.js.map +1 -0
  83. package/dist/cjs/engine/path-matcher/registration/errors.js +2 -0
  84. package/dist/cjs/engine/path-matcher/registration/errors.js.map +1 -0
  85. package/dist/cjs/engine/path-matcher/registration/index.js +2 -0
  86. package/dist/cjs/engine/path-matcher/registration/index.js.map +1 -0
  87. package/dist/cjs/engine/path-matcher/registration/trie.js +2 -0
  88. package/dist/cjs/engine/path-matcher/registration/trie.js.map +1 -0
  89. package/dist/cjs/engine/path-matcher/registration/trieNodes.js +2 -0
  90. package/dist/cjs/engine/path-matcher/registration/trieNodes.js.map +1 -0
  91. package/dist/cjs/{types-xg2zHVF6.d.ts → engine/path-matcher/types.d.ts} +2 -80
  92. package/dist/cjs/engine/path-matcher/types.d.ts.map +1 -0
  93. package/dist/cjs/engine/search-params/decode.js +2 -0
  94. package/dist/cjs/engine/search-params/decode.js.map +1 -0
  95. package/dist/cjs/engine/search-params/encode.js +2 -0
  96. package/dist/cjs/engine/search-params/encode.js.map +1 -0
  97. package/dist/cjs/engine/search-params/searchParams.js +2 -0
  98. package/dist/cjs/engine/search-params/searchParams.js.map +1 -0
  99. package/dist/cjs/engine/search-params/strategies/array.js +2 -0
  100. package/dist/cjs/engine/search-params/strategies/array.js.map +1 -0
  101. package/dist/cjs/engine/search-params/strategies/boolean.js +2 -0
  102. package/dist/cjs/engine/search-params/strategies/boolean.js.map +1 -0
  103. package/dist/cjs/engine/search-params/strategies/index.js +2 -0
  104. package/dist/cjs/engine/search-params/strategies/index.js.map +1 -0
  105. package/dist/cjs/engine/search-params/strategies/null.js +2 -0
  106. package/dist/cjs/engine/search-params/strategies/null.js.map +1 -0
  107. package/dist/cjs/engine/search-params/strategies/number.js +2 -0
  108. package/dist/cjs/engine/search-params/strategies/number.js.map +1 -0
  109. package/dist/cjs/engine/search-params/types.d.ts +72 -0
  110. package/dist/cjs/engine/search-params/types.d.ts.map +1 -0
  111. package/dist/cjs/engine/search-params/utils.js +2 -0
  112. package/dist/cjs/engine/search-params/utils.js.map +1 -0
  113. package/dist/cjs/engine/validation/route-batch.d.ts +38 -0
  114. package/dist/cjs/engine/validation/route-batch.d.ts.map +1 -0
  115. package/dist/cjs/engine/validation/route-batch.js +2 -0
  116. package/dist/cjs/engine/validation/route-batch.js.map +1 -0
  117. package/dist/cjs/engine/validation/routes.js +2 -0
  118. package/dist/cjs/engine/validation/routes.js.map +1 -0
  119. package/dist/cjs/foundation/event-emitter/EventEmitter.js +2 -0
  120. package/dist/cjs/foundation/event-emitter/EventEmitter.js.map +1 -0
  121. package/dist/cjs/foundation/fsm/fsm.js +2 -0
  122. package/dist/cjs/foundation/fsm/fsm.js.map +1 -0
  123. package/dist/cjs/foundation/logger/RouterLogger.js +2 -0
  124. package/dist/cjs/foundation/logger/RouterLogger.js.map +1 -0
  125. package/dist/cjs/foundation/logger/constants.js +2 -0
  126. package/dist/cjs/foundation/logger/constants.js.map +1 -0
  127. package/dist/cjs/getNavigator.d.ts +6 -0
  128. package/dist/cjs/getNavigator.d.ts.map +1 -0
  129. package/dist/cjs/getNavigator.js +2 -0
  130. package/dist/cjs/getNavigator.js.map +1 -0
  131. package/dist/cjs/guards.js +2 -0
  132. package/dist/cjs/guards.js.map +1 -0
  133. package/dist/cjs/helpers.js +2 -0
  134. package/dist/cjs/helpers.js.map +1 -0
  135. package/dist/cjs/index.d.ts +17 -239
  136. package/dist/cjs/index.js +1 -1
  137. package/dist/cjs/internals.d.ts +99 -0
  138. package/dist/cjs/internals.d.ts.map +1 -0
  139. package/dist/cjs/internals.js +2 -0
  140. package/dist/cjs/internals.js.map +1 -0
  141. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts +10 -0
  142. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts.map +1 -0
  143. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js +2 -0
  144. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js.map +1 -0
  145. package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js +2 -0
  146. package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js.map +1 -0
  147. package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js +2 -0
  148. package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js.map +1 -0
  149. package/dist/cjs/namespaces/NavigationNamespace/constants.js +2 -0
  150. package/dist/cjs/namespaces/NavigationNamespace/constants.js.map +1 -0
  151. package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js +2 -0
  152. package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js.map +1 -0
  153. package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js +2 -0
  154. package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js.map +1 -0
  155. package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js +2 -0
  156. package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js.map +1 -0
  157. package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js +2 -0
  158. package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js.map +1 -0
  159. package/dist/cjs/namespaces/OptionsNamespace/constants.js +2 -0
  160. package/dist/cjs/namespaces/OptionsNamespace/constants.js.map +1 -0
  161. package/dist/cjs/namespaces/OptionsNamespace/helpers.js +2 -0
  162. package/dist/cjs/namespaces/OptionsNamespace/helpers.js.map +1 -0
  163. package/dist/cjs/namespaces/OptionsNamespace/validators.js +2 -0
  164. package/dist/cjs/namespaces/OptionsNamespace/validators.js.map +1 -0
  165. package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js +2 -0
  166. package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js.map +1 -0
  167. package/dist/cjs/namespaces/PluginsNamespace/constants.js +2 -0
  168. package/dist/cjs/namespaces/PluginsNamespace/constants.js.map +1 -0
  169. package/dist/cjs/namespaces/PluginsNamespace/validators.js +2 -0
  170. package/dist/cjs/namespaces/PluginsNamespace/validators.js.map +1 -0
  171. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts +174 -0
  172. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts.map +1 -0
  173. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js +2 -0
  174. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js.map +1 -0
  175. package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts +17 -0
  176. package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts.map +1 -0
  177. package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js +2 -0
  178. package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js.map +1 -0
  179. package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js +2 -0
  180. package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js.map +1 -0
  181. package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js +2 -0
  182. package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js.map +1 -0
  183. package/dist/cjs/namespaces/RoutesNamespace/constants.js +2 -0
  184. package/dist/cjs/namespaces/RoutesNamespace/constants.js.map +1 -0
  185. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts +5 -0
  186. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts.map +1 -0
  187. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js +2 -0
  188. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js.map +1 -0
  189. package/dist/cjs/namespaces/RoutesNamespace/helpers.js +2 -0
  190. package/dist/cjs/namespaces/RoutesNamespace/helpers.js.map +1 -0
  191. package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js +2 -0
  192. package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js.map +1 -0
  193. package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts +42 -0
  194. package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts.map +1 -0
  195. package/dist/cjs/namespaces/RoutesNamespace/routesStore.js +2 -0
  196. package/dist/cjs/namespaces/RoutesNamespace/routesStore.js.map +1 -0
  197. package/dist/cjs/namespaces/RoutesNamespace/types.d.ts +57 -0
  198. package/dist/cjs/namespaces/RoutesNamespace/types.d.ts.map +1 -0
  199. package/dist/cjs/namespaces/StateNamespace/StateNamespace.js +2 -0
  200. package/dist/cjs/namespaces/StateNamespace/StateNamespace.js.map +1 -0
  201. package/dist/cjs/namespaces/StateNamespace/helpers.js +2 -0
  202. package/dist/cjs/namespaces/StateNamespace/helpers.js.map +1 -0
  203. package/dist/cjs/routerFSM.js +2 -0
  204. package/dist/cjs/routerFSM.js.map +1 -0
  205. package/dist/cjs/stateMetaStore.js +2 -0
  206. package/dist/cjs/stateMetaStore.js.map +1 -0
  207. package/dist/cjs/transitionPath.js +2 -0
  208. package/dist/cjs/transitionPath.js.map +1 -0
  209. package/dist/cjs/{RouterValidator-CZ8kPkrI.d.ts → types/RouterValidator.d.ts} +2 -2
  210. package/dist/cjs/types/RouterValidator.d.ts.map +1 -0
  211. package/dist/cjs/types/api.d.ts +184 -0
  212. package/dist/cjs/types/api.d.ts.map +1 -0
  213. package/dist/cjs/types/base.d.ts +86 -0
  214. package/dist/cjs/types/base.d.ts.map +1 -0
  215. package/dist/cjs/types/constants.d.ts +72 -0
  216. package/dist/cjs/types/constants.d.ts.map +1 -0
  217. package/dist/cjs/types/internal.d.ts +9 -0
  218. package/dist/cjs/types/internal.d.ts.map +1 -0
  219. package/dist/cjs/types/limits.d.ts +45 -0
  220. package/dist/cjs/types/limits.d.ts.map +1 -0
  221. package/dist/cjs/types/route-node-types.d.ts +46 -0
  222. package/dist/cjs/types/route-node-types.d.ts.map +1 -0
  223. package/dist/cjs/types/router.d.ts +313 -0
  224. package/dist/cjs/types/router.d.ts.map +1 -0
  225. package/dist/cjs/types/tree-changed.d.ts +55 -0
  226. package/dist/cjs/types/tree-changed.d.ts.map +1 -0
  227. package/dist/cjs/types.d.ts +208 -2
  228. package/dist/cjs/types.d.ts.map +1 -0
  229. package/dist/cjs/utils/createRequestScope.d.ts +111 -0
  230. package/dist/cjs/utils/createRequestScope.d.ts.map +1 -0
  231. package/dist/cjs/utils/createRequestScope.js +2 -0
  232. package/dist/cjs/utils/createRequestScope.js.map +1 -0
  233. package/dist/cjs/utils/getStaticPaths.d.ts +7 -0
  234. package/dist/cjs/utils/getStaticPaths.d.ts.map +1 -0
  235. package/dist/cjs/utils/getStaticPaths.js +2 -0
  236. package/dist/cjs/utils/getStaticPaths.js.map +1 -0
  237. package/dist/cjs/utils/hydrateRouter.d.ts +69 -0
  238. package/dist/cjs/utils/hydrateRouter.d.ts.map +1 -0
  239. package/dist/cjs/utils/hydrateRouter.js +2 -0
  240. package/dist/cjs/utils/hydrateRouter.js.map +1 -0
  241. package/dist/cjs/utils/serializeRouterState.d.ts +84 -0
  242. package/dist/cjs/utils/serializeRouterState.d.ts.map +1 -0
  243. package/dist/cjs/utils/serializeRouterState.js +2 -0
  244. package/dist/cjs/utils/serializeRouterState.js.map +1 -0
  245. package/dist/cjs/utils/serializeState.d.ts +50 -0
  246. package/dist/cjs/utils/serializeState.d.ts.map +1 -0
  247. package/dist/cjs/utils/serializeState.js +2 -0
  248. package/dist/cjs/utils/serializeState.js.map +1 -0
  249. package/dist/cjs/utils.d.ts +5 -1
  250. package/dist/cjs/utils.js +1 -1
  251. package/dist/cjs/validation.d.ts +6 -518
  252. package/dist/cjs/validation.js +1 -1
  253. package/dist/cjs/validation.js.map +1 -1
  254. package/dist/cjs/wiring/wireNamespaces.js +2 -0
  255. package/dist/cjs/wiring/wireNamespaces.js.map +1 -0
  256. package/dist/esm/Router-Bk6PfSE8.mjs +2 -0
  257. package/dist/esm/Router-Bk6PfSE8.mjs.map +1 -0
  258. package/dist/esm/{Router-Cy75qbgU.d.mts → Router.d.mts} +5 -4
  259. package/dist/esm/Router.d.mts.map +1 -0
  260. package/dist/esm/RouterError.d.mts +182 -0
  261. package/dist/esm/RouterError.d.mts.map +1 -0
  262. package/dist/esm/api/cloneRouter.d.mts +86 -0
  263. package/dist/esm/api/cloneRouter.d.mts.map +1 -0
  264. package/dist/esm/api/getDependenciesApi.d.mts +7 -0
  265. package/dist/esm/api/getDependenciesApi.d.mts.map +1 -0
  266. package/dist/esm/api/getLifecycleApi.d.mts +7 -0
  267. package/dist/esm/api/getLifecycleApi.d.mts.map +1 -0
  268. package/dist/esm/api/getPluginApi.d.mts +7 -0
  269. package/dist/esm/api/getPluginApi.d.mts.map +1 -0
  270. package/dist/esm/api/getRoutesApi.d.mts +7 -0
  271. package/dist/esm/api/getRoutesApi.d.mts.map +1 -0
  272. package/dist/esm/api/types.d.mts +9 -0
  273. package/dist/esm/api/types.d.mts.map +1 -0
  274. package/dist/esm/api.d.mts +8 -105
  275. package/dist/esm/api.mjs +1 -1
  276. package/dist/esm/api.mjs.map +1 -1
  277. package/dist/esm/buildParamMeta-bOLhLF9h.mjs +2 -0
  278. package/dist/esm/buildParamMeta-bOLhLF9h.mjs.map +1 -0
  279. package/dist/esm/{cloneRouter-CqS4kTs8.mjs → cloneRouter-D4rnqmi9.mjs} +2 -2
  280. package/dist/esm/{cloneRouter-CqS4kTs8.mjs.map → cloneRouter-D4rnqmi9.mjs.map} +1 -1
  281. package/dist/esm/constants.d.mts +25 -0
  282. package/dist/esm/constants.d.mts.map +1 -0
  283. package/dist/esm/createRouter.d.mts +23 -0
  284. package/dist/esm/createRouter.d.mts.map +1 -0
  285. package/dist/esm/engine/builder/types.d.mts +48 -0
  286. package/dist/esm/engine/builder/types.d.mts.map +1 -0
  287. package/dist/esm/engine/createMatcher.d.mts +29 -0
  288. package/dist/esm/engine/createMatcher.d.mts.map +1 -0
  289. package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts +16 -0
  290. package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts.map +1 -0
  291. package/dist/esm/{types-xg2zHVF6.d.mts → engine/path-matcher/types.d.mts} +2 -80
  292. package/dist/esm/engine/path-matcher/types.d.mts.map +1 -0
  293. package/dist/esm/engine/search-params/types.d.mts +72 -0
  294. package/dist/esm/engine/search-params/types.d.mts.map +1 -0
  295. package/dist/esm/engine/validation/route-batch.d.mts +38 -0
  296. package/dist/esm/engine/validation/route-batch.d.mts.map +1 -0
  297. package/dist/esm/getNavigator.d.mts +6 -0
  298. package/dist/esm/getNavigator.d.mts.map +1 -0
  299. package/dist/esm/index.d.mts +17 -239
  300. package/dist/esm/index.mjs +1 -1
  301. package/dist/esm/internals.d.mts +99 -0
  302. package/dist/esm/internals.d.mts.map +1 -0
  303. package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts +10 -0
  304. package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts.map +1 -0
  305. package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts +174 -0
  306. package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts.map +1 -0
  307. package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts +17 -0
  308. package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts.map +1 -0
  309. package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts +5 -0
  310. package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts.map +1 -0
  311. package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts +42 -0
  312. package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts.map +1 -0
  313. package/dist/esm/namespaces/RoutesNamespace/types.d.mts +57 -0
  314. package/dist/esm/namespaces/RoutesNamespace/types.d.mts.map +1 -0
  315. package/dist/esm/{RouterValidator-CZ8kPkrI.d.mts → types/RouterValidator.d.mts} +2 -2
  316. package/dist/esm/types/RouterValidator.d.mts.map +1 -0
  317. package/dist/esm/types/api.d.mts +184 -0
  318. package/dist/esm/types/api.d.mts.map +1 -0
  319. package/dist/esm/types/base.d.mts +86 -0
  320. package/dist/esm/types/base.d.mts.map +1 -0
  321. package/dist/esm/types/constants.d.mts +72 -0
  322. package/dist/esm/types/constants.d.mts.map +1 -0
  323. package/dist/esm/types/internal.d.mts +9 -0
  324. package/dist/esm/types/internal.d.mts.map +1 -0
  325. package/dist/esm/types/limits.d.mts +45 -0
  326. package/dist/esm/types/limits.d.mts.map +1 -0
  327. package/dist/esm/types/route-node-types.d.mts +46 -0
  328. package/dist/esm/types/route-node-types.d.mts.map +1 -0
  329. package/dist/esm/types/router.d.mts +313 -0
  330. package/dist/esm/types/router.d.mts.map +1 -0
  331. package/dist/esm/types/tree-changed.d.mts +55 -0
  332. package/dist/esm/types/tree-changed.d.mts.map +1 -0
  333. package/dist/esm/types.d.mts +208 -2
  334. package/dist/esm/types.d.mts.map +1 -0
  335. package/dist/esm/utils/createRequestScope.d.mts +111 -0
  336. package/dist/esm/utils/createRequestScope.d.mts.map +1 -0
  337. package/dist/esm/utils/getStaticPaths.d.mts +7 -0
  338. package/dist/esm/utils/getStaticPaths.d.mts.map +1 -0
  339. package/dist/esm/utils/hydrateRouter.d.mts +69 -0
  340. package/dist/esm/utils/hydrateRouter.d.mts.map +1 -0
  341. package/dist/esm/utils/serializeRouterState.d.mts +84 -0
  342. package/dist/esm/utils/serializeRouterState.d.mts.map +1 -0
  343. package/dist/esm/utils/serializeState.d.mts +50 -0
  344. package/dist/esm/utils/serializeState.d.mts.map +1 -0
  345. package/dist/esm/utils.d.mts +5 -1
  346. package/dist/esm/utils.mjs +1 -1
  347. package/dist/esm/validation.d.mts +6 -518
  348. package/dist/esm/validation.mjs +1 -1
  349. package/dist/esm/validation.mjs.map +1 -1
  350. package/package.json +2 -2
  351. package/dist/cjs/Router-BG5yNYUG.d.ts.map +0 -1
  352. package/dist/cjs/Router-D6NzRxBA.js +0 -2
  353. package/dist/cjs/Router-D6NzRxBA.js.map +0 -1
  354. package/dist/cjs/RouterValidator-CZ8kPkrI.d.ts.map +0 -1
  355. package/dist/cjs/api.d.ts.map +0 -1
  356. package/dist/cjs/buildParamMeta-CkG6cUIl.js +0 -2
  357. package/dist/cjs/buildParamMeta-CkG6cUIl.js.map +0 -1
  358. package/dist/cjs/index-CAnGQpnz.d.ts +0 -974
  359. package/dist/cjs/index-CAnGQpnz.d.ts.map +0 -1
  360. package/dist/cjs/index-DDrryY2U.d.ts +0 -309
  361. package/dist/cjs/index-DDrryY2U.d.ts.map +0 -1
  362. package/dist/cjs/index.d.ts.map +0 -1
  363. package/dist/cjs/types-xg2zHVF6.d.ts.map +0 -1
  364. package/dist/cjs/validation.d.ts.map +0 -1
  365. package/dist/esm/Router-Cy75qbgU.d.mts.map +0 -1
  366. package/dist/esm/Router-De0Gr9Ll.mjs +0 -2
  367. package/dist/esm/Router-De0Gr9Ll.mjs.map +0 -1
  368. package/dist/esm/RouterValidator-CZ8kPkrI.d.mts.map +0 -1
  369. package/dist/esm/api.d.mts.map +0 -1
  370. package/dist/esm/buildParamMeta-Bl0uORu6.mjs +0 -2
  371. package/dist/esm/buildParamMeta-Bl0uORu6.mjs.map +0 -1
  372. package/dist/esm/index-CAnGQpnz.d.mts +0 -974
  373. package/dist/esm/index-CAnGQpnz.d.mts.map +0 -1
  374. package/dist/esm/index-DnSU6huX.d.mts +0 -309
  375. package/dist/esm/index-DnSU6huX.d.mts.map +0 -1
  376. package/dist/esm/index.d.mts.map +0 -1
  377. package/dist/esm/types-xg2zHVF6.d.mts.map +0 -1
  378. package/dist/esm/validation.d.mts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internals.d.mts","names":[],"sources":["../../src/internals.ts"],"mappings":";;;;;;;;;;;;UAyBiB,gBACf,UAAU,sBAAsB;WAEvB,YAAY,UAAU,SAAS,QACtC,cACA,SAAS,GACT,eACA,OAAO,eAAe,qCACnB,MAAM;WAEF,eAAe,UAAU,SAAS,QACzC,mBACA,aAAa,MACV,YAAY;WAER,qBACP,sBACA,gBAAgB,WACb;WAEI,YAAY,UAAU,SAAS,QACtC,cACA,UAAU,YACP,MAAM;WAEF,kBAAkB;WAElB,mBAAmB,UAAU,WACpC,WAAW,GACX,IAAI,OAAO,eAAe,QACvB;;;;;;;;WASI;aACE,OAAO,OAAO;aACd,YACP,UAAU,OAAO,8BACd;aACI;;;;;aAKA;;WAGF,YAAY,eAAe,SAAS;WAEpC,sBAAsB,OAAO;;;;;;;WAQ7B,wBACP,SAAS,OACT,WAAW,mBACX,OAAO;;;;;;;;WAUA,qBAAqB,iBAAiB;WAEtC,QAAQ,iBAAiB,QAAQ;;;;;;;WAQjC,kBACP,OAAO,OACP,UAAU,sBACP,QAAQ;WAGJ,cAAc,cAEnB,UAAU,wBAAwB;WAI7B,cAAc;WACd;WAEA,eAAe;WAEf;EAET,WAAW;WAQF,QAAQ;WAGR,4BAA4B,kBAAkB;WAM9C;IACP,SAAS;IACT,cAAc;IACd,iBAAiB,cAAc;IAK/B,cAAc;;WAIP,qBAAqB,YAAY;WAGjC;WACA;WACA;WACA,WAAW,OAAO;WAClB;IAAoB;;WACpB,qBAAqB;;;;;;;;;;EAW9B,gBAAgB;;iBAMF,aAAa,UAAU,qBACrC,QAAQ,OAAgB,KACvB,gBAAgB"}
@@ -0,0 +1,10 @@
1
+ import { DefaultDependencies } from "../../types/router.mjs";
2
+ import { Limits } from "../../types/internal.mjs";
3
+ //#region src/namespaces/DependenciesNamespace/dependenciesStore.d.ts
4
+ interface DependenciesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
5
+ dependencies: Partial<Dependencies>;
6
+ limits: Limits;
7
+ }
8
+ //#endregion
9
+ export { DependenciesStore };
10
+ //# sourceMappingURL=dependenciesStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependenciesStore.d.mts","names":[],"sources":["../../../../src/namespaces/DependenciesNamespace/dependenciesStore.ts"],"mappings":";;;UAKiB,kBACf,qBAAqB,sBAAsB;EAE3C,cAAc,QAAQ;EACtB,QAAQ"}
@@ -0,0 +1,174 @@
1
+ import { State } from "../../types/base.mjs";
2
+ import { DefaultDependencies, GuardFn, GuardFnFactory } from "../../types/router.mjs";
3
+ import { RouteLifecycleDependencies } from "./types.mjs";
4
+ //#region src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts
5
+ /**
6
+ * Origin lane for a guard clear. Every `clearCanActivate` / `clearCanDeactivate`
7
+ * caller names its lane — there is no origin-blind default — so a new call site
8
+ * cannot silently wipe both the route-config and the external guard (#1171):
9
+ *
10
+ * - `"definition"` — clear only the route-config guard (`update(name, {…: null})`, #952).
11
+ * - `"external"` — clear only the external, component-managed guard
12
+ * (`removeXGuard()` and post-leave auto-cleanup — the inverse of `addXGuard()`).
13
+ * - `"both"` — clear both (route removal / router teardown; the route is gone).
14
+ */
15
+ type GuardClearScope = "definition" | "external" | "both";
16
+ /**
17
+ * Source of truth for `canActivate` / `canDeactivate` guards.
18
+ *
19
+ * Storage is split by origin into four factory Maps (definition vs external,
20
+ * each ×activate/deactivate); a single compiled-function Map per kind backs
21
+ * navigation ("external wins" — when a route holds both a definition and an
22
+ * external guard, the compiled guard is the external one, regardless of
23
+ * registration order; #1174). `getFunctions()` returns a cached
24
+ * `[deactivate, activate]` tuple for the hot path (stable reference, no
25
+ * per-navigate allocation).
26
+ *
27
+ * All input validation is handled upstream by `getLifecycleApi` and
28
+ * `getRoutesApi` — this class has no static methods.
29
+ *
30
+ * **Ordering convention.** Every paired surface lists **deactivate before
31
+ * activate**: `getFunctions()` / `getFactories()` return `[deactivate,
32
+ * activate]`, `getFactoriesByOrigin()` returns that tuple per origin, and
33
+ * `canNavigateTo(toDeactivate, toActivate, …)` takes deactivate first. Keep
34
+ * any new paired surface consistent with this order.
35
+ */
36
+ declare class RouteLifecycleNamespace<Dependencies extends DefaultDependencies = DefaultDependencies> {
37
+ #private;
38
+ setDependencies(deps: RouteLifecycleDependencies<Dependencies>): void;
39
+ getHandlerCount(type: "activate" | "deactivate"): number;
40
+ /**
41
+ * Pre-flights the #961 handler-limit `RangeError` into the route-CRUD PREPARE
42
+ * phase (#1046). `#registerHandler`'s per-slot limit check throws AFTER the
43
+ * tree/config swap, so `add`/`replace`/`update` tore post-commit when the
44
+ * validator was installed and the per-type count was at `maxLifecycleHandlers`.
45
+ * Running the same check here — before any store mutation — restores atomicity
46
+ * (#951/#956/#698): a batch that would exceed the limit aborts before a single
47
+ * write.
48
+ *
49
+ * Only NEW slots count (an overwrite leaves the union count unchanged, mirroring
50
+ * `#registerHandler`). For `replace` (`clearsDefinition = true`) the definition
51
+ * guards are about to be cleared, so the projection runs against the surviving
52
+ * EXTERNAL guards only — exactly the post-clear state the install loop sees.
53
+ * Plugin-gated: a no-op without the validator (the limit is opt-in).
54
+ *
55
+ * @param activateNames - route names a `canActivate` would be registered for
56
+ * @param deactivateNames - route names a `canDeactivate` would be registered for
57
+ * @param clearsDefinition - true for `replace` (definition guards cleared first)
58
+ */
59
+ preflightHandlerLimit(activateNames: Iterable<string>, deactivateNames: Iterable<string>, clearsDefinition: boolean): void;
60
+ /**
61
+ * Adds a canActivate guard for a route.
62
+ *
63
+ * @param name - Route name (input-validated by facade)
64
+ * @param handler - Guard function or boolean (input-validated by facade)
65
+ * @param isFromDefinition - True when guard comes from route definition
66
+ * (lands in the definition Map; subject to `clearDefinitionGuards()`).
67
+ * False (default) when added via `getLifecycleApi().addActivateGuard(...)`
68
+ * (lands in the external Map; survives `replace()`).
69
+ *
70
+ * External wins at runtime (#1174): when a route holds both a definition and
71
+ * an external guard, the compiled function is the external one, regardless of
72
+ * registration order. Within one origin the most recent add overwrites. Origin
73
+ * determines which Map the factory is filed under (relevant for
74
+ * `clearDefinitionGuards()` and `cloneRouter` re-registration).
75
+ */
76
+ addCanActivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean, precompiledFn?: GuardFn): void;
77
+ /**
78
+ * Adds a canDeactivate guard for a route.
79
+ *
80
+ * Symmetric counterpart to {@link addCanActivate}.
81
+ */
82
+ addCanDeactivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean, precompiledFn?: GuardFn): void;
83
+ /**
84
+ * Removes a canActivate guard for a route. `scope` names the origin lane
85
+ * (see {@link GuardClearScope}) — there is no origin-blind default, so every
86
+ * caller commits to a lane and a new call site cannot silently clear both.
87
+ * Delegates to {@link #clearGuard} (mirrors the add side's `#registerHandler`).
88
+ *
89
+ * @param name - Route name (already validated by facade)
90
+ * @param scope - Which origin(s) to clear: `"definition"` / `"external"` / `"both"`
91
+ */
92
+ clearCanActivate(name: string, scope: GuardClearScope): void;
93
+ /**
94
+ * Removes a canDeactivate guard for a route. Symmetric counterpart to
95
+ * {@link clearCanActivate}.
96
+ *
97
+ * The `"external"` lane is what makes a route-config `canDeactivate` durable:
98
+ * post-leave auto-cleanup (`completeTransition`) and `removeDeactivateGuard()`
99
+ * unregister only the external, component-managed guard (router5 mount/unmount
100
+ * heritage), while a definition guard survives for re-entry — symmetric with
101
+ * definition `canActivate`, which lives as long as the route is in the tree
102
+ * (#1171). Clearing both by default made a config guard one-shot: the first
103
+ * permitted leave erased it, so re-entry was unguarded, `getRoutesApi().get()`
104
+ * lost the field, and a clone taken after the leave never received it
105
+ * (clone invariant #6).
106
+ *
107
+ * @param name - Route name (already validated by facade)
108
+ * @param scope - Which origin(s) to clear: `"definition"` / `"external"` / `"both"`
109
+ */
110
+ clearCanDeactivate(name: string, scope: GuardClearScope): void;
111
+ /**
112
+ * Clears all lifecycle handlers (canActivate and canDeactivate).
113
+ * Used by clearRoutes to reset all lifecycle state.
114
+ */
115
+ clearAll(): void;
116
+ /**
117
+ * Clears only lifecycle handlers that were registered from route definitions.
118
+ * Used by HMR `replace()` to remove definition-sourced guards without
119
+ * touching externally-added guards.
120
+ *
121
+ * For a slot where BOTH a definition and an external guard exist, the external
122
+ * factory survives — and the compiled function is RECOMPILED from it (#1192).
123
+ * Under external-wins (#1174) the compiled slot is already the external guard,
124
+ * so this recompile is idempotent — it re-derives the surviving external factory
125
+ * through the same choke point that keeps clearing correct (and stays robust if
126
+ * the compiled slot were ever out of sync). For a definition-only slot, the
127
+ * compiled function is dropped.
128
+ */
129
+ clearDefinitionGuards(): void;
130
+ /**
131
+ * Returns lifecycle factories as a flat `[deactivate, activate]` tuple of
132
+ * `Record<name, factory>` — the effective view where external wins over
133
+ * definition for the same slot. Used by `getRoutesApi` to enrich route
134
+ * objects with their current canActivate / canDeactivate factories and by
135
+ * the route-removal cleanup path.
136
+ *
137
+ * For cloneRouter (which needs to preserve origin on re-registration), use
138
+ * {@link getFactoriesByOrigin} instead.
139
+ */
140
+ getFactories(): [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
141
+ /**
142
+ * Returns factories tagged by origin — definition and external as separate
143
+ * `[deactivate, activate]` tuples. Used by `cloneRouter` to re-register
144
+ * guards on the clone with their original origin flag preserved.
145
+ */
146
+ getFactoriesByOrigin(): {
147
+ definition: [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
148
+ external: [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
149
+ };
150
+ /**
151
+ * Returns compiled lifecycle functions for transition execution.
152
+ *
153
+ * @returns Tuple of [canDeactivateFunctions, canActivateFunctions] as Maps
154
+ */
155
+ getFunctions(): [Map<string, GuardFn>, Map<string, GuardFn>];
156
+ canNavigateTo(toDeactivate: string[], toActivate: string[], toState: State, fromState: State | undefined): boolean;
157
+ /**
158
+ * Compiles a guard factory to its `GuardFn` WITHOUT registering it — surfaces
159
+ * a throwing / non-function factory eagerly. The prepare-then-commit
160
+ * add/replace path (`adoptRouteArtifacts`) calls this for every pending guard
161
+ * BEFORE the store swap (#956), so a malformed factory aborts the mutation
162
+ * with the store untouched. The returned function is then installed via the
163
+ * `precompiledFn` argument of {@link addCanActivate} / {@link addCanDeactivate}
164
+ * — no re-compile, so a factory with compile-time side effects runs exactly
165
+ * once. Same boolean-shorthand handling + compile + non-function check as the
166
+ * inline `#registerHandler` path, so a route-config `canActivate: true`
167
+ * (boolean shorthand, runtime-reachable via the public route type) compiles to
168
+ * the cached `TRUE_GUARD`/`FALSE_GUARD` instead of throwing on a non-callable.
169
+ */
170
+ compileGuardFactory(handler: GuardFnFactory<Dependencies> | boolean, methodName: string): GuardFn;
171
+ }
172
+ //#endregion
173
+ export { GuardClearScope, RouteLifecycleNamespace };
174
+ //# sourceMappingURL=RouteLifecycleNamespace.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLifecycleNamespace.d.mts","names":[],"sources":["../../../../src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.ts"],"mappings":";;;;;;;;;;;;;;KAuCY;;;;;;;;;;;;;;;;;;;;;cAsBC,wBACX,qBAAqB,sBAAsB;;EAuC3C,gBAAgB,MAAM,2BAA2B;EAIjD,gBAAgB;;;;;;;;;;;;;;;;;;;;EA8ChB,sBACE,eAAe,kBACf,iBAAiB,kBACjB;;;;;;;;;;;;;;;;;EAuEF,eACE,cACA,SAAS,eAAe,yBACxB,4BACA,gBAAgB;;;;;;EAiBlB,iBACE,cACA,SAAS,eAAe,yBACxB,4BACA,gBAAgB;;;;;;;;;;EAqBlB,iBAAiB,cAAc,OAAO;;;;;;;;;;;;;;;;;;EAqBtC,mBAAmB,cAAc,OAAO;;;;;EAQxC;;;;;;;;;;;;;;EAsBA;;;;;;;;;;;EA+BA,iBACE,eAAe,eAAe,gBAC9B,eAAe,eAAe;;;;;;EA2BhC;IACE,aACE,eAAe,eAAe,gBAC9B,eAAe,eAAe;IAEhC,WACE,eAAe,eAAe,gBAC9B,eAAe,eAAe;;;;;;;EAgClC,iBAAiB,YAAY,UAAU,YAAY;EAInD,cACE,wBACA,sBACA,SAAS,OACT,WAAW;;;;;;;;;;;;;;EA8Cb,oBACE,SAAS,eAAe,yBACxB,qBACC"}
@@ -0,0 +1,17 @@
1
+ import { DefaultDependencies, GuardFn, GuardFnFactory, RouterLogger } from "../../types/router.mjs";
2
+ import { RouterValidator } from "../../types/RouterValidator.mjs";
3
+ //#region src/namespaces/RouteLifecycleNamespace/types.d.ts
4
+ interface RouteLifecycleDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
5
+ /** Per-router logger instance (from `getInternals(router).logger`) */
6
+ logger: RouterLogger;
7
+ compileFactory: (factory: GuardFnFactory<Dependencies>) => GuardFn;
8
+ /**
9
+ * Returns the opt-in DX validator, or `null` when no validation-plugin is
10
+ * installed. A plain deps field (#1331) — internals are registered before
11
+ * wiring, so `getInternals(router)` never throws and no try/catch is needed.
12
+ */
13
+ getValidator: () => RouterValidator | null;
14
+ }
15
+ //#endregion
16
+ export { RouteLifecycleDependencies };
17
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../../src/namespaces/RouteLifecycleNamespace/types.ts"],"mappings":";;;UAUiB,2BACf,qBAAqB,sBAAsB;;EAG3C,QAAQ;EAER,iBAAiB,SAAS,eAAe,kBAAkB;;;;;;EAM3D,oBAAoB"}
@@ -0,0 +1,5 @@
1
+ //#region src/namespaces/RoutesNamespace/forwardChain.d.ts
2
+ declare function resolveForwardChain(startRoute: string, forwardMap: Record<string, string>, maxDepth?: number): string;
3
+ //#endregion
4
+ export { resolveForwardChain };
5
+ //# sourceMappingURL=forwardChain.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forwardChain.d.mts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/forwardChain.ts"],"mappings":";iBAEgB,oBACd,oBACA,YAAY,wBACZ"}
@@ -0,0 +1,42 @@
1
+ import { RouteDefinition, RouteTree } from "../../engine/builder/types.mjs";
2
+ import { CreateMatcherOptions, Matcher } from "../../engine/createMatcher.mjs";
3
+ import { DefaultDependencies, GuardFnFactory } from "../../types/router.mjs";
4
+ import { RouteLifecycleNamespace } from "../RouteLifecycleNamespace/RouteLifecycleNamespace.mjs";
5
+ import { RouteConfig, RoutesDependencies } from "./types.mjs";
6
+ //#region src/namespaces/RoutesNamespace/routesStore.d.ts
7
+ interface RoutesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
8
+ /**
9
+ * DERIVED VIEW, not stored state: reconstructed from `tree` on every access
10
+ * via `routeTreeToDefinitions` (the lossless inverse cloneRouter already
11
+ * relies on — the `~` absolute marker is restored, child order is the
12
+ * definition order). The tree is the single source of truth, so a third
13
+ * retained copy of the route table (~30 B/route) is not kept. Every reader
14
+ * is a cold CRUD/plugin-registration path; the derive is O(N).
15
+ *
16
+ * The returned array is a FRESH snapshot each time — mutating it never
17
+ * affects the store (pass an explicitly-mutated snapshot to
18
+ * `commitTreeChanges` instead, as `remove` does).
19
+ */
20
+ readonly definitions: RouteDefinition[];
21
+ readonly config: RouteConfig;
22
+ tree: RouteTree;
23
+ matcher: Matcher;
24
+ /**
25
+ * Per-route-name cache of URL (path) param names, derived from `matcher` and
26
+ * read by `RoutesNamespace.getUrlParams` (powers `areStatesEqual` /
27
+ * `isActiveRoute`). Cleared on every `matcher` rebuild so comparisons never
28
+ * stay frozen to a route's pre-mutation param shape (#723).
29
+ */
30
+ readonly urlParamsCache: Map<string, string[]>;
31
+ resolvedForwardMap: Record<string, string>;
32
+ routeCustomFields: Record<string, Record<string, unknown>>;
33
+ rootPath: string;
34
+ readonly matcherOptions: CreateMatcherOptions | undefined;
35
+ depsStore: RoutesDependencies<Dependencies> | undefined;
36
+ lifecycleNamespace: RouteLifecycleNamespace<Dependencies> | undefined;
37
+ readonly pendingCanActivate: Map<string, GuardFnFactory<Dependencies>>;
38
+ readonly pendingCanDeactivate: Map<string, GuardFnFactory<Dependencies>>;
39
+ }
40
+ //#endregion
41
+ export { RoutesStore };
42
+ //# sourceMappingURL=routesStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routesStore.d.mts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/routesStore.ts"],"mappings":";;;;;;UAsCiB,YACf,qBAAqB,sBAAsB;;;;;;;;;;;;;WAclC,aAAa;WACb,QAAQ;EACjB,MAAM;EACN,SAAS;;;;;;;WAOA,gBAAgB;EACzB,oBAAoB;EACpB,mBAAmB,eAAe;EAClC;WACS,gBAAgB;EACzB,WAAW,mBAAmB;EAC9B,oBAAoB,wBAAwB;WACnC,oBAAoB,YAAY,eAAe;WAC/C,sBAAsB,YAAY,eAAe"}
@@ -0,0 +1,57 @@
1
+ import { Params, SimpleState, State } from "../../types/base.mjs";
2
+ import { DefaultDependencies, ForwardToCallback, GuardFn, GuardFnFactory, RouterLogger } from "../../types/router.mjs";
3
+ //#region src/namespaces/RoutesNamespace/types.d.ts
4
+ /**
5
+ * Dependencies injected into RoutesNamespace.
6
+ *
7
+ * These are function references from the Router facade,
8
+ * avoiding the need to pass the entire Router object.
9
+ */
10
+ interface RoutesDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
11
+ /** Per-router logger instance (from `getInternals(router).logger`) */
12
+ logger: RouterLogger;
13
+ /**
14
+ * Register a canActivate handler for a route. `precompiledFn` installs an
15
+ * already-compiled `GuardFn` (from {@link compileGuard}) without re-invoking
16
+ * the factory — used by the #956 prepare-then-commit path so guards compile
17
+ * once, before the store swap.
18
+ */
19
+ addActivateGuard: (name: string, handler: GuardFnFactory<Dependencies>, precompiledFn?: GuardFn) => void;
20
+ /** Register a canDeactivate handler for a route (see {@link addActivateGuard}). */
21
+ addDeactivateGuard: (name: string, handler: GuardFnFactory<Dependencies>, precompiledFn?: GuardFn) => void;
22
+ /**
23
+ * Compile a guard factory to its `GuardFn` WITHOUT registering it — surfaces a
24
+ * throwing / non-function factory eagerly so the add/replace commit can
25
+ * validate every guard before swapping the store (#956).
26
+ */
27
+ compileGuard: (handler: GuardFnFactory<Dependencies>, methodName: string) => GuardFn;
28
+ /** Create state object */
29
+ makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: Record<string, Record<string, "url" | "query">>) => State<P>;
30
+ /** Get current router state */
31
+ getState: () => State | undefined;
32
+ /** Compare two states for equality */
33
+ areStatesEqual: (state1: State | undefined, state2: State | undefined, ignoreQueryParams?: boolean) => boolean;
34
+ /** Get a dependency by name */
35
+ getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K];
36
+ /** Forward state through facade (allows plugin interception) */
37
+ forwardState: <P extends Params = Params>(name: string, params: P) => SimpleState<P>;
38
+ }
39
+ /**
40
+ * Configuration storage for routes.
41
+ * Stores decoders, encoders, default params, and forward mappings.
42
+ */
43
+ interface RouteConfig {
44
+ /** Custom param decoders per route */
45
+ decoders: Record<string, (params: Params) => Params>;
46
+ /** Custom param encoders per route */
47
+ encoders: Record<string, (params: Params) => Params>;
48
+ /** Default params per route */
49
+ defaultParams: Record<string, Params>;
50
+ /** Forward mappings (source -> target) */
51
+ forwardMap: Record<string, string>;
52
+ /** Dynamic forward callbacks (source -> callback) */
53
+ forwardFnMap: Record<string, ForwardToCallback<any>>;
54
+ }
55
+ //#endregion
56
+ export { RouteConfig, RoutesDependencies };
57
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/types.ts"],"mappings":";;;;;;;;;UAmBiB,mBACf,qBAAqB,sBAAsB;;EAG3C,QAAQ;;;;;;;EAQR,mBACE,cACA,SAAS,eAAe,eACxB,gBAAgB;;EAIlB,qBACE,cACA,SAAS,eAAe,eACxB,gBAAgB;;;;;;EAQlB,eACE,SAAS,eAAe,eACxB,uBACG;;EAGL,YAAY,UAAU,SAAS,QAC7B,cACA,SAAS,GACT,eACA,OAAO,eAAe,qCACnB,MAAM;;EAGX,gBAAgB;;EAGhB,iBACE,QAAQ,mBACR,QAAQ,mBACR;;EAIF,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa;;EAGvE,eAAe,UAAU,SAAS,QAChC,cACA,QAAQ,MACL,YAAY;;;;;;UAOF;;EAEf,UAAU,gBAAgB,QAAQ,WAAW;;EAG7C,UAAU,gBAAgB,QAAQ,WAAW;;EAG7C,eAAe,eAAe;;EAG9B,YAAY;;EAIZ,cAAc,eAAe"}
@@ -103,5 +103,5 @@ interface RouterValidator {
103
103
  };
104
104
  }
105
105
  //#endregion
106
- export { RouterValidator as t };
107
- //# sourceMappingURL=RouterValidator-CZ8kPkrI.d.mts.map
106
+ export { RouterValidator };
107
+ //# sourceMappingURL=RouterValidator.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterValidator.d.mts","names":[],"sources":["../../../src/types/RouterValidator.ts"],"mappings":";;;;;;;;;;UAUiB;;;;EAIf;IACE,wBAAwB;IACxB,wBAAwB;IACxB,4BACE,eACA,iBACA,iBACA;IAEF,+BAA+B;IAC/B,2BACE,eACA,iBACA;IAEF,uBAAuB;IACvB,iBACE,mBACA,eACA;IAEF,0BAA0B;IAC1B,+BAA+B,eAAe;IAC9C,mCAAmC,cAAc;IACjD,sBACE,cACA,kBACA;IAEF,uBAAuB,iBAAiB;IACxC,oBAAoB,eAAe;IACnC,uBAAuB,eAAe;IACtC,8BAA8B,mBAAmB;IACjD,0BAA0B;IAC1B,sBAAsB;IACtB,wBAAwB;;;;;EAM1B;IACE,kBAAkB,kBAAkB;IACpC,+BAA+B,oBAAoB;;;;;EAMrD;IACE,yBAAyB,eAAe;IACxC,4BACE,eACA,gBACA;IAEF,6BAA6B,eAAe;IAC5C,2BAA2B,cAAc;IACzC,0BAA0B,gBAAgB;IAC1C,oBAAoB;IACpB,gBAAgB,cAAc;IAC9B,qBAAqB,gBAAgB;IACrC,wBAAwB;;;;;EAM1B;IACE,sBAAsB,eAAe;IACrC,6BACE,kBACA;IAEF,qBAAqB;IACrB,0BAA0B;IAC1B,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,6BAA6B,iBAAiB;;;;;EAMhD;IACE,kBAAkB,kBAAkB;IACpC,uBAAuB,eAAe;IACtC,0BAA0B,eAAe;IACzC,gBAAgB,cAAc,cAAc;IAC5C,qBAAqB,cAAc;;;;;EAMrC;IACE,uBAAuB;IACvB,gCAAgC;IAChC,8BAA8B;IAC9B,4BAA4B,kBAAkB;IAC9C,iBAAiB,iBAAiB;IAClC,oBAAoB;;;;;EAMtB;IACE,wBACE,eACA,iBACA;IAEF,6BACE,aACA,aACA;;;;;EAOJ;IACE,uBAAuB,eAAe;IACtC,0BACE,eACA,mBACA"}
@@ -0,0 +1,184 @@
1
+ import { RouteTreeState } from "./route-node-types.mjs";
2
+ import { Params, SimpleState, State, StateMetaInput, Unsubscribe } from "./base.mjs";
3
+ import { DefaultDependencies, GuardFnFactory, Options, Plugin, Route, RouteConfigUpdate } from "./router.mjs";
4
+ import { EventMethodMap, EventName } from "./constants.mjs";
5
+ import { TreeChangedEvent } from "./tree-changed.mjs";
6
+ import { NavigationOptions, StateContext } from "../types.mjs";
7
+ //#region src/types/api.d.ts
8
+ /**
9
+ * Maps interceptable method names to their signatures.
10
+ * Used by {@link PluginApi.addInterceptor} to provide type-safe interceptor registration.
11
+ *
12
+ * To add a new interceptable method:
13
+ * 1. Add its signature here
14
+ * 2. Wrap it with `createInterceptable()` / `createBinaryInterceptable()` in
15
+ * the `registerInternals` block of the Router constructor
16
+ * (`packages/core/src/Router.ts`)
17
+ */
18
+ interface InterceptableMethodMap {
19
+ start: (path?: string) => Promise<State>;
20
+ buildPath: (route: string, params?: Params) => string;
21
+ forwardState: (routeName: string, routeParams: Params) => SimpleState;
22
+ }
23
+ /**
24
+ * Type-safe interceptor callback.
25
+ * Receives `next` (the next function in the chain) followed by the method's original parameters.
26
+ */
27
+ type InterceptorFn<M extends keyof InterceptableMethodMap> = (next: InterceptableMethodMap[M], ...args: Parameters<InterceptableMethodMap[M]>) => ReturnType<InterceptableMethodMap[M]>;
28
+ /**
29
+ * Writer object returned by {@link PluginApi.claimContextNamespace}. Holds
30
+ * exclusive ownership of a single `state.context.<namespace>` key for the
31
+ * lifetime of the owning plugin.
32
+ *
33
+ * @description
34
+ * A plugin obtains a claim by calling `api.claimContextNamespace("ns")` at
35
+ * registration, then publishes per-navigation data via {@link write} from a
36
+ * lifecycle hook (typically `onTransitionSuccess`) or from an interceptor.
37
+ * The plugin must call {@link release} in its `teardown()` so another plugin
38
+ * can reclaim the same namespace.
39
+ *
40
+ * The core runtime enforces one invariant: a namespace can be held by at most
41
+ * one claim at a time. Double-claiming throws `CONTEXT_NAMESPACE_ALREADY_CLAIMED`.
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const navigationPlugin: PluginFactory = (router) => {
46
+ * const api = getPluginApi(router);
47
+ * const claim = api.claimContextNamespace("navigation");
48
+ *
49
+ * return {
50
+ * onTransitionSuccess(toState, fromState) {
51
+ * claim.write(toState, { direction: detectDirection(fromState, toState) });
52
+ * },
53
+ * teardown() {
54
+ * claim.release();
55
+ * },
56
+ * };
57
+ * };
58
+ * ```
59
+ *
60
+ * @see {@link PluginApi.claimContextNamespace}
61
+ * @see {@link State.context}
62
+ */
63
+ interface ContextNamespaceClaim<T = unknown> {
64
+ write: (state: State, value: T) => void;
65
+ release: () => void;
66
+ }
67
+ /**
68
+ * Plugin API — for plugins and infrastructure packages.
69
+ * Hides plugin-internal methods from public autocomplete.
70
+ */
71
+ interface PluginApi {
72
+ makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: StateMetaInput) => State<P>;
73
+ buildState: (routeName: string, routeParams: Params) => RouteTreeState | undefined;
74
+ forwardState: <P extends Params = Params>(routeName: string, routeParams: P) => SimpleState<P>;
75
+ matchPath: <P extends Params = Params>(path: string) => State<P> | undefined;
76
+ /**
77
+ * Navigate to a fully-built `State`, skipping the redundant
78
+ * `forwardState`/`buildPath` round-trip in `buildNavigateState`.
79
+ *
80
+ * Plugin-only entry point for browser-initiated navigation: a plugin
81
+ * receives a URL event, resolves it via `api.matchPath(url)`, then commits
82
+ * the resulting `State` directly via `api.navigateToState(state, opts)`.
83
+ *
84
+ * Semantics vs `router.navigate(name, params, opts)`:
85
+ * - `forwardState` is NOT re-applied (matchPath already ran it).
86
+ * - `buildPath` is NOT re-run; `state.path` is used verbatim, preserving
87
+ * `trailingSlash:"preserve"` source-URL output.
88
+ * - `forwardState`/`buildPath` interceptors do NOT run on this path; the
89
+ * URL the user navigated to is the source of truth.
90
+ * - Pipeline: SAME_STATES check, FSM transition, guards, `subscribeLeave`,
91
+ * `completeTransition`, plugin lifecycle hooks — all unchanged.
92
+ *
93
+ * Programmatic / userland navigation should keep using
94
+ * `router.navigate(name, params, opts)` so interceptors apply.
95
+ */
96
+ navigateToState: (state: State, options?: NavigationOptions) => Promise<State>;
97
+ setRootPath: (rootPath: string) => void;
98
+ getRootPath: () => string;
99
+ addEventListener: <E extends EventName>(eventName: E, cb: Plugin[EventMethodMap[E]]) => Unsubscribe;
100
+ buildNavigationState: (name: string, params?: Params) => State | undefined;
101
+ getOptions: () => Options;
102
+ getTree: () => unknown;
103
+ addInterceptor: <M extends keyof InterceptableMethodMap>(method: M, fn: InterceptorFn<M>) => Unsubscribe;
104
+ extendRouter: (extensions: Record<string, unknown>) => Unsubscribe;
105
+ /**
106
+ * Emits a `$$error` event without going through the navigation pipeline.
107
+ *
108
+ * Used by plugins that detect an error outside a running transition (e.g.,
109
+ * an unmatched URL on popstate in strict mode). The event reaches any
110
+ * `onTransitionError` plugin hook and any `$$error` listener so developers
111
+ * can observe errors raised by the plugin layer.
112
+ *
113
+ * The current router state is used as `fromState`; `toState` is `undefined`
114
+ * because no transition was attempted. Safe to call at any FSM state —
115
+ * delegates to `sendFailSafe` internally (direct emit when not READY).
116
+ */
117
+ emitTransitionError: (error: Error) => void;
118
+ claimContextNamespace: {
119
+ <K extends keyof StateContext & string>(namespace: K): ContextNamespaceClaim<StateContext[K]>;
120
+ (namespace: string): ContextNamespaceClaim;
121
+ };
122
+ getRouteConfig: (name: string) => Record<string, unknown> | undefined;
123
+ }
124
+ /**
125
+ * Routes API — for dynamic route mutation.
126
+ */
127
+ interface RoutesApi<Dependencies extends DefaultDependencies = DefaultDependencies> {
128
+ add: (routes: Route<Dependencies>[] | Route<Dependencies>, options?: {
129
+ parent?: string;
130
+ }) => void;
131
+ remove: (name: string) => void;
132
+ /**
133
+ * Patch an existing route's configuration in place (no tree rebuild).
134
+ *
135
+ * Applies the structural/guard fields and any plugin-defined custom fields
136
+ * (lifecycle hooks, `preload`, `searchSchema`, …) from the patch. Fields are
137
+ * shallow-merged by key; `null` removes a field, `undefined` is a no-op.
138
+ * `name`/`path`/`children` are immutable — use `remove` + `add` to
139
+ * restructure. See {@link RouteConfigUpdate} for the full semantics and the
140
+ * plugin augmentation pattern.
141
+ */
142
+ update: (name: string, updates: RouteConfigUpdate<Dependencies>) => void;
143
+ clear: () => void;
144
+ replace: (routes: Route<Dependencies>[] | Route<Dependencies>) => void;
145
+ has: (name: string) => boolean;
146
+ get: (name: string) => Route<Dependencies> | undefined;
147
+ /**
148
+ * Subscribe to structural route-tree mutations (`add` / `remove` / `update`
149
+ * with structural fields / `replace` / `clear`). Fire-and-forget: the handler
150
+ * cannot cancel the mutation, runs after the atomic commit, and sees the
151
+ * post-mutation tree via `get()` / `has()`.
152
+ *
153
+ * Duplicate-registration semantics are **lenient** (mirrors
154
+ * `router.subscribe`): each call registers an independent listener and
155
+ * returns its own unsubscribe.
156
+ *
157
+ * @returns Unsubscribe function for this specific registration.
158
+ */
159
+ subscribeChanges: (handler: (event: TreeChangedEvent<Dependencies>) => void) => Unsubscribe;
160
+ }
161
+ /**
162
+ * Dependencies API — CRUD for dependency injection.
163
+ */
164
+ interface DependenciesApi<Dependencies extends DefaultDependencies = DefaultDependencies> {
165
+ get: <K extends keyof Dependencies>(key: K) => Dependencies[K];
166
+ getAll: () => Partial<Dependencies>;
167
+ set: <K extends keyof Dependencies & string>(name: K, value: Dependencies[K]) => void;
168
+ setAll: (deps: Dependencies) => void;
169
+ remove: (name: keyof Dependencies) => void;
170
+ reset: () => void;
171
+ has: (name: keyof Dependencies) => boolean;
172
+ }
173
+ /**
174
+ * Lifecycle API — guard registration (addActivateGuard, addDeactivateGuard, etc.)
175
+ */
176
+ interface LifecycleApi<Dependencies extends DefaultDependencies = DefaultDependencies> {
177
+ addActivateGuard: (name: string, canActivateHandler: GuardFnFactory<Dependencies> | boolean) => void;
178
+ addDeactivateGuard: (name: string, canDeactivateHandler: GuardFnFactory<Dependencies> | boolean) => void;
179
+ removeActivateGuard: (name: string) => void;
180
+ removeDeactivateGuard: (name: string) => void;
181
+ }
182
+ //#endregion
183
+ export { ContextNamespaceClaim, DependenciesApi, InterceptableMethodMap, InterceptorFn, LifecycleApi, PluginApi, RoutesApi };
184
+ //# sourceMappingURL=api.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.mts","names":[],"sources":["../../../src/types/api.ts"],"mappings":";;;;;;;;;;;;;;;;;UAqCiB;EACf,QAAQ,kBAAkB,QAAQ;EAClC,YAAY,eAAe,SAAS;EACpC,eAAe,mBAAmB,aAAa,WAAW;;;;;;KAOhD,cAAc,gBAAgB,2BACxC,MAAM,uBAAuB,OAC1B,MAAM,WAAW,uBAAuB,QACxC,WAAW,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAqCtB,sBAAsB;EACrC,QAAQ,OAAO,OAAO,OAAO;EAC7B;;;;;;UAOe;EACf,YAAY,UAAU,SAAS,QAC7B,cACA,SAAS,GACT,eACA,OAAO,mBACJ,MAAM;EAEX,aACE,mBACA,aAAa,WACV;EAEL,eAAe,UAAU,SAAS,QAChC,mBACA,aAAa,MACV,YAAY;EAEjB,YAAY,UAAU,SAAS,QAAQ,iBAAiB,MAAM;;;;;;;;;;;;;;;;;;;;;EAsB9D,kBACE,OAAO,OACP,UAAU,sBACP,QAAQ;EAEb,cAAc;EACd;EAEA,mBAAmB,UAAU,WAC3B,WAAW,GACX,IAAI,OAAO,eAAe,QACvB;EAEL,uBAAuB,cAAc,SAAS,WAAW;EAEzD,kBAAkB;EAElB;EAEA,iBAAiB,gBAAgB,wBAC/B,QAAQ,GACR,IAAI,cAAc,OACf;EAEL,eAAe,YAAY,4BAA4B;;;;;;;;;;;;;EAcvD,sBAAsB,OAAO;EAE7B;KAEG,gBAAgB,uBACf,WAAW,IACV,sBAAsB,aAAa;KACrC,oBAAoB;;EAGvB,iBAAiB,iBAAiB;;;;;UAMnB,UACf,qBAAqB,sBAAsB;EAE3C,MACE,QAAQ,MAAM,kBAAkB,MAAM,eACtC;IAAY;;EAGd,SAAS;;;;;;;;;;;EAYT,SAAS,cAAc,SAAS,kBAAkB;EAElD;EAEA,UAAU,QAAQ,MAAM,kBAAkB,MAAM;EAEhD,MAAM;EAEN,MAAM,iBAAiB,MAAM;;;;;;;;;;;;;EAc7B,mBACE,UAAU,OAAO,iBAAiB,2BAC/B;;;;;UAMU,gBACf,qBAAqB,sBAAsB;EAE3C,MAAM,gBAAgB,cAAc,KAAK,MAAM,aAAa;EAC5D,cAAc,QAAQ;EACtB,MAAM,gBAAgB,uBACpB,MAAM,GACN,OAAO,aAAa;EAEtB,SAAS,MAAM;EACf,SAAS,YAAY;EACrB;EACA,MAAM,YAAY;;;;;UAMH,aACf,qBAAqB,sBAAsB;EAE3C,mBACE,cACA,oBAAoB,eAAe;EAErC,qBACE,cACA,sBAAsB,eAAe;EAEvC,sBAAsB;EACtB,wBAAwB"}
@@ -0,0 +1,86 @@
1
+ import { StateContext } from "../types.mjs";
2
+ //#region src/types/base.d.ts
3
+ /**
4
+ * Detach function returned by subscription APIs.
5
+ *
6
+ * @description
7
+ * Calling this function removes the associated listener. Returned by
8
+ * `router.subscribe()`, `router.addEventListener()`, `router.subscribeLeave()`,
9
+ * and plugin interceptors. Idempotent — calling more than once is safe and
10
+ * has no additional effect after the first call.
11
+ */
12
+ type Unsubscribe = () => void;
13
+ interface SimpleState<P extends Params = Params> {
14
+ name: string;
15
+ params: P;
16
+ }
17
+ type TransitionPhase = "deactivating" | "activating";
18
+ type TransitionReason = "success" | "blocked" | "cancelled" | "error";
19
+ interface TransitionMeta {
20
+ phase: TransitionPhase;
21
+ reason: TransitionReason;
22
+ reload?: boolean;
23
+ replace?: boolean;
24
+ redirected?: boolean;
25
+ from?: string;
26
+ blocker?: string;
27
+ segments: {
28
+ deactivated: string[];
29
+ activated: string[];
30
+ intersection: string;
31
+ };
32
+ }
33
+ interface State<P extends Params = Params> {
34
+ name: string;
35
+ params: P;
36
+ path: string;
37
+ transition: TransitionMeta;
38
+ /**
39
+ * Plugin-extensible per-route data, attached by plugins via
40
+ * `PluginApi.claimContextNamespace()` + `claim.write(state, value)`.
41
+ *
42
+ * @description
43
+ * Required field — always present as at least `{}` on every State created by
44
+ * the router (via `makeState`, `navigateToNotFound`, or `cloneRouter`).
45
+ *
46
+ * Typed extensions come from plugins augmenting {@link StateContext} through
47
+ * module augmentation. The intersection with `Record<string, unknown>` allows
48
+ * untyped namespaces (inline plugins, tests, or plugins that skip augmentation)
49
+ * to write without compile errors.
50
+ *
51
+ * The `context` object itself is **not frozen** — this is intentional, so
52
+ * plugins can attach data without cloning state. Core structural fields
53
+ * (`name`, `params`, `path`, `transition`) remain immutable via shallow
54
+ * `Object.freeze(state)`.
55
+ *
56
+ * @see {@link StateContext}
57
+ */
58
+ context: StateContext & Record<string, unknown>;
59
+ }
60
+ interface StateMetaInput<P extends Params = Params> {
61
+ params: P;
62
+ }
63
+ /**
64
+ * RouterError interface describing the public API of the RouterError class.
65
+ * The actual class implementation is in the real-router package.
66
+ * This interface enables structural typing compatibility between
67
+ * core-types and real-router packages.
68
+ */
69
+ interface RouterError extends Error {
70
+ [key: string]: unknown;
71
+ readonly code: string;
72
+ readonly segment: string | undefined;
73
+ readonly path: string | undefined;
74
+ setCode: (code: string) => void;
75
+ setErrorInstance: (err: Error) => void;
76
+ setAdditionalFields: (fields: Record<string, unknown>) => void;
77
+ hasField: (key: string) => boolean;
78
+ getField: (key: string) => unknown;
79
+ toJSON: () => Record<string, unknown>;
80
+ }
81
+ interface Params {
82
+ [key: string]: string | string[] | number | number[] | boolean | boolean[] | Params | Params[] | Record<string, string | number | boolean> | null | undefined;
83
+ }
84
+ //#endregion
85
+ export { Params, RouterError, SimpleState, State, StateMetaInput, TransitionMeta, TransitionPhase, TransitionReason, Unsubscribe };
86
+ //# sourceMappingURL=base.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.mts","names":[],"sources":["../../../src/types/base.ts"],"mappings":";;;;;;;;;;;KAmBY;UAEK,YAAY,UAAU,SAAS;EAC9C;EACA,QAAQ;;KAGE;KAEA;UAEK;EACf,OAAO;EACP,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;;;UAIa,MAAM,UAAU,SAAS;EACxC;EACA,QAAQ;EACR;EACA,YAAY;;;;;;;;;;;;;;;;;;;;;EAqBZ,SAAS,eAAe;;UAGT,eAAe,UAAU,SAAS;EACjD,QAAQ;;;;;;;;UASO,oBAAoB;GAClC;WACQ;WACA;WACA;EACT,UAAU;EACV,mBAAmB,KAAK;EACxB,sBAAsB,QAAQ;EAC9B,WAAW;EACX,WAAW;EACX,cAAc;;UAGC;GACd,4EAOG,SACA,WACA"}