@rangojs/router 0.0.0-experimental.12 → 0.0.0-experimental.121

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 (1150) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +1037 -4
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +1704 -212
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +5994 -2763
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +64 -54
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +252 -0
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +484 -0
  816. package/skills/caching/SKILL.md +202 -24
  817. package/skills/composability/SKILL.md +197 -0
  818. package/skills/css/SKILL.md +76 -0
  819. package/skills/debug-manifest/SKILL.md +12 -8
  820. package/skills/document-cache/SKILL.md +87 -62
  821. package/skills/fonts/SKILL.md +6 -4
  822. package/skills/handler-use/SKILL.md +364 -0
  823. package/skills/hooks/SKILL.md +537 -70
  824. package/skills/host-router/SKILL.md +264 -0
  825. package/skills/i18n/SKILL.md +276 -0
  826. package/skills/intercept/SKILL.md +173 -8
  827. package/skills/layout/SKILL.md +123 -5
  828. package/skills/links/SKILL.md +304 -25
  829. package/skills/loader/SKILL.md +600 -54
  830. package/skills/middleware/SKILL.md +211 -37
  831. package/skills/migrate-nextjs/SKILL.md +562 -0
  832. package/skills/migrate-react-router/SKILL.md +769 -0
  833. package/skills/mime-routes/SKILL.md +41 -10
  834. package/skills/observability/SKILL.md +137 -0
  835. package/skills/parallel/SKILL.md +271 -3
  836. package/skills/prerender/SKILL.md +413 -52
  837. package/skills/rango/SKILL.md +301 -21
  838. package/skills/react-compiler/SKILL.md +168 -0
  839. package/skills/response-routes/SKILL.md +248 -120
  840. package/skills/route/SKILL.md +279 -21
  841. package/skills/router-setup/SKILL.md +211 -33
  842. package/skills/server-actions/SKILL.md +751 -0
  843. package/skills/streams-and-websockets/SKILL.md +283 -0
  844. package/skills/tailwind/SKILL.md +27 -3
  845. package/skills/theme/SKILL.md +9 -8
  846. package/skills/typesafety/SKILL.md +547 -107
  847. package/skills/use-cache/SKILL.md +353 -0
  848. package/skills/view-transitions/SKILL.md +294 -0
  849. package/src/__augment-tests__/augment.ts +81 -0
  850. package/src/__augment-tests__/augmented.check.ts +116 -0
  851. package/src/__internal.ts +102 -4
  852. package/src/bin/rango.ts +312 -15
  853. package/src/browser/action-coordinator.ts +114 -0
  854. package/src/browser/app-shell.ts +39 -0
  855. package/src/browser/app-version.ts +14 -0
  856. package/src/browser/event-controller.ts +172 -128
  857. package/src/browser/history-state.ts +101 -0
  858. package/src/browser/index.ts +3 -3
  859. package/src/browser/intercept-utils.ts +52 -0
  860. package/src/browser/link-interceptor.ts +24 -4
  861. package/src/browser/logging.ts +11 -0
  862. package/src/browser/merge-segment-loaders.ts +20 -12
  863. package/src/browser/navigation-bridge.ts +309 -562
  864. package/src/browser/navigation-client.ts +206 -75
  865. package/src/browser/navigation-store.ts +80 -63
  866. package/src/browser/navigation-transaction.ts +279 -0
  867. package/src/browser/network-error-handler.ts +61 -0
  868. package/src/browser/partial-update.ts +355 -314
  869. package/src/browser/prefetch/cache.ts +363 -0
  870. package/src/browser/prefetch/fetch.ts +350 -0
  871. package/src/browser/prefetch/observer.ts +65 -0
  872. package/src/browser/prefetch/policy.ts +48 -0
  873. package/src/browser/prefetch/queue.ts +191 -0
  874. package/src/browser/prefetch/resource-ready.ts +77 -0
  875. package/src/browser/rango-state.ts +136 -0
  876. package/src/browser/react/Link.tsx +255 -71
  877. package/src/browser/react/NavigationProvider.tsx +153 -33
  878. package/src/browser/react/context.ts +11 -0
  879. package/src/browser/react/filter-segment-order.ts +55 -0
  880. package/src/browser/react/index.ts +15 -12
  881. package/src/browser/react/location-state-shared.ts +269 -56
  882. package/src/browser/react/location-state.ts +90 -19
  883. package/src/browser/react/mount-context.ts +6 -1
  884. package/src/browser/react/nonce-context.ts +23 -0
  885. package/src/browser/react/shallow-equal.ts +27 -0
  886. package/src/browser/react/use-action.ts +29 -51
  887. package/src/browser/react/use-client-cache.ts +5 -3
  888. package/src/browser/react/use-handle.ts +41 -123
  889. package/src/browser/react/use-link-status.ts +6 -5
  890. package/src/browser/react/use-navigation.ts +44 -65
  891. package/src/browser/react/use-params.ts +77 -0
  892. package/src/browser/react/use-pathname.ts +47 -0
  893. package/src/browser/react/use-reverse.ts +106 -0
  894. package/src/browser/react/use-router.ts +97 -0
  895. package/src/browser/react/use-search-params.ts +56 -0
  896. package/src/browser/react/use-segments.ts +85 -99
  897. package/src/browser/response-adapter.ts +124 -0
  898. package/src/browser/rsc-router.tsx +275 -72
  899. package/src/browser/scroll-restoration.ts +132 -49
  900. package/src/browser/segment-reconciler.ts +243 -0
  901. package/src/browser/segment-structure-assert.ts +17 -1
  902. package/src/browser/server-action-bridge.ts +508 -610
  903. package/src/browser/shallow.ts +6 -1
  904. package/src/browser/types.ts +149 -48
  905. package/src/browser/validate-redirect-origin.ts +29 -0
  906. package/src/build/collect-fallback-refs.ts +107 -0
  907. package/src/build/generate-manifest.ts +123 -56
  908. package/src/build/generate-route-types.ts +41 -1029
  909. package/src/build/index.ts +4 -0
  910. package/src/build/prefix-tree-utils.ts +123 -0
  911. package/src/build/route-trie.ts +127 -31
  912. package/src/build/route-types/ast-helpers.ts +25 -0
  913. package/src/build/route-types/ast-route-extraction.ts +98 -0
  914. package/src/build/route-types/codegen.ts +102 -0
  915. package/src/build/route-types/include-resolution.ts +418 -0
  916. package/src/build/route-types/param-extraction.ts +48 -0
  917. package/src/build/route-types/per-module-writer.ts +131 -0
  918. package/src/build/route-types/router-processing.ts +659 -0
  919. package/src/build/route-types/scan-filter.ts +85 -0
  920. package/src/build/route-types/source-scan.ts +118 -0
  921. package/src/build/runtime-discovery.ts +220 -0
  922. package/src/cache/background-task.ts +34 -0
  923. package/src/cache/cache-key-utils.ts +44 -0
  924. package/src/cache/cache-policy.ts +125 -0
  925. package/src/cache/cache-runtime.ts +354 -0
  926. package/src/cache/cache-scope.ts +170 -308
  927. package/src/cache/cf/cf-cache-store.ts +716 -30
  928. package/src/cache/cf/index.ts +13 -3
  929. package/src/cache/document-cache.ts +116 -77
  930. package/src/cache/handle-capture.ts +81 -0
  931. package/src/cache/handle-snapshot.ts +144 -0
  932. package/src/cache/index.ts +1 -15
  933. package/src/cache/memory-segment-store.ts +192 -13
  934. package/src/cache/profile-registry.ts +73 -0
  935. package/src/cache/read-through-swr.ts +134 -0
  936. package/src/cache/segment-codec.ts +256 -0
  937. package/src/cache/taint.ts +153 -0
  938. package/src/cache/types.ts +78 -124
  939. package/src/client.rsc.tsx +6 -1
  940. package/src/client.tsx +117 -322
  941. package/src/component-utils.ts +4 -4
  942. package/src/components/DefaultDocument.tsx +5 -1
  943. package/src/context-var.ts +156 -0
  944. package/src/debug.ts +19 -9
  945. package/src/decode-loader-results.ts +36 -0
  946. package/src/errors.ts +106 -10
  947. package/src/handle.ts +54 -11
  948. package/src/handles/MetaTags.tsx +73 -20
  949. package/src/handles/breadcrumbs.ts +66 -0
  950. package/src/handles/index.ts +1 -0
  951. package/src/handles/meta.ts +30 -13
  952. package/src/host/cookie-handler.ts +21 -15
  953. package/src/host/errors.ts +8 -8
  954. package/src/host/index.ts +6 -9
  955. package/src/host/pattern-matcher.ts +27 -27
  956. package/src/host/router.ts +176 -82
  957. package/src/host/testing.ts +8 -8
  958. package/src/host/types.ts +46 -9
  959. package/src/host/utils.ts +2 -2
  960. package/src/href-client.ts +196 -57
  961. package/src/index.rsc.ts +112 -42
  962. package/src/index.ts +178 -74
  963. package/src/internal-debug.ts +9 -3
  964. package/src/loader-store.ts +500 -0
  965. package/src/loader.rsc.ts +15 -93
  966. package/src/loader.ts +20 -10
  967. package/src/missing-id-error.ts +68 -0
  968. package/src/network-error-thrower.tsx +3 -1
  969. package/src/outlet-context.ts +1 -1
  970. package/src/outlet-provider.tsx +45 -0
  971. package/src/prerender/param-hash.ts +4 -2
  972. package/src/prerender/store.ts +125 -18
  973. package/src/prerender.ts +389 -23
  974. package/src/response-utils.ts +37 -0
  975. package/src/reverse.ts +198 -128
  976. package/src/root-error-boundary.tsx +41 -29
  977. package/src/route-content-wrapper.tsx +13 -32
  978. package/src/route-definition/dsl-helpers.ts +1109 -0
  979. package/src/route-definition/helper-factories.ts +90 -0
  980. package/src/route-definition/helpers-types.ts +506 -0
  981. package/src/route-definition/index.ts +55 -0
  982. package/src/route-definition/redirect.ts +101 -0
  983. package/src/route-definition/resolve-handler-use.ts +155 -0
  984. package/src/route-definition/use-item-types.ts +32 -0
  985. package/src/route-definition.ts +1 -1450
  986. package/src/route-map-builder.ts +87 -133
  987. package/src/route-name.ts +53 -0
  988. package/src/route-types.ts +72 -41
  989. package/src/router/content-negotiation.ts +228 -0
  990. package/src/router/debug-manifest.ts +72 -0
  991. package/src/router/error-handling.ts +10 -10
  992. package/src/router/find-match.ts +208 -0
  993. package/src/router/handler-context.ts +372 -125
  994. package/src/router/intercept-resolution.ts +24 -26
  995. package/src/router/lazy-includes.ts +256 -0
  996. package/src/router/loader-resolution.ts +367 -140
  997. package/src/router/logging.ts +112 -6
  998. package/src/router/manifest.ts +89 -28
  999. package/src/router/match-api.ts +175 -238
  1000. package/src/router/match-context.ts +4 -2
  1001. package/src/router/match-handlers.ts +441 -0
  1002. package/src/router/match-middleware/background-revalidation.ts +97 -89
  1003. package/src/router/match-middleware/cache-lookup.ts +289 -54
  1004. package/src/router/match-middleware/cache-store.ts +78 -17
  1005. package/src/router/match-middleware/intercept-resolution.ts +45 -22
  1006. package/src/router/match-middleware/segment-resolution.ts +73 -9
  1007. package/src/router/match-pipelines.ts +10 -45
  1008. package/src/router/match-result.ts +146 -24
  1009. package/src/router/metrics.ts +241 -16
  1010. package/src/router/middleware-cookies.ts +55 -0
  1011. package/src/router/middleware-types.ts +209 -0
  1012. package/src/router/middleware.ts +354 -384
  1013. package/src/router/navigation-snapshot.ts +182 -0
  1014. package/src/router/pattern-matching.ts +279 -44
  1015. package/src/router/prerender-match.ts +527 -0
  1016. package/src/router/preview-match.ts +100 -0
  1017. package/src/router/request-classification.ts +313 -0
  1018. package/src/router/revalidation.ts +163 -16
  1019. package/src/router/route-snapshot.ts +245 -0
  1020. package/src/router/router-context.ts +41 -21
  1021. package/src/router/router-interfaces.ts +500 -0
  1022. package/src/router/router-options.ts +642 -0
  1023. package/src/router/router-registry.ts +21 -0
  1024. package/src/router/segment-resolution/fresh.ts +769 -0
  1025. package/src/router/segment-resolution/helpers.ts +268 -0
  1026. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1027. package/src/router/segment-resolution/revalidation.ts +1420 -0
  1028. package/src/router/segment-resolution/static-store.ts +81 -0
  1029. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  1030. package/src/router/segment-resolution.ts +21 -1354
  1031. package/src/router/segment-wrappers.ts +291 -0
  1032. package/src/router/substitute-pattern-params.ts +56 -0
  1033. package/src/router/telemetry-otel.ts +299 -0
  1034. package/src/router/telemetry.ts +300 -0
  1035. package/src/router/timeout.ts +148 -0
  1036. package/src/router/trie-matching.ts +133 -42
  1037. package/src/router/types.ts +24 -9
  1038. package/src/router/url-params.ts +49 -0
  1039. package/src/router.ts +710 -2373
  1040. package/src/rsc/handler-context.ts +45 -0
  1041. package/src/rsc/handler.ts +821 -1128
  1042. package/src/rsc/helpers.ts +182 -19
  1043. package/src/rsc/index.ts +1 -21
  1044. package/src/rsc/loader-fetch.ts +229 -0
  1045. package/src/rsc/manifest-init.ts +77 -0
  1046. package/src/rsc/nonce.ts +14 -0
  1047. package/src/rsc/origin-guard.ts +161 -0
  1048. package/src/rsc/progressive-enhancement.ts +395 -0
  1049. package/src/rsc/response-error.ts +104 -0
  1050. package/src/rsc/response-route-handler.ts +362 -0
  1051. package/src/rsc/rsc-rendering.ts +240 -0
  1052. package/src/rsc/runtime-warnings.ts +41 -0
  1053. package/src/rsc/server-action.ts +350 -0
  1054. package/src/rsc/ssr-setup.ts +144 -0
  1055. package/src/rsc/types.ts +52 -11
  1056. package/src/search-params.ts +70 -58
  1057. package/src/segment-content-promise.ts +67 -0
  1058. package/src/segment-loader-promise.ts +122 -0
  1059. package/src/segment-system.tsx +237 -73
  1060. package/src/serialize.ts +243 -0
  1061. package/src/server/context.ts +439 -85
  1062. package/src/server/cookie-store.ts +214 -0
  1063. package/src/server/fetchable-loader-store.ts +11 -6
  1064. package/src/server/handle-store.ts +113 -15
  1065. package/src/server/loader-registry.ts +24 -64
  1066. package/src/server/request-context.ts +640 -107
  1067. package/src/server.ts +26 -164
  1068. package/src/ssr/index.tsx +107 -30
  1069. package/src/static-handler.ts +39 -9
  1070. package/src/theme/ThemeProvider.tsx +21 -15
  1071. package/src/theme/ThemeScript.tsx +5 -5
  1072. package/src/theme/constants.ts +5 -2
  1073. package/src/theme/index.ts +4 -14
  1074. package/src/theme/theme-context.ts +4 -30
  1075. package/src/theme/theme-script.ts +21 -18
  1076. package/src/types/boundaries.ts +158 -0
  1077. package/src/types/cache-types.ts +198 -0
  1078. package/src/types/error-types.ts +192 -0
  1079. package/src/types/global-namespace.ts +113 -0
  1080. package/src/types/handler-context.ts +809 -0
  1081. package/src/types/index.ts +89 -0
  1082. package/src/types/loader-types.ts +212 -0
  1083. package/src/types/request-scope.ts +126 -0
  1084. package/src/types/route-config.ts +170 -0
  1085. package/src/types/route-entry.ts +120 -0
  1086. package/src/types/segments.ts +184 -0
  1087. package/src/types.ts +1 -1795
  1088. package/src/urls/include-helper.ts +164 -0
  1089. package/src/urls/index.ts +49 -0
  1090. package/src/urls/path-helper-types.ts +386 -0
  1091. package/src/urls/path-helper.ts +329 -0
  1092. package/src/urls/pattern-types.ts +124 -0
  1093. package/src/urls/response-types.ts +109 -0
  1094. package/src/urls/type-extraction.ts +291 -0
  1095. package/src/urls/urls-function.ts +94 -0
  1096. package/src/urls.ts +1 -1323
  1097. package/src/use-loader.tsx +559 -108
  1098. package/src/vite/debug.ts +185 -0
  1099. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1100. package/src/vite/discovery/discover-routers.ts +379 -0
  1101. package/src/vite/discovery/discovery-errors.ts +194 -0
  1102. package/src/vite/discovery/gate-state.ts +171 -0
  1103. package/src/vite/discovery/prerender-collection.ts +480 -0
  1104. package/src/vite/discovery/route-types-writer.ts +214 -0
  1105. package/src/vite/discovery/self-gen-tracking.ts +73 -0
  1106. package/src/vite/discovery/state.ts +150 -0
  1107. package/src/vite/discovery/virtual-module-codegen.ts +193 -0
  1108. package/src/vite/index.ts +17 -2261
  1109. package/src/vite/plugin-types.ts +170 -0
  1110. package/src/vite/plugins/cjs-to-esm.ts +94 -0
  1111. package/src/vite/plugins/client-ref-dedup.ts +131 -0
  1112. package/src/vite/plugins/client-ref-hashing.ts +128 -0
  1113. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1114. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1115. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1116. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +109 -60
  1117. package/src/vite/{expose-id-utils.ts → plugins/expose-id-utils.ts} +32 -51
  1118. package/src/vite/plugins/expose-ids/export-analysis.ts +376 -0
  1119. package/src/vite/plugins/expose-ids/handler-transform.ts +156 -0
  1120. package/src/vite/plugins/expose-ids/loader-transform.ts +72 -0
  1121. package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
  1122. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1123. package/src/vite/plugins/expose-internal-ids.ts +796 -0
  1124. package/src/vite/plugins/performance-tracks.ts +92 -0
  1125. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1126. package/src/vite/plugins/use-cache-transform.ts +338 -0
  1127. package/src/vite/plugins/version-injector.ts +99 -0
  1128. package/src/vite/plugins/version-plugin.ts +323 -0
  1129. package/src/vite/plugins/virtual-entries.ts +123 -0
  1130. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1131. package/src/vite/rango.ts +549 -0
  1132. package/src/vite/router-discovery.ts +1567 -0
  1133. package/src/vite/{ast-handler-extract.ts → utils/ast-handler-extract.ts} +194 -22
  1134. package/src/vite/utils/banner.ts +36 -0
  1135. package/src/vite/utils/bundle-analysis.ts +139 -0
  1136. package/src/vite/utils/client-chunks.ts +190 -0
  1137. package/src/vite/utils/forward-user-plugins.ts +193 -0
  1138. package/src/vite/utils/manifest-utils.ts +19 -0
  1139. package/src/vite/utils/package-resolution.ts +161 -0
  1140. package/src/vite/utils/prerender-utils.ts +222 -0
  1141. package/src/vite/utils/shared-utils.ts +251 -0
  1142. package/CLAUDE.md +0 -43
  1143. package/src/browser/lru-cache.ts +0 -69
  1144. package/src/browser/request-controller.ts +0 -164
  1145. package/src/cache/memory-store.ts +0 -253
  1146. package/src/router.gen.ts +0 -6
  1147. package/src/static-handler.gen.ts +0 -5
  1148. package/src/urls.gen.ts +0 -8
  1149. package/src/vite/expose-internal-ids.ts +0 -1167
  1150. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -23,9 +23,13 @@ import { urls } from "@rangojs/router";
