@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
@@ -0,0 +1,313 @@
1
+ import { QueryParamsMode, QueryParamsOptions } from "./route-node-types.js";
2
+ import { Params, RouterError, State, Unsubscribe } from "./base.js";
3
+ import { LimitsConfig } from "./limits.js";
4
+ import { NavigationOptions } from "../types.js";
5
+ //#region src/types/router.d.ts
6
+ type LogLevel = "log" | "warn" | "error";
7
+ type LogLevelConfig = "all" | "warn-error" | "error-only" | "none";
8
+ type LogCallback = (level: LogLevel, context: string, message: string, ...args: unknown[]) => void;
9
+ interface LoggerConfig {
10
+ level: LogLevelConfig;
11
+ callback?: LogCallback | undefined;
12
+ callbackIgnoresLevel?: boolean;
13
+ }
14
+ /**
15
+ * Per-router logging surface — the contract core writes through and plugins
16
+ * consume.
17
+ *
18
+ * Core stores a concrete instance on `RouterInternals.logger` (built from
19
+ * `options.logger` in the `Router` constructor); plugins and other consumers
20
+ * reach that same per-instance logger via `getPluginApi(router).logger`. The
21
+ * concrete `RouterLogger` class lives in core's `foundation/logger` — this
22
+ * interface is the shared contract, so nothing outside core needs to import the
23
+ * class (or depend on the former standalone `@real-router/logger` package).
24
+ */
25
+ interface RouterLogger {
26
+ log: (context: string, message: string, ...args: unknown[]) => void;
27
+ warn: (context: string, message: string, ...args: unknown[]) => void;
28
+ error: (context: string, message: string, ...args: unknown[]) => void;
29
+ }
30
+ /**
31
+ * Callback function for dynamically resolving the default route.
32
+ * Receives a dependency getter function to access router dependencies.
33
+ */
34
+ type DefaultRouteCallback<Dependencies = object> = (getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K]) => string;
35
+ /**
36
+ * Callback function for dynamically resolving the forward target route.
37
+ * Receives a dependency getter function and current route parameters.
38
+ */
39
+ type ForwardToCallback<Dependencies = object> = (getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K], params: Params) => string;
40
+ /**
41
+ * Callback function for dynamically resolving the default parameters.
42
+ * Receives a dependency getter function to access router dependencies.
43
+ */
44
+ type DefaultParamsCallback<Dependencies = object> = (getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K]) => Params;
45
+ /**
46
+ * Router configuration options.
47
+ *
48
+ * Note: For input, use `Partial<Options>` as all fields have defaults.
49
+ * After initialization, `getOptions()` returns resolved `Options` with all fields populated.
50
+ */
51
+ interface Options {
52
+ /**
53
+ * Default route to navigate to on start.
54
+ * Empty string means no default route.
55
+ *
56
+ * @default ""
57
+ */
58
+ defaultRoute: string | DefaultRouteCallback;
59
+ /**
60
+ * Default parameters for the default route.
61
+ *
62
+ * @default {}
63
+ */
64
+ defaultParams: Params | DefaultParamsCallback;
65
+ /**
66
+ * How to handle trailing slashes in URLs.
67
+ * - "strict": Route must match exactly
68
+ * - "never": Always remove trailing slash
69
+ * - "always": Always add trailing slash
70
+ * - "preserve": Keep the source path's trailing-slash choice, even when
71
+ * `rewritePathOnMatch: true` rewrites the rest of the path.
72
+ *
73
+ * @default "preserve"
74
+ */
75
+ trailingSlash: "strict" | "never" | "always" | "preserve";
76
+ /**
77
+ * Whether route matching is case-sensitive.
78
+ *
79
+ * When `false`, a mixed-case URL matches a lower-case route (`/Team` matches a
80
+ * `/team` route). Dynamic param **values** keep their original case — only
81
+ * static literal segments are compared case-insensitively.
82
+ *
83
+ * Default `true` (spec-correct: RFC 3986 §6.2.2.1 treats URL paths as
84
+ * case-sensitive). Case-insensitive is an explicit **opt-in** for a narrow
85
+ * niche — server-less / hash / static-hosted / legacy routing where no server
86
+ * or edge layer can normalize the URL's case before it reaches the router. For
87
+ * public SSR/edge apps, prefer a canonical-lowercase redirect at the server
88
+ * instead (SEO / dedup). Note the divergence from React Router v7 / TanStack /
89
+ * vue-router, which default to case-**insensitive**.
90
+ *
91
+ * @default true
92
+ */
93
+ caseSensitive: boolean;
94
+ /**
95
+ * How to encode URL parameters.
96
+ * - "default": Standard encoding
97
+ * - "uri": URI encoding (encodeURI)
98
+ * - "uriComponent": Component encoding (encodeURIComponent)
99
+ * - "none": No encoding
100
+ *
101
+ * @default "default"
102
+ */
103
+ urlParamsEncoding: "default" | "uri" | "uriComponent" | "none";
104
+ /**
105
+ * How to handle query parameters.
106
+ *
107
+ * @default "loose"
108
+ */
109
+ queryParamsMode: QueryParamsMode;
110
+ /**
111
+ * Query parameter parsing options.
112
+ *
113
+ * @default undefined
114
+ */
115
+ queryParams?: QueryParamsOptions;
116
+ /**
117
+ * Allow matching routes that don't exist.
118
+ * When true, unknown routes navigate without error.
119
+ *
120
+ * @default true
121
+ */
122
+ allowNotFound: boolean;
123
+ /**
124
+ * Rewrite `state.path` on successful match to the canonical path built
125
+ * from the matched route's pattern. Applies `forwardTo` aliases, encoders,
126
+ * `defaultParams`, and `trailingSlash` normalization (`"never"` / `"always"`).
127
+ * When `trailingSlash: "preserve"`, the source path's trailing-slash choice
128
+ * is kept on the rewritten path.
129
+ *
130
+ * @default true
131
+ */
132
+ rewritePathOnMatch: boolean;
133
+ /**
134
+ * Logger configuration.
135
+ *
136
+ * @default undefined
137
+ */
138
+ logger?: Partial<LoggerConfig>;
139
+ /**
140
+ * Router resource limits configuration.
141
+ * Controls maximum allowed values for various router operations.
142
+ *
143
+ * @default DEFAULT_LIMITS (from LimitsNamespace)
144
+ */
145
+ limits?: Partial<LimitsConfig>;
146
+ }
147
+ type GuardFn = (toState: State, fromState: State | undefined, signal?: AbortSignal) => boolean | Promise<boolean>;
148
+ type DefaultDependencies = object;
149
+ interface Plugin {
150
+ onStart?: () => void;
151
+ onStop?: () => void;
152
+ onTransitionStart?: (toState: State, fromState?: State) => void;
153
+ onTransitionLeaveApprove?: (toState: State, fromState?: State) => void;
154
+ onTransitionCancel?: (toState: State, fromState?: State) => void;
155
+ onTransitionError?: (toState: State | undefined, fromState: State | undefined, err: RouterError) => void;
156
+ onTransitionSuccess?: (toState: State, fromState: State | undefined, opts: NavigationOptions) => void;
157
+ teardown?: () => void;
158
+ }
159
+ interface SubscribeState {
160
+ route: State;
161
+ previousRoute?: State | undefined;
162
+ }
163
+ type SubscribeFn = (state: SubscribeState) => void;
164
+ interface LeaveState {
165
+ route: State;
166
+ nextRoute: State;
167
+ signal: AbortSignal;
168
+ }
169
+ type LeaveFn = (state: LeaveState) => void | Promise<void>;
170
+ interface Listener {
171
+ [key: string]: unknown;
172
+ next: (val: unknown) => void;
173
+ error?: (err: unknown) => void;
174
+ complete?: () => void;
175
+ }
176
+ interface Subscription {
177
+ unsubscribe: Unsubscribe;
178
+ }
179
+ /**
180
+ * Navigator interface - a minimal, safe subset of Router methods.
181
+ *
182
+ * Provides only the essential navigation and state inspection methods.
183
+ * Excludes lifecycle methods (start, stop), plugin management, and internal APIs.
184
+ * Use this when you need to pass a limited router interface to components.
185
+ *
186
+ * For full router access, use the Router interface directly or the useRouter() hook.
187
+ */
188
+ interface Navigator {
189
+ navigate: (routeName: string, routeParams?: Params, options?: NavigationOptions) => Promise<State>;
190
+ getState: () => State | undefined;
191
+ isActiveRoute: (name: string, params?: Params, strictEquality?: boolean, ignoreQueryParams?: boolean) => boolean;
192
+ canNavigateTo: (name: string, params?: Params) => boolean;
193
+ subscribe: (listener: SubscribeFn) => Unsubscribe;
194
+ subscribeLeave: (listener: LeaveFn) => Unsubscribe;
195
+ isLeaveApproved: () => boolean;
196
+ }
197
+ /**
198
+ * Router interface — full public API for route navigation and lifecycle management.
199
+ *
200
+ * Generic parameter D constrains dependency injection types.
201
+ * Factory types (PluginFactory, GuardFnFactory) self-reference this interface
202
+ * within the same file to avoid circular dependencies.
203
+ */
204
+ interface Router<D extends DefaultDependencies = DefaultDependencies> {
205
+ [key: string]: unknown;
206
+ isActiveRoute: (name: string, params?: Params, strictEquality?: boolean, ignoreQueryParams?: boolean) => boolean;
207
+ buildPath: (route: string, params?: Params) => string;
208
+ getState: <P extends Params = Params>() => State<P> | undefined;
209
+ getPreviousState: () => State | undefined;
210
+ areStatesEqual: (state1: State | undefined, state2: State | undefined, ignoreQueryParams?: boolean) => boolean;
211
+ shouldUpdateNode: (nodeName: string) => (toState: State, fromState?: State) => boolean;
212
+ isActive: () => boolean;
213
+ start: (startPath: string) => Promise<State>;
214
+ stop: () => this;
215
+ dispose: () => void;
216
+ canNavigateTo: (name: string, params?: Params) => boolean;
217
+ usePlugin: (...plugins: (PluginFactory<D> | false | null | undefined)[]) => Unsubscribe;
218
+ subscribe: (listener: SubscribeFn) => Unsubscribe;
219
+ subscribeLeave: (listener: LeaveFn) => Unsubscribe;
220
+ isLeaveApproved: () => boolean;
221
+ navigate: (routeName: string, routeParams?: Params, options?: NavigationOptions) => Promise<State>;
222
+ navigateToDefault: (options?: NavigationOptions) => Promise<State>;
223
+ navigateToNotFound: (path?: string) => State;
224
+ }
225
+ /**
226
+ * Factory function for creating plugins.
227
+ * Receives the router instance and a dependency getter.
228
+ */
229
+ type PluginFactory<Dependencies extends DefaultDependencies = DefaultDependencies> = (router: Router<Dependencies>, getDependency: <K extends keyof Dependencies>(key: K) => Dependencies[K]) => Plugin;
230
+ /**
231
+ * Factory function for creating guards.
232
+ * Receives the router instance and a dependency getter.
233
+ */
234
+ type GuardFnFactory<Dependencies extends DefaultDependencies = DefaultDependencies> = (router: Router<Dependencies>, getDependency: <K extends keyof Dependencies>(key: K) => Dependencies[K]) => GuardFn;
235
+ /**
236
+ * Route configuration.
237
+ */
238
+ interface Route<Dependencies extends DefaultDependencies = DefaultDependencies> {
239
+ [key: string]: unknown;
240
+ /** Route name (dot-separated for nested routes). */
241
+ name: string;
242
+ /** URL path pattern for this route. */
243
+ path: string;
244
+ /** Factory function that returns a guard for route activation. */
245
+ canActivate?: GuardFnFactory<Dependencies>;
246
+ /** Factory function that returns a guard for route deactivation. */
247
+ canDeactivate?: GuardFnFactory<Dependencies>;
248
+ /**
249
+ * Redirects navigation to another route.
250
+ *
251
+ * IMPORTANT: forwardTo creates a URL alias, not a transition chain.
252
+ * Guards (canActivate) on the source route are NOT executed.
253
+ * Only guards on the final destination are executed.
254
+ *
255
+ * This matches Vue Router and Angular Router behavior.
256
+ */
257
+ forwardTo?: string | ForwardToCallback<Dependencies>;
258
+ /** Nested child routes. */
259
+ children?: Route<Dependencies>[];
260
+ /** Encodes state params to URL params. */
261
+ encodeParams?: (stateParams: Params) => Params;
262
+ /** Decodes URL params to state params. */
263
+ decodeParams?: (pathParams: Params) => Params;
264
+ /**
265
+ * Default parameters for this route.
266
+ *
267
+ * These values are merged into state.params when creating route states.
268
+ * Missing URL params are filled from defaultParams.
269
+ */
270
+ defaultParams?: Params;
271
+ }
272
+ /**
273
+ * Configuration update options for `updateRoute()`.
274
+ *
275
+ * All properties are optional. For every field, `null` removes the
276
+ * configuration, `undefined` (or omission) leaves it untouched, and any other
277
+ * value sets it — values are shallow-merged into the route by patch key.
278
+ *
279
+ * Besides the structural and guard fields below, `update` also patches
280
+ * **plugin-defined custom fields** (lifecycle hooks, `preload`, `searchSchema`,
281
+ * …), symmetric with how `add`/`replace` register them. This interface is
282
+ * **augmentable**: a plugin declares its updatable field via declaration
283
+ * merging, mirroring its `Route` augmentation but with `| null` to allow removal:
284
+ *
285
+ * ```ts
286
+ * declare module "@real-router/core" {
287
+ * interface RouteConfigUpdate<Dependencies extends DefaultDependencies> {
288
+ * onNavigate?: LifecycleHookFactory<Dependencies> | null;
289
+ * }
290
+ * }
291
+ * ```
292
+ *
293
+ * Note: `name` / `path` / `children` are route identity and are NOT patchable —
294
+ * use `remove` + `add` to restructure. The interface stays closed (no index
295
+ * signature) so typos in structural field names remain compile errors.
296
+ */
297
+ interface RouteConfigUpdate<Dependencies extends DefaultDependencies = DefaultDependencies> {
298
+ /** Set to null to remove forwardTo */
299
+ forwardTo?: string | ForwardToCallback<Dependencies> | null;
300
+ /** Set to null to remove defaultParams */
301
+ defaultParams?: Params | null;
302
+ /** Set to null to remove decoder */
303
+ decodeParams?: ((params: Params) => Params) | null;
304
+ /** Set to null to remove encoder */
305
+ encodeParams?: ((params: Params) => Params) | null;
306
+ /** Set to null to remove canActivate */
307
+ canActivate?: GuardFnFactory<Dependencies> | null;
308
+ /** Set to null to remove canDeactivate */
309
+ canDeactivate?: GuardFnFactory<Dependencies> | null;
310
+ }
311
+ //#endregion
312
+ export { DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ForwardToCallback, GuardFn, GuardFnFactory, LeaveFn, LeaveState, Listener, LogCallback, LogLevel, LogLevelConfig, LoggerConfig, Navigator, Options, Plugin, PluginFactory, Route, RouteConfigUpdate, Router, RouterLogger, SubscribeFn, SubscribeState, Subscription };
313
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","names":[],"sources":["../../../src/types/router.ts"],"mappings":";;;;;KAoBY;KAEA;KAEA,eACV,OAAO,UACP,iBACA,oBACG;UAGY;EACf,OAAO;EACP,WAAW;EACX;;;;;;;;;;;;;UAce;EACf,MAAM,iBAAiB,oBAAoB;EAC3C,OAAO,iBAAiB,oBAAoB;EAC5C,QAAQ,iBAAiB,oBAAoB;;;;;;KAOnC,qBAAqB,0BAC/B,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa;;;;;KAO7D,kBAAkB,0BAC5B,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa,IACvE,QAAQ;;;;;KAOE,sBAAsB,0BAChC,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa,OACpE;;;;;;;UAQY;;;;;;;EAOf,uBAAuB;;;;;;EAOvB,eAAe,SAAS;;;;;;;;;;;EAYxB;;;;;;;;;;;;;;;;;;EAmBA;;;;;;;;;;EAWA;;;;;;EAOA,iBAAiB;;;;;;EAOjB,cAAc;;;;;;;EAQd;;;;;;;;;;EAWA;;;;;;EAOA,SAAS,QAAQ;;;;;;;EAQjB,SAAS,QAAQ;;KAGP,WACV,SAAS,OACT,WAAW,mBACX,SAAS,0BACI;KAEH;UAEK;EACf;EACA;EACA,qBAAqB,SAAS,OAAO,YAAY;EACjD,4BAA4B,SAAS,OAAO,YAAY;EACxD,sBAAsB,SAAS,OAAO,YAAY;EAClD,qBACE,SAAS,mBACT,WAAW,mBACX,KAAK;EAEP,uBACE,SAAS,OACT,WAAW,mBACX,MAAM;EAER;;UAGe;EACf,OAAO;EACP,gBAAgB;;KAGN,eAAe,OAAO;UAEjB;EACf,OAAO;EACP,WAAW;EACX,QAAQ;;KAGE,WAAW,OAAO,sBAAsB;UAEnC;GACd;EACD,OAAO;EACP,SAAS;EACT;;UAGe;EACf,aAAa;;;;;;;;;;;UAYE;EACf,WACE,mBACA,cAAc,QACd,UAAU,sBACP,QAAQ;EACb,gBAAgB;EAChB,gBACE,cACA,SAAS,QACT,0BACA;EAEF,gBAAgB,cAAc,SAAS;EACvC,YAAY,UAAU,gBAAgB;EACtC,iBAAiB,UAAU,YAAY;EACvC;;;;;;;;;UAUe,OAAO,UAAU,sBAAsB;GAGrD;EAED,gBACE,cACA,SAAS,QACT,0BACA;EAGF,YAAY,eAAe,SAAS;EAEpC,WAAW,UAAU,SAAS,aAAa,MAAM;EAEjD,wBAAwB;EAExB,iBACE,QAAQ,mBACR,QAAQ,mBACR;EAGF,mBACE,sBACI,SAAS,OAAO,YAAY;EAElC;EAEA,QAAQ,sBAAsB,QAAQ;EAEtC;EAEA;EAEA,gBAAgB,cAAc,SAAS;EAEvC,eACK,UAAU,cAAc,qCACxB;EAEL,YAAY,UAAU,gBAAgB;EAEtC,iBAAiB,UAAU,YAAY;EAEvC;EAEA,WACE,mBACA,cAAc,QACd,UAAU,sBACP,QAAQ;EAEb,oBAAoB,UAAU,sBAAsB,QAAQ;EAE5D,qBAAqB,kBAAkB;;;;;;KAW7B,cACV,qBAAqB,sBAAsB,wBAE3C,QAAQ,OAAO,eACf,gBAAgB,gBAAgB,cAAc,KAAK,MAAM,aAAa,OACnE;;;;;KAMO,eACV,qBAAqB,sBAAsB,wBAE3C,QAAQ,OAAO,eACf,gBAAgB,gBAAgB,cAAc,KAAK,MAAM,aAAa,OACnE;;;;UASY,MACf,qBAAqB,sBAAsB;GAE1C;;EAED;;EAEA;;EAEA,cAAc,eAAe;;EAE7B,gBAAgB,eAAe;;;;;;;;;;EAU/B,qBAAqB,kBAAkB;;EAEvC,WAAW,MAAM;;EAEjB,gBAAgB,aAAa,WAAW;;EAExC,gBAAgB,YAAY,WAAW;;;;;;;EAOvC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BD,kBACf,qBAAqB,sBAAsB;;EAG3C,qBAAqB,kBAAkB;;EAEvC,gBAAgB;;EAEhB,iBAAiB,QAAQ,WAAW;;EAEpC,iBAAiB,QAAQ,WAAW;;EAEpC,cAAc,eAAe;;EAE7B,gBAAgB,eAAe"}
@@ -0,0 +1,55 @@
1
+ import { DefaultDependencies, Route, RouteConfigUpdate } from "./router.js";
2
+ //#region src/types/tree-changed.d.ts
3
+ /**
4
+ * The subset of {@link RouteConfigUpdate} fields that count as **structural**
5
+ * changes — the only ones that emit `TREE_CHANGED` from `update()`.
6
+ *
7
+ * Guard fields (`canActivate` / `canDeactivate`) are deliberately excluded:
8
+ * guards are invoked-on-demand (fresh-read per navigation), not cached derived
9
+ * state, so they need no observation channel.
10
+ */
11
+ type TreeStructuralPatch<Dependencies extends DefaultDependencies = DefaultDependencies> = Pick<RouteConfigUpdate<Dependencies>, "forwardTo" | "defaultParams" | "encodeParams" | "decodeParams">;
12
+ interface TreeChangedAdd<Dependencies extends DefaultDependencies = DefaultDependencies> {
13
+ readonly op: "add";
14
+ /** Top-level routes that were added (deep-cloned + frozen; caller untouched). */
15
+ readonly added: readonly Route<Dependencies>[];
16
+ /** Parent route name when added via `add(routes, { parent })`. */
17
+ readonly parent?: string;
18
+ }
19
+ interface TreeChangedRemove<Dependencies extends DefaultDependencies = DefaultDependencies> {
20
+ readonly op: "remove";
21
+ readonly name: string;
22
+ /**
23
+ * The removed route and all of its descendants, as a FLAT array (each entry's
24
+ * `name` is the full dotted name). Collected before the mutation.
25
+ */
26
+ readonly removedSubtree: readonly Route<Dependencies>[];
27
+ }
28
+ interface TreeChangedUpdate<Dependencies extends DefaultDependencies = DefaultDependencies> {
29
+ readonly op: "update";
30
+ readonly name: string;
31
+ /** Structural fields only (deep-cloned + frozen; caller's patch untouched). */
32
+ readonly patch: Readonly<TreeStructuralPatch<Dependencies>>;
33
+ }
34
+ interface TreeChangedReplace<Dependencies extends DefaultDependencies = DefaultDependencies> {
35
+ readonly op: "replace";
36
+ /** FLAT by all names (including descendants) present before but not after. */
37
+ readonly removed: readonly Route<Dependencies>[];
38
+ /** FLAT by all names (including descendants) present after but not before. */
39
+ readonly added: readonly Route<Dependencies>[];
40
+ }
41
+ interface TreeChangedClear<Dependencies extends DefaultDependencies = DefaultDependencies> {
42
+ readonly op: "clear";
43
+ /** Top-level routes (with nested children) that existed before the clear. */
44
+ readonly removed: readonly Route<Dependencies>[];
45
+ }
46
+ /**
47
+ * Discriminated union (by `op`) describing a single structural route-tree
48
+ * mutation. Consumers should `switch (event.op)` with an exhaustive `default`
49
+ * — do not rely on `Object.keys(event)`, array ordering, or absence of future
50
+ * fields (see Invariant 11 in `.claude/rfc-tree-mutation-event.md`).
51
+ */
52
+ type TreeChangedEvent<Dependencies extends DefaultDependencies = DefaultDependencies> = TreeChangedAdd<Dependencies> | TreeChangedRemove<Dependencies> | TreeChangedUpdate<Dependencies> | TreeChangedReplace<Dependencies> | TreeChangedClear<Dependencies>;
53
+ //#endregion
54
+ export { TreeChangedAdd, TreeChangedClear, TreeChangedEvent, TreeChangedRemove, TreeChangedReplace, TreeChangedUpdate, TreeStructuralPatch };
55
+ //# sourceMappingURL=tree-changed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-changed.d.ts","names":[],"sources":["../../../src/types/tree-changed.ts"],"mappings":";;;;;;;;;;KAsBY,oBACV,qBAAqB,sBAAsB,uBACzC,KACF,kBAAkB;UAIH,eACf,qBAAqB,sBAAsB;WAElC;;WAEA,gBAAgB,MAAM;;WAEtB;;UAGM,kBACf,qBAAqB,sBAAsB;WAElC;WACA;;;;;WAKA,yBAAyB,MAAM;;UAGzB,kBACf,qBAAqB,sBAAsB;WAElC;WACA;;WAEA,OAAO,SAAS,oBAAoB;;UAG9B,mBACf,qBAAqB,sBAAsB;WAElC;;WAEA,kBAAkB,MAAM;;WAExB,gBAAgB,MAAM;;UAGhB,iBACf,qBAAqB,sBAAsB;WAElC;;WAEA,kBAAkB,MAAM;;;;;;;;KASvB,iBACV,qBAAqB,sBAAsB,uBAEzC,eAAe,gBACf,kBAAkB,gBAClB,kBAAkB,gBAClB,mBAAmB,gBACnB,iBAAiB"}
@@ -1,2 +1,208 @@
1
- import { $ as State, A as LeaveFn, B as PluginFactory, C as PluginMethod, D as ForwardToCallback, E as DefaultRouteCallback, F as LogLevelConfig, G as SubscribeFn, H as RouteConfigUpdate, I as LoggerConfig, J as LimitsConfig, K as SubscribeState, L as Navigator, M as Listener, N as LogCallback, O as GuardFn, P as LogLevel, Q as SimpleState, R as Options, S as EventsKeys, T as DefaultParamsCallback, U as Router, V as Route, W as RouterLogger, X as Params, Y as NavigationOptions, Z as RouterError, _ as ErrorCodeValues, a as LifecycleApi, at as Unsubscribe, b as EventToNameMap, c as TreeChangedAdd, ct as RouteParams, d as TreeChangedRemove, et as StateContext, f as TreeChangedReplace, g as ErrorCodeToValueMap, h as ErrorCodeKeys, i as InterceptorFn, it as TransitionReason, j as LeaveState, k as GuardFnFactory, l as TreeChangedClear, lt as RouteTreeState, m as TreeStructuralPatch, n as DependenciesApi, nt as TransitionMeta, o as PluginApi, ot as QueryParamsMode, p as TreeChangedUpdate, q as Subscription, r as InterceptableMethodMap, rt as TransitionPhase, s as RoutesApi, st as QueryParamsOptions, t as ContextNamespaceClaim, tt as StateMetaInput, u as TreeChangedEvent, v as EventMethodMap, w as DefaultDependencies, x as EventToPluginMap, y as EventName, z as Plugin } from "./index-CAnGQpnz.js";
2
- export type { ContextNamespaceClaim, DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, DependenciesApi, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventMethodMap, EventName, EventToNameMap, EventToPluginMap, EventsKeys, ForwardToCallback, GuardFn, GuardFnFactory, InterceptableMethodMap, InterceptorFn, LeaveFn, LeaveState, LifecycleApi, LimitsConfig, Listener, LogCallback, LogLevel, LogLevelConfig, LoggerConfig, NavigationOptions, Navigator, Options, Params, Plugin, PluginApi, PluginFactory, PluginMethod, QueryParamsMode, QueryParamsOptions, Route, RouteConfigUpdate, RouteParams, RouteTreeState, Router, RouterError, RouterLogger, RoutesApi, SimpleState, State, StateContext, StateMetaInput, SubscribeFn, SubscribeState, Subscription, TransitionMeta, TransitionPhase, TransitionReason, TreeChangedAdd, TreeChangedClear, TreeChangedEvent, TreeChangedRemove, TreeChangedReplace, TreeChangedUpdate, TreeStructuralPatch, Unsubscribe };
1
+ import { QueryParamsMode, QueryParamsOptions, RouteParams, RouteTreeState } from "./types/route-node-types.js";
2
+ import { Params, RouterError, SerializedRouterState, SimpleState, State, StateMetaInput, TransitionMeta, TransitionPhase, TransitionReason, Unsubscribe } from "./types/base.js";
3
+ import { LimitsConfig } from "./types/limits.js";
4
+ import { DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ForwardToCallback, GuardFn, GuardFnFactory, LeaveFn, LeaveState, Listener, LogCallback, LogLevel, LogLevelConfig, LoggerConfig, Navigator, Options, Plugin, PluginFactory, Route, RouteConfigUpdate, Router, RouterLogger, SubscribeFn, SubscribeState, Subscription } from "./types/router.js";
5
+ import { ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventMethodMap, EventName, EventToNameMap, EventToPluginMap, EventsKeys, PluginMethod } from "./types/constants.js";
6
+ import { TreeChangedAdd, TreeChangedClear, TreeChangedEvent, TreeChangedRemove, TreeChangedReplace, TreeChangedUpdate, TreeStructuralPatch } from "./types/tree-changed.js";
7
+ import { ContextNamespaceClaim, DependenciesApi, InterceptableMethodMap, InterceptorFn, LifecycleApi, PluginApi, RoutesApi } from "./types/api.js";
8
+ //#region src/types/index.d.ts
9
+ /**
10
+ * Empty interface extended by plugins via module augmentation to declare
11
+ * typed `state.context.<namespace>` fields.
12
+ *
13
+ * @description
14
+ * Plugins add typed context namespaces by augmenting this interface:
15
+ *
16
+ * ```typescript
17
+ * declare module "@real-router/core/types" {
18
+ * interface StateContext {
19
+ * navigation: { direction: "forward" | "back" | "navigate" };
20
+ * }
21
+ * }
22
+ * ```
23
+ *
24
+ * After augmentation, `state.context.navigation` becomes typed. The intersection
25
+ * with `Record<string, unknown>` in {@link State.context} keeps the type open,
26
+ * so plugins that don't augment can still write arbitrary namespaces.
27
+ *
28
+ * @see {@link State.context}
29
+ * @see {@link ContextNamespaceClaim}
30
+ */
31
+ interface StateContext {}
32
+ /**
33
+ * Configuration options that control navigation transition behavior.
34
+ *
35
+ * @description
36
+ * NavigationOptions provides fine-grained control over how the router performs navigation
37
+ * transitions. These options affect history management, transition lifecycle execution,
38
+ * guard enforcement, and state comparison logic.
39
+ *
40
+ * All options are optional and have sensible defaults. Options can be combined to achieve
41
+ * complex navigation behaviors. These options are available to guards and event listeners.
42
+ *
43
+ * @see {@link Router.navigate} for navigation method that accepts these options
44
+ */
45
+ interface NavigationOptions {
46
+ /**
47
+ * Replace the current history entry instead of pushing a new one.
48
+ *
49
+ * @description
50
+ * When `true`, the navigation will replace the current entry in browser history instead
51
+ * of adding a new entry. This is typically used by history plugins (browser plugin) to
52
+ * control how navigation affects the browser's back/forward buttons.
53
+ *
54
+ * @default false
55
+ *
56
+ * @example
57
+ * // Redirect after login - prevent back button to login page
58
+ * router.navigate('dashboard', {}, { replace: true });
59
+ *
60
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState}
61
+ */
62
+ replace?: boolean | undefined;
63
+ /**
64
+ * Marks a `replace()` state-revalidation emit — a core-set signal, NOT a
65
+ * user-facing navigation option.
66
+ *
67
+ * @description
68
+ * `getRoutesApi(router).replace(...)` revalidates the active state against the
69
+ * new tree and emits `TRANSITION_SUCCESS` (#950). Core sets `revalidate: true`
70
+ * on that emit so a plugin's `onTransitionSuccess(toState, fromState, opts)`
71
+ * can distinguish a revalidation from a real navigation — both otherwise carry
72
+ * `replace: true` and are indistinguishable (#1201). Passing it to
73
+ * `router.navigate(...)` has no effect on the navigation itself.
74
+ *
75
+ * @default undefined
76
+ */
77
+ revalidate?: boolean | undefined;
78
+ /**
79
+ * Force reload of the current route even if states are equal.
80
+ *
81
+ * @description
82
+ * When `true`, bypasses the "same state" check that normally prevents navigation when
83
+ * the target state equals the current state. This forces a full transition lifecycle
84
+ * execution, allowing route components to reload with the same parameters.
85
+ *
86
+ * Without `reload`:
87
+ * - Navigation to current route throws SAME_STATES error
88
+ * - No lifecycle hooks execute
89
+ * - No events are fired
90
+ *
91
+ * With `reload`:
92
+ * - Full transition executes (deactivate → activate)
93
+ * - All lifecycle hooks run again
94
+ * - TRANSITION_SUCCESS event fires with same state
95
+ * - State object is recreated (new reference)
96
+ *
97
+ * @default false
98
+ *
99
+ * @example
100
+ * // Refresh current page data
101
+ * router.navigate(currentRoute.name, currentRoute.params, { reload: true });
102
+ *
103
+ * @example
104
+ * // Force re-fetch on same route with different query params
105
+ * // Note: query params are in path, not checked for equality
106
+ * router.navigate('search', { term: 'react' }, { reload: true });
107
+ *
108
+ * @see {@link force} for alternative that forces transition
109
+ * @see {@link Router.areStatesEqual} for state comparison logic
110
+ */
111
+ reload?: boolean | undefined;
112
+ /**
113
+ * Force navigation even if target state equals current state.
114
+ *
115
+ * @description
116
+ * When `true`, bypasses the "same state" equality check but still executes the full
117
+ * transition lifecycle. Similar to `reload` but can be used
118
+ * for any forced navigation scenario.
119
+ *
120
+ * Difference from `reload`:
121
+ * - `reload`: semantic meaning is "refresh current route"
122
+ * - `force`: general-purpose bypass of equality check
123
+ * - Both have identical implementation effect
124
+ *
125
+ * The equality check compares:
126
+ * - state.name (route name)
127
+ * - state.params (route parameters, shallow comparison)
128
+ *
129
+ * @default false
130
+ *
131
+ * @example
132
+ * // Force transition for tracking even if params didn't change
133
+ * router.navigate('analytics', { event: 'pageview' }, { force: true });
134
+ *
135
+ * @see {@link reload} for semantic equivalent (preferred for refresh scenarios)
136
+ */
137
+ force?: boolean | undefined;
138
+ /**
139
+ * Skip canDeactivate guards during transition.
140
+ *
141
+ * @description
142
+ * When `true`, bypasses only the canDeactivate lifecycle hooks for segments being
143
+ * deactivated. canActivate guards still execute normally. This allows
144
+ * forcing navigation away from routes with confirmation dialogs or unsaved changes.
145
+ *
146
+ * Skipped vs executed:
147
+ * ```
148
+ * // Normal transition
149
+ * deactivate(fromSegments) → activate(toSegments) → success
150
+ *
151
+ * // With forceDeactivate: true
152
+ * [skip deactivate] → activate(toSegments) → success
153
+ * ```
154
+ *
155
+ * ⚠️ Data loss risk: Bypassing canDeactivate means unsaved changes will be lost
156
+ *
157
+ * @default false
158
+ *
159
+ * @example
160
+ * // Force logout even with unsaved changes
161
+ * function forceLogout() {
162
+ * router.navigate('login', {}, {
163
+ * forceDeactivate: true,
164
+ * replace: true
165
+ * });
166
+ * }
167
+ *
168
+ * @see {@link Router.clearCanDeactivate} for programmatically clearing guards
169
+ */
170
+ forceDeactivate?: boolean | undefined;
171
+ /**
172
+ * Internal flag indicating navigation is result of a redirect.
173
+ *
174
+ * @internal
175
+ *
176
+ * @description
177
+ * Automatically set by the router when a navigation is triggered by a redirect.
178
+ * Available on `state.transition` after successful navigation (not during guard execution).
179
+ *
180
+ * @default false (auto-set by router during redirects)
181
+ *
182
+ * @example
183
+ * // Accessing redirect flag in TRANSITION_SUCCESS listener
184
+ * router.addEventListener('TRANSITION_SUCCESS', (state) => {
185
+ * if (state.transition?.redirected) {
186
+ * console.log('This navigation is from a redirect');
187
+ * }
188
+ * });
189
+ *
190
+ * @see {@link Router.navigate} for redirect handling implementation
191
+ * @see {@link NavigationOptions.redirected} for the input mechanism
192
+ */
193
+ redirected?: boolean | undefined;
194
+ /**
195
+ * Optional abort signal for cancelling the navigation.
196
+ *
197
+ * @description
198
+ * When provided, this signal can be used to cancel the navigation operation.
199
+ * If the signal is aborted, the navigation will be cancelled and any pending
200
+ * guards or transitions will be interrupted.
201
+ *
202
+ * @default undefined
203
+ */
204
+ signal?: AbortSignal | undefined;
205
+ }
206
+ //#endregion
207
+ export { type ContextNamespaceClaim, type DefaultDependencies, type DefaultParamsCallback, type DefaultRouteCallback, type DependenciesApi, type ErrorCodeKeys, type ErrorCodeToValueMap, type ErrorCodeValues, type EventMethodMap, type EventName, type EventToNameMap, type EventToPluginMap, type EventsKeys, type ForwardToCallback, type GuardFn, type GuardFnFactory, type InterceptableMethodMap, type InterceptorFn, type LeaveFn, type LeaveState, type LifecycleApi, type LimitsConfig, type Listener, type LogCallback, type LogLevel, type LogLevelConfig, type LoggerConfig, NavigationOptions, type Navigator, type Options, type Params, type Plugin, type PluginApi, type PluginFactory, type PluginMethod, type QueryParamsMode, type QueryParamsOptions, type Route, type RouteConfigUpdate, type RouteParams, type RouteTreeState, type Router, type RouterError, type RouterLogger, type RoutesApi, type SerializedRouterState, type SimpleState, type State, StateContext, type StateMetaInput, type SubscribeFn, type SubscribeState, type Subscription, type TransitionMeta, type TransitionPhase, type TransitionReason, type TreeChangedAdd, type TreeChangedClear, type TreeChangedEvent, type TreeChangedRemove, type TreeChangedReplace, type TreeChangedUpdate, type TreeStructuralPatch, type Unsubscribe };
208
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/types/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA2DiB;;;;;;;;;;;;;;UAeA;;;;;;;;;;;;;;;;;EAiBf;;;;;;;;;;;;;;;EAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCA;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCA;;;;;;;;;;;;;;;;;;;;;;;EAwBA;;;;;;;;;;;EAYA,SAAS"}