@real-router/core 0.79.0 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/dist/cjs/Router-DGUed2F4.js +2 -0
  2. package/dist/cjs/{Router-BRuC-daj.js.map → Router-DGUed2F4.js.map} +1 -1
  3. package/dist/cjs/{Router-BG5yNYUG.d.ts → Router.d.ts} +5 -4
  4. package/dist/cjs/Router.d.ts.map +1 -0
  5. package/dist/cjs/Router.js +2 -0
  6. package/dist/cjs/Router.js.map +1 -0
  7. package/dist/cjs/RouterError.d.ts +182 -0
  8. package/dist/cjs/RouterError.d.ts.map +1 -0
  9. package/dist/cjs/RouterError.js +2 -0
  10. package/dist/cjs/RouterError.js.map +1 -0
  11. package/dist/cjs/api/cloneRouter.d.ts +86 -0
  12. package/dist/cjs/api/cloneRouter.d.ts.map +1 -0
  13. package/dist/cjs/api/cloneRouter.js +2 -0
  14. package/dist/cjs/api/cloneRouter.js.map +1 -0
  15. package/dist/cjs/api/getDependenciesApi.d.ts +7 -0
  16. package/dist/cjs/api/getDependenciesApi.d.ts.map +1 -0
  17. package/dist/cjs/api/getDependenciesApi.js +2 -0
  18. package/dist/cjs/api/getDependenciesApi.js.map +1 -0
  19. package/dist/cjs/api/getLifecycleApi.d.ts +7 -0
  20. package/dist/cjs/api/getLifecycleApi.d.ts.map +1 -0
  21. package/dist/cjs/api/getLifecycleApi.js +2 -0
  22. package/dist/cjs/api/getLifecycleApi.js.map +1 -0
  23. package/dist/cjs/api/getPluginApi.d.ts +7 -0
  24. package/dist/cjs/api/getPluginApi.d.ts.map +1 -0
  25. package/dist/cjs/api/getPluginApi.js +2 -0
  26. package/dist/cjs/api/getPluginApi.js.map +1 -0
  27. package/dist/cjs/api/getRoutesApi.d.ts +7 -0
  28. package/dist/cjs/api/getRoutesApi.d.ts.map +1 -0
  29. package/dist/cjs/api/getRoutesApi.js +2 -0
  30. package/dist/cjs/api/getRoutesApi.js.map +1 -0
  31. package/dist/cjs/api/helpers.js +2 -0
  32. package/dist/cjs/api/helpers.js.map +1 -0
  33. package/dist/cjs/api/types.d.ts +9 -0
  34. package/dist/cjs/api/types.d.ts.map +1 -0
  35. package/dist/cjs/api.d.ts +8 -105
  36. package/dist/cjs/api.js +1 -2
  37. package/dist/cjs/api.js.map +1 -1
  38. package/dist/cjs/buildParamMeta-DniluAIV.js.map +1 -1
  39. package/dist/cjs/constants.d.ts +25 -0
  40. package/dist/cjs/constants.d.ts.map +1 -0
  41. package/dist/cjs/constants.js +2 -0
  42. package/dist/cjs/constants.js.map +1 -0
  43. package/dist/cjs/createRouter.d.ts +23 -0
  44. package/dist/cjs/createRouter.d.ts.map +1 -0
  45. package/dist/cjs/createRouter.js +2 -0
  46. package/dist/cjs/createRouter.js.map +1 -0
  47. package/dist/cjs/engine/builder/buildTree.js +2 -0
  48. package/dist/cjs/engine/builder/buildTree.js.map +1 -0
  49. package/dist/cjs/engine/builder/computeCaches.js +2 -0
  50. package/dist/cjs/engine/builder/computeCaches.js.map +1 -0
  51. package/dist/cjs/engine/builder/createRouteTree.js +2 -0
  52. package/dist/cjs/engine/builder/createRouteTree.js.map +1 -0
  53. package/dist/cjs/engine/builder/types.d.ts +48 -0
  54. package/dist/cjs/engine/builder/types.d.ts.map +1 -0
  55. package/dist/cjs/engine/createMatcher.d.ts +29 -0
  56. package/dist/cjs/engine/createMatcher.d.ts.map +1 -0
  57. package/dist/cjs/engine/createMatcher.js +2 -0
  58. package/dist/cjs/engine/createMatcher.js.map +1 -0
  59. package/dist/cjs/engine/operations/routeTreeToDefinitions.js +2 -0
  60. package/dist/cjs/engine/operations/routeTreeToDefinitions.js.map +1 -0
  61. package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts +16 -0
  62. package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts.map +1 -0
  63. package/dist/cjs/engine/path-matcher/SegmentMatcher.js +2 -0
  64. package/dist/cjs/engine/path-matcher/SegmentMatcher.js.map +1 -0
  65. package/dist/cjs/engine/path-matcher/buildParamMeta.js +2 -0
  66. package/dist/cjs/engine/path-matcher/buildParamMeta.js.map +1 -0
  67. package/dist/cjs/engine/path-matcher/encoding.js +2 -0
  68. package/dist/cjs/engine/path-matcher/encoding.js.map +1 -0
  69. package/dist/cjs/engine/path-matcher/parseSegment.js +2 -0
  70. package/dist/cjs/engine/path-matcher/parseSegment.js.map +1 -0
  71. package/dist/cjs/engine/path-matcher/pathUtils.js +2 -0
  72. package/dist/cjs/engine/path-matcher/pathUtils.js.map +1 -0
  73. package/dist/cjs/engine/path-matcher/percentEncoding.js +2 -0
  74. package/dist/cjs/engine/path-matcher/percentEncoding.js.map +1 -0
  75. package/dist/cjs/engine/path-matcher/registration/buildParts.js +2 -0
  76. package/dist/cjs/engine/path-matcher/registration/buildParts.js.map +1 -0
  77. package/dist/cjs/engine/path-matcher/registration/context.js +2 -0
  78. package/dist/cjs/engine/path-matcher/registration/context.js.map +1 -0
  79. package/dist/cjs/engine/path-matcher/registration/errors.js +2 -0
  80. package/dist/cjs/engine/path-matcher/registration/errors.js.map +1 -0
  81. package/dist/cjs/engine/path-matcher/registration/index.js +2 -0
  82. package/dist/cjs/engine/path-matcher/registration/index.js.map +1 -0
  83. package/dist/cjs/engine/path-matcher/registration/trie.js +2 -0
  84. package/dist/cjs/engine/path-matcher/registration/trie.js.map +1 -0
  85. package/dist/cjs/engine/path-matcher/registration/trieNodes.js +2 -0
  86. package/dist/cjs/engine/path-matcher/registration/trieNodes.js.map +1 -0
  87. package/dist/cjs/{types-DaXCTxi1.d.ts → engine/path-matcher/types.d.ts} +2 -47
  88. package/dist/cjs/engine/path-matcher/types.d.ts.map +1 -0
  89. package/dist/cjs/engine/search-params/decode.js +2 -0
  90. package/dist/cjs/engine/search-params/decode.js.map +1 -0
  91. package/dist/cjs/engine/search-params/encode.js +2 -0
  92. package/dist/cjs/engine/search-params/encode.js.map +1 -0
  93. package/dist/cjs/engine/search-params/searchParams.js +2 -0
  94. package/dist/cjs/engine/search-params/searchParams.js.map +1 -0
  95. package/dist/cjs/engine/search-params/strategies/array.js +2 -0
  96. package/dist/cjs/engine/search-params/strategies/array.js.map +1 -0
  97. package/dist/cjs/engine/search-params/strategies/boolean.js +2 -0
  98. package/dist/cjs/engine/search-params/strategies/boolean.js.map +1 -0
  99. package/dist/cjs/engine/search-params/strategies/index.js +2 -0
  100. package/dist/cjs/engine/search-params/strategies/index.js.map +1 -0
  101. package/dist/cjs/engine/search-params/strategies/null.js +2 -0
  102. package/dist/cjs/engine/search-params/strategies/null.js.map +1 -0
  103. package/dist/cjs/engine/search-params/strategies/number.js +2 -0
  104. package/dist/cjs/engine/search-params/strategies/number.js.map +1 -0
  105. package/dist/cjs/engine/search-params/types.d.ts +72 -0
  106. package/dist/cjs/engine/search-params/types.d.ts.map +1 -0
  107. package/dist/cjs/engine/search-params/utils.js +2 -0
  108. package/dist/cjs/engine/search-params/utils.js.map +1 -0
  109. package/dist/cjs/engine/validation/route-batch.d.ts +38 -0
  110. package/dist/cjs/engine/validation/route-batch.d.ts.map +1 -0
  111. package/dist/cjs/engine/validation/route-batch.js +2 -0
  112. package/dist/cjs/engine/validation/route-batch.js.map +1 -0
  113. package/dist/cjs/engine/validation/routes.js +2 -0
  114. package/dist/cjs/engine/validation/routes.js.map +1 -0
  115. package/dist/cjs/foundation/event-emitter/EventEmitter.js +2 -0
  116. package/dist/cjs/foundation/event-emitter/EventEmitter.js.map +1 -0
  117. package/dist/cjs/foundation/fsm/fsm.js +2 -0
  118. package/dist/cjs/foundation/fsm/fsm.js.map +1 -0
  119. package/dist/cjs/foundation/logger/RouterLogger.js +2 -0
  120. package/dist/cjs/foundation/logger/RouterLogger.js.map +1 -0
  121. package/dist/cjs/foundation/logger/constants.js +2 -0
  122. package/dist/cjs/foundation/logger/constants.js.map +1 -0
  123. package/dist/cjs/getNavigator.d.ts +6 -0
  124. package/dist/cjs/getNavigator.d.ts.map +1 -0
  125. package/dist/cjs/getNavigator.js +2 -0
  126. package/dist/cjs/getNavigator.js.map +1 -0
  127. package/dist/cjs/guards.js +2 -0
  128. package/dist/cjs/guards.js.map +1 -0
  129. package/dist/cjs/helpers.js +2 -0
  130. package/dist/cjs/helpers.js.map +1 -0
  131. package/dist/cjs/index.d.ts +17 -239
  132. package/dist/cjs/index.js +1 -2
  133. package/dist/cjs/internals.d.ts +98 -0
  134. package/dist/cjs/internals.d.ts.map +1 -0
  135. package/dist/cjs/internals.js +2 -0
  136. package/dist/cjs/internals.js.map +1 -0
  137. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts +10 -0
  138. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts.map +1 -0
  139. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js +2 -0
  140. package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js.map +1 -0
  141. package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js +2 -0
  142. package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js.map +1 -0
  143. package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js +2 -0
  144. package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js.map +1 -0
  145. package/dist/cjs/namespaces/NavigationNamespace/constants.js +2 -0
  146. package/dist/cjs/namespaces/NavigationNamespace/constants.js.map +1 -0
  147. package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js +2 -0
  148. package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js.map +1 -0
  149. package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js +2 -0
  150. package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js.map +1 -0
  151. package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js +2 -0
  152. package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js.map +1 -0
  153. package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js +2 -0
  154. package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js.map +1 -0
  155. package/dist/cjs/namespaces/OptionsNamespace/constants.js +2 -0
  156. package/dist/cjs/namespaces/OptionsNamespace/constants.js.map +1 -0
  157. package/dist/cjs/namespaces/OptionsNamespace/helpers.js +2 -0
  158. package/dist/cjs/namespaces/OptionsNamespace/helpers.js.map +1 -0
  159. package/dist/cjs/namespaces/OptionsNamespace/validators.js +2 -0
  160. package/dist/cjs/namespaces/OptionsNamespace/validators.js.map +1 -0
  161. package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js +2 -0
  162. package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js.map +1 -0
  163. package/dist/cjs/namespaces/PluginsNamespace/constants.js +2 -0
  164. package/dist/cjs/namespaces/PluginsNamespace/constants.js.map +1 -0
  165. package/dist/cjs/namespaces/PluginsNamespace/validators.js +2 -0
  166. package/dist/cjs/namespaces/PluginsNamespace/validators.js.map +1 -0
  167. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts +174 -0
  168. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts.map +1 -0
  169. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js +2 -0
  170. package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js.map +1 -0
  171. package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts +17 -0
  172. package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts.map +1 -0
  173. package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js +2 -0
  174. package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js.map +1 -0
  175. package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js +2 -0
  176. package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js.map +1 -0
  177. package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js +2 -0
  178. package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js.map +1 -0
  179. package/dist/cjs/namespaces/RoutesNamespace/constants.js +2 -0
  180. package/dist/cjs/namespaces/RoutesNamespace/constants.js.map +1 -0
  181. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts +5 -0
  182. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts.map +1 -0
  183. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js +2 -0
  184. package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js.map +1 -0
  185. package/dist/cjs/namespaces/RoutesNamespace/helpers.js +2 -0
  186. package/dist/cjs/namespaces/RoutesNamespace/helpers.js.map +1 -0
  187. package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js +2 -0
  188. package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js.map +1 -0
  189. package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts +42 -0
  190. package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts.map +1 -0
  191. package/dist/cjs/namespaces/RoutesNamespace/routesStore.js +2 -0
  192. package/dist/cjs/namespaces/RoutesNamespace/routesStore.js.map +1 -0
  193. package/dist/cjs/namespaces/RoutesNamespace/types.d.ts +57 -0
  194. package/dist/cjs/namespaces/RoutesNamespace/types.d.ts.map +1 -0
  195. package/dist/cjs/namespaces/StateNamespace/StateNamespace.js +2 -0
  196. package/dist/cjs/namespaces/StateNamespace/StateNamespace.js.map +1 -0
  197. package/dist/cjs/namespaces/StateNamespace/helpers.js +2 -0
  198. package/dist/cjs/namespaces/StateNamespace/helpers.js.map +1 -0
  199. package/dist/cjs/routerFSM.js +2 -0
  200. package/dist/cjs/routerFSM.js.map +1 -0
  201. package/dist/cjs/stateMetaStore.js +2 -0
  202. package/dist/cjs/stateMetaStore.js.map +1 -0
  203. package/dist/cjs/transitionPath.js +2 -0
  204. package/dist/cjs/transitionPath.js.map +1 -0
  205. package/dist/cjs/{RouterValidator-CZ8kPkrI.d.ts → types/RouterValidator.d.ts} +2 -2
  206. package/dist/cjs/types/RouterValidator.d.ts.map +1 -0
  207. package/dist/cjs/types/api.d.ts +184 -0
  208. package/dist/cjs/types/api.d.ts.map +1 -0
  209. package/dist/cjs/types/base.d.ts +95 -0
  210. package/dist/cjs/types/base.d.ts.map +1 -0
  211. package/dist/cjs/types/constants.d.ts +72 -0
  212. package/dist/cjs/types/constants.d.ts.map +1 -0
  213. package/dist/cjs/types/internal.d.ts +9 -0
  214. package/dist/cjs/types/internal.d.ts.map +1 -0
  215. package/dist/cjs/types/limits.d.ts +45 -0
  216. package/dist/cjs/types/limits.d.ts.map +1 -0
  217. package/dist/cjs/types/route-node-types.d.ts +46 -0
  218. package/dist/cjs/types/route-node-types.d.ts.map +1 -0
  219. package/dist/cjs/types/router.d.ts +313 -0
  220. package/dist/cjs/types/router.d.ts.map +1 -0
  221. package/dist/cjs/types/tree-changed.d.ts +55 -0
  222. package/dist/cjs/types/tree-changed.d.ts.map +1 -0
  223. package/dist/cjs/types.d.ts +208 -2
  224. package/dist/cjs/types.d.ts.map +1 -0
  225. package/dist/cjs/validation.d.ts +6 -518
  226. package/dist/cjs/validation.js +1 -2
  227. package/dist/cjs/wiring/wireNamespaces.js +2 -0
  228. package/dist/cjs/wiring/wireNamespaces.js.map +1 -0
  229. package/dist/esm/Router-Bk6PfSE8.mjs +2 -0
  230. package/dist/esm/{Router-DikzugaD.mjs.map → Router-Bk6PfSE8.mjs.map} +1 -1
  231. package/dist/esm/{Router-Cy75qbgU.d.mts → Router.d.mts} +5 -4
  232. package/dist/esm/Router.d.mts.map +1 -0
  233. package/dist/esm/RouterError.d.mts +182 -0
  234. package/dist/esm/RouterError.d.mts.map +1 -0
  235. package/dist/esm/api/cloneRouter.d.mts +86 -0
  236. package/dist/esm/api/cloneRouter.d.mts.map +1 -0
  237. package/dist/esm/api/getDependenciesApi.d.mts +7 -0
  238. package/dist/esm/api/getDependenciesApi.d.mts.map +1 -0
  239. package/dist/esm/api/getLifecycleApi.d.mts +7 -0
  240. package/dist/esm/api/getLifecycleApi.d.mts.map +1 -0
  241. package/dist/esm/api/getPluginApi.d.mts +7 -0
  242. package/dist/esm/api/getPluginApi.d.mts.map +1 -0
  243. package/dist/esm/api/getRoutesApi.d.mts +7 -0
  244. package/dist/esm/api/getRoutesApi.d.mts.map +1 -0
  245. package/dist/esm/api/types.d.mts +9 -0
  246. package/dist/esm/api/types.d.mts.map +1 -0
  247. package/dist/esm/api.d.mts +8 -105
  248. package/dist/esm/api.mjs +1 -1
  249. package/dist/esm/api.mjs.map +1 -1
  250. package/dist/esm/buildParamMeta-bOLhLF9h.mjs.map +1 -1
  251. package/dist/esm/constants.d.mts +25 -0
  252. package/dist/esm/constants.d.mts.map +1 -0
  253. package/dist/esm/createRouter.d.mts +23 -0
  254. package/dist/esm/createRouter.d.mts.map +1 -0
  255. package/dist/esm/engine/builder/types.d.mts +48 -0
  256. package/dist/esm/engine/builder/types.d.mts.map +1 -0
  257. package/dist/esm/engine/createMatcher.d.mts +29 -0
  258. package/dist/esm/engine/createMatcher.d.mts.map +1 -0
  259. package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts +16 -0
  260. package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts.map +1 -0
  261. package/dist/esm/{types-DaXCTxi1.d.mts → engine/path-matcher/types.d.mts} +2 -47
  262. package/dist/esm/engine/path-matcher/types.d.mts.map +1 -0
  263. package/dist/esm/engine/search-params/types.d.mts +72 -0
  264. package/dist/esm/engine/search-params/types.d.mts.map +1 -0
  265. package/dist/esm/engine/validation/route-batch.d.mts +38 -0
  266. package/dist/esm/engine/validation/route-batch.d.mts.map +1 -0
  267. package/dist/esm/getNavigator.d.mts +6 -0
  268. package/dist/esm/getNavigator.d.mts.map +1 -0
  269. package/dist/esm/index.d.mts +17 -239
  270. package/dist/esm/index.mjs +1 -1
  271. package/dist/esm/internals.d.mts +98 -0
  272. package/dist/esm/internals.d.mts.map +1 -0
  273. package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts +10 -0
  274. package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts.map +1 -0
  275. package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts +174 -0
  276. package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts.map +1 -0
  277. package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts +17 -0
  278. package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts.map +1 -0
  279. package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts +5 -0
  280. package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts.map +1 -0
  281. package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts +42 -0
  282. package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts.map +1 -0
  283. package/dist/esm/namespaces/RoutesNamespace/types.d.mts +57 -0
  284. package/dist/esm/namespaces/RoutesNamespace/types.d.mts.map +1 -0
  285. package/dist/esm/{RouterValidator-CZ8kPkrI.d.mts → types/RouterValidator.d.mts} +2 -2
  286. package/dist/esm/types/RouterValidator.d.mts.map +1 -0
  287. package/dist/esm/types/api.d.mts +184 -0
  288. package/dist/esm/types/api.d.mts.map +1 -0
  289. package/dist/esm/types/base.d.mts +95 -0
  290. package/dist/esm/types/base.d.mts.map +1 -0
  291. package/dist/esm/types/constants.d.mts +72 -0
  292. package/dist/esm/types/constants.d.mts.map +1 -0
  293. package/dist/esm/types/internal.d.mts +9 -0
  294. package/dist/esm/types/internal.d.mts.map +1 -0
  295. package/dist/esm/types/limits.d.mts +45 -0
  296. package/dist/esm/types/limits.d.mts.map +1 -0
  297. package/dist/esm/types/route-node-types.d.mts +46 -0
  298. package/dist/esm/types/route-node-types.d.mts.map +1 -0
  299. package/dist/esm/types/router.d.mts +313 -0
  300. package/dist/esm/types/router.d.mts.map +1 -0
  301. package/dist/esm/types/tree-changed.d.mts +55 -0
  302. package/dist/esm/types/tree-changed.d.mts.map +1 -0
  303. package/dist/esm/types.d.mts +208 -2
  304. package/dist/esm/types.d.mts.map +1 -0
  305. package/dist/esm/validation.d.mts +6 -518
  306. package/package.json +5 -14
  307. package/dist/cjs/Router-BG5yNYUG.d.ts.map +0 -1
  308. package/dist/cjs/Router-BRuC-daj.js +0 -2
  309. package/dist/cjs/RouterValidator-CZ8kPkrI.d.ts.map +0 -1
  310. package/dist/cjs/api.d.ts.map +0 -1
  311. package/dist/cjs/cloneRouter-3AOUeQ8M.js +0 -2
  312. package/dist/cjs/cloneRouter-3AOUeQ8M.js.map +0 -1
  313. package/dist/cjs/index-CAnGQpnz.d.ts +0 -974
  314. package/dist/cjs/index-CAnGQpnz.d.ts.map +0 -1
  315. package/dist/cjs/index-DDrryY2U.d.ts +0 -309
  316. package/dist/cjs/index-DDrryY2U.d.ts.map +0 -1
  317. package/dist/cjs/index.d.ts.map +0 -1
  318. package/dist/cjs/types-DaXCTxi1.d.ts.map +0 -1
  319. package/dist/cjs/utils.d.ts +0 -2
  320. package/dist/cjs/utils.js +0 -2
  321. package/dist/cjs/utils.js.map +0 -1
  322. package/dist/cjs/validation.d.ts.map +0 -1
  323. package/dist/esm/Router-Cy75qbgU.d.mts.map +0 -1
  324. package/dist/esm/Router-DikzugaD.mjs +0 -2
  325. package/dist/esm/RouterValidator-CZ8kPkrI.d.mts.map +0 -1
  326. package/dist/esm/api.d.mts.map +0 -1
  327. package/dist/esm/cloneRouter-CAh5vA3l.mjs +0 -2
  328. package/dist/esm/cloneRouter-CAh5vA3l.mjs.map +0 -1
  329. package/dist/esm/index-CAnGQpnz.d.mts +0 -974
  330. package/dist/esm/index-CAnGQpnz.d.mts.map +0 -1
  331. package/dist/esm/index-DnSU6huX.d.mts +0 -309
  332. package/dist/esm/index-DnSU6huX.d.mts.map +0 -1
  333. package/dist/esm/index.d.mts.map +0 -1
  334. package/dist/esm/types-DaXCTxi1.d.mts.map +0 -1
  335. package/dist/esm/utils.d.mts +0 -2
  336. package/dist/esm/utils.mjs +0 -2
  337. package/dist/esm/utils.mjs.map +0 -1
  338. package/dist/esm/validation.d.mts.map +0 -1