23
23
  export const urlpatterns = urls(({ path, layout, include }) => [
24
24
  // RSC page + JSON API on the same URL
25
25
  path("/products/:id", ProductPage, { name: "product" }),
26
- path.json("/products/:id", (ctx) => {
27
- return db.getProduct(ctx.params.id);
28
- }, { name: "productJson" }),
26
+ path.json(
27
+ "/products/:id",
28
+ (ctx) => {
29
+ return db.getProduct(ctx.params.id);
30
+ },
31
+ { name: "productJson" },
32
+ ),
29
33
  ]);
30
34
  ```
31
35
 
@@ -45,14 +49,14 @@ There is no special short-circuit — RSC follows the same negotiation rules as
45
49
 
46
50
  The MIME mapping used for matching:
47
51
 
48
- | Tag | MIME type |
49
- |-----|-----------|
52
+ | Tag | MIME type |
53
+ | -------------------- | ------------------------------------------------------------ |
50
54
  | RSC (plain `path()`) | `text/html` (negotiation) / `text/x-component` (wire format) |
51
- | `json` | `application/json` |
52
- | `text` | `text/plain` |
53
- | `xml` | `application/xml` |
54
- | `html` | `text/html` |
55
- | `md` | `text/markdown` |
55
+ | `json` | `application/json` |
56
+ | `text` | `text/plain` |
57
+ | `xml` | `application/xml` |
58
+ | `html` | `text/html` |
59
+ | `md` | `text/markdown` |
56
60
 
57
61
  RSC routes negotiate as `text/html` but respond with `text/x-component` (the RSC wire format).
58
62
  The browser's RSC runtime decodes this transparently — clients requesting `text/html` get
@@ -104,6 +108,33 @@ path.text("/api/data", () => "plain text version", { name: "dataText" }),
104
108
  Without an RSC primary, there is no `text/html` candidate — the Accept header
105
109
  picks among the response-type candidates directly.
106
110
 
111
+ ## Type Safety For Negotiated Paths
112
+
113
+ `router.named-routes.gen.ts` validates route names, params, search, `href()`, and
114
+ the `Rango.Path` type, but it does not carry response payload metadata. For MIME or
115
+ response payload types, use one of these surfaces:
116
+
117
+ - `RouteResponse<typeof patterns, "routeName">` for a specific response variant
118
+ by route name. This is the clearest option when several MIME variants share
119
+ one URL pattern.
120
+ - `Rango.PathResponse<"/products/:id">` (ambient, no import) for global lookup by URL pattern or concrete path after the app
121
+ registers `typeof router.routeMap`:
122
+
123
+ ```typescript
124
+ // router.tsx
125
+ export const router = createRouter({ document: Document }).routes(urlpatterns);
126
+
127
+ declare global {
128
+ namespace Rango {
129
+ interface RegisteredRoutes extends typeof router.routeMap {}
130
+ }
131
+ }
132
+ ```
133
+
134
+ `RegisteredRoutes` is what exposes the richer routeMap entries containing
135
+ response payload metadata. Without it, URL-pattern response lookup has paths but
136
+ no payloads, so response types resolve to `never`.
137
+
107
138
  ## How It Works
108
139
 
109
140
  1. **Build time**: `buildRouteTrie()` calls `mergeLeaves()` when multiple routes share a pattern.
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: observability
3
+ description: Debug Rango request performance with debugPerformance, Server-Timing, structured telemetry, and tracing
4
+ argument-hint:
5
+ ---
6
+
7
+ # Observability
8
+
9
+ Use this when you need to understand request latency, cache decisions,
10
+ revalidation behavior, loader overlap, or production traces.
11
+
12
+ Rango exposes two complementary observability surfaces:
13
+
14
+ 1. **Performance timeline** (`debugPerformance`) — per-request waterfall for
15
+ local or targeted debugging. It prints to the console and emits
16
+ `Server-Timing`.
17
+ 2. **Structured telemetry** (`telemetry`) — lifecycle events sent to a pluggable
18
+ sink for production monitoring, OpenTelemetry, or custom metrics.
19
+
20
+ The essentials are below. The exported `TelemetryEvent` union type
21
+ (`import type { TelemetryEvent } from "@rangojs/router"`) is the full event
22
+ contract — every event kind and its fields are typed there.
23
+
24
+ ## Performance timeline
25
+
26
+ Enable globally while debugging:
27
+
28
+ ```typescript
29
+ import { createRouter } from "@rangojs/router";
30
+
31
+ const router = createRouter({
32
+ document: Document,
33
+ urls: urlpatterns,
34
+ debugPerformance: true,
35
+ });
36
+ ```
37
+
38
+ Or enable for selected requests from middleware:
39
+
40
+ ```typescript
41
+ middleware(async (ctx, next) => {
42
+ if (ctx.url.searchParams.has("debug")) {
43
+ ctx.debugPerformance();
44
+ }
45
+ await next();
46
+ });
47
+ ```
48
+
49
+ Call `ctx.debugPerformance()` before `await next()`. The request then prints a
50
+ shared-axis waterfall and adds a `Server-Timing` header.
51
+
52
+ Read the timeline as intervals:
53
+
54
+ - `handler:total` is the whole router request.
55
+ - `render:total` / `ssr-render-html` show the render pass.
56
+ - `loader:*` rows should overlap render work. If a loader starts only after the
57
+ render bar, it is serialized latency.
58
+ - Cache, route matching, middleware pre/post, RSC serialization, and SSR phases
59
+ appear as separate spans, so the slow phase is visible without guessing.
60
+
61
+ ## Structured telemetry
62
+
63
+ Use telemetry when you want durable production events rather than a one-request
64
+ debug waterfall.
65
+
66
+ ```typescript
67
+ import { createRouter, createConsoleSink } from "@rangojs/router";
68
+
69
+ const router = createRouter({
70
+ document: Document,
71
+ urls: urlpatterns,
72
+ telemetry: createConsoleSink(),
73
+ });
74
+ ```
75
+
76
+ For OpenTelemetry:
77
+
78
+ ```typescript
79
+ import { createRouter, createOTelSink } from "@rangojs/router";
80
+ import { trace } from "@opentelemetry/api";
81
+
82
+ const router = createRouter({
83
+ document: Document,
84
+ urls: urlpatterns,
85
+ telemetry: createOTelSink(trace.getTracer("my-app")),
86
+ });
87
+ ```
88
+
89
+ Custom sinks implement `emit(event)`:
90
+
91
+ ```typescript
92
+ import { createRouter } from "@rangojs/router";
93
+
94
+ const router = createRouter({
95
+ document: Document,
96
+ urls: urlpatterns,
97
+ telemetry: {
98
+ emit(event) {
99
+ myMetrics.record(event);
100
+ },
101
+ },
102
+ });
103
+ ```
104
+
105
+ Events include `request.start/end/error`, `loader.start/end/error`,
106
+ `handler.error`, `cache.decision`, and `revalidation.decision`.
107
+
108
+ ## Debugging revalidation and stale data
109
+
110
+ When stale UI or unexpected partial renders are the question, use all three
111
+ layers together:
112
+
113
+ ```typescript
114
+ import { createConsoleSink, createRouter } from "@rangojs/router";
115
+
116
+ const router = createRouter({
117
+ document: Document,
118
+ urls: urlpatterns,
119
+ debugPerformance: true,
120
+ telemetry: createConsoleSink(),
121
+ });
122
+ ```
123
+
124
+ Then inspect:
125
+
126
+ - `revalidation.decision` telemetry to see which segment re-ran or skipped.
127
+ - cache spans / `cache.decision` events to see hit, miss, stale, and background
128
+ revalidation behavior.
129
+ - loader spans to confirm live loaders overlap the render rather than blocking
130
+ first paint.
131
+ - the `Server-Timing` header to compare local logs with browser-network timing.
132
+
133
+ ## Zero-overhead defaults
134
+
135
+ `debugPerformance` is off by default, and `telemetry` emits nothing unless a sink
136
+ is configured. Per-request `ctx.debugPerformance()` lets you turn on the
137
+ waterfall only for the route, user, or query param you are investigating.
@@ -54,6 +54,108 @@ parallel({
54
54
  })
55
55
  ```
56
56
 
57
+ ## Reading Handler Data
58
+
59
+ Parallels can read `ctx.set()` values from their parent handler or layout
60
+ via `ctx.get()`. The handler always executes before its parallels
61
+ (handler-first).
62
+
63
+ Visibility follows tree structure:
64
+
65
+ - Layout-level parallels see layout data, but not path handler data
66
+ (the path is a separate entry).
67
+ - Parallels inside a path (or its orphan layouts) see both layout and
68
+ path handler data.
69
+
70
+ This applies to full render passes. During partial action revalidation,
71
+ only revalidated segments are recomputed. If a parallel depends on data
72
+ set by an outer handler or layout, revalidate that outer segment too, or
73
+ have the parallel reload/guard the data itself.
74
+
75
+ ```typescript
76
+ path("/dashboard/:id", (ctx) => {
77
+ const user = await getUser(ctx.params.id);
78
+ ctx.set("user", user);
79
+ return <DashboardPage user={user} />;
80
+ }, { name: "dashboard" }, () => [
81
+ layout(DashboardLayout, () => [
82
+ parallel({
83
+ "@sidebar": (ctx) => {
84
+ const user = ctx.get("user");
85
+ return <Sidebar role={user?.role} />;
86
+ },
87
+ }),
88
+ ]),
89
+ ])
90
+ ```
91
+
92
+ ## Setting Handles (Meta, Breadcrumbs)
93
+
94
+ Parallel slot handlers can call `ctx.use(Meta)` or `ctx.use(Breadcrumbs)` to
95
+ push handle data. The data is associated with the **parent** layout or route
96
+ segment, not the parallel segment itself. This is because parallels execute
97
+ after their parent handler and inherit its segment scope.
98
+
99
+ This works well for document-level metadata — the handle data follows the
100
+ parent's lifecycle (appears when the parent is mounted, removed when it
101
+ unmounts).
102
+
103
+ ```typescript
104
+ parallel({
105
+ "@meta": (ctx) => {
106
+ const meta = ctx.use(Meta);
107
+ meta({ title: "Product Detail" });
108
+ meta({ name: "description", content: "..." });
109
+ return null; // UI-less slot, only sets metadata
110
+ },
111
+ "@sidebar": (ctx) => <Sidebar />,
112
+ })
113
+ ```
114
+
115
+ Multiple parallels on the same parent can each push handle data — they all
116
+ accumulate under the parent segment ID.
117
+
118
+ ### Pattern: `@meta` slot for per-route metadata overrides
119
+
120
+ A dedicated `@meta` parallel slot lets routes define metadata separately from
121
+ their handler logic. The layout sets defaults via a title template, and each
122
+ route overrides via its own `@meta` slot. Since child segments push after
123
+ parents and `collectMeta` uses last-wins deduplication, overrides work
124
+ naturally.
125
+
126
+ ```typescript
127
+ // Layout sets defaults
128
+ layout((ctx) => {
129
+ ctx.use(Meta)({ title: { template: "%s | Store", default: "Store" } });
130
+ return <StoreLayout />;
131
+ }, () => [
132
+ // Route with @meta override — decoupled from handler rendering
133
+ path("/:slug", ProductPage, { name: "product" }, () => [
134
+ parallel({
135
+ "@meta": async (ctx) => {
136
+ const product = await ctx.use(ProductLoader);
137
+ const meta = ctx.use(Meta);
138
+ meta({ title: product.name });
139
+ meta({ name: "description", content: product.description });
140
+ meta({
141
+ "script:ld+json": {
142
+ "@context": "https://schema.org",
143
+ "@type": "Product",
144
+ name: product.name,
145
+ description: product.description,
146
+ },
147
+ });
148
+ return null; // UI-less slot
149
+ },
150
+ }),
151
+ ]),
152
+ ])
153
+ ```
154
+
155
+ This keeps the route handler focused on rendering UI while metadata
156
+ (title, description, Open Graph, JSON-LD) lives in a composable slot that
157
+ can be added, removed, or swapped per route without touching the handler.
158
+
57
159
  ## Parallel Routes with Loaders