@@ -1,5 +1,6 @@
1
- import { $ as State, A as LeaveFn, B as PluginFactory, G as SubscribeFn, R as Options, U as Router$1, V as Route, X as Params, Y as NavigationOptions, at as Unsubscribe, w as DefaultDependencies } from "./index-CAnGQpnz.mjs";
2
-
1
+ import { Params, State, Unsubscribe } from "./types/base.mjs";
2
+ import { DefaultDependencies, LeaveFn, Options, PluginFactory, Route, Router as Router$1, SubscribeFn } from "./types/router.mjs";
3
+ import { NavigationOptions } from "./types.mjs";
3
4
  //#region src/Router.d.ts
4
5
  /**
5
6
  * Router class with integrated namespace architecture.
@@ -46,5 +47,5 @@ declare class Router<Dependencies extends DefaultDependencies = DefaultDependenc
46
47
  navigateToNotFound(path?: string): State;
47
48
  }
48
49
  //#endregion
49
- export { Router as t };
50
- //# sourceMappingURL=Router-Cy75qbgU.d.mts.map
50
+ export { Router };
51
+ //# sourceMappingURL=Router.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.d.mts","names":[],"sources":["../../src/Router.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;cA4Fa,OACX,qBAAqB,sBAAsB,gCAChC,SAAgB;;GAC1B;;;;;;EA4CC,YAAA,SAAQ,MAAM,iBACd,UAAS,QAAQ,UACjB,eAAc;EAyThB,cACE,cACA,SAAS,QACT,0BACA;EAgCF,UAAU,eAAe,SAAS;EAalC,SAAS,UAAU,SAAS,WAAW,MAAM;EAI7C,oBAAoB;EAIpB,eACE,QAAQ,mBACR,QAAQ,mBACR;EAWF,iBACE,oBACE,SAAS,OAAO,YAAY;EAUhC;EAIA,MAAM,oBAAoB,QAAQ;EA4DlC;EAyBA;EAsDA,cAAc,cAAc,SAAS;EAiErC,aACK,UAAU,cAAc,8CAC1B;EAyCH,UAAU,UAAU,cAAc;EAMlC,eAAe,UAAU,UAAU;EAMnC;EAQA,SACE,mBACA,cAAc,QACd,UAAU,oBACT,QAAQ;EA8BX,kBAAkB,UAAU,oBAAoB,QAAQ;EA2BxD,mBAAmB,gBAAgB"}
@@ -0,0 +1,182 @@
1
+ //#region src/RouterError.d.ts
2
+ declare class RouterError extends Error {
3
+ [key: string]: unknown;
4
+ readonly segment: string | undefined;
5
+ readonly path: string | undefined;
6
+ code: string;
7
+ /**
8
+ * Creates a new RouterError instance.
9
+ *
10
+ * The options object accepts built-in fields (message, segment, path)
11
+ * and any additional custom fields, which will all be attached to the error instance.
12
+ *
13
+ * @param code - The error code (e.g., "ROUTE_NOT_FOUND", "CANNOT_ACTIVATE")
14
+ * @param options - Optional configuration object
15
+ * @param options.message - Custom error message (defaults to code if not provided)
16
+ * @param options.segment - The route segment where the error occurred
17
+ * @param options.path - The full path where the error occurred
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // Basic error
22
+ * const err1 = new RouterError("ROUTE_NOT_FOUND");
23
+ *
24
+ * // Error with custom message
25
+ * const err2 = new RouterError("ERR", { message: "Something went wrong" });
26
+ *
27
+ * // Error with context and custom fields
28
+ * const err3 = new RouterError("CANNOT_ACTIVATE", {
29
+ * message: "Insufficient permissions",
30
+ * segment: "admin",
31
+ * path: "/admin/users",
32
+ * userId: "123" // custom field
33
+ * });
34
+ * ```
35
+ */
36
+ constructor(code: string, { message, segment, path, ...rest }?: {
37
+ [key: string]: unknown;
38
+ message?: string | undefined;
39
+ segment?: string | undefined;
40
+ path?: string | undefined;
41
+ });
42
+ /**
43
+ * Updates the error code and conditionally updates the message.
44
+ *
45
+ * If the current message is one of the standard error code values
46
+ * (e.g., "ROUTE_NOT_FOUND", "SAME_STATES"), it will be replaced with the new code.
47
+ * This allows keeping error messages in sync with codes when using standard error codes.
48
+ *
49
+ * If the message is custom (not a standard error code), it will be preserved.
50
+ *
51
+ * @param newCode - The new error code to set
52
+ *
53
+ * @example
54
+ * // Message follows code (standard error code as message)
55
+ * const err = new RouterError("ROUTE_NOT_FOUND", { message: "ROUTE_NOT_FOUND" });
56
+ * err.setCode("CUSTOM_ERROR"); // message becomes "CUSTOM_ERROR"
57
+ *
58
+ * @example
59
+ * // Custom message is preserved
60
+ * const err = new RouterError("ERR", { message: "Custom error message" });
61
+ * err.setCode("NEW_CODE"); // message stays "Custom error message"
62
+ */
63
+ setCode(newCode: string): void;
64
+ /**
65
+ * Copies properties from another Error instance to this RouterError.
66
+ *
67
+ * This method updates the message, cause, and stack trace from the provided error.
68
+ * Useful for wrapping native errors while preserving error context.
69
+ *
70
+ * @param err - The Error instance to copy properties from
71
+ * @throws {TypeError} If err is null or undefined
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * const routerErr = new RouterError("TRANSITION_ERR");
76
+ * try {
77
+ * // some operation that might fail
78
+ * } catch (nativeErr) {
79
+ * routerErr.setErrorInstance(nativeErr);
80
+ * throw routerErr;
81
+ * }
82
+ * ```
83
+ */
84
+ setErrorInstance(err: Error): void;
85
+ /**
86
+ * Adds custom fields to the error object.
87
+ *
88
+ * This method allows attaching arbitrary data to the error for debugging or logging purposes.
89
+ * All fields become accessible as properties on the error instance and are included in JSON serialization.
90
+ *
91
+ * Reserved method names (setCode, setErrorInstance, setAdditionalFields, hasField, getField, toJSON)
92
+ * are automatically filtered out to prevent accidental overwriting of class methods.
93
+ *
94
+ * @param fields - Object containing custom fields to add to the error
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const err = new RouterError("CANNOT_ACTIVATE");
99
+ * err.setAdditionalFields({
100
+ * userId: "123",
101
+ * attemptedRoute: "/admin",
102
+ * reason: "insufficient permissions"
103
+ * });
104
+ *
105
+ * console.log(err.userId); // "123"
106
+ * console.log(JSON.stringify(err)); // includes all custom fields
107
+ * ```
108
+ */
109
+ setAdditionalFields(fields: Record<string, unknown>): void;
110
+ /**
111
+ * Checks if a custom field exists on the error object.
112
+ *
113
+ * This method checks for both custom fields added via setAdditionalFields()
114
+ * and built-in fields (code, message, segment, etc.).
115
+ *
116
+ * @param key - The field name to check
117
+ * @returns `true` if the field exists, `false` otherwise
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const err = new RouterError("ERR", { segment: "users" });
122
+ * err.setAdditionalFields({ userId: "123" });
123
+ *
124
+ * err.hasField("userId"); // true
125
+ * err.hasField("segment"); // true
126
+ * err.hasField("unknown"); // false
127
+ * ```
128
+ */
129
+ hasField(key: string): boolean;
130
+ /**
131
+ * Retrieves a custom field value from the error object.
132
+ *
133
+ * This method can access both custom fields and built-in fields.
134
+ * Returns `undefined` if the field doesn't exist.
135
+ *
136
+ * @param key - The field name to retrieve
137
+ * @returns The field value, or `undefined` if it doesn't exist
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const err = new RouterError("ERR");
142
+ * err.setAdditionalFields({ userId: "123", role: "admin" });
143
+ *
144
+ * err.getField("userId"); // "123"
145
+ * err.getField("role"); // "admin"
146
+ * err.getField("code"); // "ERR" (built-in field)
147
+ * err.getField("unknown"); // undefined
148
+ * ```
149
+ */
150
+ getField(key: string): unknown;
151
+ /**
152
+ * Serializes the error to a JSON-compatible object.
153
+ *
154
+ * This method is automatically called by JSON.stringify() and includes:
155
+ * - Built-in fields: code, message, segment (if set), path (if set)
156
+ * - All custom fields added via setAdditionalFields() or constructor
157
+ * - Excludes: stack trace (for security/cleanliness)
158
+ *
159
+ * @returns A plain object representation of the error, suitable for JSON serialization
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * const err = new RouterError("ROUTE_NOT_FOUND", {
164
+ * message: "Route not found",
165
+ * path: "/admin/users/123"
166
+ * });
167
+ * err.setAdditionalFields({ userId: "123" });
168
+ *
169
+ * JSON.stringify(err);
170
+ * // {
171
+ * // "code": "ROUTE_NOT_FOUND",
172
+ * // "message": "Route not found",
173
+ * // "path": "/admin/users/123",
174
+ * // "userId": "123"
175
+ * // }
176
+ * ```
177
+ */
178
+ toJSON(): Record<string, unknown>;
179
+ }
180
+ //#endregion
181
+ export { RouterError };
182
+ //# sourceMappingURL=RouterError.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterError.d.mts","names":[],"sources":["../../src/RouterError.ts"],"mappings":";cAqBa,oBAAoB;GAC9B;WAIQ;WACA;EAIT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCE,YAAA,gBAEE,SACA,SACA,SACG;KAEF;IACD;IACA;IACA;;;;;;;;;;;;;;;;;;;;;;;EAkDJ,QAAQ;;;;;;;;;;;;;;;;;;;;;EA6BR,iBAAiB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;EAqCtB,oBAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;EAkC5B,SAAS;;;;;;;;;;;;;;;;;;;;;EAwBT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BT,UAAU"}
@@ -0,0 +1,86 @@
1
+ import { DefaultDependencies, LoggerConfig, Router } from "../types/router.mjs";
2
+ import { Router as Router$1 } from "../Router.mjs";
3
+ //#region src/api/cloneRouter.d.ts
4
+ /**
5
+ * Per-clone overrides beyond dependencies.
6
+ */
7
+ interface CloneOptions {
8
+ /**
9
+ * Per-clone logger config override, merged **over** the base router's resolved
10
+ * logger config. Primary use: per-request `traceId` in SSR — a fresh
11
+ * `callback` closed over the request id, while `level` inherits the base.
12
+ * Omitted keys inherit the base (level / callback / callbackIgnoresLevel).
13
+ *
14
+ * Override is by **config**, not a logger instance: `RouterLogger` is
15
+ * core-internal (only its `{ log, warn, error }` interface is public), so
16
+ * nothing outside core constructs one — configuration is the whole surface.
17
+ */
18
+ logger?: Partial<LoggerConfig>;
19
+ }
20
+ /**
21
+ * Build an independent router instance that shares the route tree, options,
22
+ * lifecycle guards, and plugin factories of `router`. The primary use case
23
+ * is **SSR multi-tenancy** — one base router per process, one clone per
24
+ * request.
25
+ *
26
+ * @param router - Source router (must not be disposed).
27
+ * @param dependencies - Optional per-clone overrides merged on top of the
28
+ * base router's dependencies. Always **fresh per call** in the documented
29
+ * SSR pattern: pass per-request state here, never store it in the base.
30
+ *
31
+ * @remarks
32
+ *
33
+ * **Dependency merge — shallow by design.** `base.dependencies` are spread
34
+ * into the clone via `{ ...sourceDeps, ...dependencies }`. Top-level keys
35
+ * are new objects, but **values are shared by reference**: a `Map`, `Set`,
36
+ * class instance, function, or nested plain object stored in
37
+ * `base.dependencies` is the **same instance** in every clone. Mutations
38
+ * in one clone are visible in the base and in every sibling clone.
39
+ *
40
+ * This is intentional. `structuredClone` of dep values is **not** applied
41
+ * because it would:
42
+ * - strip class prototypes (`new DbClient()` → plain object, methods lost)
43
+ * - reject functions and symbols (`DataCloneError`)
44
+ * - fragment singleton pools (one connection pool per request — pool
45
+ * semantics destroyed)
46
+ * - reject circular references
47
+ *
48
+ * **SSR rule of thumb.** Place values in `base.dependencies` according to
49
+ * their lifecycle:
50
+ *
51
+ * - **Singletons / shared services** → `base.dependencies`. Examples: DB
52
+ * client, connection pool, logger, config, feature-flag client. Process-
53
+ * wide pooling depends on sharing these by reference.
54
+ * - **Per-request state** → the `dependencies` override parameter (or
55
+ * `createRequestScope`'s `deps` argument). Examples: `currentUser`,
56
+ * `traceId`, `sessionId`, `abortSignal`. The override is applied last,
57
+ * so it wins over base keys; pass a fresh object per call.
58
+ *
59
+ * Cross-request data leaks are **only possible** when per-request mutable
60
+ * state is incorrectly placed in `base.dependencies`. The override slot is
61
+ * the safe channel.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * // Server boot — singletons only
66
+ * const base = createRouter(routes, options, {
67
+ * db: new DbClient(dbUrl),
68
+ * logger,
69
+ * });
70
+ *
71
+ * // Per request — fresh override per call
72
+ * const clone = cloneRouter(base, {
73
+ * currentUser,
74
+ * traceId,
75
+ * });
76
+ * // clone.deps.db === base.deps.db ✓ shared pool (intentional)
77
+ * // clone.deps.currentUser ✓ unique per request
78
+ * ```
79
+ *
80
+ * @see createRequestScope — `@real-router/ssr-utils` SSR helper that
81
+ * wraps this function and injects `abortSignal` automatically.
82
+ */
83
+ declare function cloneRouter<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>, dependencies?: Dependencies, opts?: CloneOptions): Router$1<Dependencies>;
84
+ //#endregion
85
+ export { CloneOptions, cloneRouter };
86
+ //# sourceMappingURL=cloneRouter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneRouter.d.mts","names":[],"sources":["../../../src/api/cloneRouter.ts"],"mappings":";;;;;;UAkBiB;;;;;;;;;;;EAWf,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEH,YACd,qBAAqB,sBAAsB,qBAE3C,QAAQ,OAAO,eACf,eAAe,cACf,OAAO,eACN,SAAY"}
@@ -0,0 +1,7 @@
1
+ import { DefaultDependencies, Router } from "../types/router.mjs";
2
+ import { DependenciesApi } from "../types/api.mjs";
3
+ //#region src/api/getDependenciesApi.d.ts
4
+ declare function getDependenciesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): DependenciesApi<Dependencies>;
5
+ //#endregion
6
+ export { getDependenciesApi };
7
+ //# sourceMappingURL=getDependenciesApi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDependenciesApi.d.mts","names":[],"sources":["../../../src/api/getDependenciesApi.ts"],"mappings":";;;iBA8EgB,mBACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB,gBAAgB"}
@@ -0,0 +1,7 @@
1
+ import { DefaultDependencies, Router } from "../types/router.mjs";
2
+ import { LifecycleApi } from "../types/api.mjs";
3
+ //#region src/api/getLifecycleApi.d.ts
4
+ declare function getLifecycleApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): LifecycleApi<Dependencies>;
5
+ //#endregion
6
+ export { getLifecycleApi };
7
+ //# sourceMappingURL=getLifecycleApi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLifecycleApi.d.mts","names":[],"sources":["../../../src/api/getLifecycleApi.ts"],"mappings":";;;iBAMgB,gBACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB,aAAa"}
@@ -0,0 +1,7 @@
1
+ import { DefaultDependencies, Router } from "../types/router.mjs";
2
+ import { PluginApi } from "./types.mjs";
3
+ //#region src/api/getPluginApi.d.ts
4
+ declare function getPluginApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): PluginApi;
5
+ //#endregion
6
+ export { getPluginApi };
7
+ //# sourceMappingURL=getPluginApi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPluginApi.d.mts","names":[],"sources":["../../../src/api/getPluginApi.ts"],"mappings":";;;iBAsBgB,aACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB"}
@@ -0,0 +1,7 @@
1
+ import { DefaultDependencies, Router } from "../types/router.mjs";
2
+ import { RoutesApi } from "../types/api.mjs";
3
+ //#region src/api/getRoutesApi.d.ts
4
+ declare function getRoutesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): RoutesApi<Dependencies>;
5
+ //#endregion
6
+ export { getRoutesApi };
7
+ //# sourceMappingURL=getRoutesApi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRoutesApi.d.mts","names":[],"sources":["../../../src/api/getRoutesApi.ts"],"mappings":";;;iBAkoBgB,aACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB,UAAU"}
@@ -0,0 +1,9 @@
1
+ import { RouteTree } from "../engine/builder/types.mjs";
2
+ import { DependenciesApi, LifecycleApi, PluginApi as PluginApi$1, RoutesApi } from "../types/api.mjs";
3
+ //#region src/api/types.d.ts
4
+ interface PluginApi extends Omit<PluginApi$1, "getTree"> {
5
+ getTree: () => RouteTree;
6
+ }
7
+ //#endregion
8
+ export { type DependenciesApi, type LifecycleApi, PluginApi, type RoutesApi };
9
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/api/types.ts"],"mappings":";;;UAGiB,kBAAkB,KAAK;EACtC,eAAe"}
@@ -1,105 +1,8 @@
1
- import { n as RouteTree } from "./types-DaXCTxi1.mjs";
2
- import { I as LoggerConfig, U as Router, a as LifecycleApi, n as DependenciesApi, o as PluginApi$1, s as RoutesApi, w as DefaultDependencies } from "./index-CAnGQpnz.mjs";
3
- import { t as Router$1 } from "./Router-Cy75qbgU.mjs";
4
-
5
- //#region src/api/types.d.ts
6
- interface PluginApi extends Omit<PluginApi$1, "getTree"> {
7
- getTree: () => RouteTree;
8
- }
9
- //#endregion
10
- //#region src/api/getPluginApi.d.ts
11
- declare function getPluginApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): PluginApi;
12
- //#endregion
13
- //#region src/api/getRoutesApi.d.ts
14
- declare function getRoutesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): RoutesApi<Dependencies>;
15
- //#endregion
16
- //#region src/api/getDependenciesApi.d.ts
17
- declare function getDependenciesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): DependenciesApi<Dependencies>;
18
- //#endregion
19
- //#region src/api/getLifecycleApi.d.ts
20
- declare function getLifecycleApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): LifecycleApi<Dependencies>;
21
- //#endregion
22
- //#region src/api/cloneRouter.d.ts
23
- /**
24
- * Per-clone overrides beyond dependencies.
25
- */
26
- interface CloneOptions {
27
- /**
28
- * Per-clone logger config override, merged **over** the base router's resolved
29
- * logger config. Primary use: per-request `traceId` in SSR — a fresh
30
- * `callback` closed over the request id, while `level` inherits the base.
31
- * Omitted keys inherit the base (level / callback / callbackIgnoresLevel).
32
- *
33
- * Override is by **config**, not a logger instance: `RouterLogger` is
34
- * core-internal (only its `{ log, warn, error }` interface is public), so
35
- * nothing outside core constructs one — configuration is the whole surface.
36
- */
37
- logger?: Partial<LoggerConfig>;
38
- }
39
- /**
40
- * Build an independent router instance that shares the route tree, options,
41
- * lifecycle guards, and plugin factories of `router`. The primary use case
42
- * is **SSR multi-tenancy** — one base router per process, one clone per
43
- * request.
44
- *
45
- * @param router - Source router (must not be disposed).
46
- * @param dependencies - Optional per-clone overrides merged on top of the
47
- * base router's dependencies. Always **fresh per call** in the documented
48
- * SSR pattern: pass per-request state here, never store it in the base.
49
- *
50
- * @remarks
51
- *
52
- * **Dependency merge — shallow by design.** `base.dependencies` are spread
53
- * into the clone via `{ ...sourceDeps, ...dependencies }`. Top-level keys
54
- * are new objects, but **values are shared by reference**: a `Map`, `Set`,
55
- * class instance, function, or nested plain object stored in
56
- * `base.dependencies` is the **same instance** in every clone. Mutations
57
- * in one clone are visible in the base and in every sibling clone.
58
- *
59
- * This is intentional. `structuredClone` of dep values is **not** applied
60
- * because it would:
61
- * - strip class prototypes (`new DbClient()` → plain object, methods lost)
62
- * - reject functions and symbols (`DataCloneError`)
63
- * - fragment singleton pools (one connection pool per request — pool
64
- * semantics destroyed)
65
- * - reject circular references
66
- *
67
- * **SSR rule of thumb.** Place values in `base.dependencies` according to
68
- * their lifecycle:
69
- *
70
- * - **Singletons / shared services** → `base.dependencies`. Examples: DB
71
- * client, connection pool, logger, config, feature-flag client. Process-
72
- * wide pooling depends on sharing these by reference.
73
- * - **Per-request state** → the `dependencies` override parameter (or
74
- * `createRequestScope`'s `deps` argument). Examples: `currentUser`,
75
- * `traceId`, `sessionId`, `abortSignal`. The override is applied last,
76
- * so it wins over base keys; pass a fresh object per call.
77
- *
78
- * Cross-request data leaks are **only possible** when per-request mutable
79
- * state is incorrectly placed in `base.dependencies`. The override slot is
80
- * the safe channel.
81
- *
82
- * @example
83
- * ```typescript
84
- * // Server boot — singletons only
85
- * const base = createRouter(routes, options, {
86
- * db: new DbClient(dbUrl),
87
- * logger,
88
- * });
89
- *
90
- * // Per request — fresh override per call
91
- * const clone = cloneRouter(base, {
92
- * currentUser,
93
- * traceId,
94
- * });
95
- * // clone.deps.db === base.deps.db ✓ shared pool (intentional)
96
- * // clone.deps.currentUser ✓ unique per request
97
- * ```
98
- *
99
- * @see createRequestScope — `@real-router/core/utils` SSR helper that
100
- * wraps this function and injects `abortSignal` automatically.
101
- */
102
- declare function cloneRouter<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>, dependencies?: Dependencies, opts?: CloneOptions): Router$1<Dependencies>;
103
- //#endregion
104
- export { type DependenciesApi, type LifecycleApi, type PluginApi, type RoutesApi, cloneRouter, getDependenciesApi, getLifecycleApi, getPluginApi, getRoutesApi };
105
- //# sourceMappingURL=api.d.mts.map
1
+ import { DependenciesApi, LifecycleApi, RoutesApi } from "./types/api.mjs";
2
+ import { PluginApi } from "./api/types.mjs";
3
+ import { getPluginApi } from "./api/getPluginApi.mjs";
4
+ import { getRoutesApi } from "./api/getRoutesApi.mjs";
5
+ import { getDependenciesApi } from "./api/getDependenciesApi.mjs";
6
+ import { getLifecycleApi } from "./api/getLifecycleApi.mjs";
7
+ import { cloneRouter } from "./api/cloneRouter.mjs";
8
+ export { type DependenciesApi, type LifecycleApi, type PluginApi, type RoutesApi, cloneRouter, getDependenciesApi, getLifecycleApi, getPluginApi, getRoutesApi };
package/dist/esm/api.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{S as e,a as t,b as n,c as r,d as i,f as a,h as o,i as s,l as c,m as l,o as u,p as d,r as f,s as p,u as m,v as h,y as g}from"./Router-DikzugaD.mjs";import{u as _}from"./buildParamMeta-bOLhLF9h.mjs";import{a as v,i as y,n as b,r as x,t as S}from"./cloneRouter-CAh5vA3l.mjs";function C(e,t,n,r){if(t){let n=t===e,i=t.startsWith(`${e}.`);if(n||i){let i=n?``:` (current: "${t}")`;return r.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return n&&r.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function w(e,t){return e?(t.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}const T=Object.freeze({replace:!0,revalidate:!0});function E(e,t,n,r){let i=t=>t===e||t.startsWith(`${e}.`);h(t.decoders,i),h(t.encoders,i),h(t.defaultParams,i),h(t.forwardMap,i),h(t.forwardFnMap,i),h(n,i),h(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of Object.keys(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of Object.keys(a))i(e)&&r.clearCanDeactivate(e,`both`)}function D(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function O(e,t,n,r){let i={name:e.name,path:e.path};return D(i,t,n,r),e.children&&(i.children=e.children.map(e=>O(e,`${t}.${e.name}`,n,r))),i}function k(e,t,n,r){let i={name:e,path:t};return D(i,e,n,r),Object.freeze(i)}function A(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,k(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function j(e,t){let n=`${t}.`,r=A(e,e=>e===t||e.startsWith(n));return Object.freeze([...r.values()])}function M(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(k(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),Object.freeze(i)}function N(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:Object.freeze(n),added:Object.freeze(r)}}function P(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),Object.freeze(t)}function F(e,n,r,i){t(e,n,r);let a=m(e,n,r,i);e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!1),s(e,a)}function I(e,t,n){e.setState(t),e.emitTransitionSuccess(t,n,T)}function L(e,t,n,a,o){r(t,`addRoute`),u(t,``,`addRoute`),p(t,``,`addRoute`);let c=i(t,e.rootPath,e.matcherOptions,n.logger);e.lifecycleNamespace.preflightHandlerLimit(c.pendingCanActivate.keys(),c.pendingCanDeactivate.keys(),!0);let d=l(c,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),s(e,c,d),o?.(),a!==void 0){let t=n.matchPath(a.path,n.getOptions());if(t)if(t.name===a.name)I(n,{...t,context:a.context,transition:a.transition},a);else{let{toDeactivate:r,toActivate:i}=f(t,a);e.lifecycleNamespace.canNavigateTo(r,i,t,a)?I(n,{...t,transition:a.transition},a):n.navigateToNotFound(a.path)}else n.navigateToNotFound(a.path)}}function R(e,t){let n=e.definitions;return g(n,t)?(E(t,e.config,e.routeCustomFields,e.lifecycleNamespace),d(e,n),!0):!1}function z(e,t){let r=e.matcher.getSegmentsByName(t);if(!r)return;let i=n(r.at(-1)),a=e.lifecycleNamespace.getFactories();return O(i,t,e.config,a)}const B=new WeakMap;function V(t){let n=B.get(t);if(n)return n;let r=_(t),i=r.routeGetStore(),s=e=>{r.treeChanged.emit(e)},l={add:(t,n)=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let a=Array.isArray(t)?t:[t],o=n?.parent;if(e(a,r.validator),o!==void 0&&r.validator?.routes.validateParentOption(o,i.tree),r.validator?.routes.throwIfInternalRouteInArray(a,`addRoute`),r.validator?.routes.validateAddRouteArgs(a),r.validator?.routes.validateRoutes(a,i,o),F(i,a,o,r.logger),r.treeChanged.listenerCount()>0){let e=M(a,o,i);s(o===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:o})}},remove:e=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),c(e,`removeRoute`),!C(e,r.getStateName(),r.isTransitioning(),r.logger))return;let t=r.treeChanged.listenerCount()>0?j(i,e):void 0;if(!R(i,e)){r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}t!==void 0&&s({op:`remove`,name:e,removedSubtree:t})},update:(e,t)=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),c(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),r.validator?.routes.validateUpdateRoute(e,t,i),!i.matcher.hasRoute(e))return;let n=i.lifecycleNamespace,o=a(i,n,e,t);if(r.treeChanged.listenerCount()>0){let t=P(o);Object.keys(t).length>0&&s({op:`update`,name:e,patch:t})}},clear:()=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),!w(r.isTransitioning(),r.logger))return;let e=r.treeChanged.listenerCount()>0?Object.freeze([...A(i,()=>!0).values()]):void 0;o(i),i.lifecycleNamespace.clearAll(),r.clearState(),e!==void 0&&s({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),i.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),z(i,e)),replace:n=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let a=Array.isArray(n)?n:[n];if(!w(r.isTransitioning(),r.logger))return;e(a,r.validator),r.validator?.routes.throwIfInternalRouteInArray(a,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(a),r.validator?.routes.validateRoutes(a,i);let o=t.getState(),c=r.treeChanged.listenerCount()>0?A(i,()=>!0):void 0;L(i,a,r,o,c===void 0?void 0:()=>{let{removed:e,added:t}=N(c,A(i,()=>!0));s({op:`replace`,removed:e,added:t})})},subscribeChanges:e=>r.treeChanged.subscribe(e)};return B.set(t,l),l}function H(e,t,n,r){if(n!==void 0){if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}e.dependencies[t]=n}}function U(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function W(e){let t=_(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{y(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),H(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{y(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),U(n,e,t.validator)},remove:e=>{y(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{y(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}export{S as cloneRouter,W as getDependenciesApi,b as getLifecycleApi,x as getPluginApi,V as getRoutesApi};
1
+ import{S as e,T as t,_ as n,a as r,b as i,c as a,d as o,f as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y,x as b,y as x}from"./Router-Bk6PfSE8.mjs";import{u as S}from"./buildParamMeta-bOLhLF9h.mjs";function C(e){if(e())throw new f(t.ROUTER_DISPOSED)}function w(e){if(e())throw new f(t.REENTRANT_TREE_MUTATION)}const T=new WeakMap;function E(e){let n=T.get(e);if(n)return n;let r=S(e),i={makeState:(e,t,n,i)=>(r.validator?.state.validateMakeStateArgs(e,t,n),r.makeState(e,t,n,i?.params)),buildState:(e,t)=>{r.validator?.routes.validateStateBuilderArgs(e,t,`buildState`);let{name:n,params:i}=r.forwardState(e,t);return r.buildStateResolved(n,i)},forwardState:(e,t)=>(r.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),r.forwardState(e,t)),matchPath:e=>(r.validator?.routes.validateMatchPathArgs(e),r.matchPath(e,r.getOptions())),navigateToState:(e,t)=>(C(r.isDisposed),r.validator?.navigation.validateNavigateToStateArgs(e),t!==void 0&&r.validator?.navigation.validateNavigationOptions(t,`navigateToState`),r.navigateToState(e,t)),setRootPath:e=>{C(r.isDisposed),r.validator?.routes.validateSetRootPathArgs(e),r.setRootPath(e)},getRootPath:r.getRootPath,addEventListener:(e,t)=>(C(r.isDisposed),r.validator?.eventBus.validateListenerArgs(e,t),r.addEventListener(e,t)),buildNavigationState:(e,t={})=>{r.validator?.routes.validateStateBuilderArgs(e,t,`buildNavigationState`);let{name:n,params:i}=r.forwardState(e,t),a=r.buildStateResolved(n,i);if(a)return r.makeState(a.name,a.params,r.buildPath(a.name,a.params),a.meta)},getOptions:r.getOptions,getTree:r.getTree,addInterceptor:(e,t)=>{C(r.isDisposed),r.validator?.plugins.validateAddInterceptorArgs(e,t);let n=r.interceptors.get(e);n||(n=[],r.interceptors.set(e,n)),n.push(t);let i=!1;return()=>{i||(i=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=r.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:n=>{C(r.isDisposed);let i=Object.keys(n);for(let n of i)if(n in e)throw new f(t.PLUGIN_CONFLICT,{message:`Cannot extend router: property "${n}" already exists`});for(let t of i)e[t]=n[t];let a={keys:i};r.routerExtensions.push(a);let o=!1;return()=>{if(o)return;o=!0;for(let t of a.keys)delete e[t];let t=r.routerExtensions.indexOf(a);t!==-1&&r.routerExtensions.splice(t,1)}},emitTransitionError:e=>{C(r.isDisposed),r.emitTransitionError(e)},claimContextNamespace:e=>{if(C(r.isDisposed),typeof e!=`string`||e===``)throw TypeError(`[claimContextNamespace] namespace must be a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`);if(r.contextClaimRecords.has(e))throw new f(t.CONTEXT_NAMESPACE_ALREADY_CLAIMED,{message:`Cannot claim context namespace: "${e}" is already claimed by another plugin`});return r.contextClaimRecords.add(e),{write(t,n){e===`__proto__`?Object.defineProperty(t.context,e,{value:n,writable:!0,enumerable:!0,configurable:!0}):t.context[e]=n},release(){r.contextClaimRecords.delete(e)}}}};return T.set(e,i),i}function D(e,t,n,r){if(t){let n=t===e,i=t.startsWith(`${e}.`);if(n||i){let i=n?``:` (current: "${t}")`;return r.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return n&&r.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function O(e,t){return e?(t.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}const k=Object.freeze({replace:!0,revalidate:!0});function A(e,t,n,r){let i=t=>t===e||t.startsWith(`${e}.`);y(t.decoders,i),y(t.encoders,i),y(t.defaultParams,i),y(t.forwardMap,i),y(t.forwardFnMap,i),y(n,i),y(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of Object.keys(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of Object.keys(a))i(e)&&r.clearCanDeactivate(e,`both`)}function j(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function M(e,t,n,r){let i={name:e.name,path:e.path};return j(i,t,n,r),e.children&&(i.children=e.children.map(e=>M(e,`${t}.${e.name}`,n,r))),i}function N(e,t,n,r){let i={name:e,path:t};return j(i,e,n,r),Object.freeze(i)}function P(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,N(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function F(e,t){let n=`${t}.`,r=P(e,e=>e===t||e.startsWith(n));return Object.freeze([...r.values()])}function I(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(N(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),Object.freeze(i)}function L(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:Object.freeze(n),added:Object.freeze(r)}}function R(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),Object.freeze(t)}function z(e,t,n,i){r(e,t,n);let a=v(e,t,n,i);e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!1),l(e,a)}function B(e,t,n){e.setState(t),e.emitTransitionSuccess(t,n,k)}function V(e,t,n,r,i){a(t,`addRoute`),p(t,``,`addRoute`),g(t,``,`addRoute`);let s=o(t,e.rootPath,e.matcherOptions,n.logger);e.lifecycleNamespace.preflightHandlerLimit(s.pendingCanActivate.keys(),s.pendingCanDeactivate.keys(),!0);let c=d(s,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),l(e,s,c),i?.(),r!==void 0){let t=n.matchPath(r.path,n.getOptions());if(t)if(t.name===r.name)B(n,{...t,context:r.context,transition:r.transition},r);else{let{toDeactivate:i,toActivate:a}=h(t,r);e.lifecycleNamespace.canNavigateTo(i,a,t,r)?B(n,{...t,transition:r.transition},r):n.navigateToNotFound(r.path)}else n.navigateToNotFound(r.path)}}function H(e,t){let n=e.definitions;return x(n,t)?(A(t,e.config,e.routeCustomFields,e.lifecycleNamespace),m(e,n),!0):!1}function U(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=i(n.at(-1)),a=e.lifecycleNamespace.getFactories();return M(r,t,e.config,a)}const W=new WeakMap;function G(t){let n=W.get(t);if(n)return n;let r=S(t),i=r.routeGetStore(),a=e=>{r.treeChanged.emit(e)},o={add:(t,n)=>{C(r.isDisposed),w(r.treeChanged.isEmitting);let o=Array.isArray(t)?t:[t],s=n?.parent;if(e(o,r.validator),s!==void 0&&r.validator?.routes.validateParentOption(s,i.tree),r.validator?.routes.throwIfInternalRouteInArray(o,`addRoute`),r.validator?.routes.validateAddRouteArgs(o),r.validator?.routes.validateRoutes(o,i,s),z(i,o,s,r.logger),r.treeChanged.listenerCount()>0){let e=I(o,s,i);a(s===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:s})}},remove:e=>{if(C(r.isDisposed),w(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),u(e,`removeRoute`),!D(e,r.getStateName(),r.isTransitioning(),r.logger))return;let t=r.treeChanged.listenerCount()>0?F(i,e):void 0;if(!H(i,e)){r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}t!==void 0&&a({op:`remove`,name:e,removedSubtree:t})},update:(e,t)=>{if(C(r.isDisposed),w(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),u(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),r.validator?.routes.validateUpdateRoute(e,t,i),!i.matcher.hasRoute(e))return;let n=i.lifecycleNamespace,o=s(i,n,e,t);if(r.treeChanged.listenerCount()>0){let t=R(o);Object.keys(t).length>0&&a({op:`update`,name:e,patch:t})}},clear:()=>{if(C(r.isDisposed),w(r.treeChanged.isEmitting),!O(r.isTransitioning(),r.logger))return;let e=r.treeChanged.listenerCount()>0?Object.freeze([...P(i,()=>!0).values()]):void 0;c(i),i.lifecycleNamespace.clearAll(),r.clearState(),e!==void 0&&a({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),i.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),U(i,e)),replace:n=>{C(r.isDisposed),w(r.treeChanged.isEmitting);let o=Array.isArray(n)?n:[n];if(!O(r.isTransitioning(),r.logger))return;e(o,r.validator),r.validator?.routes.throwIfInternalRouteInArray(o,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(o),r.validator?.routes.validateRoutes(o,i);let s=t.getState(),c=r.treeChanged.listenerCount()>0?P(i,()=>!0):void 0;V(i,o,r,s,c===void 0?void 0:()=>{let e=P(i,()=>!0),{removed:t,added:n}=L(c,e);a({op:`replace`,removed:t,added:n})})},subscribeChanges:e=>r.treeChanged.subscribe(e)};return W.set(t,o),o}function K(e,t,n,r){if(n!==void 0){if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}e.dependencies[t]=n}}function q(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function J(e){let t=S(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{C(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),K(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{C(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),q(n,e,t.validator)},remove:e=>{C(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{C(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}function Y(e){let t=S(e),n=t.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,r){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`addActivateGuard`),t.validator?.lifecycle.validateHandler(r,`addActivateGuard`),n.addCanActivate(e,r)},addDeactivateGuard(e,r){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`addDeactivateGuard`),t.validator?.lifecycle.validateHandler(r,`addDeactivateGuard`),n.addCanDeactivate(e,r)},removeActivateGuard(e){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeActivateGuard`),n.clearCanActivate(e,`external`)},removeDeactivateGuard(e){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeDeactivateGuard`),n.clearCanDeactivate(e,`external`)}}}function X(e,r,i){let a=S(e);if(a.isDisposed())throw new f(t.ROUTER_DISPOSED);a.validator?.dependencies.validateCloneArgs(r);let o=a.routeGetStore(),s=b(o.tree),c=o.config,l=o.resolvedForwardMap,u=o.routeCustomFields,{options:d,dependencies:p,pluginFactories:m,loggerConfig:h}=a.getCloneState(),{definition:g,external:v}=o.lifecycleNamespace.getFactoriesByOrigin(),y={...p,...r},x=i?.logger?{...h,...i.logger}:h,C=new _(s,{...d,logger:x},y),w=S(C),T=w.routeGetStore(),E=T.lifecycleNamespace;n(T.config,c),Object.assign(T.resolvedForwardMap,l),Object.assign(T.routeCustomFields,u),o.rootPath!==``&&w.setRootPath(o.rootPath);let[D,O]=g,[k,A]=v;for(let[e,t]of Object.entries(D))E.addCanDeactivate(e,t,!0);for(let[e,t]of Object.entries(O))E.addCanActivate(e,t,!0);let j=Y(C);for(let[e,t]of Object.entries(k))j.addDeactivateGuard(e,t);for(let[e,t]of Object.entries(A))j.addActivateGuard(e,t);let M=new Set(w.getCloneState().pluginFactories),N=m.filter(e=>!M.has(e));return N.length>0&&C.usePlugin(...N),C}export{X as cloneRouter,J as getDependenciesApi,Y as getLifecycleApi,E as getPluginApi,G as getRoutesApi};
2
2
  //# sourceMappingURL=api.mjs.map