58
160
 
59
161
  Add loaders and loading states to parallel routes:
@@ -71,6 +173,126 @@ parallel(
71
173
  )
72
174
  ```
73
175
 
176
+ ### Streaming Behavior
177
+
178
+ Parallels with `loading()` are **independent streaming units**. They don't
179
+ block the parent layout or sibling routes during SSR:
180
+
181
+ - **With `loading()`**: The skeleton renders immediately. The loader runs
182
+ in the background and streams data to the client when ready. The rest
183
+ of the page (layout, route content, other parallels) renders without
184
+ waiting.
185
+ - **Without `loading()`**: The parallel's loaders block the parent layout's
186
+ rendering. Use this when the data must be available before the page
187
+ paints (e.g., critical above-the-fold content).
188
+ - **SPA navigation**: Parallel loaders resolve in the background. The
189
+ existing parallel UI stays visible — no skeleton flash on route changes
190
+ within the same layout.
191
+
192
+ ```typescript
193
+ // Sidebar streams independently — page renders immediately
194
+ parallel(
195
+ { "@sidebar": () => <Sidebar /> },
196
+ () => [loader(SlowSidebarLoader), loading(<SidebarSkeleton />)]
197
+ )
198
+
199
+ // Cart data blocks layout — must be ready before paint
200
+ parallel(
201
+ { "@cartBadge": () => <CartBadge /> },
202
+ () => [loader(CartCountLoader)] // No loading() = awaited
203
+ )
204
+ ```
205
+
206
+ ## Composable Slots via `handler.use`
207
+
208
+ Slot handlers can carry their own loader, loading, error/notFound boundaries, revalidation, and transition defaults via `.use`. The mount site then declares **just the slot names** — no per-call data wiring.
209
+
210
+ ```typescript
211
+ const CartSummary: Handler = async (ctx) => {
212
+ const cart = await ctx.use(CartLoader);
213
+ return <CartSummaryView cart={cart} />;
214
+ };
215
+ CartSummary.use = () => [
216
+ loader(CartLoader),
217
+ loading(<CartSkeleton />),
218
+ revalidate(revalidateCartData),
219
+ ];
220
+
221
+ // Same slot, no copy-pasted plumbing across layouts.
222
+ layout(<DashboardLayout />, () => [
223
+ parallel({ "@cart": CartSummary }),
224
+ path("/dashboard", DashboardIndex, { name: "dashboard.index" }),
225
+ ]);
226
+
227
+ layout(<AccountLayout />, () => [
228
+ parallel({ "@cart": CartSummary }),
229
+ path("/account", AccountIndex, { name: "account.index" }),
230
+ ]);
231
+ ```
232
+
233
+ A slot's `loading()` (whether from `handler.use` or explicit) makes that slot an independent streaming unit, exactly as in the **Streaming Behavior** section above.
234
+
235
+ The `parallel` mount site has the narrowest allow-list for `handler.use` items — slots cannot bring their own middleware or layout, only `revalidate`, `loader`, `loading`, `errorBoundary`, `notFoundBoundary`, and `transition`. See [skills/handler-use](../handler-use/SKILL.md) for the full table and merge rules.
236
+
237
+ `transition` is allowed in the slot allow-list, but slot-level rendering does **not** currently apply a `<ViewTransition>` wrapper — only the layout/route wraps take effect at render time. For a modal-only morph today, use an element-level React `<ViewTransition>` inside the slot's component. The reverse direction is the useful guarantee: a layout-level `transition()` fires when the layout's default outlet content changes but **not** when a `<ParallelOutlet />` mounts new content (modal opens are not subtree updates of the layout VT). See [skills/view-transitions](../view-transitions/SKILL.md) for the wrap rules and the intercept caveat.
238
+
239
+ ### Two scopes for explicit `use`: shared (broadcast) and slot-local
240
+
241
+ `parallel({...slots}, () => [...use])` runs the shared `use()` callback **once per slot** ([dsl-helpers.ts](../../src/route-definition/dsl-helpers.ts)) — items in that callback land on every slot's entry. That's the right behavior for the items the parallel allow-list permits and that accumulate (`loader`, `revalidate`, `errorBoundary`, `notFoundBoundary`, `transition`). (Slots cannot bring `middleware` or `layout` — see the allowed-types note above.)
242
+
243
+ For single-assignment items like `loading()`, broadcasting overwrites every slot's `handler.use` default. Pass a **slot descriptor** `{ handler, use }` instead — items in the descriptor's `use` apply only to that slot:
244
+
245
+ ```typescript
246
+ // @cart gets a custom skeleton; @notifs keeps its handler.use default.
247
+ parallel({
248
+ "@cart": {
249
+ handler: Cart,
250
+ use: () => [loading(<CustomCartSkeleton />)],
251
+ },
252
+ "@notifs": Notifs,
253
+ });
254
+
255
+ // Opt one slot out of streaming while siblings still stream the broadcast.
256
+ parallel(
257
+ {
258
+ "@cart": { handler: Cart, use: () => [loading(false)] },
259
+ "@notifs": Notifs,
260
+ },
261
+ () => [loading(<BroadcastSkeleton />)],
262
+ );
263
+ ```
264
+
265
+ Per-slot merge order is **handler.use → shared use → slot-local use**. Slot-local is the narrowest scope, so it wins for last-write-wins items. See [skills/handler-use § `loading()` is a single-assignment item — scope it correctly](../handler-use/SKILL.md#loading-is-a-single-assignment-item--scope-it-correctly) for the full reasoning.
266
+
267
+ ## Slot Override Semantics
268
+
269
+ When multiple `parallel()` calls define the same slot name, **the last
270
+ definition wins**. Earlier definitions of that slot are removed. Other
271
+ slots from the earlier call are preserved.
272
+
273
+ This enables composition patterns where included routes override
274
+ parent-defined slots:
275
+
276
+ ```typescript
277
+ layout(DashboardLayout, () => [
278
+ // Base slots
279
+ parallel({
280
+ "@sidebar": () => <DefaultSidebar />,
281
+ "@footer": () => <Footer />,
282
+ }),
283
+
284
+ // Override just @sidebar — @footer is preserved
285
+ parallel({ "@sidebar": () => <CustomSidebar /> }),
286
+
287
+ path("/", DashboardIndex, { name: "index" }),
288
+ ])
289
+ ```
290
+
291
+ After resolution, the layout has two parallel entries:
292
+
293
+ - `{ "@footer": () => <Footer /> }` (first call, `@sidebar` removed)
294
+ - `{ "@sidebar": () => <CustomSidebar /> }` (second call, wins)
295
+
74
296
  ## Multiple Parallel Slots
75
297
 
76
298
  ```typescript
@@ -97,7 +319,7 @@ Render different content based on context:
97
319
  ```typescript
98
320
  parallel({
99
321
  "@sidebar": (ctx) => {
100
- const user = ctx.env.Variables.user;
322
+ const user = ctx.get("user");
101
323
  return user ? <UserSidebar user={user} /> : <GuestSidebar />;
102
324
  },
103
325
  })
@@ -115,11 +337,57 @@ parallel(
115
337
  () => [
116
338
  loader(CartLoader),
117
339
  // Revalidate when cart actions occur
118
- revalidate(({ actionId }) => actionId?.includes("Cart") ?? false),
340
+ revalidate(({ actionId }) => actionId?.includes("Cart") || undefined),
119
341
  ]
120
342
  )
121
343
  ```
122
344
 
345
+ Revalidating only the parallel does not re-run outer handlers/layouts.
346
+ If the slot reads `ctx.get()` data established above it, opt the outer
347
+ segment into revalidation as well.
348
+
349
+ A `revalidate()` callback may return a hard `boolean`, a soft
350
+ `{ defaultShouldRevalidate }` object, or nothing (`void` / `null` /
351
+ `undefined`) to defer to the next revalidator. See
352
+ [loader/SKILL.md#revalidate-return-shapes](../loader/SKILL.md#revalidate-return-shapes)
353
+ for the full contract — it's the same across `loader()`, `path()`,
354
+ `layout()`, `parallel()`, and `intercept()`.
355
+
356
+ ### Revalidation Contracts for Parallel Dependencies
357
+
358
+ Prefer named revalidation contracts shared by both the upstream producer and
359
+ the parallel consumer:
360
+
361
+ ```typescript
362
+ // revalidation-contracts.ts
363
+ export const revalidateCartData = ({ actionId }) =>
364
+ actionId?.includes("src/actions/cart.ts#") || undefined;
365
+
366
+ layout(CartLayout, () => [
367
+ revalidate(revalidateCartData), // producer reruns
368
+ parallel(
369
+ { "@cart": CartSummary },
370
+ () => [revalidate(revalidateCartData)], // consumer reruns
371
+ ),
372
+ ]);
373
+ ```
374
+
375
+ If the slot consumes multiple upstream domains, compose the contracts on both
376
+ segments.
377
+
378
+ Handoff helper style also works:
379
+
380
+ ```typescript
381
+ import { revalidate } from "@rangojs/router";
382
+
383
+ export const revalidateCart = () => [revalidate(revalidateCartData)];
384
+
385
+ layout(CartLayout, () => [
386
+ revalidateCart(),
387
+ parallel({ "@cart": CartSummary }, () => [revalidateCart()]),
388
+ ]);
389
+ ```
390
+
123
391
  ## Named Outlets
124
392
 
125
393
  Use `ParallelOutlet` to render slots in layouts:
@@ -211,7 +479,7 @@ export const shopPatterns = urls(({
211
479
  () => [
212
480
  loader(CartLoader),
213
481
  loading(<CartSkeleton />),
214
- revalidate(({ actionId }) => actionId?.includes("Cart") ?? false),
482
+ revalidate(({ actionId }) => actionId?.includes("Cart") || undefined),
215
483
  ]
216
484
  ),
217
485